summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/common/Makefile.am4
-rw-r--r--src/common/address.c81
-rw-r--r--src/common/address.h30
-rw-r--r--src/common/aes.c5
-rw-r--r--src/common/aes.h2
-rw-r--r--src/common/compat.c255
-rw-r--r--src/common/compat.h123
-rw-r--r--src/common/compat_libevent.c63
-rw-r--r--src/common/compat_libevent.h3
-rw-r--r--src/common/container.c57
-rw-r--r--src/common/container.h14
-rw-r--r--src/common/crypto.c250
-rw-r--r--src/common/crypto.h24
-rw-r--r--src/common/di_ops.c133
-rw-r--r--src/common/di_ops.h31
-rw-r--r--src/common/ht.h2
-rw-r--r--src/common/log.c199
-rw-r--r--src/common/memarea.c20
-rw-r--r--src/common/memarea.h2
-rw-r--r--src/common/mempool.c8
-rw-r--r--src/common/mempool.h2
-rw-r--r--src/common/procmon.c336
-rw-r--r--src/common/procmon.h30
-rw-r--r--src/common/sha256.c2
-rw-r--r--src/common/torgzip.c70
-rw-r--r--src/common/torgzip.h2
-rw-r--r--src/common/torint.h10
-rw-r--r--src/common/torlog.h16
-rw-r--r--src/common/tortls.c125
-rw-r--r--src/common/tortls.h3
-rw-r--r--src/common/tortls_states.h2
-rw-r--r--src/common/util.c154
-rw-r--r--src/common/util.h39
-rw-r--r--src/config/geoip33923
-rw-r--r--src/or/Makefile.am21
-rw-r--r--src/or/buffers.c45
-rw-r--r--src/or/buffers.h6
-rw-r--r--src/or/circuitbuild.c930
-rw-r--r--src/or/circuitbuild.h44
-rw-r--r--src/or/circuitlist.c107
-rw-r--r--src/or/circuitlist.h3
-rw-r--r--src/or/circuituse.c263
-rw-r--r--src/or/circuituse.h9
-rw-r--r--src/or/command.c25
-rw-r--r--src/or/command.h2
-rw-r--r--src/or/config.c903
-rw-r--r--src/or/config.h23
-rw-r--r--src/or/connection.c604
-rw-r--r--src/or/connection.h7
-rw-r--r--src/or/connection_edge.c416
-rw-r--r--src/or/connection_edge.h13
-rw-r--r--src/or/connection_or.c283
-rw-r--r--src/or/connection_or.h8
-rw-r--r--src/or/control.c538
-rw-r--r--src/or/control.h8
-rw-r--r--src/or/cpuworker.c14
-rw-r--r--src/or/cpuworker.h2
-rw-r--r--src/or/directory.c266
-rw-r--r--src/or/directory.h7
-rw-r--r--src/or/dirserv.c190
-rw-r--r--src/or/dirserv.h31
-rw-r--r--src/or/dirvote.c93
-rw-r--r--src/or/dirvote.h9
-rw-r--r--src/or/dns.c38
-rw-r--r--src/or/dns.h2
-rw-r--r--src/or/dnsserv.c15
-rw-r--r--src/or/dnsserv.h2
-rw-r--r--src/or/eventdns.c31
-rw-r--r--src/or/eventdns.h6
-rw-r--r--src/or/eventdns_tor.h2
-rw-r--r--src/or/geoip.c215
-rw-r--r--src/or/geoip.h8
-rw-r--r--src/or/hibernate.c19
-rw-r--r--src/or/hibernate.h6
-rw-r--r--src/or/main.c243
-rw-r--r--src/or/main.h16
-rw-r--r--src/or/microdesc.c172
-rw-r--r--src/or/microdesc.h9
-rw-r--r--src/or/networkstatus.c158
-rw-r--r--src/or/networkstatus.h12
-rw-r--r--src/or/nodelist.c44
-rw-r--r--src/or/nodelist.h4
-rw-r--r--src/or/ntmain.c18
-rw-r--r--src/or/ntmain.h2
-rw-r--r--src/or/onion.c30
-rw-r--r--src/or/onion.h14
-rw-r--r--src/or/or.h278
-rw-r--r--src/or/policies.c44
-rw-r--r--src/or/policies.h7
-rw-r--r--src/or/reasons.c15
-rw-r--r--src/or/reasons.h2
-rw-r--r--src/or/relay.c100
-rw-r--r--src/or/relay.h18
-rw-r--r--src/or/rendclient.c375
-rw-r--r--src/or/rendclient.h18
-rw-r--r--src/or/rendcommon.c73
-rw-r--r--src/or/rendcommon.h13
-rw-r--r--src/or/rendmid.c36
-rw-r--r--src/or/rendmid.h10
-rw-r--r--src/or/rendservice.c140
-rw-r--r--src/or/rendservice.h8
-rw-r--r--src/or/rephist.c499
-rw-r--r--src/or/rephist.h6
-rw-r--r--src/or/router.c423
-rw-r--r--src/or/router.h62
-rw-r--r--src/or/routerlist.c464
-rw-r--r--src/or/routerlist.h26
-rw-r--r--src/or/routerparse.c158
-rw-r--r--src/or/routerparse.h6
-rw-r--r--src/or/status.c115
-rw-r--r--src/or/status.h10
-rw-r--r--src/or/tor_main.c2
-rw-r--r--src/test/Makefile.am10
-rw-r--r--src/test/test.c25
-rw-r--r--src/test/test.h5
-rw-r--r--src/test/test_addr.c13
-rw-r--r--src/test/test_containers.c2
-rw-r--r--src/test/test_crypto.c70
-rw-r--r--src/test/test_data.c2
-rw-r--r--src/test/test_dir.c21
-rw-r--r--src/test/test_microdesc.c8
-rw-r--r--src/test/test_util.c111
-rw-r--r--src/test/tinytest.c17
-rw-r--r--src/test/tinytest_demo.c16
-rw-r--r--src/test/tinytest_macros.h39
-rw-r--r--src/tools/tor-fw-helper/tor-fw-helper-natpmp.c4
-rw-r--r--src/tools/tor-fw-helper/tor-fw-helper-natpmp.h2
-rw-r--r--src/tools/tor-fw-helper/tor-fw-helper-upnp.c2
-rw-r--r--src/tools/tor-fw-helper/tor-fw-helper-upnp.h2
-rw-r--r--src/tools/tor-fw-helper/tor-fw-helper.c2
-rw-r--r--src/tools/tor-fw-helper/tor-fw-helper.h2
-rw-r--r--src/tools/tor-gencert.c2
-rw-r--r--src/tools/tor-resolve.c6
-rw-r--r--src/win32/orconfig.h2
134 files changed, 31583 insertions, 13644 deletions
diff --git a/src/common/Makefile.am b/src/common/Makefile.am
index 20e3f5ae16..48218491b5 100644
--- a/src/common/Makefile.am
+++ b/src/common/Makefile.am
@@ -15,9 +15,11 @@ libor_a_SOURCES = \
address.c \
compat.c \
container.c \
+ di_ops.c \
log.c \
memarea.c \
mempool.c \
+ procmon.c \
util.c \
util_codedigest.c \
$(libor_extra_source)
@@ -38,9 +40,11 @@ noinst_HEADERS = \
compat_libevent.h \
container.h \
crypto.h \
+ di_ops.h \
ht.h \
memarea.h \
mempool.h \
+ procmon.h \
strlcat.c \
strlcpy.c \
torgzip.h \
diff --git a/src/common/address.c b/src/common/address.c
index a3f12ac074..d0c2d5e15c 100644
--- a/src/common/address.c
+++ b/src/common/address.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -43,6 +43,9 @@
#ifdef HAVE_SYS_PARAM_H
#include <sys/param.h> /* FreeBSD needs this to know what version it is */
#endif
+#ifdef HAVE_SYS_UN_H
+#include <sys/un.h>
+#endif
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
@@ -50,10 +53,14 @@
#include <assert.h>
/** Convert the tor_addr_t in <b>a</b>, with port in <b>port</b>, into a
- * socklen object in *<b>sa_out</b> of object size <b>len</b>. If not enough
- * room is free, or on error, return -1. Else return the length of the
- * sockaddr. */
-int
+ * sockaddr object in *<b>sa_out</b> of object size <b>len</b>. If not enough
+ * room is available in sa_out, or on error, return 0. On success, return
+ * the length of the sockaddr.
+ *
+ * Interface note: ordinarily, we return -1 for error. We can't do that here,
+ * since socklen_t is unsigned on some platforms.
+ **/
+socklen_t
tor_addr_to_sockaddr(const tor_addr_t *a,
uint16_t port,
struct sockaddr *sa_out,
@@ -63,7 +70,7 @@ tor_addr_to_sockaddr(const tor_addr_t *a,
if (family == AF_INET) {
struct sockaddr_in *sin;
if (len < (int)sizeof(struct sockaddr_in))
- return -1;
+ return 0;
sin = (struct sockaddr_in *)sa_out;
memset(sin, 0, sizeof(struct sockaddr_in));
#ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN
@@ -76,7 +83,7 @@ tor_addr_to_sockaddr(const tor_addr_t *a,
} else if (family == AF_INET6) {
struct sockaddr_in6 *sin6;
if (len < (int)sizeof(struct sockaddr_in6))
- return -1;
+ return 0;
sin6 = (struct sockaddr_in6 *)sa_out;
memset(sin6, 0, sizeof(struct sockaddr_in6));
#ifdef HAVE_STRUCT_SOCKADDR_IN6_SIN6_LEN
@@ -87,7 +94,7 @@ tor_addr_to_sockaddr(const tor_addr_t *a,
memcpy(&sin6->sin6_addr, tor_addr_to_in6(a), sizeof(struct in6_addr));
return sizeof(struct sockaddr_in6);
} else {
- return -1;
+ return 0;
}
}
@@ -116,6 +123,33 @@ tor_addr_from_sockaddr(tor_addr_t *a, const struct sockaddr *sa,
return 0;
}
+/** Return a newly allocated string holding the address described in
+ * <b>sa</b>. AF_UNIX, AF_UNSPEC, AF_INET, and AF_INET6 are supported. */
+char *
+tor_sockaddr_to_str(const struct sockaddr *sa)
+{
+ char address[TOR_ADDR_BUF_LEN];
+ char *result;
+ tor_addr_t addr;
+ uint16_t port;
+#ifdef HAVE_SYS_UN_H
+ if (sa->sa_family == AF_UNIX) {
+ struct sockaddr_un *s_un = (struct sockaddr_un *)sa;
+ tor_asprintf(&result, "unix:%s", s_un->sun_path);
+ return result;
+ }
+#endif
+ if (sa->sa_family == AF_UNSPEC)
+ return tor_strdup("unspec");
+
+ if (tor_addr_from_sockaddr(&addr, sa, &port) < 0)
+ return NULL;
+ if (! tor_addr_to_str(address, &addr, sizeof(address), 1))
+ return NULL;
+ tor_asprintf(&result, "%s:%d", address, (int)port);
+ return result;
+}
+
/** Set address <b>a</b> to the unspecified address. This address belongs to
* no family. */
void
@@ -506,7 +540,8 @@ tor_addr_parse_mask_ports(const char *s, tor_addr_t *addr_out,
tor_assert(s);
tor_assert(addr_out);
- /* IP, [], /mask, ports */
+ /** Longest possible length for an address, mask, and port-range combination.
+ * Includes IP, [], /mask, :, ports */
#define MAX_ADDRESS_LENGTH (TOR_ADDR_BUF_LEN+2+(1+INET_NTOA_BUF_LEN)+12+1)
if (strlen(s) > MAX_ADDRESS_LENGTH) {
@@ -599,7 +634,7 @@ tor_addr_parse_mask_ports(const char *s, tor_addr_t *addr_out,
if (family == AF_INET6 && v4map) {
if (bits > 32 && bits < 96) { /* Crazy */
log_warn(LD_GENERAL,
- "Bad mask bits %i for V4-mapped V6 address; rejecting.",
+ "Bad mask bits %d for V4-mapped V6 address; rejecting.",
bits);
goto err;
}
@@ -786,7 +821,7 @@ tor_addr_compare(const tor_addr_t *addr1, const tor_addr_t *addr2,
* Reduce over-specific masks (>128 for ipv6, >32 for ipv4) to 128 or 32.
*
* The mask is interpreted relative to <b>addr1</b>, so that if a is
- * ::ffff:1.2.3.4, and b is 3.4.5.6,
+ * \::ffff:1.2.3.4, and b is 3.4.5.6,
* tor_addr_compare_masked(a,b,100,CMP_SEMANTIC) is the same as
* -tor_addr_compare_masked(b,a,4,CMP_SEMANTIC).
*
@@ -798,6 +833,8 @@ int
tor_addr_compare_masked(const tor_addr_t *addr1, const tor_addr_t *addr2,
maskbits_t mbits, tor_addr_comparison_t how)
{
+ /** Helper: Evaluates to -1 if a is less than b, 0 if a equals b, or 1 if a
+ * is greater than b. May evaluate a and b more than once. */
#define TRISTATE(a,b) (((a)<(b))?-1: (((a)==(b))?0:1))
sa_family_t family1, family2, v_family1, v_family2;
@@ -830,7 +867,7 @@ tor_addr_compare_masked(const tor_addr_t *addr1, const tor_addr_t *addr2,
const uint8_t *a2 = tor_addr_to_in6_addr8(addr2);
const int bytes = mbits >> 3;
const int leftover_bits = mbits & 7;
- if (bytes && (r = memcmp(a1, a2, bytes))) {
+ if (bytes && (r = tor_memcmp(a1, a2, bytes))) {
return r;
} else if (leftover_bits) {
uint8_t b1 = a1[bytes] >> (8-leftover_bits);
@@ -1036,27 +1073,28 @@ get_interface_address6(int severity, sa_family_t family, tor_addr_t *addr)
{
int sock=-1, r=-1;
struct sockaddr_storage my_addr, target_addr;
- socklen_t my_addr_len;
+ socklen_t addr_len;
tor_assert(addr);
memset(addr, 0, sizeof(tor_addr_t));
memset(&target_addr, 0, sizeof(target_addr));
- my_addr_len = (socklen_t)sizeof(my_addr);
- /* Use the "discard" service port */
- ((struct sockaddr_in*)&target_addr)->sin_port = 9;
/* Don't worry: no packets are sent. We just need to use a real address
* on the actual Internet. */
if (family == AF_INET6) {
struct sockaddr_in6 *sin6 = (struct sockaddr_in6*)&target_addr;
+ /* Use the "discard" service port */
+ sin6->sin6_port = htons(9);
sock = tor_open_socket(PF_INET6,SOCK_DGRAM,IPPROTO_UDP);
- my_addr_len = (socklen_t)sizeof(struct sockaddr_in6);
+ addr_len = (socklen_t)sizeof(struct sockaddr_in6);
sin6->sin6_family = AF_INET6;
S6_ADDR16(sin6->sin6_addr)[0] = htons(0x2002); /* 2002:: */
} else if (family == AF_INET) {
struct sockaddr_in *sin = (struct sockaddr_in*)&target_addr;
+ /* Use the "discard" service port */
+ sin->sin_port = htons(9);
sock = tor_open_socket(PF_INET,SOCK_DGRAM,IPPROTO_UDP);
- my_addr_len = (socklen_t)sizeof(struct sockaddr_in);
+ addr_len = (socklen_t)sizeof(struct sockaddr_in);
sin->sin_family = AF_INET;
sin->sin_addr.s_addr = htonl(0x12000001); /* 18.0.0.1 */
} else {
@@ -1069,14 +1107,13 @@ get_interface_address6(int severity, sa_family_t family, tor_addr_t *addr)
goto err;
}
- if (connect(sock,(struct sockaddr *)&target_addr,
- (socklen_t)sizeof(target_addr))<0) {
+ if (connect(sock,(struct sockaddr *)&target_addr, addr_len) < 0) {
int e = tor_socket_errno(sock);
log_fn(severity, LD_NET, "connect() failed: %s", tor_socket_strerror(e));
goto err;
}
- if (getsockname(sock,(struct sockaddr*)&my_addr, &my_addr_len)) {
+ if (getsockname(sock,(struct sockaddr*)&my_addr, &addr_len)) {
int e = tor_socket_errno(sock);
log_fn(severity, LD_NET, "getsockname() to determine interface failed: %s",
tor_socket_strerror(e));
@@ -1093,7 +1130,7 @@ get_interface_address6(int severity, sa_family_t family, tor_addr_t *addr)
/* ======
* IPv4 helpers
- * XXXX022 IPv6 deprecate some of these.
+ * XXXX023 IPv6 deprecate some of these.
*/
/** Return true iff <b>ip</b> (in host order) is an IP reserved to localhost,
diff --git a/src/common/address.h b/src/common/address.h
index e004ffb13f..e41e4c2ba4 100644
--- a/src/common/address.h
+++ b/src/common/address.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -39,11 +39,12 @@ static INLINE sa_family_t tor_addr_family(const tor_addr_t *a);
static INLINE const struct in_addr *tor_addr_to_in(const tor_addr_t *a);
static INLINE int tor_addr_eq_ipv4h(const tor_addr_t *a, uint32_t u);
-int tor_addr_to_sockaddr(const tor_addr_t *a, uint16_t port,
+socklen_t tor_addr_to_sockaddr(const tor_addr_t *a, uint16_t port,
struct sockaddr *sa_out, socklen_t len);
int tor_addr_from_sockaddr(tor_addr_t *a, const struct sockaddr *sa,
uint16_t *port_out);
void tor_addr_make_unspec(tor_addr_t *a);
+char *tor_sockaddr_to_str(const struct sockaddr *sa);
/** Return an in6_addr* equivalent to <b>a</b>, or NULL if <b>a</b> is not
* an IPv6 address. */
@@ -53,8 +54,20 @@ tor_addr_to_in6(const tor_addr_t *a)
return a->family == AF_INET6 ? &a->addr.in6_addr : NULL;
}
+/** Given an IPv6 address <b>x</b>, yield it as an array of uint8_t.
+ *
+ * Requires that <b>x</b> is actually an IPv6 address.
+ */
#define tor_addr_to_in6_addr8(x) tor_addr_to_in6(x)->s6_addr
+/** Given an IPv6 address <b>x</b>, yield it as an array of uint16_t.
+ *
+ * Requires that <b>x</b> is actually an IPv6 address.
+ */
#define tor_addr_to_in6_addr16(x) S6_ADDR16(*tor_addr_to_in6(x))
+/** Given an IPv6 address <b>x</b>, yield it as an array of uint32_t.
+ *
+ * Requires that <b>x</b> is actually an IPv6 address.
+ */
#define tor_addr_to_in6_addr32(x) S6_ADDR32(*tor_addr_to_in6(x))
/** Return an IPv4 address in network order for <b>a</b>, or 0 if
@@ -71,7 +84,7 @@ tor_addr_to_ipv4h(const tor_addr_t *a)
{
return ntohl(tor_addr_to_ipv4n(a));
}
-/* Given an IPv6 address, return its mapped IPv4 address in host order, or
+/** Given an IPv6 address, return its mapped IPv4 address in host order, or
* 0 if <b>a</b> is not an IPv6 address.
*
* (Does not check whether the address is really a mapped address */
@@ -102,8 +115,14 @@ tor_addr_eq_ipv4h(const tor_addr_t *a, uint32_t u)
return a->family == AF_INET ? (tor_addr_to_ipv4h(a) == u) : 0;
}
-#define TOR_ADDR_BUF_LEN 48 /* [ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255]
- */
+/** Length of a buffer that you need to allocate to be sure you can encode
+ * any tor_addr_t.
+ *
+ * This allows enough space for
+ * "[ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255]",
+ * plus a terminating NUL.
+ */
+#define TOR_ADDR_BUF_LEN 48
int tor_addr_lookup(const char *name, uint16_t family, tor_addr_t *addr_out);
char *tor_dup_addr(const tor_addr_t *addr) ATTR_MALLOC;
@@ -155,6 +174,7 @@ void tor_addr_from_ipv4n(tor_addr_t *dest, uint32_t v4addr);
#define tor_addr_from_ipv4h(dest, v4addr) \
tor_addr_from_ipv4n((dest), htonl(v4addr))
void tor_addr_from_ipv6_bytes(tor_addr_t *dest, const char *bytes);
+/** Set <b>dest</b> to the IPv4 address incoded in <b>in</b>. */
#define tor_addr_from_in(dest, in) \
tor_addr_from_ipv4n((dest), (in)->s_addr);
void tor_addr_from_in6(tor_addr_t *dest, const struct in6_addr *in6);
diff --git a/src/common/aes.c b/src/common/aes.c
index 4998c386a0..81091e9f02 100644
--- a/src/common/aes.c
+++ b/src/common/aes.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001, Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -100,6 +100,9 @@
/* Figure out which AES optimizations to use. */
#ifdef USE_BUILTIN_AES
+/** If this is defined, we take advantage of the fact that AES treats its
+ * input as a set of 4 32-bit words, so that there is no need to encode and
+ * decode the 128-bit counter before every block encryption */
# define USE_RIJNDAEL_COUNTER_OPTIMIZATION
# if 0 && (defined(__powerpc__) || defined(__powerpc64__))
/* XXXX do more experimentation before concluding this is actually
diff --git a/src/common/aes.h b/src/common/aes.h
index 4fb735cfe5..eb633dbcce 100644
--- a/src/common/aes.h
+++ b/src/common/aes.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/* Implements a minimal interface to counter-mode AES. */
diff --git a/src/common/compat.c b/src/common/compat.c
index d442294e83..330c432284 100644
--- a/src/common/compat.c
+++ b/src/common/compat.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -15,6 +15,8 @@
/* This is required on rh7 to make strptime not complain.
* We also need it to make memmem get defined (where available)
*/
+/* XXXX023 We should just use AC_USE_SYSTEM_EXTENSIONS in our autoconf,
+ * and get this (and other important stuff!) automatically */
#define _GNU_SOURCE
#include "compat.h"
@@ -155,6 +157,7 @@ tor_mmap_file(const char *filename)
return NULL;
}
+ /* XXXX why not just do fstat here? */
size = filesize = (size_t) lseek(fd, 0, SEEK_END);
lseek(fd, 0, SEEK_SET);
/* ensure page alignment */
@@ -328,7 +331,7 @@ tor_vsnprintf(char *str, size_t size, const char *format, va_list args)
int r;
if (size == 0)
return -1; /* no place for the NUL */
- if (size > SSIZE_T_MAX-16)
+ if (size > SIZE_T_CEILING)
return -1;
#ifdef MS_WINDOWS
r = _vsnprintf(str, size, format, args);
@@ -439,7 +442,9 @@ tor_vasprintf(char **strp, const char *fmt, va_list args)
* <b>needle</b>, return a pointer to the first occurrence of the needle
* within the haystack, or NULL if there is no such occurrence.
*
- * Requires that nlen be greater than zero.
+ * This function is <em>not</em> timing-safe.
+ *
+ * Requires that <b>nlen</b> be greater than zero.
*/
const void *
tor_memmem(const void *_haystack, size_t hlen,
@@ -463,7 +468,7 @@ tor_memmem(const void *_haystack, size_t hlen,
while ((p = memchr(p, first, end-p))) {
if (p+nlen > end)
return NULL;
- if (!memcmp(p, needle, nlen))
+ if (fast_memeq(p, needle, nlen))
return p;
++p;
}
@@ -589,7 +594,7 @@ tor_fix_source_file(const char *fname)
* unaligned memory access.
*/
uint16_t
-get_uint16(const char *cp)
+get_uint16(const void *cp)
{
uint16_t v;
memcpy(&v,cp,2);
@@ -601,7 +606,7 @@ get_uint16(const char *cp)
* unaligned memory access.
*/
uint32_t
-get_uint32(const char *cp)
+get_uint32(const void *cp)
{
uint32_t v;
memcpy(&v,cp,4);
@@ -613,7 +618,7 @@ get_uint32(const char *cp)
* unaligned memory access.
*/
uint64_t
-get_uint64(const char *cp)
+get_uint64(const void *cp)
{
uint64_t v;
memcpy(&v,cp,8);
@@ -625,7 +630,7 @@ get_uint64(const char *cp)
* *(uint16_t*)(cp) = v, but will not cause segfaults on platforms that forbid
* unaligned memory access. */
void
-set_uint16(char *cp, uint16_t v)
+set_uint16(void *cp, uint16_t v)
{
memcpy(cp,&v,2);
}
@@ -634,7 +639,7 @@ set_uint16(char *cp, uint16_t v)
* *(uint32_t*)(cp) = v, but will not cause segfaults on platforms that forbid
* unaligned memory access. */
void
-set_uint32(char *cp, uint32_t v)
+set_uint32(void *cp, uint32_t v)
{
memcpy(cp,&v,4);
}
@@ -643,7 +648,7 @@ set_uint32(char *cp, uint32_t v)
* *(uint64_t*)(cp) = v, but will not cause segfaults on platforms that forbid
* unaligned memory access. */
void
-set_uint64(char *cp, uint64_t v)
+set_uint64(void *cp, uint64_t v)
{
memcpy(cp,&v,8);
}
@@ -688,7 +693,9 @@ touch_file(const char *fname)
/** Represents a lockfile on which we hold the lock. */
struct tor_lockfile_t {
+ /** Name of the file */
char *filename;
+ /** File descriptor used to hold the file open */
int fd;
};
@@ -704,7 +711,10 @@ struct tor_lockfile_t {
*
* (Implementation note: because we need to fall back to fcntl on some
* platforms, these locks are per-process, not per-thread. If you want
- * to do in-process locking, use tor_mutex_t like a normal person.)
+ * to do in-process locking, use tor_mutex_t like a normal person.
+ * On Windows, when <b>blocking</b> is true, the maximum time that
+ * is actually waited is 10 seconds, after which NULL is returned
+ * and <b>locked_out</b> is set to 1.)
*/
tor_lockfile_t *
tor_lockfile_lock(const char *filename, int blocking, int *locked_out)
@@ -724,7 +734,7 @@ tor_lockfile_lock(const char *filename, int blocking, int *locked_out)
#ifdef WIN32
_lseek(fd, 0, SEEK_SET);
if (_locking(fd, blocking ? _LK_LOCK : _LK_NBLCK, 1) < 0) {
- if (errno != EDEADLOCK)
+ if (errno != EACCES && errno != EDEADLOCK)
log_warn(LD_FS,"Couldn't lock \"%s\": %s", filename, strerror(errno));
else
*locked_out = 1;
@@ -791,7 +801,8 @@ tor_lockfile_unlock(tor_lockfile_t *lockfile)
tor_free(lockfile);
}
-/* Some old versions of Unix didn't define constants for these values,
+/** @{ */
+/** Some old versions of Unix didn't define constants for these values,
* and instead expect you to say 0, 1, or 2. */
#ifndef SEEK_CUR
#define SEEK_CUR 1
@@ -799,6 +810,7 @@ tor_lockfile_unlock(tor_lockfile_t *lockfile)
#ifndef SEEK_END
#define SEEK_END 2
#endif
+/** @} */
/** Return the position of <b>fd</b> with respect to the start of the file. */
off_t
@@ -838,6 +850,7 @@ static int n_sockets_open = 0;
/** Mutex to protect open_sockets, max_socket, and n_sockets_open. */
static tor_mutex_t *socket_accounting_mutex = NULL;
+/** Helper: acquire the socket accounting lock. */
static INLINE void
socket_accounting_lock(void)
{
@@ -846,6 +859,7 @@ socket_accounting_lock(void)
tor_mutex_acquire(socket_accounting_mutex);
}
+/** Helper: release the socket accounting lock. */
static INLINE void
socket_accounting_unlock(void)
{
@@ -856,7 +870,7 @@ socket_accounting_unlock(void)
* Windows, where close()ing a socket doesn't work. Returns 0 on success, -1
* on failure. */
int
-tor_close_socket(int s)
+tor_close_socket(tor_socket_t s)
{
int r = 0;
@@ -904,12 +918,15 @@ tor_close_socket(int s)
return r;
}
+/** @{ */
#ifdef DEBUG_SOCKET_COUNTING
/** Helper: if DEBUG_SOCKET_COUNTING is enabled, remember that <b>s</b> is
* now an open socket. */
static INLINE void
-mark_socket_open(int s)
+mark_socket_open(tor_socket_t s)
{
+ /* XXXX This bitarray business will NOT work on windows: sockets aren't
+ small ints there. */
if (s > max_socket) {
if (max_socket == -1) {
open_sockets = bitarray_init_zero(s+128);
@@ -928,18 +945,19 @@ mark_socket_open(int s)
#else
#define mark_socket_open(s) STMT_NIL
#endif
+/** @} */
/** As socket(), but counts the number of open sockets. */
-int
+tor_socket_t
tor_open_socket(int domain, int type, int protocol)
{
- int s;
+ tor_socket_t s;
#ifdef SOCK_CLOEXEC
#define LINUX_CLOEXEC_OPEN_SOCKET
type |= SOCK_CLOEXEC;
#endif
s = socket(domain, type, protocol);
- if (s >= 0) {
+ if (SOCKET_OK(s)) {
#if !defined(LINUX_CLOEXEC_OPEN_SOCKET) && defined(FD_CLOEXEC)
fcntl(s, F_SETFD, FD_CLOEXEC);
#endif
@@ -952,17 +970,17 @@ tor_open_socket(int domain, int type, int protocol)
}
/** As socket(), but counts the number of open sockets. */
-int
+tor_socket_t
tor_accept_socket(int sockfd, struct sockaddr *addr, socklen_t *len)
{
- int s;
+ tor_socket_t s;
#if defined(HAVE_ACCEPT4) && defined(SOCK_CLOEXEC)
#define LINUX_CLOEXEC_ACCEPT
s = accept4(sockfd, addr, len, SOCK_CLOEXEC);
#else
s = accept(sockfd, addr, len);
#endif
- if (s >= 0) {
+ if (SOCKET_OK(s)) {
#if !defined(LINUX_CLOEXEC_ACCEPT) && defined(FD_CLOEXEC)
fcntl(s, F_SETFD, FD_CLOEXEC);
#endif
@@ -988,7 +1006,7 @@ get_n_open_sockets(void)
/** Turn <b>socket</b> into a nonblocking socket.
*/
void
-set_socket_nonblocking(int socket)
+set_socket_nonblocking(tor_socket_t socket)
{
#if defined(MS_WINDOWS)
unsigned long nonblocking = 1;
@@ -1016,7 +1034,7 @@ set_socket_nonblocking(int socket)
**/
/* It would be nicer just to set errno, but that won't work for windows. */
int
-tor_socketpair(int family, int type, int protocol, int fd[2])
+tor_socketpair(int family, int type, int protocol, tor_socket_t fd[2])
{
//don't use win32 socketpairs (they are always bad)
#if defined(HAVE_SOCKETPAIR) && !defined(MS_WINDOWS)
@@ -1050,9 +1068,9 @@ tor_socketpair(int family, int type, int protocol, int fd[2])
* for now, and really, when localhost is down sometimes, we
* have other problems too.
*/
- int listener = -1;
- int connector = -1;
- int acceptor = -1;
+ tor_socket_t listener = -1;
+ tor_socket_t connector = -1;
+ tor_socket_t acceptor = -1;
struct sockaddr_in listen_addr;
struct sockaddr_in connect_addr;
int size;
@@ -1141,6 +1159,8 @@ tor_socketpair(int family, int type, int protocol, int fd[2])
#endif
}
+/** Number of extra file descriptors to keep in reserve beyond those that we
+ * tell Tor it's allowed to use. */
#define ULIMIT_BUFFER 32 /* keep 32 extra fd's beyond _ConnLimit */
/** Learn the maximum allowed number of file descriptors. (Some systems
@@ -1253,13 +1273,15 @@ set_max_file_descriptors(rlim_t limit, int *max_out)
static int
log_credential_status(void)
{
+/** Log level to use when describing non-error UID/GID status. */
#define CREDENTIAL_LOG_LEVEL LOG_INFO
/* Real, effective and saved UIDs */
uid_t ruid, euid, suid;
/* Read, effective and saved GIDs */
gid_t rgid, egid, sgid;
/* Supplementary groups */
- gid_t sup_gids[NGROUPS_MAX + 1];
+ gid_t *sup_gids = NULL;
+ int sup_gids_size;
/* Number of supplementary groups */
int ngids;
@@ -1305,9 +1327,19 @@ log_credential_status(void)
#endif
/* log supplementary groups */
- if ((ngids = getgroups(NGROUPS_MAX + 1, sup_gids)) < 0) {
+ sup_gids_size = 64;
+ sup_gids = tor_malloc(sizeof(gid_t) * 64);
+ while ((ngids = getgroups(sup_gids_size, sup_gids)) < 0 &&
+ errno == EINVAL &&
+ sup_gids_size < NGROUPS_MAX) {
+ sup_gids_size *= 2;
+ sup_gids = tor_realloc(sup_gids, sizeof(gid_t) * sup_gids_size);
+ }
+
+ if (ngids < 0) {
log_warn(LD_GENERAL, "Error getting supplementary GIDs: %s",
strerror(errno));
+ tor_free(sup_gids);
return -1;
} else {
int i, retval = 0;
@@ -1337,6 +1369,7 @@ log_credential_status(void)
tor_free(cp);
});
smartlist_free(elts);
+ tor_free(sup_gids);
return retval;
}
@@ -1503,6 +1536,45 @@ get_user_homedir(const char *username)
}
#endif
+/** Modify <b>fname</b> to contain the name of the directory */
+int
+get_parent_directory(char *fname)
+{
+ char *cp;
+ int at_end = 1;
+ tor_assert(fname);
+#ifdef MS_WINDOWS
+ /* If we start with, say, c:, then don't consider that the start of the path
+ */
+ if (fname[0] && fname[1] == ':') {
+ fname += 2;
+ }
+#endif
+ /* Now we want to remove all path-separators at the end of the string,
+ * and to remove the end of the string starting with the path separator
+ * before the last non-path-separator. In perl, this would be
+ * s#[/]*$##; s#/[^/]*$##;
+ * on a unixy platform.
+ */
+ cp = fname + strlen(fname);
+ at_end = 1;
+ while (--cp > fname) {
+ int is_sep = (*cp == '/'
+#ifdef MS_WINDOWS
+ || *cp == '\\'
+#endif
+ );
+ if (is_sep) {
+ *cp = '\0';
+ if (! at_end)
+ return 0;
+ } else {
+ at_end = 0;
+ }
+ }
+ return -1;
+}
+
/** Set *addr to the IP address (in dotted-quad notation) stored in c.
* Return 1 on success, 0 if c is badly formatted. (Like inet_aton(c,addr),
* but works on Windows and Solaris.)
@@ -2080,8 +2152,87 @@ tor_gettimeofday(struct timeval *timeval)
#define TIME_FNS_NEED_LOCKS
#endif
-#ifndef HAVE_LOCALTIME_R
-#ifdef TIME_FNS_NEED_LOCKS
+static struct tm *
+correct_tm(int islocal, const time_t *timep, struct tm *resultbuf,
+ struct tm *r)
+{
+ const char *outcome;
+
+ if (PREDICT_LIKELY(r)) {
+ if (r->tm_year > 8099) { /* We can't strftime dates after 9999 CE. */
+ r->tm_year = 8099;
+ r->tm_mon = 11;
+ r->tm_mday = 31;
+ r->tm_yday = 365;
+ r->tm_hour = 23;
+ r->tm_min = 59;
+ r->tm_sec = 59;
+ }
+ return r;
+ }
+
+ /* If we get here, gmtime or localtime returned NULL. It might have done
+ * this because of overrun or underrun, or it might have done it because of
+ * some other weird issue. */
+ if (timep) {
+ if (*timep < 0) {
+ r = resultbuf;
+ r->tm_year = 70; /* 1970 CE */
+ r->tm_mon = 0;
+ r->tm_mday = 1;
+ r->tm_yday = 1;
+ r->tm_hour = 0;
+ r->tm_min = 0 ;
+ r->tm_sec = 0;
+ outcome = "Rounding up to 1970";
+ goto done;
+ } else if (*timep >= INT32_MAX) {
+ /* Rounding down to INT32_MAX isn't so great, but keep in mind that we
+ * only do it if gmtime/localtime tells us NULL. */
+ r = resultbuf;
+ r->tm_year = 137; /* 2037 CE */
+ r->tm_mon = 11;
+ r->tm_mday = 31;
+ r->tm_yday = 365;
+ r->tm_hour = 23;
+ r->tm_min = 59;
+ r->tm_sec = 59;
+ outcome = "Rounding down to 2037";
+ goto done;
+ }
+ }
+
+ /* If we get here, then gmtime/localtime failed without getting an extreme
+ * value for *timep */
+
+ tor_fragile_assert();
+ r = resultbuf;
+ memset(resultbuf, 0, sizeof(struct tm));
+ outcome="can't recover";
+ done:
+ log_warn(LD_BUG, "%s("I64_FORMAT") failed with error %s: %s",
+ islocal?"localtime":"gmtime",
+ timep?I64_PRINTF_ARG(*timep):0,
+ strerror(errno),
+ outcome);
+ return r;
+}
+
+/** @{ */
+/** As localtime_r, but defined for platforms that don't have it:
+ *
+ * Convert *<b>timep</b> to a struct tm in local time, and store the value in
+ * *<b>result</b>. Return the result on success, or NULL on failure.
+ */
+#ifdef HAVE_LOCALTIME_R
+struct tm *
+tor_localtime_r(const time_t *timep, struct tm *result)
+{
+ struct tm *r;
+ r = localtime_r(timep, result);
+ return correct_tm(1, timep, result, r);
+}
+#elif defined(TIME_FNS_NEED_LOCKS)
struct tm *
tor_localtime_r(const time_t *timep, struct tm *result)
{
@@ -2091,9 +2242,10 @@ tor_localtime_r(const time_t *timep, struct tm *result)
tor_assert(result);
tor_mutex_acquire(m);
r = localtime(timep);
- memcpy(result, r, sizeof(struct tm));
+ if (r)
+ memcpy(result, r, sizeof(struct tm));
tor_mutex_release(m);
- return result;
+ return correct_tm(1, timep, result, r);
}
#else
struct tm *
@@ -2102,14 +2254,28 @@ tor_localtime_r(const time_t *timep, struct tm *result)
struct tm *r;
tor_assert(result);
r = localtime(timep);
- memcpy(result, r, sizeof(struct tm));
- return result;
+ if (r)
+ memcpy(result, r, sizeof(struct tm));
+ return correct_tm(1, timep, result, r);
}
#endif
-#endif
+/** @} */
-#ifndef HAVE_GMTIME_R
-#ifdef TIME_FNS_NEED_LOCKS
+/** @{ */
+/** As gmtimee_r, but defined for platforms that don't have it:
+ *
+ * Convert *<b>timep</b> to a struct tm in UTC, and store the value in
+ * *<b>result</b>. Return the result on success, or NULL on failure.
+ */
+#ifdef HAVE_GMTIME_R
+struct tm *
+tor_gmtime_r(const time_t *timep, struct tm *result)
+{
+ struct tm *r;
+ r = gmtime_r(timep, result);
+ return correct_tm(0, timep, result, r);
+}
+#elif defined(TIME_FNS_NEED_LOCKS)
struct tm *
tor_gmtime_r(const time_t *timep, struct tm *result)
{
@@ -2119,9 +2285,10 @@ tor_gmtime_r(const time_t *timep, struct tm *result)
tor_assert(result);
tor_mutex_acquire(m);
r = gmtime(timep);
- memcpy(result, r, sizeof(struct tm));
+ if (r)
+ memcpy(result, r, sizeof(struct tm));
tor_mutex_release(m);
- return result;
+ return correct_tm(0, timep, result, r);
}
#else
struct tm *
@@ -2130,11 +2297,11 @@ tor_gmtime_r(const time_t *timep, struct tm *result)
struct tm *r;
tor_assert(result);
r = gmtime(timep);
- memcpy(result, r, sizeof(struct tm));
- return result;
+ if (r)
+ memcpy(result, r, sizeof(struct tm));
+ return correct_tm(0, timep, result, r);
}
#endif
-#endif
#if defined(USE_WIN32_THREADS)
void
@@ -2525,11 +2692,11 @@ in_main_thread(void)
*/
#if defined(MS_WINDOWS)
int
-tor_socket_errno(int sock)
+tor_socket_errno(tor_socket_t sock)
{
int optval, optvallen=sizeof(optval);
int err = WSAGetLastError();
- if (err == WSAEWOULDBLOCK && sock >= 0) {
+ if (err == WSAEWOULDBLOCK && SOCKET_OK(sock)) {
if (getsockopt(sock, SOL_SOCKET, SO_ERROR, (void*)&optval, &optvallen))
return err;
if (optval)
diff --git a/src/common/compat.h b/src/common/compat.h
index 590da949c0..094036dff2 100644
--- a/src/common/compat.h
+++ b/src/common/compat.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef _TOR_COMPAT_H
@@ -31,7 +31,7 @@
#ifdef HAVE_STRING_H
#include <string.h>
#endif
-#ifdef HAVE_PTHREAD_H
+#if defined(HAVE_PTHREAD_H) && !defined(MS_WINDOWS)
#include <pthread.h>
#endif
#include <stdarg.h>
@@ -314,6 +314,7 @@ const char *tor_fix_source_file(const char *fname);
/* ===== 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;
@@ -322,24 +323,50 @@ struct timeval {
void tor_gettimeofday(struct timeval *timeval);
-#ifdef HAVE_LOCALTIME_R
-#define tor_localtime_r localtime_r
-#else
struct tm *tor_localtime_r(const time_t *timep, struct tm *result);
-#endif
-
-#ifdef HAVE_GMTIME_R
-#define tor_gmtime_r gmtime_r
-#else
struct tm *tor_gmtime_r(const time_t *timep, struct tm *result);
-#endif
-/** Return true iff the tvp is related to uvp according to the relational
- * operator cmp. Recognized values for cmp are ==, <=, <, >=, and >. */
-#define tor_timercmp(tvp, uvp, cmp) \
- (((tvp)->tv_sec == (uvp)->tv_sec) ? \
- ((tvp)->tv_usec cmp (uvp)->tv_usec) : \
- ((tvp)->tv_sec cmp (uvp)->tv_sec))
+#ifndef timeradd
+/** Replacement for timeradd on platforms that do not have it: sets tvout to
+ * the sum of tv1 and tv2. */
+#define timeradd(tv1,tv2,tvout) \
+ do { \
+ (tvout)->tv_sec = (tv1)->tv_sec + (tv2)->tv_sec; \
+ (tvout)->tv_usec = (tv2)->tv_usec + (tv2)->tv_usec; \
+ if ((tvout)->tv_usec >= 1000000) { \
+ (tvout)->tv_usec -= 1000000; \
+ (tvout)->tv_sec++; \
+ } \
+ } while (0)
+#endif
+
+#ifndef timersub
+/** Replacement for timersub on platforms that do not have it: sets tvout to
+ * tv1 minus tv2. */
+#define timersub(tv1,tv2,tvout) \
+ do { \
+ (tvout)->tv_sec = (tv1)->tv_sec - (tv2)->tv_sec; \
+ (tvout)->tv_usec = (tv2)->tv_usec - (tv2)->tv_usec; \
+ if ((tvout)->tv_usec < 0) { \
+ (tvout)->tv_usec += 1000000; \
+ (tvout)->tv_sec--; \
+ } \
+ } while (0)
+#endif
+
+#ifndef timercmp
+/** Replacement for timersub on platforms that do not have it: returns true
+ * iff the relational operator "op" makes the expression tv1 op tv2 true.
+ *
+ * Note that while this definition should work for all boolean opeators, some
+ * platforms' native timercmp definitions do not support >=, <=, or ==. So
+ * don't use those.
+ */
+#define timercmp(tv1,tv2,op) \
+ (((tv1)->tv_sec == (tv2)->tv_sec) ? \
+ ((tv1)->tv_usec op (tv2)->tv_usec) : \
+ ((tv1)->tv_sec op (tv2)->tv_sec))
+#endif
/* ===== File compatibility */
int tor_open_cloexec(const char *path, int flags, unsigned mode);
@@ -368,17 +395,26 @@ int tor_fd_seekend(int fd);
typedef int socklen_t;
#endif
-int tor_close_socket(int s);
-int tor_open_socket(int domain, int type, int protocol);
-int tor_accept_socket(int sockfd, struct sockaddr *addr, socklen_t *len);
+#ifdef MS_WINDOWS
+#define tor_socket_t intptr_t
+#define SOCKET_OK(s) ((s) != INVALID_SOCKET)
+#else
+#define tor_socket_t int
+#define SOCKET_OK(s) ((s) >= 0)
+#endif
+
+int tor_close_socket(tor_socket_t s);
+tor_socket_t tor_open_socket(int domain, int type, int protocol);
+tor_socket_t tor_accept_socket(int sockfd, struct sockaddr *addr,
+ socklen_t *len);
int get_n_open_sockets(void);
#define tor_socket_send(s, buf, len, flags) send(s, buf, len, flags)
#define tor_socket_recv(s, buf, len, flags) recv(s, buf, len, flags)
-/* Define struct in6_addr on platforms that do not have it. Generally,
- * these platforms are ones without IPv6 support, but we want to have
- * a working in6_addr there anyway, so we can use it to parse IPv6
+/** Implementation of struct in6_addr for platforms that do not have it.
+ * Generally, these platforms are ones without IPv6 support, but we want to
+ * have a working in6_addr there anyway, so we can use it to parse IPv6
* addresses. */
#if !defined(HAVE_STRUCT_IN6_ADDR)
struct in6_addr
@@ -394,9 +430,10 @@ struct in6_addr
};
#endif
+/** @{ */
+/** Many BSD variants seem not to define these. */
#if defined(__APPLE__) || defined(__darwin__) || defined(__FreeBSD__) \
|| defined(__NetBSD__) || defined(__OpenBSD__)
-/* Many BSD variants seem not to define these. */
#ifndef s6_addr16
#define s6_addr16 __u6_addr.__u6_addr16
#endif
@@ -404,12 +441,15 @@ struct in6_addr
#define s6_addr32 __u6_addr.__u6_addr32
#endif
#endif
+/** @} */
#ifndef HAVE_SA_FAMILY_T
typedef uint16_t sa_family_t;
#endif
-/* Apparently, MS and Solaris don't define s6_addr16 or s6_addr32. */
+/** @{ */
+/** Apparently, MS and Solaris don't define s6_addr16 or s6_addr32; these
+ * macros get you a pointer to s6_addr32 or local equivalent. */
#ifdef HAVE_STRUCT_IN6_ADDR_S6_ADDR32
#define S6_ADDR32(x) ((uint32_t*)(x).s6_addr32)
#else
@@ -420,9 +460,10 @@ typedef uint16_t sa_family_t;
#else
#define S6_ADDR16(x) ((uint16_t*)((char*)&(x).s6_addr))
#endif
+/** @} */
-/* Define struct sockaddr_in6 on platforms that do not have it. See notes
- * on struct in6_addr. */
+/** Implementation of struct sockaddr_in6 on platforms that do not have
+ * it. See notes on struct in6_addr. */
#if !defined(HAVE_STRUCT_SOCKADDR_IN6)
struct sockaddr_in6 {
sa_family_t sin6_family;
@@ -437,8 +478,8 @@ int tor_inet_aton(const char *cp, struct in_addr *addr) ATTR_NONNULL((1,2));
const char *tor_inet_ntop(int af, const void *src, char *dst, size_t len);
int tor_inet_pton(int af, const char *src, void *dst);
int tor_lookup_hostname(const char *name, uint32_t *addr) ATTR_NONNULL((1,2));
-void set_socket_nonblocking(int socket);
-int tor_socketpair(int family, int type, int protocol, int fd[2]);
+void set_socket_nonblocking(tor_socket_t socket);
+int tor_socketpair(int family, int type, int protocol, tor_socket_t fd[2]);
int network_init(void);
/* For stupid historical reasons, windows sockets have an independent
@@ -465,7 +506,7 @@ int network_init(void);
((e) == WSAEMFILE || (e) == WSAENOBUFS)
/** Return true if e is EADDRINUSE or the local equivalent. */
#define ERRNO_IS_EADDRINUSE(e) ((e) == WSAEADDRINUSE)
-int tor_socket_errno(int sock);
+int tor_socket_errno(tor_socket_t sock);
const char *tor_socket_strerror(int e);
#else
#define ERRNO_IS_EAGAIN(e) ((e) == EAGAIN)
@@ -500,18 +541,18 @@ long tor_weak_random(void);
/* ===== OS compatibility */
const char *get_uname(void);
-uint16_t get_uint16(const char *cp) ATTR_PURE ATTR_NONNULL((1));
-uint32_t get_uint32(const char *cp) ATTR_PURE ATTR_NONNULL((1));
-uint64_t get_uint64(const char *cp) ATTR_PURE ATTR_NONNULL((1));
-void set_uint16(char *cp, uint16_t v) ATTR_NONNULL((1));
-void set_uint32(char *cp, uint32_t v) ATTR_NONNULL((1));
-void set_uint64(char *cp, uint64_t v) ATTR_NONNULL((1));
+uint16_t get_uint16(const void *cp) ATTR_PURE ATTR_NONNULL((1));
+uint32_t get_uint32(const void *cp) ATTR_PURE ATTR_NONNULL((1));
+uint64_t get_uint64(const void *cp) ATTR_PURE ATTR_NONNULL((1));
+void set_uint16(void *cp, uint16_t v) ATTR_NONNULL((1));
+void set_uint32(void *cp, uint32_t v) ATTR_NONNULL((1));
+void set_uint64(void *cp, uint64_t v) ATTR_NONNULL((1));
/* These uint8 variants are defined to make the code more uniform. */
#define get_uint8(cp) (*(const uint8_t*)(cp))
-static void set_uint8(char *cp, uint8_t v);
+static void set_uint8(void *cp, uint8_t v);
static INLINE void
-set_uint8(char *cp, uint8_t v)
+set_uint8(void *cp, uint8_t v)
{
*(uint8_t*)cp = v;
}
@@ -525,6 +566,8 @@ int switch_id(const char *user);
char *get_user_homedir(const char *username);
#endif
+int get_parent_directory(char *fname);
+
int spawn_func(void (*func)(void *), void *data);
void spawn_exit(void) ATTR_NORETURN;
@@ -548,10 +591,14 @@ int compute_num_cpus(void);
/** A generic lock structure for multithreaded builds. */
typedef struct tor_mutex_t {
#if defined(USE_WIN32_THREADS)
+ /** Windows-only: on windows, we implement locks with CRITICAL_SECTIONS. */
CRITICAL_SECTION mutex;
#elif defined(USE_PTHREADS)
+ /** Pthreads-only: with pthreads, we implement locks with
+ * pthread_mutex_t. */
pthread_mutex_t mutex;
#else
+ /** No-threads only: Dummy variable so that tor_mutex_t takes up space. */
int _unused;
#endif
} tor_mutex_t;
diff --git a/src/common/compat_libevent.c b/src/common/compat_libevent.c
index d3b9eb3afa..c338dd6c05 100644
--- a/src/common/compat_libevent.c
+++ b/src/common/compat_libevent.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2009-2010, The Tor Project, Inc. */
+/* Copyright (c) 2009-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -36,13 +36,19 @@
*/
typedef uint32_t le_version_t;
-/* Macros: returns the number of a libevent version. */
+/** @{ */
+/** Macros: returns the number of a libevent version as a le_version_t */
#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 le_version_t tor_get_libevent_version(const char **v_out);
@@ -65,19 +71,19 @@ libevent_logging_callback(int severity, const char *msg)
}
switch (severity) {
case _EVENT_LOG_DEBUG:
- log(LOG_DEBUG, LD_NET, "Message from libevent: %s", buf);
+ log(LOG_DEBUG, LD_NOCB|LD_NET, "Message from libevent: %s", buf);
break;
case _EVENT_LOG_MSG:
- log(LOG_INFO, LD_NET, "Message from libevent: %s", buf);
+ log(LOG_INFO, LD_NOCB|LD_NET, "Message from libevent: %s", buf);
break;
case _EVENT_LOG_WARN:
- log(LOG_WARN, LD_GENERAL, "Warning from libevent: %s", buf);
+ log(LOG_WARN, LD_NOCB|LD_GENERAL, "Warning from libevent: %s", buf);
break;
case _EVENT_LOG_ERR:
- log(LOG_ERR, LD_GENERAL, "Error from libevent: %s", buf);
+ log(LOG_ERR, LD_NOCB|LD_GENERAL, "Error from libevent: %s", buf);
break;
default:
- log(LOG_WARN, LD_GENERAL, "Message [%d] from libevent: %s",
+ log(LOG_WARN, LD_NOCB|LD_GENERAL, "Message [%d] from libevent: %s",
severity, buf);
break;
}
@@ -186,6 +192,12 @@ tor_libevent_initialize(tor_libevent_cfg *torcfg)
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);
event_config_free(cfg);
@@ -217,8 +229,8 @@ tor_libevent_get_base(void)
}
#ifndef HAVE_EVENT_BASE_LOOPEXIT
-/* Replacement for event_base_loopexit on some very old versions of Libevent
- that we are not yet brave enough to deprecate. */
+/** Replacement for event_base_loopexit on some very old versions of Libevent
+ * that we are not yet brave enough to deprecate. */
int
tor_event_base_loopexit(struct event_base *base, struct timeval *tv)
{
@@ -240,9 +252,9 @@ tor_libevent_get_method(void)
#endif
}
-/** Return the le_version_t for the current version of libevent. If the
- * version is very new, return LE_OTHER. If the version is so old that it
- * doesn't support event_get_version(), return LE_OLD. DOCDOC */
+/** 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)
{
@@ -252,7 +264,7 @@ tor_decode_libevent_version(const char *v)
/* Try the new preferred "1.4.11-stable" format.
* Also accept "1.4.14b-stable". */
- fields = sscanf(v, "%u.%u.%u%c%c", &major, &minor, &patchlevel, &c, &e);
+ 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 == '_'))) {
@@ -260,7 +272,7 @@ tor_decode_libevent_version(const char *v)
}
/* Try the old "1.3e" format. */
- fields = sscanf(v, "%u.%u%c%c", &major, &minor, &c, &extra);
+ 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) {
@@ -292,7 +304,7 @@ le_versions_compatibility(le_version_t v)
}
/** Return the version number of the currently running version of Libevent.
- See le_version_t for info on the format.
+ * See le_version_t for info on the format.
*/
static le_version_t
tor_get_libevent_version(const char **v_out)
@@ -342,21 +354,12 @@ tor_check_libevent_version(const char *m, int server,
version = tor_get_libevent_version(&v);
- /* It would be better to disable known-buggy methods than to simply
- warn about them. However, it's not trivial to get libevent to change its
- method once it's initialized, and it's not trivial to tell what method it
- will use without initializing it.
-
- If we saw that the version was definitely bad, we could disable all the
- methods that were bad for that version. But the issue with that is that
- if you've found a libevent before 1.1, you are not at all guaranteed to
- have _any_ good method to use.
-
- As of Libevent 2, we can do better, and have more control over what
- methods get used. But the problem here is that there are no versions of
- Libevent 2 that have buggy event cores, so there's no point in writing
- disable code yet.
- */
+ /* It would be better to disable known-buggy methods rather than warning
+ * about them. But the problem is that with older versions of Libevent,
+ * it's not trivial to get them to change their methods once they're
+ * initialized... and with newer versions of Libevent, they aren't actually
+ * broken. But we should revisit this if we ever find a post-1.4 version
+ * of Libevent where we need to disable a given method. */
if (!strcmp(m, "kqueue")) {
if (version < V_OLD(1,1,'b'))
buggy = 1;
diff --git a/src/common/compat_libevent.h b/src/common/compat_libevent.h
index ecf25806d5..8669fd4e0b 100644
--- a/src/common/compat_libevent.h
+++ b/src/common/compat_libevent.h
@@ -14,7 +14,8 @@ struct bufferevent;
#ifdef HAVE_EVENT2_EVENT_H
#include <event2/util.h>
-#else
+#elif !defined(EVUTIL_SOCKET_DEFINED)
+#define EVUTIL_SOCKET_DEFINED
#define evutil_socket_t int
#endif
diff --git a/src/common/container.c b/src/common/container.c
index 0a95f33aad..92bfd2ec89 100644
--- a/src/common/container.c
+++ b/src/common/container.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -210,13 +210,32 @@ smartlist_string_isin_case(const smartlist_t *sl, const char *element)
int
smartlist_string_num_isin(const smartlist_t *sl, int num)
{
- char buf[16];
+ char buf[32]; /* long enough for 64-bit int, and then some. */
tor_snprintf(buf,sizeof(buf),"%d", num);
return smartlist_string_isin(sl, buf);
}
+/** Return true iff the two lists contain the same strings in the same
+ * order, or if they are both NULL. */
+int
+smartlist_strings_eq(const smartlist_t *sl1, const smartlist_t *sl2)
+{
+ if (sl1 == NULL)
+ return sl2 == NULL;
+ if (sl2 == NULL)
+ return 0;
+ if (smartlist_len(sl1) != smartlist_len(sl2))
+ return 0;
+ SMARTLIST_FOREACH(sl1, const char *, cp1, {
+ const char *cp2 = smartlist_get(sl2, cp1_sl_idx);
+ if (strcmp(cp1, cp2))
+ return 0;
+ });
+ return 1;
+}
+
/** Return true iff <b>sl</b> has some element E such that
- * !memcmp(E,<b>element</b>,DIGEST_LEN)
+ * tor_memeq(E,<b>element</b>,DIGEST_LEN)
*/
int
smartlist_digest_isin(const smartlist_t *sl, const char *element)
@@ -224,7 +243,7 @@ smartlist_digest_isin(const smartlist_t *sl, const char *element)
int i;
if (!sl) return 0;
for (i=0; i < sl->num_used; i++)
- if (memcmp((const char*)sl->list[i],element,DIGEST_LEN)==0)
+ if (tor_memeq((const char*)sl->list[i],element,DIGEST_LEN))
return 1;
return 0;
}
@@ -318,7 +337,8 @@ smartlist_insert(smartlist_t *sl, int idx, void *val)
/**
* Split a string <b>str</b> along all occurrences of <b>sep</b>,
- * adding the split strings, in order, to <b>sl</b>.
+ * appending the (newly allocated) split strings, in order, to
+ * <b>sl</b>. Return the number of strings added to <b>sl</b>.
*
* If <b>flags</b>&amp;SPLIT_SKIP_SPACE is true, remove initial and
* trailing space from each entry.
@@ -327,7 +347,7 @@ smartlist_insert(smartlist_t *sl, int idx, void *val)
* If <b>flags</b>&amp;SPLIT_STRIP_SPACE is true, strip spaces from each
* split string.
*
- * If max>0, divide the string into no more than <b>max</b> pieces. If
+ * If <b>max</b>\>0, divide the string into no more than <b>max</b> pieces. If
* <b>sep</b> is NULL, split on any sequence of horizontal space.
*/
int
@@ -638,15 +658,27 @@ smartlist_uniq_strings(smartlist_t *sl)
* }
*/
-/* For a 1-indexed array, we would use LEFT_CHILD[x] = 2*x and RIGHT_CHILD[x]
- * = 2*x + 1. But this is C, so we have to adjust a little. */
+/** @{ */
+/** Functions to manipulate heap indices to find a node's parent and children.
+ *
+ * For a 1-indexed array, we would use LEFT_CHILD[x] = 2*x and RIGHT_CHILD[x]
+ * = 2*x + 1. But this is C, so we have to adjust a little. */
//#define LEFT_CHILD(i) ( ((i)+1)*2 - 1)
//#define RIGHT_CHILD(i) ( ((i)+1)*2 )
//#define PARENT(i) ( ((i)+1)/2 - 1)
#define LEFT_CHILD(i) ( 2*(i) + 1 )
#define RIGHT_CHILD(i) ( 2*(i) + 2 )
#define PARENT(i) ( ((i)-1) / 2 )
-
+/** }@ */
+
+/** @{ */
+/** Helper macros for heaps: Given a local variable <b>idx_field_offset</b>
+ * set to the offset of an integer index within the heap element structure,
+ * IDX_OF_ITEM(p) gives you the index of p, and IDXP(p) gives you a pointer to
+ * where p's index is stored. Given additionally a local smartlist <b>sl</b>,
+ * UPDATE_IDX(i) sets the index of the element at <b>i</b> to the correct
+ * value (that is, to <b>i</b>).
+ */
#define IDXP(p) ((int*)STRUCT_VAR_P(p, idx_field_offset))
#define UPDATE_IDX(i) do { \
@@ -655,6 +687,7 @@ smartlist_uniq_strings(smartlist_t *sl)
} while (0)
#define IDX_OF_ITEM(p) (*IDXP(p))
+/** @} */
/** Helper. <b>sl</b> may have at most one violation of the heap property:
* the item at <b>idx</b> may be greater than one or both of its children.
@@ -788,7 +821,7 @@ smartlist_pqueue_assert_ok(smartlist_t *sl,
static int
_compare_digests(const void **_a, const void **_b)
{
- return memcmp((const char*)*_a, (const char*)*_b, DIGEST_LEN);
+ return tor_memcmp((const char*)*_a, (const char*)*_b, DIGEST_LEN);
}
/** Sort the list of DIGEST_LEN-byte digests into ascending order. */
@@ -810,7 +843,7 @@ smartlist_uniq_digests(smartlist_t *sl)
static int
_compare_digests256(const void **_a, const void **_b)
{
- return memcmp((const char*)*_a, (const char*)*_b, DIGEST256_LEN);
+ return tor_memcmp((const char*)*_a, (const char*)*_b, DIGEST256_LEN);
}
/** Sort the list of DIGEST256_LEN-byte digests into ascending order. */
@@ -872,7 +905,7 @@ strmap_entry_hash(const strmap_entry_t *a)
static INLINE int
digestmap_entries_eq(const digestmap_entry_t *a, const digestmap_entry_t *b)
{
- return !memcmp(a->key, b->key, DIGEST_LEN);
+ return tor_memeq(a->key, b->key, DIGEST_LEN);
}
/** Helper: return a hash value for a digest_map_t. */
diff --git a/src/common/container.h b/src/common/container.h
index 3568de0159..4a6eba789d 100644
--- a/src/common/container.h
+++ b/src/common/container.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef _TOR_CONTAINER_H
@@ -15,6 +15,7 @@
* and macros defined here.
**/
typedef struct smartlist_t {
+ /** @{ */
/** <b>list</b> has enough capacity to store exactly <b>capacity</b> elements
* before it needs to be resized. Only the first <b>num_used</b> (\<=
* capacity) elements point to valid data.
@@ -22,6 +23,7 @@ typedef struct smartlist_t {
void **list;
int num_used;
int capacity;
+ /** @} */
} smartlist_t;
smartlist_t *smartlist_create(void);
@@ -40,6 +42,8 @@ int smartlist_string_pos(const smartlist_t *, const char *elt) ATTR_PURE;
int smartlist_string_isin_case(const smartlist_t *sl, const char *element)
ATTR_PURE;
int smartlist_string_num_isin(const smartlist_t *sl, int num) ATTR_PURE;
+int smartlist_strings_eq(const smartlist_t *sl1, const smartlist_t *sl2)
+ ATTR_PURE;
int smartlist_digest_isin(const smartlist_t *sl, const char *element)
ATTR_PURE;
int smartlist_overlap(const smartlist_t *sl1, const smartlist_t *sl2)
@@ -257,7 +261,7 @@ char *smartlist_join_strings2(smartlist_t *sl, const char *join,
* Example use:
* SMARTLIST_FOREACH_JOIN(routerstatus_list, routerstatus_t *, rs,
* routerinfo_list, routerinfo_t *, ri,
- * memcmp(rs->identity_digest, ri->identity_digest, 20),
+ * tor_memcmp(rs->identity_digest, ri->identity_digest, 20),
* log_info(LD_GENERAL,"No match for %s", ri->nickname)) {
* log_info(LD_GENERAL, "%s matches routerstatus %p", ri->nickname, rs);
* } SMARTLIST_FOREACH_JOIN_END(rs, ri);
@@ -272,7 +276,7 @@ char *smartlist_join_strings2(smartlist_t *sl, const char *join,
* ri = smartlist_get(routerinfo_list, ri_sl_idx);
* while (rs_sl_idx < rs_sl_len) {
* rs = smartlist_get(routerstatus_list, rs_sl_idx);
- * rs_ri_cmp = memcmp(rs->identity_digest, ri->identity_digest, 20);
+ * rs_ri_cmp = tor_memcmp(rs->identity_digest, ri->identity_digest, 20);
* if (rs_ri_cmp > 0) {
* break;
* } else if (rs_ri_cmp == 0) {
@@ -595,9 +599,9 @@ bitarray_is_set(bitarray_t *b, int bit)
/** A set of digests, implemented as a Bloom filter. */
typedef struct {
- int mask; /* One less than the number of bits in <b>ba</b>; always one less
+ int mask; /**< One less than the number of bits in <b>ba</b>; always one less
* than a power of two. */
- bitarray_t *ba; /* A bit array to implement the Bloom filter. */
+ bitarray_t *ba; /**< A bit array to implement the Bloom filter. */
} digestset_t;
#define BIT(n) ((n) & set->mask)
diff --git a/src/common/crypto.c b/src/common/crypto.c
index 81a432d8d4..05c1ce9ea2 100644
--- a/src/common/crypto.c
+++ b/src/common/crypto.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001, Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -68,13 +68,15 @@
#endif
#if OPENSSL_VERSION_NUMBER < 0x00908000l
-/* On OpenSSL versions before 0.9.8, there is no working SHA256
+/** @{ */
+/** On OpenSSL versions before 0.9.8, there is no working SHA256
* implementation, so we use Tom St Denis's nice speedy one, slightly adapted
- * to our needs */
+ * to our needs. These macros make it usable by us. */
#define SHA256_CTX sha256_state
#define SHA256_Init sha256_init
#define SHA256_Update sha256_process
#define LTC_ARGCHK(x) tor_assert(x)
+/** @} */
#include "sha256.c"
#define SHA256_Final(a,b) sha256_done(b,a)
@@ -104,21 +106,22 @@ static int _n_openssl_mutexes = 0;
/** A public key, or a public/private key-pair. */
struct crypto_pk_env_t
{
- int refs; /* reference counting so we don't have to copy keys */
- RSA *key;
+ int refs; /**< reference count, so we don't have to copy keys */
+ RSA *key; /**< The key itself */
};
/** Key and stream information for a stream cipher. */
struct crypto_cipher_env_t
{
- char key[CIPHER_KEY_LEN];
- aes_cnt_cipher_t *cipher;
+ char key[CIPHER_KEY_LEN]; /**< The raw key. */
+ aes_cnt_cipher_t *cipher; /**< The key in format usable for counter-mode AES
+ * encryption */
};
/** A structure to hold the first half (x, g^x) of a Diffie-Hellman handshake
* while we're waiting for the second.*/
struct crypto_dh_env_t {
- DH *dh;
+ DH *dh; /**< The openssl DH object */
};
static int setup_openssl_threading(void);
@@ -326,17 +329,6 @@ _crypto_new_pk_env_rsa(RSA *rsa)
return env;
}
-/** used by tortls.c: wrap the RSA from an evp_pkey in a crypto_pk_env_t.
- * returns NULL if this isn't an RSA key. */
-crypto_pk_env_t *
-_crypto_new_pk_env_evp_pkey(EVP_PKEY *pkey)
-{
- RSA *rsa;
- if (!(rsa = EVP_PKEY_get1_RSA(pkey)))
- return NULL;
- return _crypto_new_pk_env_rsa(rsa);
-}
-
/** Helper, used by tor-checkkey.c and tor-gencert.c. Return the RSA from a
* crypto_pk_env_t. */
RSA *
@@ -390,7 +382,7 @@ crypto_new_pk_env(void)
RSA *rsa;
rsa = RSA_new();
- if (!rsa) return NULL;
+ tor_assert(rsa);
return _crypto_new_pk_env_rsa(rsa);
}
@@ -518,21 +510,25 @@ crypto_pk_generate_key_with_bits(crypto_pk_env_t *env, int bits)
return 0;
}
-/** Read a PEM-encoded private key from the string <b>s</b> into <b>env</b>.
- * Return 0 on success, -1 on failure.
+/** Read a PEM-encoded private key from the <b>len</b>-byte string <b>s</b>
+ * into <b>env</b>. Return 0 on success, -1 on failure. If len is -1,
+ * the string is nul-terminated.
*/
/* Used here, and used for testing. */
int
crypto_pk_read_private_key_from_string(crypto_pk_env_t *env,
- const char *s)
+ const char *s, ssize_t len)
{
BIO *b;
tor_assert(env);
tor_assert(s);
+ tor_assert(len < INT_MAX && len < SSIZE_T_CEILING);
- /* Create a read-only memory BIO, backed by the NUL-terminated string 's' */
- b = BIO_new_mem_buf((char*)s, -1);
+ /* Create a read-only memory BIO, backed by the string 's' */
+ b = BIO_new_mem_buf((char*)s, (int)len);
+ if (!b)
+ return -1;
if (env->key)
RSA_free(env->key);
@@ -566,7 +562,8 @@ crypto_pk_read_private_key_from_filename(crypto_pk_env_t *env,
}
/* Try to parse it. */
- r = crypto_pk_read_private_key_from_string(env, contents);
+ r = crypto_pk_read_private_key_from_string(env, contents, -1);
+ memset(contents, 0, strlen(contents));
tor_free(contents);
if (r)
return -1; /* read_private_key_from_string already warned, so we don't.*/
@@ -592,6 +589,8 @@ crypto_pk_write_key_to_string_impl(crypto_pk_env_t *env, char **dest,
tor_assert(dest);
b = BIO_new(BIO_s_mem()); /* Create a memory BIO */
+ if (!b)
+ return -1;
/* Now you can treat b as if it were a file. Just use the
* PEM_*_bio_* functions instead of the non-bio variants.
@@ -659,6 +658,8 @@ crypto_pk_read_public_key_from_string(crypto_pk_env_t *env, const char *src,
tor_assert(len<INT_MAX);
b = BIO_new(BIO_s_mem()); /* Create a memory BIO */
+ if (!b)
+ return -1;
BIO_write(b, src, (int)len);
@@ -704,6 +705,7 @@ crypto_pk_write_private_key_to_filename(crypto_pk_env_t *env,
s[len]='\0';
r = write_str_to_file(fname, s, 0);
BIO_free(bio);
+ memset(s, 0, strlen(s));
tor_free(s);
return r;
}
@@ -731,6 +733,18 @@ crypto_pk_key_is_private(const crypto_pk_env_t *key)
return PRIVATE_KEY_OK(key);
}
+/** Return true iff <b>env</b> contains a public key whose public exponent
+ * equals 65537.
+ */
+int
+crypto_pk_public_exponent_ok(crypto_pk_env_t *env)
+{
+ tor_assert(env);
+ tor_assert(env->key);
+
+ return BN_is_word(env->key->e, 65537);
+}
+
/** Compare the public-key components of a and b. Return -1 if a\<b, 0
* if a==b, and 1 if a\>b.
*/
@@ -763,6 +777,17 @@ crypto_pk_keysize(crypto_pk_env_t *env)
return (size_t) RSA_size(env->key);
}
+/** Return the size of the public key modulus of <b>env</b>, in bits. */
+int
+crypto_pk_num_bits(crypto_pk_env_t *env)
+{
+ tor_assert(env);
+ tor_assert(env->key);
+ tor_assert(env->key->n);
+
+ return BN_num_bits(env->key->n);
+}
+
/** Increase the reference count of <b>env</b>, and return it.
*/
crypto_pk_env_t *
@@ -807,9 +832,12 @@ crypto_pk_copy_full(crypto_pk_env_t *env)
* in <b>env</b>, using the padding method <b>padding</b>. On success,
* write the result to <b>to</b>, and return the number of bytes
* written. On failure, return -1.
+ *
+ * <b>tolen</b> is the number of writable bytes in <b>to</b>, and must be
+ * at least the length of the modulus of <b>env</b>.
*/
int
-crypto_pk_public_encrypt(crypto_pk_env_t *env, char *to,
+crypto_pk_public_encrypt(crypto_pk_env_t *env, char *to, size_t tolen,
const char *from, size_t fromlen, int padding)
{
int r;
@@ -817,6 +845,7 @@ crypto_pk_public_encrypt(crypto_pk_env_t *env, char *to,
tor_assert(from);
tor_assert(to);
tor_assert(fromlen<INT_MAX);
+ tor_assert(tolen >= crypto_pk_keysize(env));
r = RSA_public_encrypt((int)fromlen,
(unsigned char*)from, (unsigned char*)to,
@@ -832,9 +861,13 @@ crypto_pk_public_encrypt(crypto_pk_env_t *env, char *to,
* in <b>env</b>, using the padding method <b>padding</b>. On success,
* write the result to <b>to</b>, and return the number of bytes
* written. On failure, return -1.
+ *
+ * <b>tolen</b> is the number of writable bytes in <b>to</b>, and must be
+ * at least the length of the modulus of <b>env</b>.
*/
int
crypto_pk_private_decrypt(crypto_pk_env_t *env, char *to,
+ size_t tolen,
const char *from, size_t fromlen,
int padding, int warnOnFailure)
{
@@ -844,6 +877,7 @@ crypto_pk_private_decrypt(crypto_pk_env_t *env, char *to,
tor_assert(to);
tor_assert(env->key);
tor_assert(fromlen<INT_MAX);
+ tor_assert(tolen >= crypto_pk_keysize(env));
if (!env->key->p)
/* Not a private key */
return -1;
@@ -864,9 +898,13 @@ crypto_pk_private_decrypt(crypto_pk_env_t *env, char *to,
* public key in <b>env</b>, using PKCS1 padding. On success, write the
* signed data to <b>to</b>, and return the number of bytes written.
* On failure, return -1.
+ *
+ * <b>tolen</b> is the number of writable bytes in <b>to</b>, and must be
+ * at least the length of the modulus of <b>env</b>.
*/
int
crypto_pk_public_checksig(crypto_pk_env_t *env, char *to,
+ size_t tolen,
const char *from, size_t fromlen)
{
int r;
@@ -874,6 +912,7 @@ crypto_pk_public_checksig(crypto_pk_env_t *env, char *to,
tor_assert(from);
tor_assert(to);
tor_assert(fromlen < INT_MAX);
+ tor_assert(tolen >= crypto_pk_keysize(env));
r = RSA_public_decrypt((int)fromlen,
(unsigned char*)from, (unsigned char*)to,
env->key, RSA_PKCS1_PADDING);
@@ -896,24 +935,28 @@ crypto_pk_public_checksig_digest(crypto_pk_env_t *env, const char *data,
{
char digest[DIGEST_LEN];
char *buf;
+ size_t buflen;
int r;
tor_assert(env);
tor_assert(data);
tor_assert(sig);
+ tor_assert(datalen < SIZE_T_CEILING);
+ tor_assert(siglen < SIZE_T_CEILING);
if (crypto_digest(digest,data,datalen)<0) {
log_warn(LD_BUG, "couldn't compute digest");
return -1;
}
- buf = tor_malloc(crypto_pk_keysize(env)+1);
- r = crypto_pk_public_checksig(env,buf,sig,siglen);
+ buflen = crypto_pk_keysize(env);
+ buf = tor_malloc(buflen);
+ r = crypto_pk_public_checksig(env,buf,buflen,sig,siglen);
if (r != DIGEST_LEN) {
log_warn(LD_CRYPTO, "Invalid signature");
tor_free(buf);
return -1;
}
- if (memcmp(buf, digest, DIGEST_LEN)) {
+ if (tor_memneq(buf, digest, DIGEST_LEN)) {
log_warn(LD_CRYPTO, "Signature mismatched with digest.");
tor_free(buf);
return -1;
@@ -927,9 +970,12 @@ crypto_pk_public_checksig_digest(crypto_pk_env_t *env, const char *data,
* <b>env</b>, using PKCS1 padding. On success, write the signature to
* <b>to</b>, and return the number of bytes written. On failure, return
* -1.
+ *
+ * <b>tolen</b> is the number of writable bytes in <b>to</b>, and must be
+ * at least the length of the modulus of <b>env</b>.
*/
int
-crypto_pk_private_sign(crypto_pk_env_t *env, char *to,
+crypto_pk_private_sign(crypto_pk_env_t *env, char *to, size_t tolen,
const char *from, size_t fromlen)
{
int r;
@@ -937,6 +983,7 @@ crypto_pk_private_sign(crypto_pk_env_t *env, char *to,
tor_assert(from);
tor_assert(to);
tor_assert(fromlen < INT_MAX);
+ tor_assert(tolen >= crypto_pk_keysize(env));
if (!env->key->p)
/* Not a private key */
return -1;
@@ -955,16 +1002,19 @@ crypto_pk_private_sign(crypto_pk_env_t *env, char *to,
* <b>from</b>; sign the data with the private key in <b>env</b>, and
* store it in <b>to</b>. Return the number of bytes written on
* success, and -1 on failure.
+ *
+ * <b>tolen</b> is the number of writable bytes in <b>to</b>, and must be
+ * at least the length of the modulus of <b>env</b>.
*/
int
-crypto_pk_private_sign_digest(crypto_pk_env_t *env, char *to,
+crypto_pk_private_sign_digest(crypto_pk_env_t *env, char *to, size_t tolen,
const char *from, size_t fromlen)
{
int r;
char digest[DIGEST_LEN];
if (crypto_digest(digest,from,fromlen)<0)
return -1;
- r = crypto_pk_private_sign(env,to,digest,DIGEST_LEN);
+ r = crypto_pk_private_sign(env,to,tolen,digest,DIGEST_LEN);
memset(digest, 0, sizeof(digest));
return r;
}
@@ -988,7 +1038,7 @@ crypto_pk_private_sign_digest(crypto_pk_env_t *env, char *to,
*/
int
crypto_pk_public_hybrid_encrypt(crypto_pk_env_t *env,
- char *to,
+ char *to, size_t tolen,
const char *from,
size_t fromlen,
int padding, int force)
@@ -1001,6 +1051,7 @@ crypto_pk_public_hybrid_encrypt(crypto_pk_env_t *env,
tor_assert(env);
tor_assert(from);
tor_assert(to);
+ tor_assert(fromlen < SIZE_T_CEILING);
overhead = crypto_get_rsa_padding_overhead(crypto_get_rsa_padding(padding));
pkeylen = crypto_pk_keysize(env);
@@ -1010,8 +1061,13 @@ crypto_pk_public_hybrid_encrypt(crypto_pk_env_t *env,
if (!force && fromlen+overhead <= pkeylen) {
/* It all fits in a single encrypt. */
- return crypto_pk_public_encrypt(env,to,from,fromlen,padding);
+ return crypto_pk_public_encrypt(env,to,
+ tolen,
+ from,fromlen,padding);
}
+ tor_assert(tolen >= fromlen + overhead + CIPHER_KEY_LEN);
+ tor_assert(tolen >= pkeylen);
+
cipher = crypto_new_cipher_env();
if (!cipher) return -1;
if (crypto_cipher_generate_key(cipher)<0)
@@ -1033,7 +1089,7 @@ crypto_pk_public_hybrid_encrypt(crypto_pk_env_t *env,
/* Length of symmetrically encrypted data. */
symlen = fromlen-(pkeylen-overhead-CIPHER_KEY_LEN);
- outlen = crypto_pk_public_encrypt(env,to,buf,pkeylen-overhead,padding);
+ outlen = crypto_pk_public_encrypt(env,to,tolen,buf,pkeylen-overhead,padding);
if (outlen!=(int)pkeylen) {
goto err;
}
@@ -1059,6 +1115,7 @@ crypto_pk_public_hybrid_encrypt(crypto_pk_env_t *env,
int
crypto_pk_private_hybrid_decrypt(crypto_pk_env_t *env,
char *to,
+ size_t tolen,
const char *from,
size_t fromlen,
int padding, int warnOnFailure)
@@ -1068,14 +1125,16 @@ crypto_pk_private_hybrid_decrypt(crypto_pk_env_t *env,
crypto_cipher_env_t *cipher = NULL;
char *buf = NULL;
+ tor_assert(fromlen < SIZE_T_CEILING);
pkeylen = crypto_pk_keysize(env);
if (fromlen <= pkeylen) {
- return crypto_pk_private_decrypt(env,to,from,fromlen,padding,
+ return crypto_pk_private_decrypt(env,to,tolen,from,fromlen,padding,
warnOnFailure);
}
- buf = tor_malloc(pkeylen+1);
- outlen = crypto_pk_private_decrypt(env,buf,from,pkeylen,padding,
+
+ buf = tor_malloc(pkeylen);
+ outlen = crypto_pk_private_decrypt(env,buf,pkeylen,from,pkeylen,padding,
warnOnFailure);
if (outlen<0) {
log_fn(warnOnFailure?LOG_WARN:LOG_DEBUG, LD_CRYPTO,
@@ -1093,6 +1152,7 @@ crypto_pk_private_hybrid_decrypt(crypto_pk_env_t *env,
}
memcpy(to,buf+CIPHER_KEY_LEN,outlen-CIPHER_KEY_LEN);
outlen -= CIPHER_KEY_LEN;
+ tor_assert(tolen - outlen >= fromlen - pkeylen);
r = crypto_cipher_decrypt(cipher, to+outlen, from+pkeylen, fromlen-pkeylen);
if (r<0)
goto err;
@@ -1117,7 +1177,7 @@ crypto_pk_asn1_encode(crypto_pk_env_t *pk, char *dest, size_t dest_len)
int len;
unsigned char *buf, *cp;
len = i2d_RSAPublicKey(pk->key, NULL);
- if (len < 0 || (size_t)len > dest_len)
+ if (len < 0 || (size_t)len > dest_len || dest_len > SIZE_T_CEILING)
return -1;
cp = buf = tor_malloc(len+1);
len = i2d_RSAPublicKey(pk->key, &cp);
@@ -1192,6 +1252,8 @@ add_spaces_to_fp(char *out, size_t outlen, const char *in)
{
int n = 0;
char *end = out+outlen;
+ tor_assert(outlen < SIZE_T_CEILING);
+
while (*in && out<end) {
*out++ = *in++;
if (++n == 4 && *in && out<end) {
@@ -1337,6 +1399,7 @@ crypto_cipher_encrypt(crypto_cipher_env_t *env, char *to,
tor_assert(from);
tor_assert(fromlen);
tor_assert(to);
+ tor_assert(fromlen < SIZE_T_CEILING);
aes_crypt(env->cipher, from, fromlen, to);
return 0;
@@ -1353,6 +1416,7 @@ crypto_cipher_decrypt(crypto_cipher_env_t *env, char *to,
tor_assert(env);
tor_assert(from);
tor_assert(to);
+ tor_assert(fromlen < SIZE_T_CEILING);
aes_crypt(env->cipher, from, fromlen, to);
return 0;
@@ -1364,6 +1428,7 @@ crypto_cipher_decrypt(crypto_cipher_env_t *env, char *to,
int
crypto_cipher_crypt_inplace(crypto_cipher_env_t *env, char *buf, size_t len)
{
+ tor_assert(len < SIZE_T_CEILING);
aes_crypt_inplace(env->cipher, buf, len);
return 0;
}
@@ -1431,7 +1496,7 @@ crypto_cipher_decrypt_with_iv(crypto_cipher_env_t *cipher,
/* SHA-1 */
-/** Compute the SHA1 digest of <b>len</b> bytes in data stored in
+/** Compute the SHA1 digest of the <b>len</b> bytes on data stored in
* <b>m</b>. Write the DIGEST_LEN byte result into <b>digest</b>.
* Return 0 on success, -1 on failure.
*/
@@ -1443,6 +1508,9 @@ crypto_digest(char *digest, const char *m, size_t len)
return (SHA1((const unsigned char*)m,len,(unsigned char*)digest) == NULL);
}
+/** Compute a 256-bit digest of <b>len</b> bytes in data stored in <b>m</b>,
+ * using the algorithm <b>algorithm</b>. Write the DIGEST_LEN256-byte result
+ * into <b>digest</b>. Return 0 on success, -1 on failure. */
int
crypto_digest256(char *digest, const char *m, size_t len,
digest_algorithm_t algorithm)
@@ -1502,13 +1570,14 @@ crypto_digest_algorithm_parse_name(const char *name)
/** Intermediate information about the digest of a stream of data. */
struct crypto_digest_env_t {
union {
- SHA_CTX sha1;
- SHA256_CTX sha2;
- } d;
- digest_algorithm_t algorithm : 8;
+ SHA_CTX sha1; /**< state for SHA1 */
+ SHA256_CTX sha2; /**< state for SHA256 */
+ } d; /**< State for the digest we're using. Only one member of the
+ * union is usable, depending on the value of <b>algorithm</b>. */
+ digest_algorithm_t algorithm : 8; /**< Which algorithm is in use? */
};
-/** Allocate and return a new digest object.
+/** Allocate and return a new digest object to compute SHA1 digests.
*/
crypto_digest_env_t *
crypto_new_digest_env(void)
@@ -1520,6 +1589,8 @@ crypto_new_digest_env(void)
return r;
}
+/** Allocate and return a new digest object to compute 256-bit digests
+ * using <b>algorithm</b>. */
crypto_digest_env_t *
crypto_new_digest256_env(digest_algorithm_t algorithm)
{
@@ -1641,8 +1712,10 @@ crypto_hmac_sha1(char *hmac_out,
/* DH */
-/** Shared P parameter for our DH key exchanged. */
+/** Shared P parameter for our circuit-crypto DH key exchanges. */
static BIGNUM *dh_param_p = NULL;
+/** Shared P parameter for our TLS DH key exchanges. */
+static BIGNUM *dh_param_p_tls = NULL;
/** Shared G parameter for our DH key exchanges. */
static BIGNUM *dh_param_g = NULL;
@@ -1651,14 +1724,16 @@ static BIGNUM *dh_param_g = NULL;
static void
init_dh_param(void)
{
- BIGNUM *p, *g;
+ BIGNUM *p, *p2, *g;
int r;
- if (dh_param_p && dh_param_g)
+ if (dh_param_p && dh_param_g && dh_param_p_tls)
return;
p = BN_new();
+ p2 = BN_new();
g = BN_new();
tor_assert(p);
+ tor_assert(p2);
tor_assert(g);
/* This is from rfc2409, section 6.2. It's a safe prime, and
@@ -1672,30 +1747,52 @@ init_dh_param(void)
"A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE6"
"49286651ECE65381FFFFFFFFFFFFFFFF");
tor_assert(r);
+ /* This is the 1024-bit safe prime that Apache uses for its DH stuff; see
+ * modules/ssl/ssl_engine_dh.c */
+ r = BN_hex2bn(&p2,
+ "D67DE440CBBBDC1936D693D34AFD0AD50C84D239A45F520BB88174CB98"
+ "BCE951849F912E639C72FB13B4B4D7177E16D55AC179BA420B2A29FE324A"
+ "467A635E81FF5901377BEDDCFD33168A461AAD3B72DAE8860078045B07A7"
+ "DBCA7874087D1510EA9FCC9DDD330507DD62DB88AEAA747DE0F4D6E2BD68"
+ "B0E7393E0F24218EB3");
+ tor_assert(r);
r = BN_set_word(g, 2);
tor_assert(r);
dh_param_p = p;
+ dh_param_p_tls = p2;
dh_param_g = g;
}
+/** Number of bits to use when choosing the x or y value in a Diffie-Hellman
+ * handshake. Since we exponentiate by this value, choosing a smaller one
+ * lets our handhake go faster.
+ */
#define DH_PRIVATE_KEY_BITS 320
/** Allocate and return a new DH object for a key exchange.
*/
crypto_dh_env_t *
-crypto_dh_new(void)
+crypto_dh_new(int dh_type)
{
crypto_dh_env_t *res = tor_malloc_zero(sizeof(crypto_dh_env_t));
+ tor_assert(dh_type == DH_TYPE_CIRCUIT || dh_type == DH_TYPE_TLS ||
+ dh_type == DH_TYPE_REND);
+
if (!dh_param_p)
init_dh_param();
if (!(res->dh = DH_new()))
goto err;
- if (!(res->dh->p = BN_dup(dh_param_p)))
- goto err;
+ if (dh_type == DH_TYPE_TLS) {
+ if (!(res->dh->p = BN_dup(dh_param_p_tls)))
+ goto err;
+ } else {
+ if (!(res->dh->p = BN_dup(dh_param_p)))
+ goto err;
+ }
if (!(res->dh->g = BN_dup(dh_param_g)))
goto err;
@@ -1826,7 +1923,7 @@ crypto_dh_compute_secret(int severity, crypto_dh_env_t *dh,
{
char *secret_tmp = NULL;
BIGNUM *pubkey_bn = NULL;
- size_t secret_len=0;
+ size_t secret_len=0, secret_tmp_len=0;
int result=0;
tor_assert(dh);
tor_assert(secret_bytes_out/DIGEST_LEN <= 255);
@@ -1840,7 +1937,8 @@ crypto_dh_compute_secret(int severity, crypto_dh_env_t *dh,
log_fn(severity, LD_CRYPTO,"Rejected invalid g^x");
goto error;
}
- secret_tmp = tor_malloc(crypto_dh_get_bytes(dh));
+ secret_tmp_len = crypto_dh_get_bytes(dh);
+ secret_tmp = tor_malloc(secret_tmp_len);
result = DH_compute_key((unsigned char*)secret_tmp, pubkey_bn, dh->dh);
if (result < 0) {
log_warn(LD_CRYPTO,"DH_compute_key() failed.");
@@ -1859,7 +1957,10 @@ crypto_dh_compute_secret(int severity, crypto_dh_env_t *dh,
crypto_log_errors(LOG_WARN, "completing DH handshake");
if (pubkey_bn)
BN_free(pubkey_bn);
- tor_free(secret_tmp);
+ if (secret_tmp) {
+ memset(secret_tmp, 0, secret_tmp_len);
+ tor_free(secret_tmp);
+ }
if (result < 0)
return result;
else
@@ -1918,15 +2019,22 @@ crypto_dh_free(crypto_dh_env_t *dh)
/* random numbers */
-/* This is how much entropy OpenSSL likes to add right now, so maybe it will
+/** How many bytes of entropy we add at once.
+ *
+ * This is how much entropy OpenSSL likes to add right now, so maybe it will
* work for us too. */
#define ADD_ENTROPY 32
-/* Use RAND_poll if OpenSSL is 0.9.6 release or later. (The "f" means
- "release".) */
+/** True iff we should use OpenSSL's RAND_poll function to add entropy to its
+ * pool.
+ *
+ * Use RAND_poll if OpenSSL is 0.9.6 release or later. (The "f" means
+ *"release".) */
#define HAVE_RAND_POLL (OPENSSL_VERSION_NUMBER >= 0x0090600fl)
-/* Versions of OpenSSL prior to 0.9.7k and 0.9.8c had a bug where RAND_poll
+/** True iff it's safe to use RAND_poll after setup.
+ *
+ * Versions of OpenSSL prior to 0.9.7k and 0.9.8c had a bug where RAND_poll
* would allocate an fd_set on the stack, open a new file, and try to FD_SET
* that fd without checking whether it fit in the fd_set. Thus, if the
* system has not just been started up, it is unsafe to call */
@@ -1935,6 +2043,7 @@ crypto_dh_free(crypto_dh_env_t *dh)
OPENSSL_VERSION_NUMBER <= 0x00907fffl) || \
(OPENSSL_VERSION_NUMBER >= 0x0090803fl))
+/** Set the seed of the weak RNG to a random value. */
static void
seed_weak_rng(void)
{
@@ -1950,14 +2059,15 @@ seed_weak_rng(void)
int
crypto_seed_rng(int startup)
{
- char buf[ADD_ENTROPY];
int rand_poll_status = 0;
/* local variables */
#ifdef MS_WINDOWS
+ unsigned char buf[ADD_ENTROPY];
static int provider_set = 0;
static HCRYPTPROV provider;
#else
+ char buf[ADD_ENTROPY];
static const char *filenames[] = {
"/dev/srandom", "/dev/urandom", "/dev/random", NULL
};
@@ -2035,13 +2145,14 @@ crypto_rand(char *to, size_t n)
}
/** Return a pseudorandom integer, chosen uniformly from the values
- * between 0 and <b>max</b>-1. */
+ * between 0 and <b>max</b>-1 inclusive. <b>max</b> must be between 1 and
+ * INT_MAX+1, inclusive. */
int
crypto_rand_int(unsigned int max)
{
unsigned int val;
unsigned int cutoff;
- tor_assert(max < UINT_MAX);
+ tor_assert(max <= ((unsigned int)INT_MAX)+1);
tor_assert(max > 0); /* don't div by 0 */
/* We ignore any values that are >= 'cutoff,' to avoid biasing the
@@ -2187,9 +2298,12 @@ base64_encode(char *dest, size_t destlen, const char *src, size_t srclen)
return ret;
}
+/** @{ */
+/** Special values used for the base64_decode_table */
#define X 255
#define SP 64
#define PAD 65
+/** @} */
/** Internal table mapping byte values to what they represent in base64.
* Numbers 0..63 are 6-bit integers. SPs are spaces, and should be
* skipped. Xs are invalid and must not appear in base64. PAD indicates
@@ -2402,9 +2516,10 @@ digest256_from_base64(char *digest, const char *d64)
void
base32_encode(char *dest, size_t destlen, const char *src, size_t srclen)
{
- unsigned int i, bit, v, u;
- size_t nbits = srclen * 8;
+ unsigned int i, v, u;
+ size_t nbits = srclen * 8, bit;
+ tor_assert(srclen < SIZE_T_CEILING/8);
tor_assert((nbits%5) == 0); /* We need an even multiple of 5 bits. */
tor_assert((nbits/5)+1 <= destlen); /* We need enough space. */
tor_assert(destlen < SIZE_T_CEILING);
@@ -2428,11 +2543,12 @@ base32_decode(char *dest, size_t destlen, const char *src, size_t srclen)
{
/* XXXX we might want to rewrite this along the lines of base64_decode, if
* it ever shows up in the profile. */
- unsigned int i, j, bit;
- size_t nbits;
+ unsigned int i;
+ size_t nbits, j, bit;
char *tmp;
nbits = srclen * 5;
+ tor_assert(srclen < SIZE_T_CEILING / 5);
tor_assert((nbits%8) == 0); /* We need an even multiple of 8 bits. */
tor_assert((nbits/8) <= destlen); /* We need enough space. */
tor_assert(destlen < SIZE_T_CEILING);
@@ -2591,6 +2707,7 @@ _openssl_dynlock_destroy_cb(struct CRYPTO_dynlock_value *v,
tor_free(v);
}
+/** @{ */
/** Helper: Construct mutexes, and set callbacks to help OpenSSL handle being
* multithreaded. */
static int
@@ -2616,4 +2733,5 @@ setup_openssl_threading(void)
return 0;
}
#endif
+/** @} */
diff --git a/src/common/crypto.h b/src/common/crypto.h
index c433938d5b..9b4eee622b 100644
--- a/src/common/crypto.h
+++ b/src/common/crypto.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001, Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -112,34 +112,38 @@ int crypto_pk_write_private_key_to_string(crypto_pk_env_t *env,
int crypto_pk_read_public_key_from_string(crypto_pk_env_t *env,
const char *src, size_t len);
int crypto_pk_read_private_key_from_string(crypto_pk_env_t *env,
- const char *s);
+ const char *s, ssize_t len);
int crypto_pk_write_private_key_to_filename(crypto_pk_env_t *env,
const char *fname);
int crypto_pk_check_key(crypto_pk_env_t *env);
int crypto_pk_cmp_keys(crypto_pk_env_t *a, crypto_pk_env_t *b);
size_t crypto_pk_keysize(crypto_pk_env_t *env);
+int crypto_pk_num_bits(crypto_pk_env_t *env);
crypto_pk_env_t *crypto_pk_dup_key(crypto_pk_env_t *orig);
crypto_pk_env_t *crypto_pk_copy_full(crypto_pk_env_t *orig);
int crypto_pk_key_is_private(const crypto_pk_env_t *key);
+int crypto_pk_public_exponent_ok(crypto_pk_env_t *env);
-int crypto_pk_public_encrypt(crypto_pk_env_t *env, char *to,
+int crypto_pk_public_encrypt(crypto_pk_env_t *env, char *to, size_t tolen,
const char *from, size_t fromlen, int padding);
-int crypto_pk_private_decrypt(crypto_pk_env_t *env, char *to,
+int crypto_pk_private_decrypt(crypto_pk_env_t *env, char *to, size_t tolen,
const char *from, size_t fromlen,
int padding, int warnOnFailure);
-int crypto_pk_public_checksig(crypto_pk_env_t *env, char *to,
+int crypto_pk_public_checksig(crypto_pk_env_t *env, char *to, size_t tolen,
const char *from, size_t fromlen);
int crypto_pk_public_checksig_digest(crypto_pk_env_t *env, const char *data,
size_t datalen, const char *sig, size_t siglen);
-int crypto_pk_private_sign(crypto_pk_env_t *env, char *to,
+int crypto_pk_private_sign(crypto_pk_env_t *env, char *to, size_t tolen,
const char *from, size_t fromlen);
-int crypto_pk_private_sign_digest(crypto_pk_env_t *env, char *to,
+int crypto_pk_private_sign_digest(crypto_pk_env_t *env, char *to, size_t tolen,
const char *from, size_t fromlen);
int crypto_pk_public_hybrid_encrypt(crypto_pk_env_t *env, char *to,
+ size_t tolen,
const char *from, size_t fromlen,
int padding, int force);
int crypto_pk_private_hybrid_decrypt(crypto_pk_env_t *env, char *to,
+ size_t tolen,
const char *from, size_t fromlen,
int padding, int warnOnFailure);
@@ -193,7 +197,10 @@ void crypto_hmac_sha1(char *hmac_out,
const char *msg, size_t msg_len);
/* Key negotiation */
-crypto_dh_env_t *crypto_dh_new(void);
+#define DH_TYPE_CIRCUIT 1
+#define DH_TYPE_REND 2
+#define DH_TYPE_TLS 3
+crypto_dh_env_t *crypto_dh_new(int dh_type);
int crypto_dh_get_bytes(crypto_dh_env_t *dh);
int crypto_dh_generate_public(crypto_dh_env_t *dh);
int crypto_dh_get_public(crypto_dh_env_t *dh, char *pubkey_out,
@@ -245,7 +252,6 @@ struct evp_pkey_st;
struct dh_st;
struct rsa_st *_crypto_pk_env_get_rsa(crypto_pk_env_t *env);
crypto_pk_env_t *_crypto_new_pk_env_rsa(struct rsa_st *rsa);
-crypto_pk_env_t *_crypto_new_pk_env_evp_pkey(struct evp_pkey_st *pkey);
struct evp_pkey_st *_crypto_pk_env_get_evp_pkey(crypto_pk_env_t *env,
int private);
struct dh_st *_crypto_dh_env_get_dh(crypto_dh_env_t *dh);
diff --git a/src/common/di_ops.c b/src/common/di_ops.c
new file mode 100644
index 0000000000..b22a58d1b1
--- /dev/null
+++ b/src/common/di_ops.c
@@ -0,0 +1,133 @@
+/* Copyright (c) 2011, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+/**
+ * \file di_ops.c
+ * \brief Functions for data-independent operations.
+ **/
+
+#include "orconfig.h"
+#include "di_ops.h"
+
+/**
+ * Timing-safe version of memcmp. As memcmp, compare the <b>sz</b> bytes at
+ * <b>a</b> with the <b>sz</b> bytes at <b>b</b>, and return less than 0 if
+ * the bytes at <b>a</b> lexically precede those at <b>b</b>, 0 if the byte
+ * ranges are equal, and greater than zero if the bytes at <b>a</b> lexically
+ * follow those at <b>b</b>.
+ *
+ * This implementation differs from memcmp in that its timing behavior is not
+ * data-dependent: it should return in the same amount of time regardless of
+ * the contents of <b>a</b> and <b>b</b>.
+ */
+int
+tor_memcmp(const void *a, const void *b, size_t len)
+{
+ const uint8_t *x = a;
+ const uint8_t *y = b;
+ size_t i = len;
+ int retval = 0;
+
+ /* This loop goes from the end of the arrays to the start. At the
+ * start of every iteration, before we decrement i, we have set
+ * "retval" equal to the result of memcmp(a+i,b+i,len-i). During the
+ * loop, we update retval by leaving it unchanged if x[i]==y[i] and
+ * setting it to x[i]-y[i] if x[i]!= y[i].
+ *
+ * The following assumes we are on a system with two's-complement
+ * arithmetic. We check for this at configure-time with the check
+ * that sets USING_TWOS_COMPLEMENT. If we aren't two's complement, then
+ * torint.h will stop compilation with an error.
+ */
+ while (i--) {
+ int v1 = x[i];
+ int v2 = y[i];
+ int equal_p = v1 ^ v2;
+
+ /* The following sets bits 8 and above of equal_p to 'equal_p ==
+ * 0', and thus to v1 == v2. (To see this, note that if v1 ==
+ * v2, then v1^v2 == equal_p == 0, so equal_p-1 == -1, which is the
+ * same as ~0 on a two's-complement machine. Then note that if
+ * v1 != v2, then 0 < v1 ^ v2 < 256, so 0 <= equal_p - 1 < 255.)
+ */
+ --equal_p;
+
+ equal_p >>= 8;
+ /* Thanks to (sign-preserving) arithmetic shift, equal_p is now
+ * equal to -(v1 == v2), which is exactly what we need below.
+ * (Since we're assuming two's-complement arithmetic, -1 is the
+ * same as ~0 (all bits set).)
+ *
+ * (The result of an arithmetic shift on a negative value is
+ * actually implementation-defined in standard C. So how do we
+ * get away with assuming it? Easy. We check.) */
+#if ((-60 >> 8) != -1)
+#error "According to cpp, right-shift doesn't perform sign-extension."
+#endif
+#ifndef RSHIFT_DOES_SIGN_EXTEND
+#error "According to configure, right-shift doesn't perform sign-extension."
+#endif
+
+ /* If v1 == v2, equal_p is ~0, so this will leave retval
+ * unchanged; otherwise, equal_p is 0, so this will zero it. */
+ retval &= equal_p;
+
+ /* If v1 == v2, then this adds 0, and leaves retval unchanged.
+ * Otherwise, we just zeroed retval, so this sets it to v1 - v2. */
+ retval += (v1 - v2);
+
+ /* There. Now retval is equal to its previous value if v1 == v2, and
+ * equal to v1 - v2 if v1 != v2. */
+ }
+
+ return retval;
+}
+
+/**
+ * Timing-safe memory comparison. Return true if the <b>sz</b> bytes at
+ * <b>a</b> are the same as the <b>sz</b> bytes at <b>b</b>, and 0 otherwise.
+ *
+ * This implementation differs from !memcmp(a,b,sz) in that its timing
+ * behavior is not data-dependent: it should return in the same amount of time
+ * regardless of the contents of <b>a</b> and <b>b</b>. It differs from
+ * !tor_memcmp(a,b,sz) by being faster.
+ */
+int
+tor_memeq(const void *a, const void *b, size_t sz)
+{
+ /* Treat a and b as byte ranges. */
+ const uint8_t *ba = a, *bb = b;
+ uint32_t any_difference = 0;
+ while (sz--) {
+ /* Set byte_diff to all of those bits that are different in *ba and *bb,
+ * and advance both ba and bb. */
+ const uint8_t byte_diff = *ba++ ^ *bb++;
+
+ /* Set bits in any_difference if they are set in byte_diff. */
+ any_difference |= byte_diff;
+ }
+
+ /* Now any_difference is 0 if there are no bits different between
+ * a and b, and is nonzero if there are bits different between a
+ * and b. Now for paranoia's sake, let's convert it to 0 or 1.
+ *
+ * (If we say "!any_difference", the compiler might get smart enough
+ * to optimize-out our data-independence stuff above.)
+ *
+ * To unpack:
+ *
+ * If any_difference == 0:
+ * any_difference - 1 == ~0
+ * (any_difference - 1) >> 8 == 0x00ffffff
+ * 1 & ((any_difference - 1) >> 8) == 1
+ *
+ * If any_difference != 0:
+ * 0 < any_difference < 256, so
+ * 0 < any_difference - 1 < 255
+ * (any_difference - 1) >> 8 == 0
+ * 1 & ((any_difference - 1) >> 8) == 0
+ */
+
+ return 1 & ((any_difference - 1) >> 8);
+}
+
diff --git a/src/common/di_ops.h b/src/common/di_ops.h
new file mode 100644
index 0000000000..fa7d86806a
--- /dev/null
+++ b/src/common/di_ops.h
@@ -0,0 +1,31 @@
+/* Copyright (c) 2003-2004, Roger Dingledine
+ * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+/**
+ * \file di_ops.h
+ * \brief Headers for di_ops.c
+ **/
+
+#ifndef TOR_DI_OPS_H
+#define TOR_DI_OPS_H
+
+#include "orconfig.h"
+#include "torint.h"
+
+int tor_memcmp(const void *a, const void *b, size_t sz);
+int tor_memeq(const void *a, const void *b, size_t sz);
+#define tor_memneq(a,b,sz) (!tor_memeq((a),(b),(sz)))
+
+/** Alias for the platform's memcmp() function. This function is
+ * <em>not</em> data-independent: we define this alias so that we can
+ * mark cases where we are deliberately using a data-dependent memcmp()
+ * implementation.
+ */
+#define fast_memcmp(a,b,c) (memcmp((a),(b),(c)))
+#define fast_memeq(a,b,c) (0==memcmp((a),(b),(c)))
+#define fast_memneq(a,b,c) (0!=memcmp((a),(b),(c)))
+
+#endif
+
diff --git a/src/common/ht.h b/src/common/ht.h
index f598856d8a..0850c07092 100644
--- a/src/common/ht.h
+++ b/src/common/ht.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2002, Christopher Clark.
* Copyright (c) 2005-2006, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See license at end. */
/* Based on ideas by Christopher Clark and interfaces from Niels Provos. */
diff --git a/src/common/log.c b/src/common/log.c
index 6f86406c2c..97400623e5 100644
--- a/src/common/log.c
+++ b/src/common/log.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001, Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -36,8 +36,12 @@
#include "torlog.h"
#include "container.h"
+/** @{ */
+/** The string we stick at the end of a log message when it is too long,
+ * and its length. */
#define TRUNCATED_STR "[...truncated]"
#define TRUNCATED_STR_LEN 14
+/** @} */
/** Information for a single logfile; only used in log.c */
typedef struct logfile_t {
@@ -97,15 +101,31 @@ static int log_mutex_initialized = 0;
/** Linked list of logfile_t. */
static logfile_t *logfiles = NULL;
+/** Boolean: do we report logging domains? */
+static int log_domains_are_logged = 0;
+
#ifdef HAVE_SYSLOG_H
/** The number of open syslog log handlers that we have. When this reaches 0,
* we can close our connection to the syslog facility. */
static int syslog_count = 0;
#endif
+/** Represents a log message that we are going to send to callback-driven
+ * loggers once we can do so in a non-reentrant way. */
+typedef struct pending_cb_message_t {
+ int severity; /**< The severity of the message */
+ log_domain_mask_t domain; /**< The domain of the message */
+ char *msg; /**< The content of the message */
+} pending_cb_message_t;
+
+/** Log messages waiting to be replayed onto callback-based logs */
+static smartlist_t *pending_cb_messages = NULL;
+
+/** Lock the log_mutex to prevent others from changing the logfile_t list */
#define LOCK_LOGS() STMT_BEGIN \
tor_mutex_acquire(&log_mutex); \
STMT_END
+/** Unlock the log_mutex */
#define UNLOCK_LOGS() STMT_BEGIN tor_mutex_release(&log_mutex); STMT_END
/** What's the lowest log level anybody cares about? Checking this lets us
@@ -115,6 +135,9 @@ int _log_global_min_severity = LOG_NOTICE;
static void delete_log(logfile_t *victim);
static void close_log(logfile_t *victim);
+static char *domain_to_string(log_domain_mask_t domain,
+ char *buf, size_t buflen);
+
/** Name of the application: used to generate the message we write at the
* start of each new log. */
static char *appname = NULL;
@@ -225,13 +248,34 @@ format_msg(char *buf, size_t buf_len,
size_t n;
int r;
char *end_of_prefix;
+ char *buf_end;
- assert(buf_len >= 2); /* prevent integer underflow */
+ assert(buf_len >= 16); /* prevent integer underflow and general stupidity */
buf_len -= 2; /* subtract 2 characters so we have room for \n\0 */
+ buf_end = buf+buf_len; /* point *after* the last char we can write to */
n = _log_prefix(buf, buf_len, severity);
end_of_prefix = buf+n;
+ if (log_domains_are_logged) {
+ char *cp = buf+n;
+ if (cp == buf_end) goto format_msg_no_room_for_domains;
+ *cp++ = '{';
+ if (cp == buf_end) goto format_msg_no_room_for_domains;
+ cp = domain_to_string(domain, cp, (buf+buf_len-cp));
+ if (cp == buf_end) goto format_msg_no_room_for_domains;
+ *cp++ = '}';
+ if (cp == buf_end) goto format_msg_no_room_for_domains;
+ *cp++ = ' ';
+ if (cp == buf_end) goto format_msg_no_room_for_domains;
+ end_of_prefix = cp;
+ n = cp-buf;
+ format_msg_no_room_for_domains:
+ /* This will leave end_of_prefix and n unchanged, and thus cause
+ * whatever log domain string we had written to be clobbered. */
+ ;
+ }
+
if (funcname && should_log_function_name(domain, severity)) {
r = tor_snprintf(buf+n, buf_len-n, "%s(): ", funcname);
if (r<0)
@@ -280,6 +324,7 @@ logv(int severity, log_domain_mask_t domain, const char *funcname,
int formatted = 0;
logfile_t *lf;
char *end_of_prefix=NULL;
+ int callbacks_deferred = 0;
/* Call assert, not tor_assert, since tor_assert calls log on failure. */
assert(format);
@@ -287,6 +332,10 @@ logv(int severity, log_domain_mask_t domain, const char *funcname,
* interesting and hard to diagnose effects */
assert(severity >= LOG_ERR && severity <= LOG_DEBUG);
LOCK_LOGS();
+
+ if ((! (domain & LD_NOCB)) && smartlist_len(pending_cb_messages))
+ flush_pending_log_callbacks();
+
lf = logfiles;
while (lf) {
if (! (lf->severities->masks[SEVERITY_MASK_IDX(severity)] & domain)) {
@@ -308,6 +357,7 @@ logv(int severity, log_domain_mask_t domain, const char *funcname,
&msg_len);
formatted = 1;
}
+
if (lf->is_syslog) {
#ifdef HAVE_SYSLOG_H
char *m = end_of_prefix;
@@ -331,7 +381,19 @@ logv(int severity, log_domain_mask_t domain, const char *funcname,
lf = lf->next;
continue;
} else if (lf->callback) {
- lf->callback(severity, domain, end_of_prefix);
+ if (domain & LD_NOCB) {
+ if (!callbacks_deferred && pending_cb_messages) {
+ pending_cb_message_t *msg = tor_malloc(sizeof(pending_cb_message_t));
+ msg->severity = severity;
+ msg->domain = domain;
+ msg->msg = tor_strdup(end_of_prefix);
+ smartlist_add(pending_cb_messages, msg);
+
+ callbacks_deferred = 1;
+ }
+ } else {
+ lf->callback(severity, domain, end_of_prefix);
+ }
lf = lf->next;
continue;
}
@@ -345,7 +407,10 @@ logv(int severity, log_domain_mask_t domain, const char *funcname,
UNLOCK_LOGS();
}
-/** Output a message to the log. */
+/** Output a message to the log. It gets logged to all logfiles that
+ * care about messages with <b>severity</b> in <b>domain</b>. The content
+ * is formatted printf-style based on <b>format</b> and extra arguments.
+ * */
void
tor_log(int severity, log_domain_mask_t domain, const char *format, ...)
{
@@ -359,6 +424,9 @@ tor_log(int severity, log_domain_mask_t domain, const char *format, ...)
/** Output a message to the log, prefixed with a function name <b>fn</b>. */
#ifdef __GNUC__
+/** GCC-based implementation of the log_fn backend, used when we have
+ * variadic macros. All arguments are as for log_fn, except for
+ * <b>fn</b>, which is the name of the calling functions. */
void
_log_fn(int severity, log_domain_mask_t domain, const char *fn,
const char *format, ...)
@@ -371,6 +439,11 @@ _log_fn(int severity, log_domain_mask_t domain, const char *fn,
va_end(ap);
}
#else
+/** @{ */
+/** Variant implementation of log_fn, log_debug, log_info,... for C compilers
+ * without variadic macros. In this case, the calling function sets
+ * _log_fn_function_name to the name of the function, then invokes the
+ * appropriate _log_fn, _log_debug, etc. */
const char *_log_fn_function_name=NULL;
void
_log_fn(int severity, log_domain_mask_t domain, const char *format, ...)
@@ -439,6 +512,7 @@ _log_err(log_domain_mask_t domain, const char *format, ...)
va_end(ap);
_log_fn_function_name = NULL;
}
+/** @} */
#endif
/** Free all storage held by <b>victim</b>. */
@@ -457,9 +531,12 @@ void
logs_free_all(void)
{
logfile_t *victim, *next;
+ smartlist_t *messages;
LOCK_LOGS();
next = logfiles;
logfiles = NULL;
+ messages = pending_cb_messages;
+ pending_cb_messages = NULL;
UNLOCK_LOGS();
while (next) {
victim = next;
@@ -469,6 +546,12 @@ logs_free_all(void)
}
tor_free(appname);
+ SMARTLIST_FOREACH(messages, pending_cb_message_t *, msg, {
+ tor_free(msg->msg);
+ tor_free(msg);
+ });
+ smartlist_free(messages);
+
/* We _could_ destroy the log mutex here, but that would screw up any logs
* that happened between here and the end of execution. */
}
@@ -554,8 +637,7 @@ add_stream_log_impl(const log_severity_list_t *severity,
* to <b>fd</b>. Steals a reference to <b>severity</b>; the caller must
* not use it after calling this function. */
void
-add_stream_log(const log_severity_list_t *severity,
- const char *name, int fd)
+add_stream_log(const log_severity_list_t *severity, const char *name, int fd)
{
LOCK_LOGS();
add_stream_log_impl(severity, name, fd);
@@ -570,6 +652,18 @@ init_logging(void)
tor_mutex_init(&log_mutex);
log_mutex_initialized = 1;
}
+ if (pending_cb_messages == NULL)
+ pending_cb_messages = smartlist_create();
+}
+
+/** Set whether we report logging domains as a part of our log messages.
+ */
+void
+logs_set_domain_logging(int enabled)
+{
+ LOCK_LOGS();
+ log_domains_are_logged = enabled;
+ UNLOCK_LOGS();
}
/** Add a log handler to receive messages during startup (before the real
@@ -628,6 +722,48 @@ change_callback_log_severity(int loglevelMin, int loglevelMax,
UNLOCK_LOGS();
}
+/** If there are any log messages that were generated with LD_NOCB waiting to
+ * be sent to callback-based loggers, send them now. */
+void
+flush_pending_log_callbacks(void)
+{
+ logfile_t *lf;
+ smartlist_t *messages, *messages_tmp;
+
+ LOCK_LOGS();
+ if (0 == smartlist_len(pending_cb_messages)) {
+ UNLOCK_LOGS();
+ return;
+ }
+
+ messages = pending_cb_messages;
+ pending_cb_messages = smartlist_create();
+ do {
+ SMARTLIST_FOREACH_BEGIN(messages, pending_cb_message_t *, msg) {
+ const int severity = msg->severity;
+ const int domain = msg->domain;
+ for (lf = logfiles; lf; lf = lf->next) {
+ if (! lf->callback || lf->seems_dead ||
+ ! (lf->severities->masks[SEVERITY_MASK_IDX(severity)] & domain)) {
+ continue;
+ }
+ lf->callback(severity, domain, msg->msg);
+ }
+ tor_free(msg->msg);
+ tor_free(msg);
+ } SMARTLIST_FOREACH_END(msg);
+ smartlist_clear(messages);
+
+ messages_tmp = pending_cb_messages;
+ pending_cb_messages = messages;
+ messages = messages_tmp;
+ } while (smartlist_len(messages));
+
+ smartlist_free(messages);
+
+ UNLOCK_LOGS();
+}
+
/** Close any log handlers added by add_temp_log() or marked by
* mark_logs_temp(). */
void
@@ -722,7 +858,6 @@ add_syslog_log(const log_severity_list_t *severity)
lf->fd = -1;
lf->severities = tor_memdup(severity, sizeof(log_severity_list_t));
lf->filename = tor_strdup("<syslog>");
-
lf->is_syslog = 1;
LOCK_LOGS();
@@ -764,7 +899,7 @@ log_level_to_string(int level)
static const char *domain_list[] = {
"GENERAL", "CRYPTO", "NET", "CONFIG", "FS", "PROTOCOL", "MM",
"HTTP", "APP", "CONTROL", "CIRC", "REND", "BUG", "DIR", "DIRSERV",
- "OR", "EDGE", "ACCT", "HIST", "HANDSHAKE", NULL
+ "OR", "EDGE", "ACCT", "HIST", "HANDSHAKE", "HEARTBEAT", NULL
};
/** Return a bitmask for the log domain for which <b>domain</b> is the name,
@@ -779,18 +914,41 @@ parse_log_domain(const char *domain)
}
return 0;
}
-#if 0
-/** Translate a bitmask of log domains to a string, or NULL if the bitmask
- * is undecodable. */
-static const char *
-domain_to_string(log_domain_mask_t domain)
+
+/** Translate a bitmask of log domains to a string. */
+static char *
+domain_to_string(log_domain_mask_t domain, char *buf, size_t buflen)
{
- int bit = tor_log2(domain);
- if ((bit == 0 && domain == 0) || bit >= N_LOGGING_DOMAINS)
- return NULL;
- return domain_list[bit];
+ char *cp = buf;
+ char *eos = buf+buflen;
+
+ buf[0] = '\0';
+ if (! domain)
+ return buf;
+ while (1) {
+ const char *d;
+ int bit = tor_log2(domain);
+ size_t n;
+ if (bit >= N_LOGGING_DOMAINS) {
+ tor_snprintf(buf, buflen, "<BUG:Unknown domain %lx>", (long)domain);
+ return buf+strlen(buf);
+ }
+ d = domain_list[bit];
+ n = strlcpy(cp, d, eos-cp);
+ if (n >= buflen) {
+ tor_snprintf(buf, buflen, "<BUG:Truncating domain %lx>", (long)domain);
+ return buf+strlen(buf);
+ }
+ cp += n;
+ domain &= ~(1<<bit);
+
+ if (domain == 0 || (eos-cp) < 2)
+ return cp;
+
+ memcpy(cp, ",", 2); /*Nul-terminated ,"*/
+ cp++;
+ }
}
-#endif
/** Parse a log severity pattern in *<b>cfg_ptr</b>. Advance cfg_ptr after
* the end of the severityPattern. Set the value of <b>severity_out</b> to
@@ -866,7 +1024,10 @@ parse_log_severity_config(const char **cfg_ptr,
smartlist_free(domains_list);
if (err)
return -1;
- domains &= ~neg_domains;
+ if (domains == 0 && neg_domains)
+ domains = ~neg_domains;
+ else
+ domains &= ~neg_domains;
cfg = eat_whitespace(closebracket+1);
} else {
++got_an_unqualified_range;
diff --git a/src/common/memarea.c b/src/common/memarea.c
index b5ac7ad97a..a6b8c4ee9c 100644
--- a/src/common/memarea.c
+++ b/src/common/memarea.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2008-2010, The Tor Project, Inc. */
+/* Copyright (c) 2008-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/** \file memarea.c
@@ -30,12 +30,18 @@
#endif
#ifdef USE_SENTINELS
+/** Magic value that we stick at the end of a memarea so we can make sure
+ * there are no run-off-the-end bugs. */
#define SENTINEL_VAL 0x90806622u
+/** How many bytes per area do we devote to the sentinel? */
#define SENTINEL_LEN sizeof(uint32_t)
+/** Given a mem_area_chunk_t with SENTINEL_LEN extra bytes allocated at the
+ * end, set those bytes. */
#define SET_SENTINEL(chunk) \
STMT_BEGIN \
set_uint32( &(chunk)->u.mem[chunk->mem_size], SENTINEL_VAL ); \
STMT_END
+/** Assert that the sentinel on a memarea is set correctly. */
#define CHECK_SENTINEL(chunk) \
STMT_BEGIN \
uint32_t sent_val = get_uint32(&(chunk)->u.mem[chunk->mem_size]); \
@@ -53,7 +59,9 @@ realign_pointer(void *ptr)
{
uintptr_t x = (uintptr_t)ptr;
x = (x+MEMAREA_ALIGN_MASK) & ~MEMAREA_ALIGN_MASK;
+ /* Reinstate this if bug 930 ever reappears
tor_assert(((void*)x) >= ptr);
+ */
return (void*)x;
}
@@ -73,8 +81,11 @@ typedef struct memarea_chunk_t {
} u;
} memarea_chunk_t;
+/** How many bytes are needed for overhead before we get to the memory part
+ * of a chunk? */
#define CHUNK_HEADER_SIZE STRUCT_OFFSET(memarea_chunk_t, u)
+/** What's the smallest that we'll allocate a chunk? */
#define CHUNK_SIZE 4096
/** A memarea_t is an allocation region for a set of small memory requests
@@ -95,6 +106,7 @@ static memarea_chunk_t *freelist = NULL;
static memarea_chunk_t *
alloc_chunk(size_t sz, int freelist_ok)
{
+ tor_assert(sz < SIZE_T_CEILING);
if (freelist && freelist_ok) {
memarea_chunk_t *res = freelist;
freelist = res->next_chunk;
@@ -211,6 +223,7 @@ memarea_alloc(memarea_t *area, size_t sz)
char *result;
tor_assert(chunk);
CHECK_SENTINEL(chunk);
+ tor_assert(sz < SIZE_T_CEILING);
if (sz == 0)
sz = 1;
if (chunk->next_mem+sz > chunk->u.mem+chunk->mem_size) {
@@ -230,10 +243,10 @@ memarea_alloc(memarea_t *area, size_t sz)
}
result = chunk->next_mem;
chunk->next_mem = chunk->next_mem + sz;
-
+ /* Reinstate these if bug 930 ever comes back
tor_assert(chunk->next_mem >= chunk->u.mem);
tor_assert(chunk->next_mem <= chunk->u.mem+chunk->mem_size);
-
+ */
chunk->next_mem = realign_pointer(chunk->next_mem);
return result;
}
@@ -270,6 +283,7 @@ memarea_strndup(memarea_t *area, const char *s, size_t n)
size_t ln;
char *result;
const char *cp, *end = s+n;
+ tor_assert(n < SIZE_T_CEILING);
for (cp = s; cp < end && *cp; ++cp)
;
/* cp now points to s+n, or to the 0 in the string. */
diff --git a/src/common/memarea.h b/src/common/memarea.h
index 95d855f6d9..4d31dc95a8 100644
--- a/src/common/memarea.h
+++ b/src/common/memarea.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2008-2010, The Tor Project, Inc. */
+/* Copyright (c) 2008-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/* Tor dependencies */
diff --git a/src/common/mempool.c b/src/common/mempool.c
index c795d83f0c..30d7788043 100644
--- a/src/common/mempool.c
+++ b/src/common/mempool.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2007-2010, The Tor Project, Inc. */
+/* Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#if 1
/* Tor dependencies */
@@ -137,7 +137,7 @@ struct mp_chunk_t {
int capacity; /**< Number of items that can be fit into this chunk. */
size_t mem_size; /**< Number of usable bytes in mem. */
char *next_mem; /**< Pointer into part of <b>mem</b> not yet carved up. */
- char mem[1]; /**< Storage for this chunk. (Not actual size.) */
+ char mem[FLEXIBLE_ARRAY_MEMBER]; /**< Storage for this chunk. */
};
/** Number of extra bytes needed beyond mem_size to allocate a chunk. */
@@ -357,6 +357,10 @@ mp_pool_new(size_t item_size, size_t chunk_capacity)
mp_pool_t *pool;
size_t alloc_size, new_chunk_cap;
+ tor_assert(item_size < SIZE_T_CEILING);
+ tor_assert(chunk_capacity < SIZE_T_CEILING);
+ tor_assert(SIZE_T_CEILING / item_size > chunk_capacity);
+
pool = ALLOC(sizeof(mp_pool_t));
CHECK_ALLOC(pool);
memset(pool, 0, sizeof(mp_pool_t));
diff --git a/src/common/mempool.h b/src/common/mempool.h
index ae1feea843..fb1e9e8b42 100644
--- a/src/common/mempool.h
+++ b/src/common/mempool.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2007-2010, The Tor Project, Inc. */
+/* Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/common/procmon.c b/src/common/procmon.c
new file mode 100644
index 0000000000..5c10e9a22b
--- /dev/null
+++ b/src/common/procmon.c
@@ -0,0 +1,336 @@
+
+/**
+ * \file procmon.c
+ * \brief Process-termination monitor functions
+ **/
+
+#include "procmon.h"
+
+#include "util.h"
+
+#ifdef HAVE_EVENT2_EVENT_H
+#include <event2/event.h>
+#else
+#include <event.h>
+#endif
+
+#ifdef HAVE_SIGNAL_H
+#include <signal.h>
+#endif
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+
+#ifdef MS_WINDOWS
+#include <windows.h>
+
+/* Windows does not define pid_t, but _getpid() returns an int. */
+typedef int pid_t;
+#endif
+
+/* Define to 1 if process-termination monitors on this OS and Libevent
+ version must poll for process termination themselves. */
+#define PROCMON_POLLS 1
+/* Currently we need to poll in some way on all systems. */
+
+#ifdef PROCMON_POLLS
+static void tor_process_monitor_poll_cb(evutil_socket_t unused1, short unused2,
+ void *procmon_);
+#endif
+
+/* This struct may contain pointers into the original process
+ * specifier string, but it should *never* contain anything which
+ * needs to be freed. */
+struct parsed_process_specifier_t {
+ pid_t pid;
+};
+
+/** Parse the process specifier given in <b>process_spec</b> into
+ * *<b>ppspec</b>. Return 0 on success; return -1 and store an error
+ * message into *<b>msg</b> on failure. The caller must not free the
+ * returned error message. */
+static int
+parse_process_specifier(const char *process_spec,
+ struct parsed_process_specifier_t *ppspec,
+ const char **msg)
+{
+ long pid_l;
+ int pid_ok = 0;
+ char *pspec_next;
+
+ /* If we're lucky, long will turn out to be large enough to hold a
+ * PID everywhere that Tor runs. */
+ pid_l = tor_parse_long(process_spec, 0, 1, LONG_MAX, &pid_ok, &pspec_next);
+
+ /* Reserve room in the ‘process specifier’ for additional
+ * (platform-specific) identifying information beyond the PID, to
+ * make our process-existence checks a bit less racy in a future
+ * version. */
+ if ((*pspec_next != 0) && (*pspec_next != ' ') && (*pspec_next != ':')) {
+ pid_ok = 0;
+ }
+
+ ppspec->pid = (pid_t)(pid_l);
+ if (!pid_ok || (pid_l != (long)(ppspec->pid))) {
+ *msg = "invalid PID";
+ goto err;
+ }
+
+ return 0;
+ err:
+ return -1;
+}
+
+struct tor_process_monitor_t {
+ /** Log domain for warning messages. */
+ log_domain_mask_t log_domain;
+
+ /** All systems: The best we can do in general is poll for the
+ * process's existence by PID periodically, and hope that the kernel
+ * doesn't reassign the same PID to another process between our
+ * polls. */
+ pid_t pid;
+
+#ifdef MS_WINDOWS
+ /** Windows-only: Should we poll hproc? If false, poll pid
+ * instead. */
+ int poll_hproc;
+
+ /** Windows-only: Get a handle to the process (if possible) and
+ * periodically check whether the process we have a handle to has
+ * ended. */
+ HANDLE hproc;
+ /* XXX023 We can and should have Libevent watch hproc for us,
+ * if/when some version of Libevent 2.x can be told to do so. */
+#endif
+
+ /* XXX023 On Linux, we can and should receive the 22nd
+ * (space-delimited) field (‘starttime’) of /proc/$PID/stat from the
+ * owning controller and store it, and poll once in a while to see
+ * whether it has changed -- if so, the kernel has *definitely*
+ * reassigned the owning controller's PID and we should exit. On
+ * FreeBSD, we can do the same trick using either the 8th
+ * space-delimited field of /proc/$PID/status on the seven FBSD
+ * systems whose admins have mounted procfs, or the start-time field
+ * of the process-information structure returned by kvmgetprocs() on
+ * any system. The latter is ickier. */
+ /* XXX023 On FreeBSD (and possibly other kqueue systems), we can and
+ * should arrange to receive EVFILT_PROC NOTE_EXIT notifications for
+ * pid, so we don't have to do such a heavyweight poll operation in
+ * order to avoid the PID-reassignment race condition. (We would
+ * still need to poll our own kqueue periodically until some version
+ * of Libevent 2.x learns to receive these events for us.) */
+
+ /** A Libevent event structure, to either poll for the process's
+ * existence or receive a notification when the process ends. */
+ struct event *e;
+
+ /** A callback to be called when the process ends. */
+ tor_procmon_callback_t cb;
+ void *cb_arg; /**< A user-specified pointer to be passed to cb. */
+};
+
+/** Verify that the process specifier given in <b>process_spec</b> is
+ * syntactically valid. Return 0 on success; return -1 and store an
+ * error message into *<b>msg</b> on failure. The caller must not
+ * free the returned error message. */
+int
+tor_validate_process_specifier(const char *process_spec,
+ const char **msg)
+{
+ struct parsed_process_specifier_t ppspec;
+
+ tor_assert(msg != NULL);
+ *msg = NULL;
+
+ return parse_process_specifier(process_spec, &ppspec, msg);
+}
+
+#ifdef HAVE_EVENT2_EVENT_H
+#define PERIODIC_TIMER_FLAGS EV_PERSIST
+#else
+#define PERIODIC_TIMER_FLAGS (0)
+#endif
+
+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. */
+
+/** Create a process-termination monitor for the process specifier
+ * given in <b>process_spec</b>. Return a newly allocated
+ * tor_process_monitor_t on success; return NULL and store an error
+ * message into *<b>msg</b> on failure. The caller must not free
+ * the returned error message.
+ *
+ * When the monitored process terminates, call
+ * <b>cb</b>(<b>cb_arg</b>).
+ */
+tor_process_monitor_t *
+tor_process_monitor_new(struct event_base *base,
+ const char *process_spec,
+ log_domain_mask_t log_domain,
+ tor_procmon_callback_t cb, void *cb_arg,
+ const char **msg)
+{
+ tor_process_monitor_t *procmon = tor_malloc(sizeof(tor_process_monitor_t));
+ struct parsed_process_specifier_t ppspec;
+
+ tor_assert(msg != NULL);
+ *msg = NULL;
+
+ if (procmon == NULL) {
+ *msg = "out of memory";
+ goto err;
+ }
+
+ procmon->log_domain = log_domain;
+
+ if (parse_process_specifier(process_spec, &ppspec, msg))
+ goto err;
+
+ procmon->pid = ppspec.pid;
+
+#ifdef MS_WINDOWS
+ procmon->hproc = OpenProcess(PROCESS_QUERY_INFORMATION | SYNCHRONIZE,
+ FALSE,
+ procmon->pid);
+
+ if (procmon->hproc != NULL) {
+ procmon->poll_hproc = 1;
+ log_info(procmon->log_domain, "Successfully opened handle to process %d; "
+ "monitoring it.",
+ (int)(procmon->pid));
+ } else {
+ /* If we couldn't get a handle to the process, we'll try again the
+ * first time we poll. */
+ log_info(procmon->log_domain, "Failed to open handle to process %d; will "
+ "try again later.",
+ (int)(procmon->pid));
+ }
+#endif
+
+ procmon->cb = cb;
+ procmon->cb_arg = cb_arg;
+
+#ifdef PROCMON_POLLS
+ procmon->e = tor_event_new(base, -1 /* no FD */, PERIODIC_TIMER_FLAGS,
+ tor_process_monitor_poll_cb, procmon);
+ /* Note: If you port this file to plain Libevent 2, check that
+ * procmon->e is non-NULL. We don't need to here because
+ * tor_evtimer_new never returns NULL. */
+
+ evtimer_add(procmon->e, &poll_interval_tv);
+#else
+#error OOPS?
+#endif
+
+ return procmon;
+ err:
+ tor_process_monitor_free(procmon);
+ return NULL;
+}
+
+#ifdef PROCMON_POLLS
+/** Libevent callback to poll for the existence of the process
+ * monitored by <b>procmon_</b>. */
+static void
+tor_process_monitor_poll_cb(evutil_socket_t unused1, short unused2,
+ void *procmon_)
+{
+ tor_process_monitor_t *procmon = (tor_process_monitor_t *)(procmon_);
+ int its_dead_jim;
+
+ (void)unused1; (void)unused2;
+
+ tor_assert(procmon != NULL);
+
+#ifdef MS_WINDOWS
+ if (procmon->poll_hproc) {
+ DWORD exit_code;
+ if (!GetExitCodeProcess(procmon->hproc, &exit_code)) {
+ char *errmsg = format_win32_error(GetLastError());
+ log_warn(procmon->log_domain, "Error \"%s\" occurred while polling "
+ "handle for monitored process %d; assuming it's dead.",
+ errmsg, procmon->pid);
+ tor_free(errmsg);
+ its_dead_jim = 1;
+ } else {
+ its_dead_jim = (exit_code != STILL_ACTIVE);
+ }
+ } else {
+ /* All we can do is try to open the process, and look at the error
+ * code if it fails again. */
+ procmon->hproc = OpenProcess(PROCESS_QUERY_INFORMATION | SYNCHRONIZE,
+ FALSE,
+ procmon->pid);
+
+ if (procmon->hproc != NULL) {
+ log_info(procmon->log_domain, "Successfully opened handle to monitored "
+ "process %d.",
+ procmon->pid);
+ its_dead_jim = 0;
+ procmon->poll_hproc = 1;
+ } else {
+ DWORD err_code = GetLastError();
+ char *errmsg = format_win32_error(err_code);
+
+ /* When I tested OpenProcess's error codes on Windows 7, I
+ * received error code 5 (ERROR_ACCESS_DENIED) for PIDs of
+ * existing processes that I could not open and error code 87
+ * (ERROR_INVALID_PARAMETER) for PIDs that were not in use.
+ * Since the nonexistent-process error code is sane, I'm going
+ * to assume that all errors other than ERROR_INVALID_PARAMETER
+ * mean that the process we are monitoring is still alive. */
+ its_dead_jim = (err_code == ERROR_INVALID_PARAMETER);
+
+ if (!its_dead_jim)
+ log_info(procmon->log_domain, "Failed to open handle to monitored "
+ "process %d, and error code %lu (%s) is not 'invalid "
+ "parameter' -- assuming the process is still alive.",
+ procmon->pid,
+ err_code, errmsg);
+
+ tor_free(errmsg);
+ }
+ }
+#else
+ /* Unix makes this part easy, if a bit racy. */
+ its_dead_jim = kill(procmon->pid, 0);
+ its_dead_jim = its_dead_jim && (errno == ESRCH);
+#endif
+
+ log(its_dead_jim ? LOG_NOTICE : LOG_INFO,
+ procmon->log_domain, "Monitored process %d is %s.",
+ (int)procmon->pid,
+ its_dead_jim ? "dead" : "still alive");
+
+ if (its_dead_jim) {
+ procmon->cb(procmon->cb_arg);
+#ifndef HAVE_EVENT2_EVENT_H
+ } else {
+ evtimer_add(procmon->e, &poll_interval_tv);
+#endif
+ }
+}
+#endif
+
+/** Free the process-termination monitor <b>procmon</b>. */
+void
+tor_process_monitor_free(tor_process_monitor_t *procmon)
+{
+ if (procmon == NULL)
+ return;
+
+#ifdef MS_WINDOWS
+ if (procmon->hproc != NULL)
+ CloseHandle(procmon->hproc);
+#endif
+
+ if (procmon->e != NULL)
+ tor_event_free(procmon->e);
+
+ tor_free(procmon);
+}
+
diff --git a/src/common/procmon.h b/src/common/procmon.h
new file mode 100644
index 0000000000..02eb2da61c
--- /dev/null
+++ b/src/common/procmon.h
@@ -0,0 +1,30 @@
+
+/**
+ * \file procmon.h
+ * \brief Headers for procmon.c
+ **/
+
+#ifndef TOR_PROCMON_H
+#define TOR_PROCMON_H
+
+#include "compat.h"
+#include "compat_libevent.h"
+
+#include "torlog.h"
+
+typedef struct tor_process_monitor_t tor_process_monitor_t;
+
+typedef void (*tor_procmon_callback_t)(void *);
+
+int tor_validate_process_specifier(const char *process_spec,
+ const char **msg);
+tor_process_monitor_t *tor_process_monitor_new(struct event_base *base,
+ const char *process_spec,
+ log_domain_mask_t log_domain,
+ tor_procmon_callback_t cb,
+ void *cb_arg,
+ const char **msg);
+void tor_process_monitor_free(tor_process_monitor_t *procmon);
+
+#endif
+
diff --git a/src/common/sha256.c b/src/common/sha256.c
index 4236d48f5f..258b7e062a 100644
--- a/src/common/sha256.c
+++ b/src/common/sha256.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2009-2010, The Tor Project, Inc. */
+/* Copyright (c) 2009-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/* This SHA256 implementation is adapted from the public domain one in
LibTomCrypt, version 1.6. Tor uses it on platforms where OpenSSL doesn't
diff --git a/src/common/torgzip.c b/src/common/torgzip.c
index a247d6c177..2937c67de2 100644
--- a/src/common/torgzip.c
+++ b/src/common/torgzip.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -79,6 +79,35 @@ method_bits(compress_method_t method)
return method == GZIP_METHOD ? 15+16 : 15;
}
+/** @{ */
+/* These macros define the maximum allowable compression factor. Anything of
+ * size greater than CHECK_FOR_COMPRESSION_BOMB_AFTER is not allowed to
+ * have an uncompression factor (uncompressed size:compressed size ratio) of
+ * any greater than MAX_UNCOMPRESSION_FACTOR.
+ *
+ * Picking a value for MAX_UNCOMPRESSION_FACTOR is a trade-off: we want it to
+ * be small to limit the attack multiplier, but we also want it to be large
+ * enough so that no legitimate document --even ones we might invent in the
+ * future -- ever compresses by a factor of greater than
+ * MAX_UNCOMPRESSION_FACTOR. Within those parameters, there's a reasonably
+ * large range of possible values. IMO, anything over 8 is probably safe; IMO
+ * anything under 50 is probably sufficient.
+ */
+#define MAX_UNCOMPRESSION_FACTOR 25
+#define CHECK_FOR_COMPRESSION_BOMB_AFTER (1024*64)
+/** @} */
+
+/** Return true if uncompressing an input of size <b>in_size</b> to an input
+ * of size at least <b>size_out</b> looks like a compression bomb. */
+static int
+is_compression_bomb(size_t size_in, size_t size_out)
+{
+ if (size_in == 0 || size_out < CHECK_FOR_COMPRESSION_BOMB_AFTER)
+ return 0;
+
+ return (size_out / size_in > MAX_UNCOMPRESSION_FACTOR);
+}
+
/** Given <b>in_len</b> bytes at <b>in</b>, compress them into a newly
* allocated buffer, using the method described in <b>method</b>. Store the
* compressed string in *<b>out</b>, and its length in *<b>out_len</b>.
@@ -181,6 +210,12 @@ tor_gzip_compress(char **out, size_t *out_len,
}
tor_free(stream);
+ if (is_compression_bomb(*out_len, in_len)) {
+ log_warn(LD_BUG, "We compressed something and got an insanely high "
+ "compression factor; other Tors would think this was a zlib bomb.");
+ goto err;
+ }
+
return 0;
err:
if (stream) {
@@ -243,7 +278,7 @@ tor_gzip_uncompress(char **out, size_t *out_len,
out_size = in_len * 2; /* guess 50% compression. */
if (out_size < 1024) out_size = 1024;
- if (out_size > UINT_MAX)
+ if (out_size >= SIZE_T_CEILING || out_size > UINT_MAX)
goto err;
*out = tor_malloc(out_size);
@@ -283,7 +318,16 @@ tor_gzip_uncompress(char **out, size_t *out_len,
old_size = out_size;
out_size *= 2;
if (out_size < old_size) {
- log_warn(LD_GENERAL, "Size overflow in compression.");
+ log_warn(LD_GENERAL, "Size overflow in uncompression.");
+ goto err;
+ }
+ if (is_compression_bomb(in_len, out_size)) {
+ log_warn(LD_GENERAL, "Input looks like a possible zlib bomb; "
+ "not proceeding.");
+ goto err;
+ }
+ if (out_size >= SIZE_T_CEILING) {
+ log_warn(LD_BUG, "Hit SIZE_T_CEILING limit while uncompressing.");
goto err;
}
*out = tor_realloc(*out, out_size);
@@ -334,7 +378,7 @@ tor_gzip_uncompress(char **out, size_t *out_len,
compress_method_t
detect_compression_method(const char *in, size_t in_len)
{
- if (in_len > 2 && !memcmp(in, "\x1f\x8b", 2)) {
+ if (in_len > 2 && fast_memeq(in, "\x1f\x8b", 2)) {
return GZIP_METHOD;
} else if (in_len > 2 && (in[0] & 0x0f) == 8 &&
(ntohs(get_uint16(in)) % 31) == 0) {
@@ -347,8 +391,13 @@ detect_compression_method(const char *in, size_t in_len)
/** Internal state for an incremental zlib compression/decompression. The
* body of this struct is not exposed. */
struct tor_zlib_state_t {
- struct z_stream_s stream;
- int compress;
+ struct z_stream_s stream; /**< The zlib stream */
+ int compress; /**< True if we are compressing; false if we are inflating */
+
+ /** Number of bytes read so far. Used to detect zlib bombs. */
+ size_t input_so_far;
+ /** Number of bytes written so far. Used to detect zlib bombs. */
+ size_t output_so_far;
};
/** Construct and return a tor_zlib_state_t object using <b>method</b>. If
@@ -415,11 +464,20 @@ tor_zlib_process(tor_zlib_state_t *state,
err = inflate(&state->stream, finish ? Z_FINISH : Z_SYNC_FLUSH);
}
+ state->input_so_far += state->stream.next_in - ((unsigned char*)*in);
+ state->output_so_far += state->stream.next_out - ((unsigned char*)*out);
+
*out = (char*) state->stream.next_out;
*out_len = state->stream.avail_out;
*in = (const char *) state->stream.next_in;
*in_len = state->stream.avail_in;
+ if (! state->compress &&
+ is_compression_bomb(state->input_so_far, state->output_so_far)) {
+ log_warn(LD_DIR, "Possible zlib bomb; abandoning stream.");
+ return TOR_ZLIB_ERR;
+ }
+
switch (err)
{
case Z_STREAM_END:
diff --git a/src/common/torgzip.h b/src/common/torgzip.h
index 5139f4bcad..15e09eb700 100644
--- a/src/common/torgzip.h
+++ b/src/common/torgzip.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/common/torint.h b/src/common/torint.h
index 57f18212ad..0b5c29adc0 100644
--- a/src/common/torint.h
+++ b/src/common/torint.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -115,7 +115,7 @@ typedef unsigned int uint32_t;
#define UINT32_MAX 0xffffffffu
#endif
#ifndef INT32_MAX
-#define INT32_MAX 0x7fffffffu
+#define INT32_MAX 0x7fffffff
#endif
#ifndef INT32_MIN
#define INT32_MIN (-2147483647-1)
@@ -329,8 +329,10 @@ typedef uint32_t uintptr_t;
#endif
#endif
-/* Any size_t larger than this amount is likely to be an underflow. */
-#define SIZE_T_CEILING (sizeof(char)<<(sizeof(size_t)*8 - 1))
+/** Any ssize_t larger than this amount is likely to be an underflow. */
+#define SSIZE_T_CEILING ((ssize_t)(SSIZE_T_MAX-16))
+/** Any size_t larger than this amount is likely to be an underflow. */
+#define SIZE_T_CEILING ((size_t)(SSIZE_T_MAX-16))
#endif /* __TORINT_H */
diff --git a/src/common/torlog.h b/src/common/torlog.h
index d119993e87..4c5729ef53 100644
--- a/src/common/torlog.h
+++ b/src/common/torlog.h
@@ -1,11 +1,11 @@
/* Copyright (c) 2001, Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
- * \file log.h
+ * \file torlog.h
*
* \brief Headers for log.c
**/
@@ -92,9 +92,16 @@
#define LD_HIST (1u<<18)
/** OR handshaking */
#define LD_HANDSHAKE (1u<<19)
+/** Heartbeat messages */
+#define LD_HEARTBEAT (1u<<20)
/** Number of logging domains in the code. */
-#define N_LOGGING_DOMAINS 20
+#define N_LOGGING_DOMAINS 21
+/** This log message is not safe to send to a callback-based logger
+ * immediately. Used as a flag, not a log domain. */
+#define LD_NOCB (1u<<31)
+
+/** Mask of zero or more log domains, OR'd together. */
typedef uint32_t log_domain_mask_t;
/** Configures which severities are logged for each logging domain for a given
@@ -128,6 +135,7 @@ int add_file_log(const log_severity_list_t *severity, const char *filename);
int add_syslog_log(const log_severity_list_t *severity);
#endif
int add_callback_log(const log_severity_list_t *severity, log_callback cb);
+void logs_set_domain_logging(int enabled);
int get_min_log_level(void);
void switch_logs_debug(void);
void logs_free_all(void);
@@ -137,10 +145,10 @@ void rollback_log_changes(void);
void mark_logs_temp(void);
void change_callback_log_severity(int loglevelMin, int loglevelMax,
log_callback cb);
+void flush_pending_log_callbacks(void);
void log_set_application_name(const char *name);
void set_log_time_granularity(int granularity_msec);
-/* Outputs a message to stdout */
void tor_log(int severity, log_domain_mask_t domain, const char *format, ...)
CHECK_PRINTF(3,4);
#define log tor_log /* hack it so we don't conflict with log() as much */
diff --git a/src/common/tortls.c b/src/common/tortls.c
index f85c157bb8..a208bc7614 100644
--- a/src/common/tortls.c
+++ b/src/common/tortls.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -58,7 +58,6 @@
#include "util.h"
#include "torlog.h"
#include "container.h"
-#include "ht.h"
#include <string.h>
/* Enable the "v2" TLS handshake.
@@ -104,11 +103,13 @@ typedef struct tor_tls_context_t {
crypto_pk_env_t *key;
} tor_tls_context_t;
+#define TOR_TLS_MAGIC 0x71571571
+
/** Holds a SSL object and its associated data. Members are only
* accessed from within tortls.c.
*/
struct tor_tls_t {
- HT_ENTRY(tor_tls_t) node;
+ uint32_t magic;
tor_tls_context_t *context; /** A link to the context object for this tls. */
SSL *ssl; /**< An OpenSSL SSL object. */
int socket; /**< The underlying file descriptor for this TLS connection. */
@@ -153,42 +154,29 @@ static SSL_CIPHER *CLIENT_CIPHER_DUMMIES = NULL;
static STACK_OF(SSL_CIPHER) *CLIENT_CIPHER_STACK = NULL;
#endif
-/** Helper: compare tor_tls_t objects by its SSL. */
-static INLINE int
-tor_tls_entries_eq(const tor_tls_t *a, const tor_tls_t *b)
-{
- return a->ssl == b->ssl;
-}
+/** The ex_data index in which we store a pointer to an SSL object's
+ * corresponding tor_tls_t object. */
+static int tor_tls_object_ex_data_index = -1;
-/** Helper: return a hash value for a tor_tls_t by its SSL. */
-static INLINE unsigned int
-tor_tls_entry_hash(const tor_tls_t *a)
+/** Helper: Allocate tor_tls_object_ex_data_index. */
+static void
+tor_tls_allocate_tor_tls_object_ex_data_index(void)
{
-#if SIZEOF_INT == SIZEOF_VOID_P
- return ((unsigned int)(uintptr_t)a->ssl);
-#else
- return (unsigned int) ((((uint64_t)a->ssl)>>2) & UINT_MAX);
-#endif
+ if (tor_tls_object_ex_data_index == -1) {
+ tor_tls_object_ex_data_index =
+ SSL_get_ex_new_index(0, NULL, NULL, NULL, NULL);
+ tor_assert(tor_tls_object_ex_data_index != -1);
+ }
}
-/** Map from SSL* pointers to tor_tls_t objects using those pointers.
- */
-static HT_HEAD(tlsmap, tor_tls_t) tlsmap_root = HT_INITIALIZER();
-
-HT_PROTOTYPE(tlsmap, tor_tls_t, node, tor_tls_entry_hash,
- tor_tls_entries_eq)
-HT_GENERATE(tlsmap, tor_tls_t, node, tor_tls_entry_hash,
- tor_tls_entries_eq, 0.6, malloc, realloc, free)
-
/** Helper: given a SSL* pointer, return the tor_tls_t object using that
* pointer. */
static INLINE tor_tls_t *
tor_tls_get_by_ssl(const SSL *ssl)
{
- tor_tls_t search, *result;
- memset(&search, 0, sizeof(search));
- search.ssl = (SSL*)ssl;
- result = HT_FIND(tlsmap, &tlsmap_root, &search);
+ tor_tls_t *result = SSL_get_ex_data(ssl, tor_tls_object_ex_data_index);
+ if (result)
+ tor_assert(result->magic == TOR_TLS_MAGIC);
return result;
}
@@ -234,6 +222,40 @@ ssl_state_to_string(int ssl_state)
return buf;
}
+/** Write a description of the current state of <b>tls</b> into the
+ * <b>sz</b>-byte buffer at <b>buf</b>. */
+void
+tor_tls_get_state_description(tor_tls_t *tls, char *buf, size_t sz)
+{
+ const char *ssl_state;
+ const char *tortls_state;
+
+ if (PREDICT_UNLIKELY(!tls || !tls->ssl)) {
+ strlcpy(buf, "(No SSL object)", sz);
+ return;
+ }
+
+ ssl_state = ssl_state_to_string(tls->ssl->state);
+ switch (tls->state) {
+#define CASE(st) case TOR_TLS_ST_##st: tortls_state = " in "#st ; break
+ CASE(HANDSHAKE);
+ CASE(OPEN);
+ CASE(GOTCLOSE);
+ CASE(SENTCLOSE);
+ CASE(CLOSED);
+ CASE(RENEGOTIATE);
+#undef CASE
+ case TOR_TLS_ST_BUFFEREVENT:
+ tortls_state = "";
+ break;
+ default:
+ tortls_state = " in unknown TLS state";
+ break;
+ }
+
+ tor_snprintf(buf, sz, "%s%s", ssl_state, tortls_state);
+}
+
void
tor_tls_log_one_error(tor_tls_t *tls, unsigned long err,
int severity, int domain, const char *doing)
@@ -448,6 +470,8 @@ tor_tls_init(void)
SSLeay_version(SSLEAY_VERSION), version);
}
+ tor_tls_allocate_tor_tls_object_ex_data_index();
+
tls_library_is_initialized = 1;
}
}
@@ -466,10 +490,6 @@ tor_tls_free_all(void)
client_tls_context = NULL;
tor_tls_context_decref(ctx);
}
- if (!HT_EMPTY(&tlsmap_root)) {
- log_warn(LD_MM, "Still have entries in the tlsmap at shutdown.");
- }
- HT_CLEAR(tlsmap, &tlsmap_root);
#ifdef V2_HANDSHAKE_CLIENT
if (CLIENT_CIPHER_DUMMIES)
tor_free(CLIENT_CIPHER_DUMMIES);
@@ -828,7 +848,8 @@ tor_tls_context_new(crypto_pk_env_t *identity, unsigned int key_lifetime)
if (!SSL_CTX_check_private_key(result->ctx))
goto error;
{
- crypto_dh_env_t *dh = crypto_dh_new();
+ crypto_dh_env_t *dh = crypto_dh_new(DH_TYPE_TLS);
+ tor_assert(dh);
SSL_CTX_set_tmp_dh(result->ctx, _crypto_dh_env_get_dh(dh));
crypto_dh_free(dh);
}
@@ -912,6 +933,13 @@ tor_tls_client_is_using_v2_ciphers(const SSL *ssl, const char *address)
return 1;
}
+static void
+tor_tls_debug_state_callback(const SSL *ssl, int type, int val)
+{
+ log_debug(LD_HANDSHAKE, "SSL %p is now in state %s [type=%d,val=%d].",
+ ssl, ssl_state_to_string(ssl->state), type, val);
+}
+
/** Invoked when we're accepting a connection on <b>ssl</b>, and the connection
* changes state. We use this:
* <ul><li>To alter the state of the handshake partway through, so we
@@ -923,6 +951,9 @@ tor_tls_server_info_callback(const SSL *ssl, int type, int val)
{
tor_tls_t *tls;
(void) val;
+
+ tor_tls_debug_state_callback(ssl, type, val);
+
if (type != SSL_CB_ACCEPT_LOOP)
return;
if (ssl->state != SSL3_ST_SW_SRVR_HELLO_A)
@@ -937,6 +968,7 @@ tor_tls_server_info_callback(const SSL *ssl, int type, int val)
++tls->server_handshake_count;
} else {
log_warn(LD_BUG, "Couldn't look up the tls for an SSL*. How odd!");
+ return;
}
/* Now check the cipher list. */
@@ -1044,6 +1076,7 @@ tor_tls_new(int sock, int isServer)
tor_tls_t *result = tor_malloc_zero(sizeof(tor_tls_t));
tor_tls_context_t *context = isServer ? server_tls_context :
client_tls_context;
+ result->magic = TOR_TLS_MAGIC;
tor_assert(context); /* make sure somebody made it first */
if (!(result->ssl = SSL_new(context->ctx))) {
@@ -1084,7 +1117,14 @@ tor_tls_new(int sock, int isServer)
tor_free(result);
return NULL;
}
- HT_INSERT(tlsmap, &tlsmap_root, result);
+ {
+ int set_worked =
+ SSL_set_ex_data(result->ssl, tor_tls_object_ex_data_index, result);
+ if (!set_worked) {
+ log_warn(LD_BUG,
+ "Couldn't set the tls for an SSL*; connection will fail");
+ }
+ }
SSL_set_bio(result->ssl, bio, bio);
tor_tls_context_incref(context);
result->context = context;
@@ -1100,8 +1140,11 @@ tor_tls_new(int sock, int isServer)
#ifdef V2_HANDSHAKE_SERVER
if (isServer) {
SSL_set_info_callback(result->ssl, tor_tls_server_info_callback);
- }
+ } else
#endif
+ {
+ SSL_set_info_callback(result->ssl, tor_tls_debug_state_callback);
+ }
/* Not expected to get called. */
tls_log_errors(NULL, LOG_WARN, LD_NET, "creating tor_tls_t object");
@@ -1135,7 +1178,7 @@ tor_tls_set_renegotiate_callback(tor_tls_t *tls,
if (cb) {
SSL_set_info_callback(tls->ssl, tor_tls_server_info_callback);
} else {
- SSL_set_info_callback(tls->ssl, NULL);
+ SSL_set_info_callback(tls->ssl, tor_tls_debug_state_callback);
}
#endif
}
@@ -1195,14 +1238,9 @@ tor_tls_is_server(tor_tls_t *tls)
void
tor_tls_free(tor_tls_t *tls)
{
- tor_tls_t *removed;
if (!tls)
return;
tor_assert(tls->ssl);
- removed = HT_REMOVE(tlsmap, &tlsmap_root, tls);
- if (!removed) {
- log_warn(LD_BUG, "Freeing a TLS that was not in the ssl->tls map.");
- }
#ifdef SSL_set_tlsext_host_name
SSL_set_tlsext_host_name(tls->ssl, NULL);
#endif
@@ -1212,6 +1250,7 @@ tor_tls_free(tor_tls_t *tls)
if (tls->context)
tor_tls_context_decref(tls->context);
tor_free(tls->address);
+ tls->magic = 0x99999999;
tor_free(tls);
}
diff --git a/src/common/tortls.h b/src/common/tortls.h
index fe7cd6cecf..9b8108b42b 100644
--- a/src/common/tortls.h
+++ b/src/common/tortls.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef _TOR_TORTLS_H
@@ -48,6 +48,7 @@ typedef struct tor_tls_t tor_tls_t;
#define TOR_TLS_IS_ERROR(rv) ((rv) < TOR_TLS_CLOSE)
const char *tor_tls_err_to_string(int err);
+void tor_tls_get_state_description(tor_tls_t *tls, char *buf, size_t sz);
void tor_tls_free_all(void);
int tor_tls_context_init(int is_public_server,
diff --git a/src/common/tortls_states.h b/src/common/tortls_states.h
index 00f476dd66..dcff2479f6 100644
--- a/src/common/tortls_states.h
+++ b/src/common/tortls_states.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/* Helper file: included only in tortls.c */
diff --git a/src/common/util.c b/src/common/util.c
index 95d2b87c5d..b95ee3a612 100644
--- a/src/common/util.c
+++ b/src/common/util.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -31,6 +31,7 @@
#else
#include <dirent.h>
#include <pwd.h>
+#include <grp.h>
#endif
/* math.h needs this on Linux */
@@ -123,6 +124,8 @@ _tor_malloc(size_t size DMALLOC_PARAMS)
{
void *result;
+ tor_assert(size < SIZE_T_CEILING);
+
#ifndef MALLOC_ZERO_WORKS
/* Some libc mallocs don't work when size==0. Override them. */
if (size==0) {
@@ -173,6 +176,8 @@ _tor_realloc(void *ptr, size_t size DMALLOC_PARAMS)
{
void *result;
+ tor_assert(size < SIZE_T_CEILING);
+
#ifdef USE_DMALLOC
result = dmalloc_realloc(file, line, ptr, size, DMALLOC_FUNC_REALLOC, 0);
#else
@@ -219,6 +224,7 @@ _tor_strndup(const char *s, size_t n DMALLOC_PARAMS)
{
char *dup;
tor_assert(s);
+ tor_assert(n < SIZE_T_CEILING);
dup = _tor_malloc((n+1) DMALLOC_FN_ARGS);
/* Performance note: Ordinarily we prefer strlcpy to strncpy. But
* this function gets called a whole lot, and platform strncpy is
@@ -235,6 +241,7 @@ void *
_tor_memdup(const void *mem, size_t len DMALLOC_PARAMS)
{
char *dup;
+ tor_assert(len < SIZE_T_CEILING);
tor_assert(mem);
dup = _tor_malloc(len DMALLOC_FN_ARGS);
memcpy(dup, mem, len);
@@ -264,12 +271,15 @@ void *
_tor_malloc_roundup(size_t *sizep DMALLOC_PARAMS)
{
#ifdef HAVE_MALLOC_GOOD_SIZE
+ tor_assert(*sizep < SIZE_T_CEILING);
*sizep = malloc_good_size(*sizep);
return _tor_malloc(*sizep DMALLOC_FN_ARGS);
#elif 0 && defined(HAVE_MALLOC_USABLE_SIZE) && !defined(USE_DMALLOC)
/* Never use malloc_usable_size(); it makes valgrind really unhappy,
* and doesn't win much in terms of usable space where it exists. */
- void *result = _tor_malloc(*sizep DMALLOC_FN_ARGS);
+ void *result;
+ tor_assert(*sizep < SIZE_T_CEILING);
+ result = _tor_malloc(*sizep DMALLOC_FN_ARGS);
*sizep = malloc_usable_size(result);
return result;
#else
@@ -507,7 +517,7 @@ strcmp_len(const char *s1, const char *s2, size_t s1_len)
return -1;
if (s1_len > s2_len)
return 1;
- return memcmp(s1, s2, s2_len);
+ return fast_memcmp(s1, s2, s2_len);
}
/** Compares the first strlen(s2) characters of s1 with s2. Returns as for
@@ -549,17 +559,17 @@ strcasecmpend(const char *s1, const char *s2)
/** Compare the value of the string <b>prefix</b> with the start of the
* <b>memlen</b>-byte memory chunk at <b>mem</b>. Return as for strcmp.
*
- * [As memcmp(mem, prefix, strlen(prefix)) but returns -1 if memlen is less
- * than strlen(prefix).]
+ * [As fast_memcmp(mem, prefix, strlen(prefix)) but returns -1 if memlen is
+ * less than strlen(prefix).]
*/
int
-memcmpstart(const void *mem, size_t memlen,
+fast_memcmpstart(const void *mem, size_t memlen,
const char *prefix)
{
size_t plen = strlen(prefix);
if (memlen < plen)
return -1;
- return memcmp(mem, prefix, plen);
+ return fast_memcmp(mem, prefix, plen);
}
/** Return a pointer to the first char of s that is not whitespace and
@@ -715,14 +725,16 @@ tor_mem_is_zero(const char *mem, size_t len)
0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
};
while (len >= sizeof(ZERO)) {
- if (memcmp(mem, ZERO, sizeof(ZERO)))
+ /* It's safe to use fast_memcmp here, since the very worst thing an
+ * attacker could learn is how many initial bytes of a secret were zero */
+ if (fast_memcmp(mem, ZERO, sizeof(ZERO)))
return 0;
len -= sizeof(ZERO);
mem += sizeof(ZERO);
}
/* Deal with leftover bytes. */
if (len)
- return ! memcmp(mem, ZERO, len);
+ return fast_memeq(mem, ZERO, len);
return 1;
}
@@ -731,7 +743,10 @@ tor_mem_is_zero(const char *mem, size_t len)
int
tor_digest_is_zero(const char *digest)
{
- return tor_mem_is_zero(digest, DIGEST_LEN);
+ static const uint8_t ZERO_DIGEST[] = {
+ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0
+ };
+ return tor_memeq(digest, ZERO_DIGEST, DIGEST_LEN);
}
/** Return true iff the DIGEST256_LEN bytes in digest are all zero. */
@@ -761,13 +776,17 @@ tor_digest256_is_zero(const char *digest)
if (next) *next = endptr; \
return 0
-/** Extract a long from the start of s, in the given numeric base. If
- * there is unconverted data and next is provided, set *next to the
- * first unconverted character. An error has occurred if no characters
- * are converted; or if there are unconverted characters and next is NULL; or
- * if the parsed value is not between min and max. When no error occurs,
- * return the parsed value and set *ok (if provided) to 1. When an error
- * occurs, return 0 and set *ok (if provided) to 0.
+/** Extract a long from the start of <b>s</b>, in the given numeric
+ * <b>base</b>. If <b>base</b> is 0, <b>s</b> is parsed as a decimal,
+ * octal, or hex number in the syntax of a C integer literal. If
+ * there is unconverted data and <b>next</b> is provided, set
+ * *<b>next</b> to the first unconverted character. An error has
+ * occurred if no characters are converted; or if there are
+ * unconverted characters and <b>next</b> is NULL; or if the parsed
+ * value is not between <b>min</b> and <b>max</b>. When no error
+ * occurs, return the parsed value and set *<b>ok</b> (if provided) to
+ * 1. When an error occurs, return 0 and set *<b>ok</b> (if provided)
+ * to 0.
*/
long
tor_parse_long(const char *s, int base, long min, long max,
@@ -1554,7 +1573,7 @@ rate_limit_log(ratelim_t *lim, time_t now)
* was returned by open(). Return the number of bytes written, or -1
* on error. Only use if fd is a blocking fd. */
ssize_t
-write_all(int fd, const char *buf, size_t count, int isSocket)
+write_all(tor_socket_t fd, const char *buf, size_t count, int isSocket)
{
size_t written = 0;
ssize_t result;
@@ -1564,7 +1583,7 @@ write_all(int fd, const char *buf, size_t count, int isSocket)
if (isSocket)
result = tor_socket_send(fd, buf+written, count-written, 0);
else
- result = write(fd, buf+written, count-written);
+ result = write((int)fd, buf+written, count-written);
if (result<0)
return -1;
written += result;
@@ -1578,7 +1597,7 @@ write_all(int fd, const char *buf, size_t count, int isSocket)
* open(). Return the number of bytes read, or -1 on error. Only use
* if fd is a blocking fd. */
ssize_t
-read_all(int fd, char *buf, size_t count, int isSocket)
+read_all(tor_socket_t fd, char *buf, size_t count, int isSocket)
{
size_t numread = 0;
ssize_t result;
@@ -1590,7 +1609,7 @@ read_all(int fd, char *buf, size_t count, int isSocket)
if (isSocket)
result = tor_socket_recv(fd, buf+numread, count-numread, 0);
else
- result = read(fd, buf+numread, count-numread);
+ result = read((int)fd, buf+numread, count-numread);
if (result<0)
return -1;
else if (result == 0)
@@ -1651,17 +1670,31 @@ file_status(const char *fname)
return FN_ERROR;
}
-/** Check whether dirname exists and is private. If yes return 0. If
- * it does not exist, and check==CPD_CREATE is set, try to create it
+/** Check whether <b>dirname</b> exists and is private. If yes return 0. If
+ * it does not exist, and <b>check</b>&CPD_CREATE is set, try to create it
* and return 0 on success. If it does not exist, and
- * check==CPD_CHECK, and we think we can create it, return 0. Else
- * return -1. */
+ * <b>check</b>&CPD_CHECK, and we think we can create it, return 0. Else
+ * return -1. If CPD_GROUP_OK is set, then it's okay if the directory
+ * is group-readable, but in all cases we create the directory mode 0700.
+ * If CPD_CHECK_MODE_ONLY is set, then we don't alter the directory permissions
+ * if they are too permissive: we just return -1.
+ * When effective_user is not NULL, check permissions against the given user
+ * and its primary group.
+ */
int
-check_private_dir(const char *dirname, cpd_check_t check)
+check_private_dir(const char *dirname, cpd_check_t check,
+ const char *effective_user)
{
int r;
struct stat st;
char *f;
+#ifndef MS_WINDOWS
+ int mask;
+ struct passwd *pw = NULL;
+ uid_t running_uid;
+ gid_t running_gid;
+#endif
+
tor_assert(dirname);
f = tor_strdup(dirname);
clean_name_for_stat(f);
@@ -1673,10 +1706,7 @@ check_private_dir(const char *dirname, cpd_check_t check)
strerror(errno));
return -1;
}
- if (check == CPD_NONE) {
- log_warn(LD_FS, "Directory %s does not exist.", dirname);
- return -1;
- } else if (check == CPD_CREATE) {
+ if (check & CPD_CREATE) {
log_info(LD_GENERAL, "Creating directory %s", dirname);
#if defined (MS_WINDOWS) && !defined (WINCE)
r = mkdir(dirname);
@@ -1688,6 +1718,9 @@ check_private_dir(const char *dirname, cpd_check_t check)
strerror(errno));
return -1;
}
+ } else if (!(check & CPD_CHECK)) {
+ log_warn(LD_FS, "Directory %s does not exist.", dirname);
+ return -1;
}
/* XXXX In the case where check==CPD_CHECK, we should look at the
* parent directory a little harder. */
@@ -1698,26 +1731,71 @@ check_private_dir(const char *dirname, cpd_check_t check)
return -1;
}
#ifndef MS_WINDOWS
- if (st.st_uid != getuid()) {
+ if (effective_user) {
+ /* Look up the user and group information.
+ * If we have a problem, bail out. */
+ pw = getpwnam(effective_user);
+ if (pw == NULL) {
+ log_warn(LD_CONFIG, "Error setting configured user: %s not found",
+ effective_user);
+ return -1;
+ }
+ running_uid = pw->pw_uid;
+ running_gid = pw->pw_gid;
+ } else {
+ running_uid = getuid();
+ running_gid = getgid();
+ }
+
+ if (st.st_uid != running_uid) {
struct passwd *pw = NULL;
char *process_ownername = NULL;
- pw = getpwuid(getuid());
+ pw = getpwuid(running_uid);
process_ownername = pw ? tor_strdup(pw->pw_name) : tor_strdup("<unknown>");
pw = getpwuid(st.st_uid);
log_warn(LD_FS, "%s is not owned by this user (%s, %d) but by "
"%s (%d). Perhaps you are running Tor as the wrong user?",
- dirname, process_ownername, (int)getuid(),
+ dirname, process_ownername, (int)running_uid,
pw ? pw->pw_name : "<unknown>", (int)st.st_uid);
tor_free(process_ownername);
return -1;
}
- if (st.st_mode & 0077) {
+ if ((check & CPD_GROUP_OK) && st.st_gid != running_gid) {
+ struct group *gr;
+ char *process_groupname = NULL;
+ gr = getgrgid(running_gid);
+ process_groupname = gr ? tor_strdup(gr->gr_name) : tor_strdup("<unknown>");
+ gr = getgrgid(st.st_gid);
+
+ log_warn(LD_FS, "%s is not owned by this group (%s, %d) but by group "
+ "%s (%d). Are you running Tor as the wrong user?",
+ dirname, process_groupname, (int)running_gid,
+ gr ? gr->gr_name : "<unknown>", (int)st.st_gid);
+
+ tor_free(process_groupname);
+ return -1;
+ }
+ if (check & CPD_GROUP_OK) {
+ mask = 0027;
+ } else {
+ mask = 0077;
+ }
+ if (st.st_mode & mask) {
+ unsigned new_mode;
+ if (check & CPD_CHECK_MODE_ONLY) {
+ log_warn(LD_FS, "Permissions on directory %s are too permissive.",
+ dirname);
+ return -1;
+ }
log_warn(LD_FS, "Fixing permissions on directory %s", dirname);
- if (chmod(dirname, 0700)) {
+ new_mode = st.st_mode;
+ new_mode |= 0700; /* Owner should have rwx */
+ new_mode &= ~mask; /* Clear the other bits that we didn't want set...*/
+ if (chmod(dirname, new_mode)) {
log_warn(LD_FS, "Could not chmod directory %s: %s", dirname,
strerror(errno));
return -1;
@@ -2041,7 +2119,7 @@ read_file_to_str(const char *filename, int flags, struct stat *stat_out)
int save_errno = errno;
if (errno == ENOENT && (flags & RFTS_IGNORE_MISSING))
severity = LOG_INFO;
- log_fn(severity, LD_FS,"Could not open \"%s\": %s ",filename,
+ log_fn(severity, LD_FS,"Could not open \"%s\": %s",filename,
strerror(errno));
errno = save_errno;
return NULL;
@@ -2055,7 +2133,7 @@ read_file_to_str(const char *filename, int flags, struct stat *stat_out)
return NULL;
}
- if ((uint64_t)(statbuf.st_size)+1 > SIZE_T_MAX)
+ if ((uint64_t)(statbuf.st_size)+1 >= SIZE_T_CEILING)
return NULL;
string = tor_malloc((size_t)(statbuf.st_size+1));
@@ -3028,6 +3106,8 @@ tor_spawn_background(const char *const filename, int *stdout_read,
nbytes = write(STDOUT_FILENO, error_message, error_message_length);
nbytes = write(STDOUT_FILENO, hex_errno, sizeof(hex_errno));
+ (void) nbytes;
+
_exit(255);
return -1; /* Never reached, but avoids compiler warning */
}
diff --git a/src/common/util.h b/src/common/util.h
index 633c613d43..6496c42db8 100644
--- a/src/common/util.h
+++ b/src/common/util.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -14,6 +14,7 @@
#include "orconfig.h"
#include "torint.h"
#include "compat.h"
+#include "di_ops.h"
#include <stdio.h>
#include <stdlib.h>
@@ -181,8 +182,8 @@ int strcasecmpstart(const char *s1, const char *s2)
int strcmpend(const char *s1, const char *s2) ATTR_PURE ATTR_NONNULL((1,2));
int strcasecmpend(const char *s1, const char *s2)
ATTR_PURE ATTR_NONNULL((1,2));
-int memcmpstart(const void *mem, size_t memlen,
- const char *prefix) ATTR_PURE;
+int fast_memcmpstart(const void *mem, size_t memlen,
+ const char *prefix) ATTR_PURE;
void tor_strstrip(char *s, const char *strip) ATTR_NONNULL((1,2));
long tor_parse_long(const char *s, int base, long min,
@@ -247,24 +248,6 @@ time_t approx_time(void);
void update_approx_time(time_t now);
#endif
-/* Fuzzy time. */
-
-/** Return true iff <a>a</b> is definitely after <b>b</b>, even if there
- * could be up to <b>allow_seconds</b> of skew in one of them. */
-static INLINE int
-time_definitely_after(time_t a, time_t b, int allow_skew)
-{
- return a-allow_skew > b;
-}
-
-/** Return true iff <a>a</b> is definitely before <b>b</b>, even if there
- * could be up to <b>allow_seconds</b> of skew in one of them. */
-static INLINE int
-time_definitely_before(time_t a, time_t b, int allow_skew)
-{
- return a+allow_skew < b;
-}
-
/* Rate-limiter */
/** A ratelim_t remembers how often an event is occurring, and how often
@@ -293,8 +276,8 @@ typedef struct ratelim_t {
char *rate_limit_log(ratelim_t *lim, time_t now);
/* File helpers */
-ssize_t write_all(int fd, const char *buf, size_t count, int isSocket);
-ssize_t read_all(int fd, char *buf, size_t count, int isSocket);
+ssize_t write_all(tor_socket_t fd, const char *buf, size_t count,int isSocket);
+ssize_t read_all(tor_socket_t fd, char *buf, size_t count, int isSocket);
/** Return values from file_status(); see that function's documentation
* for details. */
@@ -303,8 +286,14 @@ file_status_t file_status(const char *filename);
/** Possible behaviors for check_private_dir() on encountering a nonexistent
* directory; see that function's documentation for details. */
-typedef enum { CPD_NONE, CPD_CREATE, CPD_CHECK } cpd_check_t;
-int check_private_dir(const char *dirname, cpd_check_t check);
+typedef unsigned int cpd_check_t;
+#define CPD_NONE 0
+#define CPD_CREATE 1
+#define CPD_CHECK 2
+#define CPD_GROUP_OK 4
+#define CPD_CHECK_MODE_ONLY 8
+int check_private_dir(const char *dirname, cpd_check_t check,
+ const char *effective_user);
#define OPEN_FLAGS_REPLACE (O_WRONLY|O_CREAT|O_TRUNC)
#define OPEN_FLAGS_APPEND (O_WRONLY|O_CREAT|O_APPEND)
typedef struct open_file_t open_file_t;
diff --git a/src/config/geoip b/src/config/geoip
index e28e7b0a53..834a0c928c 100644
--- a/src/config/geoip
+++ b/src/config/geoip
@@ -1,18 +1,47 @@
-# Last updated based on December 1 2010 Maxmind GeoLite Country
+# Last updated based on July 1 2011 Maxmind GeoLite Country
# wget http://geolite.maxmind.com/download/geoip/database/GeoIPCountryCSV.zip
# cut -d, -f3-5 < GeoIPCountryWhois.csv|sed 's/"//g' > geoip
-16777216,17301503,AU
+16777216,16777471,AU
+16777472,16778239,CN
+16778240,16779263,AU
+16779264,16781311,CN
+16781312,16785407,JP
+16785408,16793599,CN
+16793600,16809983,JP
+16809984,16842751,TH
+16842752,16843007,CN
+16843008,16843263,AU
+16843264,16859135,CN
+16859136,16875519,JP
+16875520,16908287,TH
+16908288,16909055,CN
+16909056,16909311,AU
+16909312,16941055,CN
+16941056,16973823,TH
+16973824,17039359,CN
+17039360,17039615,AU
+17039616,17072127,CN
+17072128,17104895,TH
+17104896,17170431,JP
+17170432,17301503,IN
+17301504,17367039,CN
17367040,17432575,MY
+17432576,17435135,CN
17435136,17435391,AU
+17435392,17465343,CN
+17465344,17498111,TH
17498112,17563647,KR
17563648,17825791,CN
17825792,18087935,KR
+18087936,18153471,TH
18153472,18219007,JP
18219008,18350079,IN
18350080,18874367,CN
+18874368,18939903,HK
18939904,19005439,JP
19005440,19136511,TW
19136512,19202047,HK
+19202048,19267583,PH
19267584,19398655,IN
19398656,19726335,AU
19726336,19791871,CN
@@ -31,16 +60,75 @@
24641536,27262975,AU
27262976,28311551,TW
28311552,28442623,KR
-28442624,28573695,AU
+28442624,28540927,AU
+28540928,28573695,TH
28573696,28966911,CN
-28966912,29032447,IN
+28966912,29097983,IN
29097984,29884415,CN
-29884416,29885439,AU
+29884416,29949951,TW
29949952,30015487,KR
30015488,30408703,CN
30408704,33554431,KR
33554432,34603007,FR
-34603008,35127295,EU
+34603008,34604543,EU
+34604544,34605055,DE
+34605056,34620415,EU
+34620416,34620927,SE
+34620928,34621439,IT
+34621440,34636799,EU
+34636800,34637311,DE
+34637312,34646527,EU
+34646528,34647551,DE
+34647552,34664447,EU
+34664448,34668543,DE
+34668544,34673663,EU
+34673664,34674687,DE
+34674688,34733055,EU
+34733056,34734079,DE
+34734080,34803711,EU
+34803712,34807807,IT
+34807808,34861055,EU
+34861056,34865151,DE
+34865152,34866175,EU
+34866176,34867199,IT
+34867200,34880511,EU
+34880512,34881535,DE
+34881536,34910975,EU
+34910976,34911231,ES
+34911232,34911743,DE
+34911744,34911999,AT
+34912000,34912255,GB
+34912256,34912511,DE
+34912512,34912767,ES
+34912768,34913279,DE
+34913280,34928383,EU
+34928384,34928639,DE
+34928640,34930687,EU
+34930688,34938879,DE
+34938880,34947071,FR
+34947072,34952703,EU
+34952704,34953215,SE
+34953216,34954751,AT
+34954752,34955263,NL
+34955264,34959359,AT
+34959360,34963455,NL
+34963456,34992127,EU
+34992128,34993151,NL
+34993152,34993663,FR
+34993664,34993919,AT
+34993920,34994175,DE
+34994176,34995711,FR
+34995712,34995967,EU
+34995968,34996223,NL
+34996224,35000319,EU
+35000320,35002367,SE
+35002368,35054079,EU
+35054080,35054591,SE
+35054592,35055615,EU
+35055616,35055871,GB
+35055872,35069951,EU
+35069952,35074047,SE
+35074048,35127295,EU
35127296,35651583,GB
35651584,36700159,IT
36700160,36962303,AE
@@ -63,6 +151,8 @@
40370176,40894463,DK
40894464,41418751,IT
41418752,41943039,GB
+41943040,42205183,DK
+42205184,42467327,KZ
42467328,42991615,ES
42991616,43253759,IR
43253760,43515903,NO
@@ -72,6 +162,10 @@
45088768,46137343,IR
46137344,46661631,IT
46661632,47710207,DE
+47710208,48234495,GB
+48234496,49283071,IT
+49283072,49807359,DE
+49807360,50331647,SE
50331648,68257567,US
68257568,68257599,CA
68257600,68259583,US
@@ -103,6 +197,7 @@
72348928,72349055,US
72349056,72349119,BM
72349120,83886079,US
+83886080,88080383,EU
100663296,121195295,US
121195296,121195327,IT
121195328,134693119,US
@@ -278,8 +373,8 @@
209845144,209845151,DE
209845152,209867103,US
209867104,209867111,CA
-209867112,209868799,US
-209868800,209869055,IR
+209867112,209868927,US
+209868928,209869055,IR
209869056,209965359,US
209965360,209965367,PR
209965368,209988527,US
@@ -290,8 +385,12 @@
210439560,210439567,PR
210439568,210784255,US
210784256,210784383,BO
-210784384,210784767,US
-210784768,210786303,BO
+210784384,210785023,US
+210785024,210785575,BO
+210785576,210785583,US
+210785584,210785599,BO
+210785600,210785663,US
+210785664,210786303,BO
210786304,210970847,US
210970848,210970855,PR
210970856,211051199,US
@@ -561,7 +660,9 @@
214699472,214699487,VI
214699488,214699519,US
214699520,214699647,PR
-214699648,214858655,US
+214699648,214700007,US
+214700008,214700015,PR
+214700016,214858655,US
214858656,214858671,NL
214858672,216417663,US
216417664,216417727,PR
@@ -584,11 +685,14 @@
217028008,217046775,US
217046776,217046783,PR
217046784,234881023,US
+234881024,234883071,CN
234883072,234884095,JP
+234884096,234885119,CN
234885120,234889215,VN
234889216,234913791,KR
234913792,234946559,HK
-234946560,234950655,JP
+234946560,234947583,CN
+234947584,234950655,JP
234950656,234951679,AU
234951680,234952703,HK
234952704,234954751,JP
@@ -596,6 +700,7 @@
234971136,234979327,IN
234979328,235012095,MY
235012096,235077631,AU
+235077632,235143167,JP
235143168,235405311,KR
235405312,235929599,JP
235929600,236978175,CN
@@ -604,6 +709,7 @@
241434624,241500159,SG
241500160,241565695,JP
241565696,241598463,IN
+241598464,241599487,CN
241599488,241600511,JP
241600512,241602559,AU
241602560,241604607,MY
@@ -614,7 +720,7 @@
241623040,241627135,IN
241627136,241631231,HK
241631232,243269631,CN
-243269632,243269887,AP
+243269632,243270655,JP
243270656,243271679,NZ
243271680,243272703,TH
243272704,243273727,NP
@@ -626,7 +732,8 @@
243531776,243662847,JP
243662848,243793919,CN
243793920,243859455,HK
-243859456,243924991,AU
+243859456,243916799,AU
+243916800,243924991,JP
243924992,243990527,KR
243990528,244318207,IN
244318208,245366783,CN
@@ -636,6 +743,7 @@
247479296,247480319,CN
247480320,247482367,MY
247482368,247483391,PG
+247483392,247484415,CN
247484416,247488511,KR
247488512,247496703,JP
247496704,247504895,PK
@@ -661,19 +769,19 @@
355993888,355993895,IT
355993896,368674047,US
368674048,368674303,ES
-368674304,385875967,US
-402653184,405012479,US
+368674304,405012479,US
405012480,405143551,CA
405143552,405180415,US
405180416,405184511,CA
405184512,405192703,US
-405209088,405405695,US
-405405696,405422079,PR
+405209088,405372927,US
+405372928,405422079,PR
405422080,405798911,US
+405798912,405831679,CA
405831680,405843967,US
405843968,405848063,CA
405848064,405864447,PR
-405864448,405917695,US
+405864448,405921791,US
405921792,405929983,CA
405929984,405938175,US
405946368,405962751,CA
@@ -681,7 +789,8 @@
405979136,405995519,PR
406003712,406011903,US
406011904,406028287,BS
-406028288,406126591,US
+406028288,406110207,US
+406110208,406126591,CA
406142976,406147071,US
406147072,406151167,CA
406159360,406175743,US
@@ -708,21 +817,37 @@
409862144,410124287,US
410124288,410177751,CA
410177752,410177755,US
-410177756,410180643,CA
+410177756,410178463,CA
+410178464,410178467,US
+410178468,410180643,CA
410180644,410180647,US
-410180648,410185355,CA
+410180648,410180695,CA
+410180696,410180703,US
+410180704,410180711,CA
+410180712,410180715,US
+410180716,410180771,CA
+410180772,410180775,US
+410180776,410185355,CA
410185356,410185359,US
410185360,410185407,CA
410185408,410185411,US
-410185412,410185555,CA
-410185556,410185559,US
+410185412,410185519,CA
+410185520,410185523,US
+410185524,410185539,CA
+410185540,410185543,US
+410185544,410185551,CA
+410185552,410185559,US
410185560,410186719,CA
410186720,410186723,US
410186724,410186971,CA
410186972,410186979,US
410186980,410186983,CA
410186984,410186999,US
-410187000,410187047,CA
+410187000,410187003,CA
+410187004,410187007,US
+410187008,410187015,CA
+410187016,410187019,US
+410187020,410187047,CA
410187048,410187055,US
410187056,410187175,CA
410187176,410187183,US
@@ -749,10 +874,9 @@
411779072,411828223,PR
411828224,411893759,US
411893760,411975679,CA
-411975680,411992063,US
-412024832,412221439,US
+411975680,412221439,US
412221440,412229631,CA
-412286976,412483583,US
+412254208,412483583,US
412483584,412549119,CA
412549120,412614655,US
412614656,412647423,CL
@@ -761,7 +885,7 @@
412688384,412704767,US
412704768,412708863,CA
412708864,412909567,US
-412909568,412917759,CA
+412909568,412942335,CA
412942336,412946431,US
413007872,413908991,US
413908992,413925375,PR
@@ -791,16 +915,16 @@
417775616,417796095,CA
417796096,417800191,US
417800192,417808383,BS
-417808384,417824767,CA
-417824768,417857535,US
+417808384,417820671,CA
+417820672,417857535,US
417857536,417923071,AR
417923072,418062335,US
418062336,418070527,CA
-418070528,418074623,US
+418070528,418078719,US
418078720,418119679,CA
418119680,418316287,US
418316288,418320383,CA
-418324480,418643967,US
+418320384,418643967,US
418643968,418668543,CA
418668544,418672639,US
418672640,418676735,CA
@@ -811,8 +935,8 @@
418709504,418766847,US
418766848,418770943,CA
418770944,418775039,US
-418775040,418807807,CA
-418807808,419430399,US
+418775040,418799615,CA
+418799616,419430399,US
419430400,436207615,GB
436207616,452984831,US
452984832,452985855,JP
@@ -822,7 +946,7 @@
452988928,452997119,JP
452997120,453001215,IN
453001216,453009407,AU
-453017600,453050367,JP
+453009408,453017599,BD
453050368,453115903,KR
453115904,453246975,VN
453246976,453509119,IN
@@ -833,6 +957,7 @@
455258112,455262207,SG
455262208,455270399,JP
455270400,455272447,AU
+455272448,455274495,CN
455274496,455278591,IN
455278592,455344127,KR
455344128,456130559,CN
@@ -843,17 +968,22 @@
456264704,456265727,JP
456265728,456269823,ID
456269824,456271871,HK
+456271872,456273919,CN
456273920,456286207,AU
+456286208,456294399,JP
456294400,456327167,CN
456327168,456523775,TW
456523776,456540159,SG
-456540160,456548351,AU
+456540160,456542207,AU
+456542208,456544255,CN
+456544256,456548351,AU
456548352,456553471,JP
456553472,456554495,MY
456554496,456555519,PK
456555520,456556543,JP
456556544,456560639,AU
456560640,456562687,IN
+456562688,456564735,CN
456564736,456572927,IN
456572928,456589311,CN
456589312,456654847,TH
@@ -863,24 +993,26 @@
459282432,459284479,TK
459284480,459292671,JP
459292672,459293695,NZ
-459294720,459297791,JP
+459293696,459297791,JP
459297792,459298815,IN
459298816,459299839,PK
459300864,459309055,SG
459309056,459325439,KR
459325440,459333631,AU
+459333632,459341823,TW
459341824,459407359,IN
459407360,459456511,JP
459456512,459460607,HK
459460608,459472895,CN
459472896,459505663,AU
+459505664,459538431,CN
459538432,459539455,AU
+459539456,459540479,TH
459540480,459541503,JP
459541504,459542527,IN
459542528,459544575,HK
459544576,459545599,AU
-459546624,459547647,JP
-459547648,459548671,CN
+459545600,459547647,JP
459548672,459550719,TH
459550720,459554815,JP
459554816,459571199,TW
@@ -890,13 +1022,15 @@
459866112,459931647,TW
459931648,459964415,IN
459964416,459980799,CN
-459980800,459984895,AU
+459980800,459983871,AU
+459983872,459984895,CN
459984896,459986943,JP
459986944,459988991,PH
459988992,459997183,JP
459997184,460062719,IN
460062720,460128255,PH
460128256,460136447,IN
+460136448,460144639,CN
460144640,460152831,PH
460152832,460154879,JP
460154880,460155903,SG
@@ -961,14 +1095,19 @@
460734464,460865535,KR
460865536,460931071,JP
460931072,460933119,AU
+460933120,460935167,CN
460935168,460937215,ID
-460937216,460938239,AU
+460937216,460938239,NZ
+460938240,460939263,JP
460939264,460940287,NZ
+460940288,460941311,IN
460941312,460942335,AU
+460942336,460943359,MY
460943360,460945407,AU
+460945408,460947455,CN
460947456,460980223,JP
460980224,460981247,NC
-460982272,460983295,JP
+460981248,460983295,JP
460983296,460984319,HK
460984320,460988415,PG
460988416,460994559,JP
@@ -982,10 +1121,10 @@
461049856,461050879,TH
461050880,461051903,NZ
461051904,461053951,AU
-461053952,461062143,AP
+461053952,461062143,HK
461062144,461078527,IN
461078528,461094911,FJ
-461094912,461099007,AP
+461094912,461099007,HK
461099008,461100031,JP
461100032,461101055,MN
461101056,461102079,IN
@@ -994,7 +1133,7 @@
461111296,461127679,IN
461127680,461131775,PH
461131776,461135871,ID
-461135872,461139967,AU
+461135872,461144063,AU
461144064,461209599,KR
461209600,461225983,SG
461225984,461227007,WF
@@ -1043,12 +1182,962 @@
468713472,469237759,TW
469237760,469499903,IN
469499904,469565439,NZ
+469565440,469598207,AU
+469598208,469630975,JP
469630976,469696511,TH
469696512,469712895,PK
469712896,469729279,KR
469729280,469762047,IN
469762048,520093695,US
+520093696,520257535,PL
+520257536,520290303,RO
+520290304,520292351,TR
+520292352,520294399,NL
+520294400,520296447,RU
+520296448,520298495,UA
+520298496,520306687,SK
+520306688,520308735,GB
+520308736,520310783,DK
+520310784,520312831,DE
+520312832,520314879,MK
+520314880,520318975,NL
+520318976,520323071,ES
+520323072,520325119,CH
+520325120,520327167,FR
+520329216,520331263,SE
+520331264,520339455,IT
+520339456,520343551,UA
+520343552,520355839,GB
+520355840,520421375,ES
+520421376,520486911,AT
+520486912,520488959,NL
+520488960,520491007,IT
+520491008,520493567,GB
+520493568,520494079,FR
+520494080,520495871,IT
+520495872,520496383,DE
+520496384,520497663,IT
+520497664,520497919,FR
+520497920,520500479,IT
+520500480,520500735,DE
+520500736,520501759,IT
+520501760,520503295,GB
+520505344,520507391,GB
+520507392,520511487,TR
+520511488,520519679,UA
+520519680,520552447,PL
+520552448,520554495,NL
+520554496,520556543,GB
+520556544,520560639,FI
+520562688,520564735,PL
+520564736,520566783,IE
+520566784,520568831,CH
+520568832,520589311,IR
+520589312,520593407,IT
+520593408,520595455,AM
+520595456,520597503,MK
+520597504,520601599,DE
+520601600,520609791,SI
+520609792,520613887,RU
+520613888,520615935,CZ
+520615936,520617983,FR
+520617984,520683519,RU
+520683520,520749055,SY
+520749056,520753151,RU
+520753152,520757247,LI
+520757248,520761343,GB
+520761344,520763391,IT
+520763392,520765439,CZ
+520765440,520781823,RU
+520781824,520822783,CH
+520822784,520824831,IT
+520824832,520826879,RO
+520826880,520828927,QA
+520828928,520830975,NL
+520830976,520847359,MK
+520847360,520880127,PL
+520880128,520882175,AT
+520882176,520884223,IT
+520884224,520888319,MK
+520888320,520896511,DE
+520896512,520898559,BE
+520898560,520912895,GB
+520912896,520945663,UA
+520945664,520947711,GB
+520947712,520949759,SE
+520949760,520951807,RU
+520951808,520953855,IE
+520953856,520962047,RU
+520962048,520978431,IE
+520978432,520980479,RU
+520980480,520982527,IT
+520982528,520984575,RU
+520984576,520984831,NG
+520984832,520986623,GB
+520986624,520988671,PS
+520988672,520990719,DE
+520990720,520992767,RU
+520992768,520994815,ES
+520994816,521011199,BG
+521011200,521076735,RO
+521076736,521078783,ES
+521078784,521080831,CZ
+521080832,521082879,RU
+521082880,521084927,FR
+521084928,521093119,SE
+521093120,521095167,DE
+521095168,521097215,IT
+521097216,521101311,RU
+521101312,521103359,IT
+521103360,521105407,GB
+521105408,521107455,IS
+521109504,521142271,SI
+521142272,521404415,DE
+521404416,521535487,NL
+521535488,521537535,GB
+521537536,521539583,RU
+521539584,521541631,BE
+521541632,521543679,DE
+521543680,521545727,RU
+521545728,521547775,GB
+521547776,521551871,AL
+521551872,521553919,DE
+521555968,521558015,NL
+521558016,521560063,CY
+521560064,521562111,PL
+521564160,521566207,GR
+521566208,521568255,LU
+521568256,521601023,PT
+521601024,521666559,RU
+521666560,521668607,GB
+521668608,521670655,CH
+521670656,521672703,HU
+521672704,521674751,RU
+521674752,521676799,GB
+521676800,521678847,ES
+521678848,521680895,NL
+521680896,521682943,EE
+521682944,521687039,SE
+521687040,521689087,GB
+521689088,521691135,BY
+521691136,521693183,DE
+521693184,521695231,GB
+521695232,521697279,BE
+521697280,521699327,ES
+521699328,521701375,NO
+521701376,521703423,IT
+521703424,521705471,DE
+521705472,521707519,ES
+521707520,521709567,NL
+521709568,521711615,DE
+521711616,521713663,SK
+521713664,521715711,HU
+521715712,521717759,LV
+521717760,521719807,IR
+521719808,521721855,UA
+521721856,521723903,GB
+521723904,521725951,SA
+521725952,521727999,IR
+521728000,521732095,FR
+521732096,521736191,GB
+521736192,521738239,DK
+521738240,521740287,RU
+521740288,521742335,IT
+521742336,521746431,DE
+521746432,521748479,NL
+521748480,521750527,SE
+521750528,521752575,PS
+521752576,521754623,FR
+521754624,521756671,IR
+521756672,521758719,NL
+521758720,521760767,IR
+521760768,521762815,IL
+521762816,521764863,CH
+521764864,521766911,IR
+521766912,521768959,IQ
+521768960,521771007,FI
+521771008,521773055,DE
+521773056,521775103,GB
+521775104,521777151,TR
+521777152,521779199,ES
+521779200,521783295,GB
+521783296,521785343,RU
+521785344,521787391,GB
+521787392,521789439,NO
+521789440,521791487,RU
+521791488,521793535,IR
+521793536,521795583,RU
+521795584,521797631,PL
+521797632,521928703,IT
+521928704,521945087,RU
+521945088,521953279,GB
+521953280,521961471,RU
+521961472,521969663,CZ
+521969664,521977855,UA
+521977856,521986047,RU
+521986048,521994239,UA
+521994240,522002431,KG
+522002432,522010623,IR
+522010624,522018815,AE
+522018816,522027007,FR
+522027008,522059775,RU
+522059776,522125311,CZ
+522125312,522133503,MD
+522133504,522135551,NL
+522137600,522141695,CH
+522141696,522143743,RU
+522143744,522145791,CZ
+522145792,522147839,DK
+522147840,522149887,ES
+522149888,522158079,UA
+522158080,522166271,BE
+522166272,522168319,SE
+522168320,522170367,RU
+522170368,522174463,YE
+522174464,522178559,RU
+522178560,522180607,DE
+522180608,522182655,KZ
+522182656,522190847,CZ
+522190848,522715135,FR
+522715136,522717183,IR
+522717184,522719231,RU
+522719232,522721279,UA
+522721280,522741759,RU
+522741760,522743807,UA
+522743808,522747903,RU
+522747904,522780671,UA
+522780672,522782719,RU
+522782720,522784767,UA
+522784768,522786815,BG
+522786816,522788863,PL
+522788864,522792959,RU
+522792960,522795007,UA
+522795008,522797055,RU
+522797056,522801151,UA
+522801152,522803199,PL
+522803200,522805247,UA
+522805248,522807295,RU
+522807296,522811391,UA
+522811392,522813439,RU
+522813440,522815487,UA
+522815488,522819583,PL
+522819584,522821631,KG
+522821632,522823679,RU
+522823680,522827775,PL
+522827776,522831871,RU
+522831872,522833919,CZ
+522833920,522835967,PL
+522835968,522838015,UA
+522838016,522840063,RU
+522840064,522842111,PL
+522842112,522846207,RU
+522846208,522854399,PL
+522854400,522858495,RU
+522858496,522866687,UA
+522866688,522870783,LV
+522870784,522874879,RU
+522874880,522878975,UA
+522878976,522887167,RO
+522887168,522895359,UA
+522895360,522911743,RU
+522911744,522960895,UA
+522960896,522969087,RU
+522969088,522977279,UA
+522977280,522981375,RU
+522981376,522985471,IT
+522985472,522989567,CH
+522989568,522993663,RU
+522993664,522997759,AL
+522997760,523001855,RU
+523001856,523005951,LT
+523005952,523010047,IT
+523010048,523014143,IL
+523014144,523018239,ES
+523018240,523022335,IT
+523022336,523024639,RU
+523024640,523024895,GB
+523024896,523026431,RU
+523026432,523030527,TR
+523030528,523034623,FR
+523034624,523038719,SE
+523038720,523042815,RU
+523042816,523075583,NO
+523075584,523108351,HR
+523108352,523173887,HU
+523173888,523182079,BA
+523182080,523190271,IR
+523190272,523192319,FI
+523192320,523194367,ES
+523194368,523196415,DE
+523196416,523198463,AE
+523198464,523202559,CZ
+523202560,523223039,RU
+523223040,523225087,AM
+523225088,523227135,SE
+523227136,523229183,RO
+523229184,523231231,GB
+523231232,523239423,DE
+523239424,523763711,GB
+523763712,524025855,IR
+524025856,524287999,PL
524288000,528482303,GB
+528482304,528490495,PL
+528490496,528498687,RU
+528498688,528515071,UA
+528515072,528523263,RU
+528523264,528531455,UA
+528531456,528539647,RU
+528539648,528547839,UA
+528547840,528564223,RU
+528564224,528580607,UA
+528580608,528588799,RU
+528588800,528596991,UA
+528596992,528605183,RU
+528605184,528613375,UA
+528613376,528637951,RU
+528637952,528642047,PL
+528642048,528654335,RU
+528654336,528656383,SK
+528656384,528658431,CZ
+528658432,528662527,IR
+528662528,528664575,RU
+528664576,528666623,BY
+528666624,528668671,RU
+528668672,528670719,PL
+528670720,528674815,CH
+528674816,528676863,RO
+528676864,528678911,RU
+528678912,528680959,MD
+528680960,528683007,RO
+528683008,528689151,UA
+528689152,528691199,RO
+528691200,528695295,PL
+528695296,528699391,UA
+528699392,528703487,RU
+528703488,528715775,UA
+528715776,528719871,RU
+528719872,528721919,RO
+528721920,528723967,PL
+528723968,528726015,ES
+528726016,528736255,RU
+528736256,528740351,SK
+528740352,528742399,IT
+528742400,528744447,RU
+528744448,528746495,GB
+528746496,528748543,RO
+528748544,528752639,CZ
+528752640,528760831,RO
+528760832,528762879,PL
+528762880,528764927,RU
+528764928,528769023,RO
+528769024,528793599,RU
+528793600,528795647,RO
+528795648,528797695,NL
+528797696,528805887,RU
+528805888,528809983,RO
+528809984,528812031,PL
+528812032,528814079,CZ
+528814080,528816127,PL
+528816128,528818175,RO
+528818176,528834559,UA
+528834560,528836607,RO
+528836608,528838655,RU
+528838656,528840703,UA
+528840704,528842751,RU
+528842752,528859135,CH
+528863232,528867327,KZ
+528867328,528887807,RU
+528887808,528891903,PL
+528891904,528900095,UA
+528900096,528902143,SK
+528902144,528908287,UA
+528908288,528926719,RU
+528926720,528928767,NL
+528928768,528930815,UA
+528930816,528932863,CZ
+528932864,528941055,RU
+528941056,528943103,RO
+528943104,528945151,RU
+528945152,528949247,PL
+528949248,528965631,RU
+528965632,528982015,UA
+528982016,528984063,PL
+528984064,528986111,RO
+528986112,528988159,UA
+528988160,528990207,RO
+528990208,528994303,PL
+528994304,528996351,UZ
+528996352,528998399,LT
+529002496,529006591,RU
+529006592,529268735,NL
+529268736,529530879,TR
+529530880,529596415,UA
+529596416,529661951,TR
+529661952,529727487,GE
+529727488,529793023,HR
+529793024,529826815,RU
+529826816,529827839,GB
+529827840,529828863,RO
+529828864,529829887,RU
+529829888,529830399,UA
+529830400,529830911,RU
+529830912,529831935,DE
+529831936,529832959,UA
+529832960,529835007,RU
+529835008,529836031,KG
+529836032,529836543,UA
+529836544,529837055,IL
+529837056,529839103,RU
+529839104,529839615,UA
+529839616,529840127,CY
+529840128,529842175,UA
+529842176,529843199,IN
+529843200,529844735,RU
+529844736,529845247,UA
+529845248,529846271,UZ
+529846272,529846783,UA
+529846784,529848319,RU
+529848320,529855487,CZ
+529855488,529857535,RU
+529857536,529858559,UA
+529858560,529924095,NL
+529924096,529989631,DE
+529989632,530055167,NL
+530055168,530120703,GR
+530120704,530186239,CY
+530186240,530251775,IL
+530251776,530317311,TR
+530317312,530579455,IT
+530579456,530710527,NL
+530710528,530841599,RU
+530841600,530972671,CH
+530972672,531103743,SA
+531103744,531169279,IL
+531169280,531177471,KZ
+531177472,531179519,GB
+531181568,531183615,GB
+531183616,531185663,NL
+531185664,531193855,TR
+531193856,531194303,IE
+531194304,531194335,IR
+531194336,531195903,IE
+531195904,531197951,IT
+531197952,531199999,GB
+531200000,531202047,RU
+531202048,531234815,CZ
+531234816,531236863,IE
+531236864,531238911,FR
+531238912,531240959,LV
+531240960,531243007,SE
+531243008,531245055,RU
+531245056,531247103,IT
+531247104,531251199,IR
+531251200,531259391,SK
+531259392,531261439,ES
+531261440,531263487,DE
+531263488,531265535,RU
+531265536,531267583,GB
+531267584,531275775,UA
+531275776,531277823,US
+531277824,531279871,RU
+531281920,531283967,RU
+531283968,531292159,DE
+531292160,531333119,AZ
+531333120,531333599,NL
+531333600,531333631,RU
+531333632,531334143,NL
+531334144,531334207,US
+531334208,531334399,NL
+531334400,531334463,US
+531334464,531334655,NL
+531334656,531335167,US
+531335168,531337215,IT
+531337216,531339263,CH
+531339264,531341311,AL
+531341312,531349503,KZ
+531349504,531351551,RU
+531351552,531355647,NL
+531357696,531361791,HU
+531361792,531365887,CH
+531365888,531366399,DE
+531366400,531367935,CH
+531367936,531369983,DE
+531369984,531371007,CH
+531371008,531371519,US
+531371520,531372031,JP
+531372032,531380223,CH
+531380224,531398655,DE
+531398656,531400703,RU
+531400704,531402751,UA
+531402752,531404799,LU
+531404800,531406847,FI
+531406848,531415039,IM
+531415040,531423231,RU
+531423232,531425279,NO
+531425280,531431423,GB
+531431424,531496959,RO
+531496960,531628031,PL
+531628032,531660799,TR
+531660800,531693567,BA
+531693568,531695615,RU
+531695616,531697663,LT
+531697664,531699711,GB
+531699712,531701759,CZ
+531703808,531705855,IT
+531705856,531707903,ES
+531707904,531709951,GR
+531709952,531718143,RU
+531718144,531720191,ES
+531720192,531722239,RU
+531722240,531724287,IT
+531724288,531726335,DE
+531726336,531759103,TR
+531759104,531890175,PL
+531890176,532021247,RU
+532021248,532152319,PL
+532152320,532168703,DE
+532168704,532185087,NL
+532185088,532201471,IR
+532201472,532211711,RU
+532211712,532212223,LU
+532212224,532212479,RU
+532212480,532212991,UA
+532212992,532221951,RU
+532221952,532223999,IT
+532224000,532226047,NO
+532226048,532234239,GB
+532234240,532242431,DK
+532242432,532244479,IT
+532244480,532246527,DE
+532246528,532250623,BA
+532250624,532283391,GB
+532283392,532291583,TR
+532291584,532293631,IE
+532293632,532295679,IT
+532295680,532297727,KG
+532297728,532303871,RU
+532303872,532305919,PL
+532305920,532307967,NO
+532307968,532310015,RU
+532310016,532312063,GR
+532312064,532314111,JE
+532314112,532316159,DE
+532316160,532324351,RU
+532324352,532328447,NL
+532328448,532330495,PS
+532330496,532332543,CZ
+532332544,532340735,PL
+532340736,532348927,GB
+532348928,532365311,PL
+532365312,532373503,DE
+532373504,532375551,RU
+532375552,532377599,IT
+532377600,532381695,DE
+532381696,532414463,NL
+532414464,532676607,IT
+532676608,532692991,GE
+532692992,532701183,CZ
+532703232,532704511,RU
+532704512,532704767,IN
+532704768,532705279,RU
+532705280,532709375,NL
+532709376,532725759,RU
+532725760,532729855,SE
+532729856,532731903,TR
+532731904,532733951,PL
+532733952,532735999,SE
+532736000,532738047,RU
+532738048,532740095,GB
+532740096,532742143,KG
+532742144,532742655,GB
+532742656,532742783,CN
+532742784,532742911,GB
+532742912,532743679,CN
+532743680,532743807,DE
+532743808,532743935,CN
+532743936,532744095,GB
+532744096,532744127,CN
+532744128,532744191,GB
+532744192,532744319,IN
+532744320,532744383,US
+532744384,532744479,CN
+532744480,532744511,IN
+532744512,532744575,BE
+532744576,532744639,GB
+532744640,532745215,CN
+532745216,532745727,GB
+532745728,532745791,CN
+532745792,532745855,GB
+532745856,532745983,CN
+532745984,532746015,BE
+532746016,532746047,CN
+532746048,532746111,AU
+532746112,532746143,BE
+532746144,532746207,GB
+532746208,532746215,CN
+532746216,532746223,ES
+532746224,532746239,GB
+532746240,532750335,IT
+532750336,532752383,SM
+532752384,532754431,BE
+532754432,532756479,FR
+532756480,532758527,IT
+532758528,532762623,SY
+532762624,532766719,UA
+532766720,532768767,PL
+532768768,532770815,NL
+532770816,532772863,IR
+532772864,532774911,RU
+532774912,532779007,GB
+532779008,532783103,IR
+532783104,532785151,AT
+532785152,532787199,GB
+532787200,532789247,BE
+532789248,532791295,DK
+532791296,532793343,LT
+532793344,532795391,SE
+532795392,532797439,CH
+532797440,532799487,IE
+532799488,532801535,ES
+532801536,532803583,DK
+532803584,532805631,FR
+532805632,532807679,SE
+532807680,533200895,IT
+533200896,533233663,TR
+533233664,533250047,IE
+533250048,533262335,RU
+533262336,533264383,ES
+533264384,533266431,RU
+533266432,533266687,NL
+533266688,533266943,DE
+533266944,533267199,NL
+533267200,533267455,AX
+533267456,533267711,AL
+533267712,533267967,AD
+533267968,533268223,AM
+533268224,533268479,AT
+533268480,533268735,AZ
+533268736,533268991,BH
+533268992,533269247,BY
+533269248,533269503,BE
+533269504,533269759,BA
+533269760,533270015,BG
+533270016,533270271,HR
+533270272,533270527,CY
+533270528,533270783,CZ
+533270784,533271039,DK
+533271040,533271295,EE
+533271296,533271551,FO
+533271552,533271807,GE
+533271808,533272063,FR
+533272064,533272319,DE
+533272320,533272575,GI
+533272576,533272831,GR
+533272832,533273087,GL
+533273088,533273343,GG
+533273344,533273599,VA
+533273600,533273855,HU
+533273856,533274111,IS
+533274112,533274367,IR
+533274368,533274623,IQ
+533274624,533274879,IE
+533274880,533275135,IM
+533275136,533275391,IL
+533275392,533275647,IT
+533275648,533275903,JE
+533275904,533276159,JO
+533276160,533276415,KZ
+533276416,533276671,KW
+533276672,533276927,KG
+533276928,533277183,LV
+533277184,533277439,LB
+533277440,533277695,LI
+533277696,533277951,LT
+533277952,533278207,LU
+533278208,533278463,MT
+533278464,533278719,MC
+533278720,533278975,ME
+533278976,533279231,NL
+533279232,533279487,NO
+533279488,533279743,OM
+533279744,533279999,PS
+533280000,533280255,PL
+533280256,533280511,PT
+533280512,533280767,RO
+533280768,533281023,RU
+533281024,533281279,SM
+533281280,533281535,SA
+533281536,533281791,RS
+533281792,533282047,SK
+533282048,533282303,SI
+533282304,533282559,ES
+533282560,533282815,SE
+533282816,533283071,CH
+533283072,533283327,SY
+533283328,533283583,TJ
+533283584,533283839,TR
+533283840,533284095,TM
+533284096,533284351,UA
+533284352,533284607,AE
+533284608,533284863,GB
+533284864,533285119,UZ
+533285120,533285375,YE
+533285376,533285631,AX
+533285632,533285887,AL
+533285888,533286143,AD
+533286144,533286399,AM
+533286400,533286655,AT
+533286656,533286911,AZ
+533286912,533287167,BH
+533287168,533287423,BY
+533287424,533287679,BE
+533287680,533287935,BA
+533287936,533288191,BG
+533288192,533288447,HR
+533288448,533288703,CY
+533288704,533288959,CZ
+533288960,533289215,DK
+533289216,533289471,EE
+533289472,533289727,FO
+533289728,533289983,GE
+533289984,533290239,FR
+533290240,533290495,DE
+533290496,533290751,GI
+533290752,533291007,GR
+533291008,533291263,GL
+533291264,533291519,GG
+533291520,533291775,VA
+533291776,533292031,HU
+533292032,533292287,IS
+533292288,533292543,IR
+533292544,533292799,IQ
+533292800,533293055,IE
+533293056,533293311,IM
+533293312,533293567,IL
+533293568,533293823,IT
+533293824,533294079,JE
+533294080,533294335,JO
+533294336,533294591,KZ
+533294592,533294847,KW
+533294848,533295103,KG
+533295104,533295359,LV
+533295360,533295615,LB
+533295616,533295871,LI
+533295872,533296127,LT
+533296128,533296383,LU
+533296384,533296639,MT
+533296640,533296895,MC
+533296896,533297151,ME
+533297152,533297407,NL
+533297408,533297663,NO
+533297664,533297919,OM
+533297920,533298175,PT
+533298176,533298431,RO
+533298432,533298687,RU
+533298688,533298943,SM
+533298944,533299199,SA
+533299200,533299455,RS
+533299456,533299711,SK
+533299712,533299967,SI
+533299968,533300223,ES
+533300224,533300479,SE
+533300480,533300735,CH
+533300736,533300991,SY
+533300992,533301247,TJ
+533301248,533301503,TM
+533301504,533301759,UA
+533301760,533302015,AE
+533302016,533302271,GB
+533302272,533302527,UZ
+533302528,533302783,AX
+533302784,533303039,AL
+533303040,533303295,AD
+533303296,533303551,AM
+533303552,533303807,AT
+533303808,533304063,AZ
+533304064,533304319,BH
+533304320,533304575,BY
+533304576,533304831,BE
+533304832,533305087,BA
+533305088,533305343,BG
+533305344,533305599,HR
+533305600,533305855,FR
+533305856,533306111,CZ
+533306112,533306367,FR
+533306368,533306623,EE
+533306624,533306879,FO
+533306880,533307135,GE
+533307136,533307391,FR
+533307392,533307647,DE
+533307648,533307903,GI
+533307904,533308159,GR
+533308160,533308415,GL
+533308416,533308671,GG
+533308672,533308927,VA
+533308928,533309183,HU
+533309184,533309439,IS
+533309440,533309695,IR
+533309696,533309951,IQ
+533309952,533310207,IE
+533310208,533310463,IM
+533310464,533310719,IL
+533310720,533310975,IT
+533310976,533311231,JE
+533311232,533311487,JO
+533311488,533311743,KZ
+533311744,533311999,KW
+533312000,533312255,KG
+533312256,533312511,LV
+533312512,533312767,LB
+533312768,533313023,LI
+533313024,533313279,LT
+533313280,533313535,LU
+533313536,533313791,MT
+533313792,533314047,MC
+533314048,533314303,ME
+533314304,533314559,NL
+533314560,533314815,NO
+533314816,533315071,OM
+533315072,533315327,PT
+533315328,533315583,RO
+533315584,533315839,RU
+533315840,533316095,SM
+533316096,533316351,SA
+533316352,533316607,RS
+533316608,533316863,SK
+533316864,533317119,SI
+533317120,533317375,ES
+533317376,533317631,SE
+533317632,533317887,CH
+533317888,533318143,SY
+533318144,533318399,TJ
+533318400,533318655,TR
+533318656,533318911,TM
+533318912,533319167,UA
+533319168,533319423,AE
+533319424,533319679,GB
+533319680,533319935,UZ
+533319936,533320191,YE
+533320192,533320447,AX
+533320448,533320703,AL
+533320704,533320959,AD
+533320960,533321215,AM
+533321216,533321471,AT
+533321472,533321727,AZ
+533321728,533321983,BH
+533321984,533322495,BE
+533322496,533331967,FR
+533331968,533397503,UA
+533397504,533463039,KW
+533463040,533479423,RU
+533481472,533483519,NO
+533483520,533485567,FR
+533485568,533487615,LU
+533487616,533491711,RU
+533491712,533495807,DE
+533495808,533503999,NL
+533504000,533512191,RU
+533512192,533528575,ME
+533528576,533594111,GB
+533594112,533659647,TR
+533659648,533676031,CZ
+533676032,533680127,RU
+533680128,533682175,TR
+533682176,533684223,ES
+533684224,533692415,IT
+533692416,533725183,RU
+533725184,533807103,SE
+533807104,533811199,LT
+533811200,533815295,DE
+533815296,533815296,TR
+533815297,533816319,CY
+533816320,533816320,TR
+533816321,533817343,CY
+533817344,533817344,TR
+533817345,533819391,CY
+533819392,533823487,DE
+533823488,533825535,BE
+533827584,533831679,IS
+533831680,533835775,DE
+533835776,533837823,SE
+533837824,533839871,DE
+533839872,533856255,IS
+533856256,533858303,FR
+533858304,533860351,HU
+533860352,533860863,DE
+533860864,533862399,NL
+533862400,533864447,GB
+533864448,533889023,TR
+533889024,533891071,GB
+533891072,533893119,RU
+533893120,533895167,ES
+533895168,533897215,TR
+533897216,533899263,DE
+533899264,533901311,RU
+533901312,533905407,IL
+533905408,533913599,RU
+533913600,533915647,ES
+533915648,533919743,GB
+533919744,533921791,SE
+533921792,533954559,RU
+533954560,533962751,BG
+533962752,533964799,GB
+533964800,533966847,NO
+533966848,533968895,DE
+533968896,533970943,ES
+533970944,533987327,SE
+533987328,534118399,DE
+534118400,534151167,KW
+534151168,534183935,DE
+534183936,534249471,RO
+534249472,534253567,GB
+534253568,534257407,FR
+534257408,534257663,PL
+534257664,534259711,SE
+534259712,534261759,CH
+534261760,534263807,GB
+534263808,534265855,PL
+534265856,534282239,CY
+534282240,534284287,IT
+534284288,534286335,SE
+534286336,534288383,LU
+534288384,534290431,IT
+534290432,534296575,RU
+534296576,534298623,BA
+534298624,534306815,HR
+534306816,534308863,SE
+534308864,534310911,IE
+534310912,534315007,IT
+534315008,534347775,HR
+534380544,534511615,AE
+534511616,534544383,DE
+534544384,534546431,RO
+534546432,534548479,DE
+534548480,534550527,PL
+534550528,534560767,RU
+534560768,534609919,GB
+534609920,534642687,ES
+534642688,534646783,CZ
+534646784,534648831,PL
+534648832,534650879,CH
+534650880,534652927,RU
+534652928,534654975,AL
+534654976,534663167,GB
+534663168,534675455,ES
+534675456,534691839,GB
+534691840,534693887,FR
+534693888,534695935,GB
+534700032,534708223,JO
+534708224,534740991,TR
+534740992,534749183,BA
+534749184,534753279,NL
+534753280,534757375,PS
+534757376,534761471,KZ
+534761472,534765567,BA
+534765568,534767615,UA
+534767616,534769663,HU
+534769664,534773759,IT
+534773760,536870911,DE
536870912,539624567,US
539624568,539624575,IE
539624576,539624703,US
@@ -1149,7 +2238,9 @@
540814016,540814079,US
540814080,540814271,TW
540814272,540814279,DE
-540814280,540814511,US
+540814280,540814327,US
+540814328,540814335,IN
+540814336,540814511,US
540814512,540814519,SG
540814520,540814719,US
540814720,540814735,SG
@@ -1188,7 +2279,29 @@
543691008,543844351,US
543844352,543844607,CH
543844608,603979775,US
-603979776,620756991,AU
+603979776,603980799,CN
+603980800,603981823,NP
+603981824,604110847,CN
+604110848,604241919,JP
+604241920,604504063,CN
+604504064,605028351,JP
+605028352,606412799,CN
+606412800,606413823,HK
+606413824,606420991,CN
+606420992,606437375,ID
+606437376,606470143,KH
+606470144,606601215,KR
+606601216,607387647,CN
+607387648,607649791,JP
+607649792,608174079,CN
+608174080,610271231,ID
+610271232,618659839,CN
+618659840,619708415,TW
+619708416,620232703,JP
+620232704,620494847,CN
+620494848,620625919,NP
+620625920,620691455,CN
+620756992,624951295,EU
637534208,644067391,US
644067392,644067455,CA
644067456,644835071,US
@@ -1198,6 +2311,19 @@
644840448,645225471,US
645225472,645225503,CA
645225504,654311423,US
+654311424,654311679,CN
+654311680,654311935,AU
+654311936,654376959,CN
+654376960,654442495,TW
+654442496,654573567,JP
+654573568,654835711,KR
+654835712,655359999,TW
+655360000,656408575,KR
+656408576,658505727,PK
+658505728,661651455,CN
+661651456,662700031,KR
+662700032,666894335,CN
+666894336,671088639,ID
671088640,687865855,US
687865856,689963007,ZA
689963008,691011583,EG
@@ -1210,6 +2336,7 @@
691994624,692011007,ZM
692011008,692027391,ZA
692027392,692035583,MG
+692035584,692043775,AO
692043776,692060159,NA
692060160,692191231,EG
692191232,692207615,CI
@@ -1258,6 +2385,12 @@
692793344,692797439,GH
692797440,692801535,CG
692801536,692805631,NG
+692805632,692809727,ZA
+692809728,692813823,MW
+692813824,692817919,ZA
+692817920,692822015,KE
+692822016,692826111,UG
+692826112,692830207,KE
692830208,692834303,NG
692834304,692838399,TZ
692838400,692842495,ZA
@@ -1272,8 +2405,7 @@
692860928,692862975,ZA
692862976,692869119,NG
692869120,692871167,TZ
-692871168,692873215,ZA
-692875264,692877311,ZA
+692871168,692877311,ZA
692877312,692879359,GA
692879360,692881407,ZA
692881408,692883455,CG
@@ -1286,6 +2418,20 @@
692895744,692897791,NG
692897792,692905983,ZA
692905984,692908031,ZW
+692908032,692910079,BW
+692910080,692912127,NG
+692912128,692914175,ZM
+692914176,692916223,MW
+692916224,692918271,MG
+692918272,692920319,ZA
+692920320,692922367,MZ
+692922368,692924415,NG
+692924416,692928511,ZA
+692928512,692930559,GH
+692930560,692932607,UG
+692932608,692934655,CM
+692934656,692936703,BW
+692936704,692938751,ZA
692969472,692971519,TZ
692973568,692975615,MZ
692975616,692977663,EG
@@ -1331,9 +2477,37 @@
693021696,693022719,NG
693022720,693023743,KE
693023744,693026815,ZA
-693026816,693027839,MU
693027840,693028863,CD
693028864,693029887,ZA
+693029888,693030911,CM
+693030912,693031935,NG
+693031936,693032959,ZA
+693032960,693033983,MW
+693033984,693035007,ZA
+693035008,693036031,NG
+693036032,693038079,ZA
+693038080,693039103,ZW
+693039104,693040127,GA
+693040128,693041151,ZA
+693041152,693042175,MW
+693042176,693043199,NG
+693043200,693044223,ZW
+693044224,693045247,NG
+693045248,693046271,KE
+693046272,693047295,ZW
+693047296,693049343,ZA
+693049344,693050367,SD
+693050368,693051391,ZW
+693051392,693052415,BW
+693052416,693054463,ZA
+693054464,693055487,BI
+693055488,693056511,GQ
+693056512,693057535,NA
+693057536,693058559,ZW
+693058560,693059583,SC
+693059584,693060607,NG
+693060608,693061631,TZ
+693061632,693062655,ZA
693101568,693102591,KE
693102592,693103615,CD
693103616,693104639,GN
@@ -1347,6 +2521,10 @@
693411840,693420031,NG
693420032,693428223,UG
693428224,693436415,SZ
+693436416,693477375,ZA
+693477376,693485567,BJ
+693485568,693493759,ZW
+693493760,693501951,ZA
693501952,693510143,LR
693510144,693518335,SC
693518336,693534719,ZA
@@ -1731,25 +2909,91 @@
702537728,702538751,RW
702538752,702539775,TZ
702539776,702540799,BF
-702540800,702541823,MU
702541824,702542847,EG
702542848,702543871,ZA
702543872,702544895,BJ
-702544896,702545919,MU
702545920,703070207,TN
703070208,703594495,EG
703594496,704118783,ZA
704118784,704380927,MA
704380928,704643071,LY
-704643072,721420287,AU
+704643072,704644095,CN
+704644096,704645119,BD
+704645120,704650239,CN
+704650240,704651263,MY
+704651264,704659455,CN
+704659456,704675839,TW
+704675840,704723967,CN
+704723968,704724991,MY
+704724992,704741375,VN
+704741376,704774143,CN
+704774144,704905215,HK
+704905216,705167359,CN
+705167360,707788799,KR
+707788800,708575231,CN
+708575232,708706303,SG
+708706304,708751359,CN
+708751360,708752383,ID
+708752384,708755455,CN
+708755456,708771839,AU
+708771840,708837375,CN
+708837376,709885951,TW
+709885952,710017023,CN
+710017024,710082559,KR
+710082560,710098943,JP
+710098944,710104063,CN
+710104064,710105087,PK
+710105088,710934527,CN
+710934528,710950911,VN
+710950912,710961151,CN
+710961152,710962175,TH
+710962176,711065599,CN
+711065600,711131135,HK
+711131136,711160831,CN
+711160832,711161855,BD
+711161856,711163903,CN
+711163904,711196671,JP
+711196672,711458815,CN
+711458816,711983103,IN
+711983104,712507391,VN
+712507392,712712191,CN
+712712192,712713215,JP
+712713216,712769535,CN
+712769536,713031679,JP
+713031680,714080255,CN
+714080256,714604543,JP
+714604544,714866687,MY
+714866688,714874879,CN
+714874880,714875903,MY
+714875904,716930047,CN
+716930048,716931071,JP
+716931072,716963839,CN
+716963840,717225983,MY
+717225984,717750271,CN
+717750272,717815807,HK
+717815808,717848575,CN
+717848576,717881343,PK
+717881344,720437247,CN
+720437248,720502783,AU
+720502784,721420287,CN
721420288,738197503,JP
738197504,771751935,US
771751936,771817471,RU
771817472,771948543,TR
771948544,772014079,RU
-772014080,772057727,DE
+772014080,772050575,DE
+772050576,772050583,TR
+772050584,772051223,DE
+772051224,772051231,CH
+772051232,772054815,DE
+772054816,772054847,ES
+772054848,772057727,DE
772057728,772057735,IT
-772057736,772145151,DE
+772057736,772076095,DE
+772076096,772076103,IT
+772076104,772076127,DE
+772076128,772076159,EG
+772076160,772145151,DE
772145152,772210687,ES
772210688,772276223,IE
772276224,772341759,RU
@@ -1762,7 +3006,11 @@
772734976,772800511,NO
772800512,772802559,GB
772802560,772804607,RU
-772804608,772806655,BZ
+772804608,772806207,BZ
+772806208,772806271,NI
+772806272,772806463,BZ
+772806464,772806527,NI
+772806528,772806655,BZ
772806656,772808703,RU
772808704,772810751,GB
772810752,772812799,FR
@@ -1781,7 +3029,9 @@
772837376,772839423,KZ
772839424,772841471,CH
772841472,772843519,GB
-772843520,772845567,IT
+772843520,772844287,IT
+772844288,772844543,US
+772844544,772845567,IT
772845568,772847615,RU
772847616,772849663,GB
772849664,772851711,BG
@@ -1809,7 +3059,11 @@
772886528,772888575,FR
772888576,772890623,GB
772890624,772892671,RU
-772892672,772894719,DE
+772892672,772892799,DE
+772892800,772892893,GB
+772892894,772892927,DE
+772892928,772892959,GB
+772892960,772894719,DE
772894720,772896767,PL
772896768,772898815,RS
772898816,772900863,TR
@@ -1854,7 +3108,10 @@
772986880,772988927,GB
772988928,772990975,FR
772990976,772993023,IT
-772993024,772995071,DE
+772993024,772994559,DE
+772994560,772994815,NL
+772994816,772994943,US
+772994944,772995071,DE
772995072,772997119,IR
772997120,772999167,BE
772999168,773001215,SI
@@ -1883,7 +3140,11 @@
773048320,773050367,LV
773050368,773052415,IE
773052416,773054463,NL
-773054464,773056511,AL
+773054464,773054655,AL
+773054656,773054719,RS
+773054720,773055487,AL
+773055488,773056127,RS
+773056128,773056511,AL
773056512,773058559,IT
773058560,773060607,BE
773060608,773062655,DK
@@ -1891,8 +3152,10 @@
773062912,773063167,US
773063168,773063424,TR
773063425,773063436,US
-773063437,773063935,TR
-773063936,773065215,US
+773063437,773064447,TR
+773064448,773064703,US
+773064704,773065088,TR
+773065089,773065215,US
773065216,773066751,TR
773066752,773070847,AT
773070848,773074943,DE
@@ -1912,18 +3175,29 @@
773128192,773132287,DE
773132288,773134335,IT
773134336,773134847,CH
-773134848,773135359,IT
-773135360,773135871,CH
-773135872,773136383,IT
+773134848,773136383,IT
773136384,773140479,DK
773140480,773144575,CY
773144576,773148671,RU
773148672,773152767,IR
-773152768,773156863,SE
-773156864,773165055,FR
-773165056,773168127,NL
-773168128,773168383,US
-773168384,773173247,NL
+773152768,773153791,SE
+773153792,773154815,US
+773154816,773156863,SE
+773156864,773157887,FR
+773157888,773158911,DE
+773158912,773160447,FR
+773160448,773160959,ES
+773160960,773165055,FR
+773165056,773166591,NL
+773166592,773167103,US
+773167104,773167615,NL
+773167616,773169151,US
+773169152,773171343,NL
+773171344,773171359,BE
+773171360,773172223,NL
+773172224,773172287,BE
+773172288,773172351,GB
+773172352,773173247,NL
773173248,773177343,IT
773177344,773181439,FR
773181440,773185535,PL
@@ -1940,6 +3214,28 @@
773230592,773234687,RS
773234688,773238783,PL
773238784,773242879,NL
+773242880,773246975,FR
+773246976,773247871,EE
+773247872,773247999,US
+773248000,773251071,EE
+773251072,773255167,AZ
+773255168,773259263,RU
+773259264,773263359,SI
+773263360,773267455,GB
+773267456,773271551,LV
+773271552,773275647,CZ
+773275648,773277695,GB
+773277696,773283839,NL
+773283840,773287935,AZ
+773287936,773292031,JO
+773292032,773296127,CZ
+773296128,773300223,RU
+773300224,773304319,FI
+773304320,773308415,RU
+773308416,773312511,IT
+773312512,773316607,DE
+773316608,773320703,RU
+773320704,773324799,FR
773324800,773586943,ES
773586944,773588991,IT
773588992,773591039,PL
@@ -1949,7 +3245,9 @@
773597184,773599231,BE
773599232,773601279,GB
773601280,773603327,LV
-773603328,773605375,UA
+773603328,773603839,UA
+773603840,773603855,HK
+773603856,773605375,UA
773605376,773607423,IR
773607424,773609471,DE
773609472,773611519,RU
@@ -1961,19 +3259,19 @@
773621760,773623807,PS
773623808,773625855,SE
773625856,773627903,IS
-773627904,773629951,TR
773629952,773631999,FR
773632000,773634047,CY
773634048,773636095,DE
773636096,773638143,UA
-773638144,773640191,GB
773640192,773642239,ES
773642240,773644287,HU
773644288,773646335,RU
773646336,773648383,TR
773648384,773650431,PL
773650432,773652479,GB
-773652480,773654527,SK
+773652480,773653759,SK
+773653760,773653791,CZ
+773653792,773654527,SK
773654528,773656575,RU
773656576,773658623,PL
773658624,773660671,DE
@@ -1996,7 +3294,11 @@
773679616,773680191,IT
773680192,773681151,A2
773681152,773683199,RU
-773683200,773685247,FR
+773683200,773684223,FR
+773684224,773684239,GB
+773684240,773684255,BE
+773684256,773684271,NL
+773684272,773685247,FR
773685248,773687295,UA
773687296,773689343,HU
773689344,773691391,PL
@@ -2011,8 +3313,9 @@
773709824,773711871,CZ
773711872,773713919,RU
773713920,773715967,NL
-773715968,773716479,EE
-773716480,773716991,SE
+773715968,773715999,SE
+773716000,773716063,US
+773716064,773716991,SE
773716992,773718015,US
773718016,773720063,DE
773720064,773722111,GB
@@ -2037,12 +3340,10 @@
773763072,773765119,TR
773765120,773767167,NL
773767168,773769215,GB
-773769216,773771263,SE
773771264,773773311,DK
773773312,773775359,IT
773775360,773777407,IQ
773777408,773779455,CZ
-773779456,773781503,ME
773781504,773783551,IT
773783552,773785599,RU
773785600,773787647,NL
@@ -2052,7 +3353,11 @@
773793792,773795839,FR
773795840,773797887,NL
773797888,773799935,ES
-773799936,773801983,CY
+773799936,773800447,GB
+773800448,773800703,CY
+773800704,773800959,GB
+773800960,773801727,CY
+773801728,773801983,GB
773801984,773804031,IQ
773804032,773806079,GB
773806080,773808127,BE
@@ -2065,6 +3370,7 @@
773820416,773822463,TR
773822464,773824511,RU
773824512,773826559,FR
+773826560,773828607,GB
773828608,773830655,HU
773830656,773832703,NO
773832704,773834751,FR
@@ -2082,7 +3388,8 @@
773898240,773906431,PS
773906432,773922815,GB
773922816,773931007,UA
-773931008,773939199,FR
+773931008,773934591,DE
+773934592,773939199,FR
773939200,773947391,CZ
773947392,773955583,GB
773955584,773963775,FR
@@ -2102,11 +3409,24 @@
774029312,774037503,RO
774037504,774045695,SK
774045696,774053887,FR
-774053888,774061567,DE
-774061568,774061695,BZ
-774061696,774061823,DE
-774061824,774061951,BZ
-774061952,774062079,DE
+774053888,774054015,HR
+774054016,774055935,DE
+774055936,774057983,US
+774057984,774058359,DE
+774058360,774058367,HR
+774058368,774058599,DE
+774058600,774058603,HR
+774058604,774059207,DE
+774059208,774059211,HR
+774059212,774059215,DE
+774059216,774059223,ZA
+774059224,774060031,DE
+774060032,774060047,ES
+774060048,774061007,DE
+774061008,774061023,CZ
+774061024,774061103,DE
+774061104,774061111,GI
+774061112,774062079,DE
774062080,774070271,YE
774070272,774078463,ES
774078464,774086655,BA
@@ -2160,7 +3480,8 @@
774161117,774161126,SA
774161127,774161136,SC
774161137,774161146,SG
-774161147,774161151,VA
+774161147,774161149,BY
+774161150,774161151,VA
774161152,774161162,AQ
774161163,774161172,KR
774161173,774161182,TH
@@ -2230,36 +3551,362 @@
774161735,774161744,UA
774161745,774161754,NP
774161755,774161764,PG
-774161765,774168575,VA
+774161765,774161774,ZA
+774161775,774161784,SN
+774161785,774161794,MA
+774161795,774161804,BH
+774161805,774161814,JE
+774161815,774161824,TV
+774161825,774161834,PF
+774161835,774161844,SB
+774161845,774161854,VU
+774161855,774161864,AN
+774161865,774161869,AR
+774161870,774161874,ES
+774161875,774161879,GE
+774161880,774161884,RS
+774161885,774161889,DE
+774161890,774161894,IT
+774161895,774161899,BE
+774161900,774161904,FR
+774161905,774161909,CZ
+774161910,774161914,LT
+774161915,774161917,PL
+774161918,774161920,VA
+774161921,774161940,GB
+774161941,774161950,AU
+774161951,774161955,IT
+774161956,774161960,NZ
+774161961,774161965,PL
+774161966,774161970,NL
+774161971,774161975,CA
+774161976,774161980,US
+774161981,774161985,GB
+774161986,774161990,IQ
+774161991,774161995,AF
+774161996,774162000,ER
+774162001,774162005,KE
+774162006,774162010,MG
+774162011,774162015,TN
+774162016,774162020,TT
+774162021,774162025,BO
+774162026,774162030,CH
+774162031,774162035,AU
+774162036,774162040,AL
+774162041,774162045,AD
+774162046,774162050,HR
+774162051,774162055,ME
+774162056,774162060,SY
+774162061,774162065,YE
+774162066,774162070,HT
+774162071,774162075,EC
+774162076,774162080,SH
+774162081,774162085,ZM
+774162086,774162090,KH
+774162091,774162095,VN
+774162096,774162100,FM
+774162101,774162105,US
+774162106,774162110,LY
+774162111,774162115,SO
+774162116,774162120,FI
+774162121,774162125,DZ
+774162126,774162130,CD
+774162131,774162135,MR
+774162136,774162140,CM
+774162141,774162145,SV
+774162146,774162150,HN
+774162151,774162155,US
+774162156,774162160,UY
+774162161,774162165,LV
+774162166,774162170,MD
+774162171,774162173,LB
+774162174,774162176,VA
+774162177,774162181,LK
+774162182,774162186,IE
+774162187,774162196,EH
+774162197,774162206,NA
+774162207,774162216,CX
+774162217,774162226,LA
+774162227,774162236,GB
+774162237,774162246,CH
+774162247,774162266,US
+774162267,774162276,PT
+774162277,774162286,AE
+774162287,774162296,IO
+774162297,774162306,GU
+774162307,774162316,RE
+774162317,774162326,TK
+774162327,774162336,CV
+774162337,774162432,VA
+774162433,774162442,GB
+774162443,774162452,BA
+774162453,774162462,WS
+774162463,774162472,SR
+774162473,774162483,PT
+774162484,774162492,CK
+774162493,774162502,KI
+774162503,774162512,NU
+774162513,774162522,TO
+774162523,774162532,CL
+774162533,774162542,TF
+774162543,774162552,GG
+774162553,774162562,LR
+774162563,774162572,MQ
+774162573,774162582,YT
+774162583,774162592,NC
+774162593,774162602,NG
+774162603,774162617,US
+774162618,774162622,PR
+774162623,774162627,US
+774162628,774162637,GB
+774162638,774162642,NF
+774162643,774162687,US
+774162688,774162688,VA
+774162689,774162718,US
+774162719,774168575,VA
774168576,774176767,PL
774176768,774184959,IT
774184960,774193151,GB
774193152,774209535,ES
774209536,774217727,RU
-774217728,774224127,GB
-774224128,774224159,CN
-774224160,774225279,GB
-774225280,774225343,CN
-774225344,774225359,GB
+774217728,774217823,GB
+774217824,774217855,AE
+774217856,774217887,US
+774217888,774217927,GB
+774217928,774217935,LK
+774217936,774217983,CN
+774217984,774218047,CA
+774218048,774218111,GB
+774218112,774218495,US
+774218496,774218503,SG
+774218504,774218519,CN
+774218520,774218527,PK
+774218528,774218535,CN
+774218536,774218543,IN
+774218544,774218551,HR
+774218552,774218559,CN
+774218560,774218567,GB
+774218568,774218575,TW
+774218576,774218591,GB
+774218592,774218599,CN
+774218600,774218607,PT
+774218608,774218615,TR
+774218616,774218631,PT
+774218632,774218639,IN
+774218640,774218647,TW
+774218648,774218655,PT
+774218656,774218663,RU
+774218664,774218671,PT
+774218672,774218679,CL
+774218680,774218687,CN
+774218688,774218695,GB
+774218696,774218703,SG
+774218704,774218711,CN
+774218712,774218719,GB
+774218720,774218727,CN
+774218728,774218735,RU
+774218736,774218743,TW
+774218744,774219007,GB
+774219008,774219263,US
+774219264,774219271,CN
+774219272,774219279,TR
+774219280,774219287,GB
+774219288,774219295,CY
+774219296,774219327,GB
+774219328,774219335,TW
+774219336,774219343,EG
+774219344,774219359,CN
+774219360,774219367,PT
+774219368,774219375,IN
+774219376,774219383,GB
+774219384,774219391,IN
+774219392,774219399,US
+774219400,774219407,IN
+774219408,774219423,CN
+774219424,774219431,IN
+774219432,774219439,HU
+774219440,774219447,CN
+774219448,774219455,ES
+774219456,774219479,CN
+774219480,774219487,HU
+774219488,774219495,CN
+774219496,774219503,EG
+774219504,774219511,CN
+774219512,774219519,SG
+774219520,774219551,CN
+774219552,774219559,PS
+774219560,774219575,CN
+774219576,774219583,GR
+774219584,774219591,TR
+774219592,774219599,US
+774219600,774219607,CN
+774219608,774219679,GB
+774219680,774219687,GR
+774219688,774219711,GB
+774219712,774219727,BE
+774219728,774219743,RU
+774219744,774219751,GB
+774219752,774219759,PK
+774219760,774219775,RU
+774219776,774219839,CN
+774219840,774219847,UA
+774219848,774219855,CN
+774219856,774219863,GB
+774219864,774219871,IT
+774219872,774219879,RU
+774219880,774219887,CN
+774219888,774219895,RU
+774219896,774219903,LK
+774219904,774219967,US
+774219968,774219975,GB
+774219976,774219991,LK
+774219992,774219999,RU
+774220000,774220007,GB
+774220008,774220015,LK
+774220016,774220159,GB
+774220160,774220191,US
+774220192,774220207,GB
+774220208,774220223,CN
+774220224,774220287,GB
+774220288,774220543,CN
+774220544,774221055,GB
+774221056,774221311,US
+774221312,774221567,CN
+774221568,774221823,US
+774221824,774222079,GB
+774222080,774222335,US
+774222336,774222495,GB
+774222496,774222511,FI
+774222512,774222527,CN
+774222528,774222591,GB
+774222592,774222655,CN
+774222656,774222687,BE
+774222688,774222719,GB
+774222720,774222783,CN
+774222784,774222799,GB
+774222800,774222815,UA
+774222816,774222847,GB
+774222848,774222863,UA
+774222864,774222879,IT
+774222880,774222895,US
+774222896,774222911,GB
+774222912,774222943,MA
+774222944,774222951,GB
+774222952,774222967,CN
+774222968,774222975,GR
+774222976,774223039,CN
+774223040,774223071,IT
+774223072,774223103,CN
+774223104,774223119,UA
+774223120,774223151,CN
+774223152,774223167,PK
+774223168,774223183,GB
+774223184,774223199,PK
+774223200,774223231,GB
+774223232,774223239,CN
+774223240,774223247,ME
+774223248,774223255,TR
+774223256,774223263,ID
+774223264,774223271,DE
+774223272,774223279,CN
+774223280,774223287,GB
+774223288,774223295,CN
+774223296,774223303,TR
+774223304,774223311,CN
+774223312,774223319,IN
+774223320,774223327,ID
+774223328,774223335,PK
+774223336,774223351,PT
+774223352,774223359,GB
+774223360,774223375,UA
+774223376,774223391,RU
+774223392,774223407,PK
+774223408,774223743,GB
+774223744,774223807,US
+774223808,774223839,CN
+774223840,774223871,US
+774223872,774223951,GB
+774223952,774223959,RU
+774223960,774223967,CN
+774223968,774223975,RU
+774223976,774223983,US
+774223984,774223991,RU
+774223992,774223999,PK
+774224000,774224007,IT
+774224008,774224023,CN
+774224024,774224031,AE
+774224032,774224039,TW
+774224040,774224047,CA
+774224048,774224055,CN
+774224056,774224079,IN
+774224080,774224087,DE
+774224088,774224095,CN
+774224096,774224103,BY
+774224104,774224111,RU
+774224112,774224119,CN
+774224120,774224127,IN
+774224128,774224159,BE
+774224160,774224191,GB
+774224192,774224223,US
+774224224,774224255,LT
+774224256,774224383,GB
+774224384,774224399,UA
+774224400,774224407,LT
+774224408,774224415,GB
+774224416,774224423,TW
+774224424,774224431,GB
+774224432,774224439,CN
+774224440,774224447,GB
+774224448,774224511,CN
+774224512,774224767,GB
+774224768,774224831,CN
+774224832,774224847,UA
+774224848,774224967,GB
+774224968,774224975,UA
+774224976,774224983,RU
+774224984,774224991,CN
+774224992,774224999,LK
+774225000,774225007,CN
+774225008,774225015,PK
+774225016,774225023,CN
+774225024,774225055,US
+774225056,774225151,RU
+774225152,774225343,GB
+774225344,774225351,CN
+774225352,774225359,LT
774225360,774225375,UA
-774225376,774225391,GB
-774225392,774225407,UA
-774225408,774225599,GB
+774225376,774225391,JO
+774225392,774225415,UA
+774225416,774225423,CN
+774225424,774225431,TR
+774225432,774225439,DE
+774225440,774225447,CN
+774225448,774225455,BY
+774225456,774225463,GB
+774225464,774225471,CN
+774225472,774225479,IT
+774225480,774225487,IN
+774225488,774225495,CN
+774225496,774225503,UA
+774225504,774225511,CN
+774225512,774225519,TR
+774225520,774225527,RU
+774225528,774225535,CA
+774225536,774225567,GB
+774225568,774225599,RU
774225600,774225615,PK
-774225616,774225631,GB
-774225632,774225647,CN
+774225616,774225631,TR
+774225632,774225647,GB
774225648,774225663,UA
774225664,774225671,LK
-774225672,774225679,US
-774225680,774225687,CN
-774225688,774225695,CA
-774225696,774225703,RU
-774225704,774225711,LK
-774225712,774225719,PK
-774225720,774225791,GB
-774225792,774225807,UA
-774225808,774225823,GB
-774225824,774225919,US
+774225672,774225687,RU
+774225688,774225695,PK
+774225696,774225703,CN
+774225704,774225727,GB
+774225728,774225743,LT
+774225744,774225823,GB
+774225824,774225855,US
+774225856,774225919,IN
774225920,774234111,UA
774234112,774242303,IT
774242304,774258687,RU
@@ -2267,6 +3914,15 @@
774266880,774275071,RU
774275072,774283263,IR
774283264,774291455,GB
+774291456,774299647,NL
+774299648,774307839,DE
+774307840,774324223,RU
+774324224,774332415,UA
+774332416,774340607,SE
+774340608,774348799,EE
+774348800,774356991,CZ
+774356992,774365183,ES
+774365184,774373375,RU
774373376,774389759,RS
774389760,774406143,BG
774406144,774422527,IT
@@ -2279,7 +3935,9 @@
774520832,774537215,BH
774537216,774553599,RU
774553600,774569983,RO
-774569984,774586367,GB
+774569984,774579199,GB
+774579200,774580223,IT
+774580224,774586367,GB
774586368,774602751,PS
774602752,774619135,GB
774619136,774651903,RU
@@ -2292,7 +3950,8 @@
774750208,774782975,RU
774782976,774799359,UA
774799360,774815743,RU
-774815744,774832127,SE
+774815744,774830079,NO
+774830080,774832127,SE
774832128,774848511,RU
774848512,774864895,BG
774864896,774881279,CZ
@@ -2316,7 +3975,40 @@
775520256,775553023,SY
775553024,775585791,EU
775585792,775618559,SY
-775618560,775651327,SE
+775618560,775641087,SE
+775641088,775641119,FI
+775641120,775641215,SE
+775641216,775641279,GB
+775641280,775641343,DE
+775641344,775641375,FI
+775641376,775641471,SE
+775641472,775641535,GB
+775641536,775641599,DE
+775641600,775641631,FI
+775641632,775641727,SE
+775641728,775641791,GB
+775641792,775641855,DE
+775641856,775641887,FI
+775641888,775641983,SE
+775641984,775642047,GB
+775642048,775642111,DE
+775642112,775642143,FI
+775642144,775642239,SE
+775642240,775642303,GB
+775642304,775642367,DE
+775642368,775642399,FI
+775642400,775642495,SE
+775642496,775642559,GB
+775642560,775642623,DE
+775642624,775642655,FI
+775642656,775642751,SE
+775642752,775642815,GB
+775642816,775642879,DE
+775642880,775642911,FI
+775642912,775643007,SE
+775643008,775643071,GB
+775643072,775643135,DE
+775643136,775651327,SE
775651328,775684095,DE
775684096,775716863,PS
775716864,775749631,GB
@@ -2338,11 +4030,556 @@
778240000,778305535,AL
778305536,778371071,IR
778371072,778436607,RU
-778436608,778502143,RO
-778502144,778534911,GR
-778534912,778567679,CY
+778436608,778498047,RO
+778498048,778500095,NL
+778500096,778502143,RO
+778502144,778567679,GR
778567680,778633215,TR
-778633216,778698751,FR
+778633216,778638975,FR
+778638976,778639103,CZ
+778639104,778639231,LT
+778639232,778639359,FI
+778639360,778639615,ES
+778639616,778639871,PL
+778639872,778640127,DE
+778640128,778640383,GB
+778640384,778640639,IT
+778640640,778640895,PT
+778640896,778641151,NL
+778641152,778641407,IE
+778641408,778665983,FR
+778665984,778666015,BE
+778666016,778666031,FR
+778666032,778666047,PL
+778666048,778666063,FR
+778666064,778666095,PL
+778666096,778666099,DE
+778666100,778666103,ES
+778666104,778666107,GB
+778666108,778666111,IE
+778666112,778666119,FR
+778666120,778666123,GB
+778666124,778666127,FR
+778666128,778666143,PL
+778666144,778666151,FR
+778666152,778666155,GB
+778666156,778666159,ES
+778666160,778666175,PL
+778666176,778666207,FR
+778666208,778666239,PL
+778666240,778666367,FR
+778666368,778666371,PL
+778666372,778666375,GB
+778666376,778666383,FR
+778666384,778666391,DE
+778666392,778666399,PL
+778666400,778666479,FR
+778666480,778666495,DE
+778666496,778666751,BE
+778666752,778666783,CZ
+778666784,778666815,FR
+778666816,778666847,GB
+778666848,778666863,FR
+778666864,778666871,GB
+778666872,778666879,IE
+778666880,778666967,FR
+778666968,778666975,PL
+778666976,778667279,FR
+778667280,778667287,IE
+778667288,778667291,NL
+778667292,778667295,CH
+778667296,778667327,BE
+778667328,778667331,GB
+778667332,778667335,FR
+778667336,778667343,ES
+778667344,778667347,FR
+778667348,778667351,GB
+778667352,778667391,PL
+778667392,778667407,FR
+778667408,778667415,PL
+778667416,778667423,FR
+778667424,778667455,LT
+778667456,778667471,DE
+778667472,778667479,FR
+778667480,778667483,GB
+778667484,778667487,NL
+778667488,778667491,PL
+778667492,778667499,FR
+778667500,778667503,GB
+778667504,778667839,FR
+778667840,778667855,PL
+778667856,778667871,FR
+778667872,778667875,ES
+778667876,778667879,LT
+778667880,778667887,FI
+778667888,778667895,IT
+778667896,778667903,IE
+778667904,778667911,GB
+778667912,778667915,PL
+778667916,778667919,PT
+778667920,778667927,NL
+778667928,778667931,GB
+778667932,778667935,CZ
+778667936,778667943,FR
+778667944,778667947,DE
+778667948,778667951,LT
+778667952,778667967,GB
+778667968,778667999,FR
+778668000,778668019,DE
+778668020,778668023,ES
+778668024,778668027,PT
+778668028,778668319,FR
+778668320,778668351,GB
+778668352,778668359,FR
+778668360,778668367,PL
+778668368,778668371,DE
+778668372,778668375,ES
+778668376,778668379,GB
+778668380,778668415,FR
+778668416,778668495,ES
+778668496,778668499,PL
+778668500,778668503,FR
+778668504,778668507,ES
+778668508,778668511,PT
+778668512,778668527,PL
+778668528,778668535,IT
+778668536,778668539,DE
+778668540,778668559,FR
+778668560,778668567,IT
+778668568,778668575,PL
+778668576,778668607,FR
+778668608,778668615,IE
+778668616,778668619,PL
+778668620,778668623,GB
+778668624,778668639,FR
+778668640,778668671,PL
+778668672,778668703,NL
+778668704,778668707,PL
+778668708,778668711,ES
+778668712,778668715,FR
+778668716,778668719,PL
+778668720,778668723,PT
+778668724,778668735,PL
+778668736,778668799,IT
+778668800,778669103,FR
+778669104,778669107,PL
+778669108,778669111,GB
+778669112,778669119,NL
+778669120,778669151,FI
+778669152,778669183,PT
+778669184,778669199,FR
+778669200,778669207,PL
+778669208,778669211,CH
+778669212,778669215,ES
+778669216,778669219,CH
+778669220,778669223,FI
+778669224,778669231,NL
+778669232,778669247,PL
+778669248,778669295,FR
+778669296,778669303,PL
+778669304,778669439,FR
+778669440,778669447,GB
+778669448,778669451,PL
+778669452,778669455,FI
+778669456,778669471,FR
+778669472,778669503,CZ
+778669504,778669535,ES
+778669536,778669539,PL
+778669540,778669543,GB
+778669544,778669547,FR
+778669548,778669551,IT
+778669552,778669567,PL
+778669568,778669615,FR
+778669616,778669623,GB
+778669624,778669631,PL
+778669632,778669695,FR
+778669696,778669727,PT
+778669728,778669759,NL
+778669760,778669767,DE
+778669768,778669771,GB
+778669772,778669775,PL
+778669776,778669791,FR
+778669792,778669807,DE
+778669808,778669823,FR
+778669824,778669855,ES
+778669856,778669887,FR
+778669888,778669903,PL
+778669904,778669919,FR
+778669920,778669935,BE
+778669936,778669943,DE
+778669944,778669951,CH
+778669952,778669959,NL
+778669960,778669967,GB
+778669968,778669983,IE
+778669984,778669999,IT
+778670000,778670007,PL
+778670008,778670011,CZ
+778670012,778670015,LT
+778670016,778670143,FR
+778670144,778670151,CZ
+778670152,778670159,CH
+778670160,778670163,FR
+778670164,778670167,GB
+778670168,778670175,FR
+778670176,778670207,GB
+778670208,778670211,DE
+778670212,778670215,IT
+778670216,778670223,FR
+778670224,778670239,PL
+778670240,778670243,PT
+778670244,778670247,PL
+778670248,778670255,CZ
+778670256,778670291,FR
+778670292,778670295,NL
+778670296,778670303,DE
+778670304,778670335,FR
+778670336,778670343,DE
+778670344,778670347,CZ
+778670348,778670351,PL
+778670352,778670355,DE
+778670356,778670359,FR
+778670360,778670383,DE
+778670384,778670387,PL
+778670388,778670399,GB
+778670400,778670407,PL
+778670408,778670411,DE
+778670412,778670415,NL
+778670416,778670431,FR
+778670432,778670435,NL
+778670436,778670439,ES
+778670440,778670447,PL
+778670448,778670455,CH
+778670456,778670495,CZ
+778670496,778670503,FR
+778670504,778670511,ES
+778670512,778670519,NL
+778670520,778670523,FR
+778670524,778670527,PT
+778670528,778670559,FR
+778670560,778670563,PL
+778670564,778670567,FI
+778670568,778670571,CH
+778670572,778670575,FR
+778670576,778670591,IT
+778670592,778671103,ES
+778671104,778671119,FR
+778671120,778671127,DE
+778671128,778671135,PT
+778671136,778671167,BE
+778671168,778671203,FR
+778671204,778671211,PL
+778671212,778671231,FR
+778671232,778671239,GB
+778671240,778671243,PL
+778671244,778671247,FR
+778671248,778671263,PL
+778671264,778671279,GB
+778671280,778671311,FR
+778671312,778671327,PT
+778671328,778671331,FR
+778671332,778671335,DE
+778671336,778671631,FR
+778671632,778671647,PL
+778671648,778671807,FR
+778671808,778671839,ES
+778671840,778671867,FR
+778671868,778671871,GB
+778671872,778671875,PL
+778671876,778671879,ES
+778671880,778671883,NL
+778671884,778671887,ES
+778671888,778671903,GB
+778671904,778671907,NL
+778671908,778671915,FR
+778671916,778671919,GB
+778671920,778671935,PT
+778671936,778671967,FR
+778671968,778672015,ES
+778672016,778672055,FR
+778672056,778672063,PL
+778672064,778672067,GB
+778672068,778672071,FR
+778672072,778672079,GB
+778672080,778672095,BE
+778672096,778672103,CH
+778672104,778672111,NL
+778672112,778672115,GB
+778672116,778672119,IT
+778672120,778672123,ES
+778672124,778672127,CH
+778672128,778672255,FR
+778672256,778672319,BE
+778672320,778672383,FR
+778672384,778672447,PL
+778672448,778672479,DE
+778672480,778672511,ES
+778672512,778672543,FR
+778672544,778672551,ES
+778672552,778672559,CH
+778672560,778672563,GB
+778672564,778672567,IT
+778672568,778672639,FR
+778672640,778672703,DE
+778672704,778672767,CH
+778672768,778672803,FR
+778672804,778672807,DE
+778672808,778672811,PL
+778672812,778672815,ES
+778672816,778672819,LT
+778672820,778672823,PL
+778672824,778672831,DE
+778672832,778672851,FR
+778672852,778672891,PL
+778672892,778672911,FR
+778672912,778672919,PL
+778672920,778672923,FR
+778672924,778672927,ES
+778672928,778672959,DE
+778672960,778673071,FR
+778673072,778673079,DE
+778673080,778673083,ES
+778673084,778673087,PT
+778673088,778673119,FR
+778673120,778673151,ES
+778673152,778673215,FR
+778673216,778673247,FI
+778673248,778673263,FR
+778673264,778673279,IT
+778673280,778673343,FR
+778673344,778673359,PL
+778673360,778673391,GB
+778673392,778673407,FR
+778673408,778673663,PL
+778673664,778673711,FR
+778673712,778673715,CH
+778673716,778673719,NL
+778673720,778673723,PT
+778673724,778673727,PL
+778673728,778673823,FR
+778673824,778673839,ES
+778673840,778673843,FR
+778673844,778673855,DE
+778673856,778673919,FR
+778673920,778674175,NL
+778674176,778674367,FR
+778674368,778674387,DE
+778674388,778674391,BE
+778674392,778674395,CH
+778674396,778674399,PT
+778674400,778674431,FR
+778674432,778674435,PL
+778674436,778674439,ES
+778674440,778674447,PL
+778674448,778674451,IT
+778674452,778674455,PL
+778674456,778674459,IT
+778674460,778674463,FI
+778674464,778674471,CH
+778674472,778674475,BE
+778674476,778674479,CH
+778674480,778674495,FR
+778674496,778674499,CZ
+778674500,778674503,DE
+778674504,778674527,FR
+778674528,778674531,DE
+778674532,778674535,ES
+778674536,778674539,PT
+778674540,778674543,PL
+778674544,778674623,DE
+778674624,778674631,PL
+778674632,778674639,ES
+778674640,778674975,FR
+778674976,778674979,BE
+778674980,778674983,DE
+778674984,778674999,FR
+778675000,778675003,FI
+778675004,778675007,GB
+778675008,778675039,ES
+778675040,778675071,FR
+778675072,778675079,IT
+778675080,778675087,ES
+778675088,778675135,FR
+778675136,778675199,ES
+778675200,778675215,DE
+778675216,778675219,PT
+778675220,778675227,FR
+778675228,778675231,NL
+778675232,778675235,GB
+778675236,778675243,PL
+778675244,778675247,DE
+778675248,778675359,FR
+778675360,778675363,DE
+778675364,778675367,BE
+778675368,778675371,CH
+778675372,778675375,CZ
+778675376,778675439,FR
+778675440,778675443,DE
+778675444,778675447,FR
+778675448,778675451,PL
+778675452,778675455,DE
+778675456,778675471,NL
+778675472,778675475,BE
+778675476,778675479,ES
+778675480,778675483,CH
+778675484,778675487,PT
+778675488,778675495,PL
+778675496,778675499,DE
+778675500,778675503,PL
+778675504,778675507,DE
+778675508,778675511,GB
+778675512,778675519,PL
+778675520,778675551,ES
+778675552,778675599,FR
+778675600,778675615,GB
+778675616,778675619,PL
+778675620,778675623,ES
+778675624,778675631,PL
+778675632,778675639,ES
+778675640,778675647,DE
+778675648,778675663,GB
+778675664,778675679,FR
+778675680,778675695,DE
+778675696,778675711,NL
+778675712,778675839,GB
+778675840,778675843,FI
+778675844,778675847,FR
+778675848,778675855,PL
+778675856,778675859,GB
+778675860,778675863,IE
+778675864,778675867,DE
+778675868,778675871,FI
+778675872,778675887,FR
+778675888,778675891,ES
+778675892,778675895,FR
+778675896,778675903,PL
+778675904,778675907,CH
+778675908,778675911,CZ
+778675912,778675915,NL
+778675916,778675935,DE
+778675936,778675943,ES
+778675944,778676095,FR
+778676096,778676099,DE
+778676100,778676103,CZ
+778676104,778676111,GB
+778676112,778676127,DE
+778676128,778676131,ES
+778676132,778676135,CZ
+778676136,778676139,DE
+778676140,778676143,PL
+778676144,778676159,DE
+778676160,778676187,FR
+778676188,778676191,BE
+778676192,778676207,IT
+778676208,778676211,GB
+778676212,778676215,ES
+778676216,778676219,FR
+778676220,778676223,GB
+778676224,778676351,FR
+778676352,778676415,GB
+778676416,778676423,ES
+778676424,778676427,PL
+778676428,778676439,FR
+778676440,778676443,PL
+778676444,778676447,CH
+778676448,778676463,FR
+778676464,778676479,PL
+778676480,778676543,NL
+778676544,778676575,PT
+778676576,778676579,FR
+778676580,778676583,DE
+778676584,778676587,BE
+778676588,778676591,DE
+778676592,778676607,FR
+778676608,778676611,PL
+778676612,778676615,PT
+778676616,778676619,BE
+778676620,778676623,FR
+778676624,778676631,PL
+778676632,778676635,FR
+778676636,778676639,DE
+778676640,778676671,GB
+778676672,778676687,FR
+778676688,778676691,ES
+778676692,778676703,PL
+778676704,778676735,FR
+778676736,778676743,PL
+778676744,778676747,CH
+778676748,778676751,CZ
+778676752,778676767,ES
+778676768,778676771,PL
+778676772,778676775,ES
+778676776,778676779,PL
+778676780,778676783,CH
+778676784,778676799,FR
+778676800,778676815,IE
+778676816,778676823,LT
+778676824,778676827,GB
+778676828,778676831,FR
+778676832,778676847,ES
+778676848,778676851,NL
+778676852,778676855,LT
+778676856,778676859,FR
+778676860,778676863,DE
+778676864,778676991,PL
+778676992,778676999,FR
+778677000,778677003,PL
+778677004,778677075,FR
+778677076,778677079,DE
+778677080,778677083,IT
+778677084,778677119,DE
+778677120,778677151,FR
+778677152,778677167,DE
+778677168,778677175,CZ
+778677176,778677183,NL
+778677184,778677247,GB
+778677248,778677503,FR
+778677504,778677511,DE
+778677512,778677515,IT
+778677516,778677519,GB
+778677520,778677523,FR
+778677524,778677527,DE
+778677528,778677531,BE
+778677532,778677535,PT
+778677536,778677543,FI
+778677544,778677547,ES
+778677548,778677551,FR
+778677552,778677559,PL
+778677560,778677567,ES
+778677568,778677695,FR
+778677696,778677727,PT
+778677728,778677823,FR
+778677824,778677839,NL
+778677840,778677855,PL
+778677856,778677859,ES
+778677860,778677863,LT
+778677864,778677871,IT
+778677872,778677875,PL
+778677876,778677879,GB
+778677880,778677883,LT
+778677884,778677887,BE
+778677888,778677903,ES
+778677904,778677919,FR
+778677920,778677923,CH
+778677924,778677927,PT
+778677928,778677935,PL
+778677936,778677939,FR
+778677940,778677947,BE
+778677948,778677951,DE
+778677952,778677967,FR
+778677968,778677983,GB
+778677984,778677999,FR
+778678000,778678003,BE
+778678004,778678007,PL
+778678008,778678011,GB
+778678012,778678015,FR
+778678016,778678019,PL
+778678020,778678023,DE
+778678024,778678027,ES
+778678028,778678031,FR
+778678032,778678043,PL
+778678044,778678271,FR
+778678272,778678783,DE
+778678784,778698751,FR
778698752,778764287,TR
778764288,778829823,HU
778829824,778895359,RO
@@ -2365,9 +4602,266 @@
780468224,780533759,UA
780533760,780599295,PL
780599296,780664831,CZ
-780664832,780664960,NL
-780664961,780730367,FR
-780730368,780795903,IE
+780664832,780665087,NL
+780665088,780665343,DE
+780665344,780665599,FR
+780665600,780665855,GB
+780665856,780666111,SA
+780666112,780666367,IT
+780666368,780666623,AX
+780666624,780666879,AF
+780666880,780667135,AL
+780667136,780667391,DZ
+780667392,780667647,AS
+780667648,780667903,AD
+780667904,780668159,AM
+780668160,780668415,AT
+780668416,780668671,AZ
+780668672,780668927,BH
+780668928,780669183,BY
+780669184,780669439,BE
+780669440,780669695,BA
+780669696,780669951,BG
+780669952,780670207,HR
+780670208,780670463,CY
+780670464,780670719,CZ
+780670720,780670975,DK
+780670976,780671231,EE
+780671232,780671487,FO
+780671488,780671743,FI
+780671744,780671999,FR
+780672000,780672255,GE
+780672256,780672511,DE
+780672512,780672767,GI
+780672768,780673023,GR
+780673024,780673279,GL
+780673280,780673535,GG
+780673536,780673791,VA
+780673792,780674047,HU
+780674048,780674303,IS
+780674304,780674559,IR
+780674560,780674815,IQ
+780674816,780675071,IE
+780675072,780675327,IM
+780675328,780675583,IL
+780675584,780675839,IT
+780675840,780676095,JE
+780676096,780676351,JO
+780676352,780676607,KZ
+780676608,780676863,KW
+780676864,780677119,KG
+780677120,780677375,LV
+780677376,780677631,LB
+780677632,780677887,LI
+780677888,780678143,LT
+780678144,780678399,LU
+780678400,780678655,MK
+780678656,780678911,MT
+780678912,780679167,MD
+780679168,780679423,MC
+780679424,780679679,ME
+780679680,780679935,NL
+780679936,780680447,NO
+780680448,780680703,PS
+780680704,780680959,PL
+780680960,780681215,PT
+780681216,780681471,QA
+780681472,780681727,RO
+780681728,780681983,RU
+780681984,780682239,SM
+780682240,780682495,SA
+780682496,780682751,RS
+780682752,780683007,SK
+780683008,780683263,SI
+780683264,780683519,ES
+780683520,780683775,SJ
+780683776,780684031,SE
+780684032,780684287,CH
+780684288,780684543,SY
+780684544,780684799,TJ
+780684800,780685055,TR
+780685056,780685311,TM
+780685312,780685567,UA
+780685568,780685823,AE
+780685824,780686079,GB
+780686080,780686335,UZ
+780686336,780686591,YE
+780686592,780686847,AX
+780686848,780687103,AL
+780687104,780687359,AD
+780687360,780687615,AM
+780687616,780687871,AT
+780687872,780688127,AZ
+780688128,780688383,BH
+780688384,780688639,BY
+780688640,780688895,BE
+780688896,780689151,BA
+780689152,780689407,BG
+780689408,780689663,HR
+780689664,780689919,CY
+780689920,780690175,CZ
+780690176,780690431,DK
+780690432,780690687,EE
+780690688,780690943,FO
+780690944,780691199,FI
+780691200,780691455,FR
+780691456,780691711,GE
+780691712,780691967,DE
+780691968,780692223,GI
+780692224,780692479,GR
+780692480,780692735,GL
+780692736,780692991,GG
+780692992,780693247,VA
+780693248,780693503,HU
+780693504,780693759,IS
+780693760,780694015,IR
+780694016,780694271,IQ
+780694272,780694527,IE
+780694528,780694783,IL
+780694784,780695039,IT
+780695040,780695295,JE
+780695296,780695551,JO
+780695552,780695807,KZ
+780695808,780696063,KW
+780696064,780696319,LB
+780696320,780696575,LI
+780696576,780696831,LT
+780696832,780697087,LU
+780697088,780697343,MK
+780697344,780697599,MT
+780697600,780697855,NL
+780697856,780698111,IT
+780698112,780698367,ES
+780698368,780698623,DE
+780698624,780698879,FR
+780698880,780699135,RU
+780699136,780699391,RO
+780699392,780699647,BG
+780699648,780699903,DK
+780699904,780700159,AT
+780700160,780700415,FI
+780700416,780700671,GR
+780700672,780700927,PL
+780700928,780701183,PT
+780701184,780701439,SE
+780701440,780701695,CH
+780701696,780701951,SA
+780701952,780702207,AD
+780702208,780702463,AE
+780702464,780702719,AF
+780702720,780702975,AG
+780702976,780703231,AI
+780703232,780703487,AL
+780703488,780703743,AM
+780703744,780703999,AO
+780704000,780704255,AQ
+780704256,780704511,AR
+780704512,780704767,AS
+780704768,780705023,AT
+780705024,780705279,AU
+780705280,780705535,AW
+780705536,780705791,AX
+780705792,780706047,AZ
+780706048,780706303,BA
+780706304,780706559,BB
+780706560,780706815,BD
+780706816,780707071,BE
+780707072,780707327,BF
+780707328,780707583,BG
+780707584,780707839,BH
+780707840,780708095,BI
+780708096,780708351,BJ
+780708352,780708607,BM
+780708608,780708863,BN
+780708864,780709119,BO
+780709120,780709375,BR
+780709376,780709631,BS
+780709632,780709887,BT
+780709888,780710143,BV
+780710144,780710399,BW
+780710400,780710655,BY
+780710656,780710911,BZ
+780710912,780711167,CA
+780711168,780711423,CC
+780711424,780711679,CD
+780711680,780711935,CF
+780711936,780712191,CG
+780712192,780712447,CH
+780712448,780712703,CI
+780712704,780712959,CK
+780712960,780713215,CL
+780713216,780713471,CM
+780713472,780713727,CN
+780713728,780713983,CO
+780713984,780714239,CR
+780714240,780714495,CU
+780714496,780714751,CV
+780714752,780715263,CY
+780715264,780715519,CZ
+780715520,780715775,DE
+780715776,780716031,DJ
+780716032,780716287,DK
+780716288,780716543,DM
+780716544,780716799,DO
+780716800,780717055,DZ
+780717056,780717311,EC
+780717312,780717567,EE
+780717568,780717823,EG
+780717824,780718079,EH
+780718080,780718335,ER
+780718336,780718591,ES
+780718592,780718847,ET
+780718848,780719103,FI
+780719104,780719359,FJ
+780719360,780719615,FK
+780719616,780719871,FM
+780719872,780720127,FO
+780720128,780720383,FR
+780720384,780720639,GA
+780720640,780720895,GB
+780720896,780721151,GD
+780721152,780721407,GE
+780721408,780721663,GF
+780721664,780721919,GG
+780721920,780722175,GH
+780722176,780722431,GI
+780722432,780722687,GL
+780722688,780722943,GM
+780722944,780723199,GN
+780723200,780723455,GP
+780723456,780723711,GQ
+780723712,780723967,GR
+780723968,780724223,GS
+780724224,780724479,GT
+780724480,780724735,GU
+780724736,780724991,GW
+780724992,780725247,GY
+780725248,780725759,HK
+780725760,780726015,HN
+780726016,780726271,HR
+780726272,780726527,HT
+780726528,780726783,HU
+780726784,780727039,ID
+780727040,780727295,IE
+780727296,780727551,IL
+780727552,780727807,IM
+780727808,780728063,IN
+780728064,780728319,IO
+780728320,780728575,IQ
+780728576,780728831,IR
+780728832,780729087,IS
+780729088,780729343,IT
+780729344,780729599,JE
+780729600,780729855,JM
+780729856,780730111,JO
+780730112,780730367,JP
+780730368,780779519,IE
+780779520,780783615,NL
+780783616,780785663,GB
+780785664,780787711,DE
+780787712,780791807,FR
+780791808,780793855,SE
+780793856,780795903,DE
780795904,780861439,RU
780861440,780926975,HU
780926976,780992511,CH
@@ -2385,7 +4879,21 @@
781479936,781484031,UA
781484032,781488127,RU
781488128,781496319,PL
-781496320,781504511,RU
+781496320,781516799,RU
+781516800,781520895,RO
+781520896,781524991,IS
+781524992,781529087,RU
+781529088,781533183,UA
+781533184,781537279,RU
+781537280,781545471,UA
+781545472,781549567,CZ
+781549568,781553663,RU
+781553664,781557759,PL
+781557760,781565951,UA
+781565952,781570047,CH
+781570048,781574143,PL
+781574144,781578239,RU
+781578240,781582335,PL
781582336,781590527,UA
781590528,781598719,SI
781598720,781615103,UA
@@ -2405,14 +4913,29 @@
781674496,781676543,RU
781676544,781678591,PL
781678592,781682687,RS
+781682688,781684735,PL
+781684736,781686783,UA
+781686784,781688831,RU
+781688832,781690879,RO
+781690880,781692927,RU
+781692928,781694975,UA
+781694976,781697023,PL
+781697024,781699071,UA
+781699072,781701119,RO
+781701120,781703167,SA
+781703168,781705215,PL
+781705216,781707263,RO
+781707264,781709311,SI
+781709312,781711359,RU
+781711360,781713407,UA
781713408,781844479,SA
781844480,781975551,TR
781975552,782106623,GB
782106624,782254079,RU
782254080,782270463,UA
-782270464,782305791,RU
-782305792,782306303,RO
-782306304,782319615,RU
+782270464,782310399,RU
+782310400,782310911,RO
+782310912,782319615,RU
782319616,782335999,ME
782336000,782352383,RU
782352384,782368767,SY
@@ -2420,15 +4943,116 @@
782385152,782401535,SE
782401536,782417919,FR
782417920,782434303,AM
-782761984,782893055,PL
+782434304,782449151,SI
+782449152,782449407,HR
+782449408,782450175,SI
+782450176,782450687,BA
+782450688,782467071,DE
+782467072,782483455,RU
+782483456,782499839,FI
+782499840,782516223,SI
+782516224,782532607,IR
+782532608,782548991,UA
+782548992,782581759,RU
+782581760,782598143,FR
+782598144,782630911,DE
+782630912,782647295,MD
+782647296,782663679,RU
+782663680,782664447,GB
+782664448,782664703,LU
+782664704,782664704,GB
+782664705,782665471,NL
+782665472,782666495,US
+782666496,782667007,GB
+782667008,782667519,RU
+782667520,782667775,LU
+782667776,782668287,FR
+782668288,782668799,RU
+782668800,782669567,NL
+782669568,782671615,DE
+782671616,782680063,GB
+782680064,782696447,RU
+782696448,782712831,DE
+782712832,782729215,RU
+782729216,782735359,DE
+782735360,782735871,CH
+782735872,782745599,DE
+782745600,782761983,CZ
+782761984,783024127,PL
+783024128,783040511,RU
+783040512,783048703,UA
+783048704,783056895,RU
+783056896,783065087,UA
+783065088,783073279,RU
+783073280,783089663,UA
+783089664,783106047,RU
+783106048,783134719,UA
+783134720,783138815,RU
+783138816,783142911,CZ
+783142912,783147007,RU
+783147008,783151103,FI
+783151104,783155199,RO
+783155200,783157247,PL
+783157248,783159295,RU
+783159296,783161343,CZ
+783161344,783163391,PL
+783163392,783165439,CZ
+783165440,783167487,UA
+783167488,783169535,RU
+783169536,783171583,CZ
+783171584,783173631,UA
+783173632,783175679,PL
+783175680,783179775,RU
+783179776,783181823,RS
+783181824,783185919,RU
+783185920,783187967,UA
+783187968,783190015,NL
+783190016,783194111,RO
+783194112,783196159,CZ
+783196160,783198207,UA
+783198208,783202303,PL
+783202304,783204351,VG
+783204352,783206399,RU
+783206400,783208447,RO
+783208448,783210495,PL
+783210496,783212543,UA
+783212544,783216639,PL
+783216640,783218687,UA
+783218688,783220735,RU
+783220736,783222783,SK
+783222784,783226879,UA
+783226880,783230975,RU
+783230976,783233023,PL
+783233024,783235071,GB
+783235072,783237119,DE
+783237120,783243263,UA
+783243264,783245311,CZ
+783245312,783247359,RU
+783247360,783251455,PL
+783251456,783255551,RU
+783255552,783259647,UA
+783259648,783261695,RU
+783261696,783263743,UA
+783263744,783265791,BY
+783265792,783267839,CZ
+783267840,783269887,UA
+783269888,783278079,RU
+783278080,783282175,PL
+783282176,783286271,UA
+783286272,783417343,GR
+783417344,783548415,BE
+783548416,783679487,RU
783679488,783681535,FR
783681536,783683583,IE
-783683584,783685631,DE
+783683584,783685375,DE
+783685376,783685631,US
783685632,783687679,RU
783687680,783689727,PT
783689728,783691775,FR
783691776,783693823,BY
-783693824,783695871,GB
+783693824,783694623,GB
+783694624,783694687,FR
+783694688,783695871,GB
783695872,783697919,TR
783697920,783699967,FR
783699968,783702015,UA
@@ -2444,11 +5068,44 @@
783722496,783724543,AM
783724544,783726591,NL
783726592,783728639,IS
-783728640,783730687,BE
+783728640,783730655,BE
+783730656,783730687,NL
783730688,783732735,SE
783732736,783734783,FR
783734784,783736831,NL
783736832,783738879,SI
+783738880,783740927,IT
+783740928,783745023,DE
+783745024,783747071,RU
+783747072,783749119,GB
+783749120,783751167,GR
+783751168,783753215,SE
+783753216,783755263,FR
+783755264,783757311,DE
+783757312,783759359,FR
+783759360,783763455,CZ
+783763456,783765503,FI
+783765504,783767551,RU
+783767552,783769599,IL
+783769600,783771647,DE
+783771648,783773695,GB
+783773696,783775743,ES
+783775744,783777791,AL
+783777792,783779839,RU
+783779840,783781887,DK
+783781888,783783935,FR
+783783936,783785983,DE
+783785984,783788031,RU
+783788032,783790079,NO
+783790080,783792127,RU
+783792128,783794175,IR
+783794176,783798271,GB
+783798272,783800319,PL
+783800320,783802367,LV
+783802368,783804415,FR
+783804416,783806463,IT
+783806464,783810303,NL
+783810304,783810559,BE
783810560,783843327,SA
783843328,783876095,BH
783876096,783908863,UA
@@ -2459,11 +5116,435 @@
784039936,784072703,PL
784072704,784105471,RU
784105472,784138239,HR
+784138240,784171007,DE
+784171008,784203775,PT
+784203776,784236543,GR
+784236544,784269311,RO
+784269312,784302079,BY
+784302080,784334847,RU
+784334848,784465919,FR
+784465920,784596991,SE
+784596992,784728063,TR
+784728064,784763903,GR
+784763904,784859135,CY
+784859136,785121279,UA
+785121280,785252351,PL
+785252352,785383423,AT
+785383424,785448959,GB
+785448960,785514495,IR
+785514496,785580031,IL
+785580032,785645567,UA
+785645568,785711103,NO
+785711104,785776639,SY
+785776640,785842175,RO
+785842176,785907711,DE
+785907712,785973247,BY
+785973248,786038783,MK
+786038784,786104319,FR
+786104320,786169855,UA
+786169856,786235391,AT
+786235392,786300927,TR
+786300928,786366463,ES
+786366464,786431999,DE
+786432000,786563071,IR
+786563072,786565119,GB
+786565120,786567167,NO
+786567168,786569215,CZ
+786569216,786571263,NO
+786571264,786575359,ES
+786575360,786577407,GB
+786577408,786579455,NL
+786579456,786581503,RU
+786581504,786583551,GB
+786583552,786585599,DE
+786585600,786587647,NL
+786587648,786589695,RU
+786589696,786591743,FR
+786591744,786593791,DE
+786593792,786595839,GB
+786595840,786597887,FR
+786597888,786599935,EE
+786599936,786601983,ES
+786601984,786604031,SE
+786604032,786606079,RU
+786606080,786608127,GB
+786608128,786610175,IT
+786610176,786612223,IM
+786612224,786614271,GR
+786614272,786616319,IT
+786616320,786618367,KG
+786618368,786620415,GB
+786620416,786622463,RU
+786622464,786624511,NL
+786624512,786626559,RU
+786626560,786628607,GB
+786628608,786630655,IT
+786630656,786632703,CZ
+786632704,786634751,FR
+786634752,786636799,RU
+786636800,786638847,PL
+786638848,786640895,ES
+786640896,786642943,GB
+786642944,786644991,GR
+786644992,786649087,SE
+786649088,786651135,FR
+786651136,786655231,DE
+786655232,786657279,PL
+786657280,786659327,FO
+786659328,786661375,UZ
+786661376,786663423,DE
+786663424,786665471,UA
+786665472,786667519,GB
+786667520,786669567,IT
+786669568,786671615,RU
+786671616,786673663,CZ
+786673664,786675711,SK
+786675712,786677759,KZ
+786677760,786679807,NO
+786679808,786681855,GB
+786681856,786683903,RU
+786683904,786685951,DE
+786685952,786687999,CH
+786688000,786690047,NL
+786690048,786692095,PL
+786692096,786694143,LB
+786694144,786698239,RU
+786698240,786702335,CZ
+786702336,786706431,GB
+786706432,786710527,NO
+786710528,786714623,RU
+786714624,786718719,PL
+786718720,786726911,RU
+786726912,786731007,FI
+786731008,786735103,IL
+786735104,786739199,GB
+786739200,786743295,AZ
+786743296,786747391,DE
+786747392,786751487,SK
+786751488,786755583,PL
+786755584,786759679,IT
+786759680,786771711,DE
+786771712,786771775,AT
+786771776,786771967,DE
+786771968,786776063,UA
+786776064,786780159,RU
+786780160,786784255,IT
+786784256,786788351,RU
+786788352,786792447,CZ
+786792448,786796543,RU
+786796544,786800639,PL
+786800640,786800895,US
+786800896,786804735,UA
+786804736,786808831,RU
+786808832,786812927,BG
+786812928,786817023,RU
+786817024,786821119,SK
+786821120,786825215,HR
+786825216,786857983,SA
+786857984,786890751,SE
+786890752,786892799,ES
+786892800,786894847,GB
+786894848,786896895,NL
+786896896,786900991,IT
+786900992,786905087,NL
+786905088,786907135,PL
+786907136,786909183,GB
+786909184,786911231,CZ
+786911232,786913279,NL
+786913280,786915327,DE
+786915328,786917375,SK
+786917376,786919423,RO
+786919424,786921471,GB
+786921472,786923519,ES
+786923520,786925567,FR
+786925568,786927615,DE
+786927616,786929663,FR
+786929664,786931711,PL
+786931712,786933759,GB
+786933760,786935807,RU
+786935808,786937855,DE
+786937856,786939903,GB
+786939904,786941951,FI
+786941952,786943999,CH
+786944000,786946047,RU
+786948096,786950143,UA
+786950144,786952191,DE
+786952192,786952703,NE
+786952704,786952959,US
+786952960,786953215,NE
+786953216,786954239,US
+786954240,786956287,NL
+786956288,786989055,RU
+786989056,786991103,PL
+786991104,786995199,IT
+786995200,786997247,BG
+786997248,786999295,RU
+786999296,787001343,ES
+787001344,787003391,CH
+787003392,787005439,DE
+787005440,787007487,GB
+787007488,787009535,RU
+787009536,787011583,NL
+787011584,787013631,RU
+787013632,787015679,DE
+787015680,787017727,UA
+787017728,787019775,RU
+787019776,787021823,NL
+787021824,787038207,BG
+787038208,787054591,GB
+787054592,787070975,IT
+787070976,787087359,RU
+787087360,787095551,TR
+787095552,787103743,EU
+787103744,787111935,HR
+787111936,787120127,CZ
+787120128,787128319,ES
+787128320,787136511,CZ
+787136512,787152895,IT
+787152896,787154943,BG
+787154944,787156991,TR
+787156992,787159039,FR
+787159040,787161087,DE
+787161088,787163135,SE
+787163136,787165183,NL
+787165184,787167231,RS
+787167232,787169279,CH
+787169280,787171327,RU
+787171328,787173375,KG
+787173376,787175423,KZ
+787175424,787177471,SA
+787177472,787179519,RS
+787179520,787179775,CH
+787179776,787183615,DE
+787183616,787185663,PL
+787185664,787187711,GG
+787187712,787189759,IT
+787189760,787191807,CH
+787191808,787192319,GB
+787192320,787192831,DE
+787192832,787193855,EU
+787193856,787195903,RU
+787195904,787197951,GB
+787197952,787199999,FR
+787200000,787202047,RU
+787202048,787206143,DE
+787206144,787208191,BH
+787208192,787210239,RU
+787210240,787212287,GB
+787212288,787214335,SE
+787214336,787216383,DE
+787216384,787218431,RU
+787218432,787234815,GB
+787234816,787251199,SE
+787251200,787267583,RU
+787267584,787283967,DE
+787283968,787300351,RU
+787300352,787316735,BG
+787316736,787333119,GB
+787333120,787349503,DE
+787349504,787365887,BG
+787365888,787382271,PL
+787382272,787398655,FR
+787398656,787415039,PL
+787415040,787431423,BA
+787431424,787447807,SE
+787447808,787464191,PL
+787464192,787480575,IS
+787480576,787513343,SA
+787513344,787546111,RS
+787546112,787578879,RU
+787578880,787611647,AM
+787611648,787644415,RU
+787644416,787677183,PL
+787677184,787679231,GB
+787679232,787681279,CY
+787681280,787683327,IQ
+787683328,787685375,NL
+787685376,787687423,IT
+787687424,787689471,NL
+787689472,787691519,CZ
+787691520,787693567,IT
+787693568,787695615,SK
+787695616,787697663,RU
+787697664,787701759,DE
+787701760,787703807,NL
+787703808,787705855,AT
+787705856,787707903,RO
+787707904,787709951,DE
+787709952,787724287,RU
+787724288,787726335,UA
+787726336,787742719,RU
+787742720,787758847,NL
+787758848,787759871,GB
+787759872,787760895,NL
+787760896,787761919,DE
+787761920,787762943,NL
+787762944,787763967,ES
+787763968,787775487,NL
+787775488,787808255,DE
+787808256,787841023,IR
+787841024,787843071,RU
+787843072,787845119,GR
+787845120,787847167,CH
+787847168,787849215,SE
+787849216,787851263,TR
+787851264,787853311,RU
+787853312,787855359,DE
+787855360,787857407,CH
+787857408,787859455,PL
+787859456,787861503,AT
+787861504,787863551,IE
+787863552,787865599,DE
+787865600,787869695,FR
+787869696,787873791,GB
+787873792,787906559,SE
+787906560,787939327,GR
+787939328,787972095,GB
+787972096,788004863,UA
+788004864,788005375,GB
+788005376,788006399,BE
+788006400,788006911,IT
+788006912,788007423,FR
+788007424,788007935,DE
+788007936,788008447,US
+788008448,788008959,SG
+788008960,788009471,IN
+788009472,788009983,ES
+788009984,788010495,HK
+788010496,788011007,AU
+788011008,788011519,CN
+788011520,788012031,AR
+788012032,788012543,CA
+788012544,788013055,RU
+788013056,788021247,IR
+788021248,788029439,SI
+788029440,788045823,GB
+788045824,788054015,PL
+788054016,788062207,JO
+788062208,788070399,GB
+788070400,788078591,RU
+788078592,788086783,NL
+788086784,788094975,BG
+788094976,788103167,IR
+788103168,788111359,HU
+788111360,788119551,LT
+788119552,788127743,GB
+788127744,788135935,NO
+788135936,788144127,UA
+788144128,788160511,RU
+788160512,788168703,UA
+788168704,788176895,RU
+788176896,788185087,PL
+788185088,788193279,NO
+788193280,788201471,GB
+788201472,788209663,HU
+788209664,788217855,LT
+788217856,788226047,RU
+788226048,788234239,CY
+788234240,788242431,SA
+788242432,788250623,IR
+788250624,788258815,KG
+788258816,788259583,DE
+788259584,788260863,NL
+788260864,788266495,DE
+788266496,788267007,IN
+788267008,788271103,SE
+788271104,788275199,DE
+788275200,788279295,AL
+788279296,788283391,BG
+788283392,788291583,GB
+788291584,788295679,TR
+788295680,788299775,RU
+788299776,788301823,LV
+788301824,788302079,LT
+788302080,788303871,LV
+788303872,788307967,IT
+788307968,788312063,RU
+788312064,788316159,FR
+788316160,788320255,NL
+788320256,788324351,UA
+788324352,788328447,CZ
+788328448,788332543,RU
+788332544,788336639,BG
+788336640,788337151,DE
+788337152,788337663,GB
+788337664,788340735,DE
+788340736,788344831,ES
+788344832,788353023,DE
+788353024,788357119,PS
+788357120,788361215,CZ
+788361216,788365311,DE
+788365312,788369407,IQ
+788369408,788373503,DE
+788373504,788377599,BE
+788377600,788381695,CH
+788381696,788385791,SE
+788385792,788389887,PL
+788389888,788393983,ES
+788393984,788398079,DE
+788398080,788400127,SI
+788400128,788402175,SE
+788402176,788406271,RU
+788406272,788410367,IT
+788410368,788412415,TR
+788412416,788414463,SI
+788414464,788416511,CZ
+788416512,788418559,PL
+788418560,788422655,RU
+788422656,788424703,FI
+788424704,788426751,IT
+788426752,788428799,GB
+788428800,788430847,DE
+788430848,788432895,BG
+788432896,788434943,DE
+788434944,788436991,SI
+788436992,788439039,IT
+788439040,788441087,RU
+788441088,788443135,NL
+788443136,788445183,IT
+788445184,788451327,GB
+788451328,788453375,FI
+788453376,788455423,RU
+788455424,788457471,FR
+788457472,788459519,IT
+788459520,788461567,RU
+788461568,788463615,JE
+788463616,788465663,GB
+788465664,788467711,CZ
+788467712,788469759,NO
+788469760,788471807,NL
+788471808,788473855,UA
+788473856,788475903,GB
+788475904,788477951,FR
+788477952,788479999,OM
+788480000,788482047,UZ
+788482048,788484095,GB
+788484096,788486143,IT
+788486144,788488191,NL
+788488192,788490239,RU
+788490240,788492287,NL
+788492288,788494335,GB
+788494336,788496383,SE
+788496384,788498431,FR
+788498432,788500479,RU
+788500480,788502527,AL
+788502528,788504575,IE
+788504576,788506623,FR
+788506624,788508671,CH
+788508672,788509199,FR
+788509200,788510719,AT
+788510720,788512767,ES
+788512768,788514815,FI
+788514816,788516863,FR
+788516864,788518911,LT
+788518912,788520959,IR
+788520960,788523007,CZ
+788523008,788525055,KZ
+788525056,788527103,IT
+788527104,788529151,GB
788529152,805306367,CA
805306368,822083583,US
-822083584,822083839,AP
-822083840,822084095,AU
-822084608,822085631,ID
+822083584,822085631,ID
822085632,822087679,AU
822087680,822089727,JP
822089728,822090751,ID
@@ -2479,7 +5560,7 @@
823132160,824180735,KR
824180736,825229311,IN
825229312,825360383,TH
-825360384,825361407,AP
+825360384,825361407,KR
825361408,825363455,ID
825363456,825364479,MY
825364480,825376767,KR
@@ -2489,15 +5570,18 @@
825419776,825420799,TH
825420800,825421823,MY
825421824,825425919,NZ
-825425920,825491455,AU
-825491456,825753599,CN
+825425920,825753599,CN
825753600,826277887,KR
826277888,828375039,CN
828375040,829423615,JP
829423616,830210047,CN
830210048,830341119,MY
830341120,830406655,NP
-830406656,830474239,AU
+830406656,830472191,AU
+830472192,830472447,CN
+830472448,830472703,AU
+830472704,830473215,CN
+830473216,830474239,AU
830474240,830475263,SG
830475264,830476287,AU
830476288,830480383,JP
@@ -2541,6 +5625,16 @@
832372736,832438271,PH
832438272,832569343,TW
832569344,833617919,KR
+833617920,835190783,AU
+835190784,835715071,IN
+835715072,835977215,CN
+835977216,836042751,JP
+836042752,836046847,HK
+836046848,836050943,AU
+836050944,836059135,IN
+836059136,836075519,VN
+836075520,836501503,TW
+836501504,836763647,CN
836763648,837025791,NZ
837025792,837287935,TH
837287936,837550079,CN
@@ -2548,6 +5642,18 @@
837566464,837599231,KR
837599232,837603327,MY
837603328,837604351,VN
+837604352,837605375,NP
+837605376,837607423,ID
+837607424,837611519,JP
+837611520,837615615,AU
+837615616,837681151,TH
+837681152,837689343,JP
+837689344,837697535,IN
+837697536,837746687,KR
+837746688,837763071,CN
+837763072,837779455,JP
+837779456,837795839,KR
+837795840,837812223,CN
837812224,838074367,JP
838074368,838139903,NP
838139904,838205439,SG
@@ -2558,19 +5664,65 @@
838336512,838467583,IN
838467584,838729727,JP
838729728,838795263,KR
-838795264,838860799,AP
-838860800,838926335,US
-838991872,838999039,US
+838795264,838860799,AU
+838860800,838999039,US
838999040,838999295,CA
-838999296,839010559,US
+838999296,839010175,US
+839010176,839010207,CA
+839010208,839010559,US
839010560,839010815,CA
839010816,839017983,US
839017984,839018239,CA
839018240,839023359,US
839023360,839023615,CA
-839023616,843055103,US
-843055104,844103679,CA
-844103680,844627967,US
+839023616,839025663,US
+839025664,839026175,CA
+839026176,839061503,US
+839061504,839061759,CA
+839061760,839062271,US
+839062272,839064063,CA
+839064064,839069183,US
+839069184,839074303,CA
+839074304,839095807,US
+839095808,839096063,CA
+839096064,839101695,US
+839101696,839102207,CA
+839102208,839112447,US
+839112448,839112703,CA
+839112704,839113215,US
+839113216,839113471,CA
+839113472,840269823,US
+840269824,840273919,CA
+840273920,840278015,US
+840278016,840282111,CA
+840282112,840294399,US
+840294400,840298495,CA
+840298496,842531443,US
+842531444,842531447,GB
+842531448,842531519,US
+842531520,842531523,MX
+842531524,842531659,US
+842531660,842531661,IN
+842531662,842535159,US
+842535160,842535167,IS
+842535168,842535839,US
+842535840,842535847,MX
+842535848,842541693,US
+842541694,842541695,ZA
+842541696,842541723,US
+842541724,842541725,CA
+842541726,842542399,US
+842542400,842542407,NZ
+842542408,842542415,US
+842542416,842542423,NZ
+842542424,842542431,JO
+842542432,843055103,US
+843055104,843644927,CA
+843644928,844890111,US
+844890112,844988415,CA
+844988416,845283327,US
+845283328,845545471,CA
+845545472,846462975,US
847249408,855638015,US
855638016,872415231,GB
872415232,889192447,US
@@ -2609,18 +5761,20 @@
977797120,978321407,KR
978321408,978452479,JP
978452480,978583551,CN
-978583552,978599935,JP
978599936,978640895,AU
978640896,978644991,NZ
-978649088,978714623,JP
+978644992,978714623,JP
978714624,978780159,TW
978780160,978784255,AU
978784256,978788351,JP
978788352,978796543,KR
978796544,978812927,CN
978812928,979369983,JP
-979369984,979435519,AU
+979369984,979410943,AU
+979410944,979419135,HK
+979419136,979435519,AU
979435520,979468287,TH
+979468288,979501055,BD
979501056,979566591,JP
979566592,979599359,TW
979599360,979763199,CN
@@ -2641,6 +5795,7 @@
982614016,982622207,AU
982622208,982624255,JP
982624256,982626303,ID
+982626304,982628351,JP
982628352,982630399,BD
982630400,982646783,SG
982646784,982671359,JP
@@ -2651,6 +5806,7 @@
982745088,982753279,AF
982753280,982755327,JP
982755328,982757375,BD
+982757376,982759423,KR
982759424,982761471,ID
982761472,982777855,JP
982777856,983039999,KR
@@ -2681,6 +5837,7 @@
995557376,995622911,JP
995622912,996409343,IN
996409344,996573183,AU
+996573184,996605951,TW
996605952,996671487,PK
996671488,996802559,TW
996802560,996868095,JP
@@ -2697,7 +5854,6 @@
999817216,999849983,BD
999849984,999866367,KR
999866368,999882751,HK
-999882752,999948287,JP
999948288,1000013823,AU
1000013824,1000079359,CN
1000079360,1000341503,JP
@@ -2713,7 +5869,7 @@
1002307584,1002373119,JP
1002373120,1002405887,CN
1002405888,1002422271,JP
-1002422272,1002432511,AU
+1002422272,1002434559,AU
1002434560,1008730111,CN
1008730112,1009778687,JP
1009778688,1010237439,MY
@@ -2744,9 +5900,11 @@
1022558208,1022623743,IN
1022623744,1022722047,TW
1022722048,1022754815,CN
+1022754816,1022820351,MO
1022820352,1022885887,CN
1022885888,1023148031,TW
1023148032,1023213567,CN
+1023213568,1023238143,KR
1023238144,1023246335,ID
1023246336,1023279103,CN
1023279104,1023311871,IN
@@ -2755,6 +5913,7 @@
1023344640,1023410175,CN
1023410176,1023672319,IN
1023672320,1023688703,HK
+1023688704,1023692799,MM
1023692800,1023696895,CN
1023696896,1023705087,MY
1023705088,1023717375,JP
@@ -2763,6 +5922,7 @@
1023737856,1023770623,ID
1023770624,1023778815,PK
1023778816,1023787007,KR
+1023787008,1023791103,AF
1023791104,1023795199,NC
1023795200,1023803391,JP
1023803392,1023852543,MY
@@ -2987,8 +6147,7 @@
1026408448,1026416639,JP
1026416640,1026420735,ID
1026420736,1026422783,JP
-1026422784,1026423295,AU
-1026423296,1026424831,AP
+1026422784,1026424831,AU
1026424832,1026490367,JP
1026490368,1026523135,TH
1026523136,1026539519,CN
@@ -3022,12 +6181,14 @@
1039466496,1039499263,JP
1039499264,1039507455,AP
1039507456,1039511551,LK
+1039511552,1039515647,KR
1039515648,1039523839,JP
1039523840,1039532031,KR
1039532032,1039597567,IN
1039597568,1039613951,ID
1039613952,1039638527,KR
1039638528,1039642623,TW
+1039642624,1039646719,BD
1039646720,1039654911,KR
1039654912,1039663103,IN
1039663104,1040187391,KR
@@ -3057,53 +6218,50 @@
1040467088,1040467103,DE
1040467104,1040467135,FR
1040467136,1040467151,DE
-1040467152,1040467583,EU
-1040467584,1040467647,FR
-1040467648,1040467759,EU
-1040467760,1040467823,FR
+1040467152,1040467759,EU
+1040467760,1040467767,FR
+1040467768,1040467775,EU
+1040467776,1040467823,FR
1040467824,1040467935,EU
1040467936,1040467951,FR
1040467952,1040467967,EU
-1040467968,1040468223,FR
-1040468224,1040468231,EU
+1040467968,1040468095,FR
+1040468096,1040468231,EU
1040468232,1040468255,FR
-1040468256,1040468263,EU
-1040468264,1040468287,FR
-1040468288,1040468415,EU
+1040468256,1040468415,EU
1040468416,1040468479,FR
1040468480,1040468607,EU
1040468608,1040468735,DE
1040468736,1040468767,NL
-1040468768,1040468799,EU
-1040468800,1040468831,NL
-1040468832,1040468863,EU
-1040468864,1040468991,NL
-1040468992,1040469055,EU
+1040468768,1040469055,EU
1040469056,1040469071,FR
-1040469072,1040469087,EU
-1040469088,1040469183,FR
+1040469072,1040469119,EU
+1040469120,1040469183,FR
1040469184,1040469247,EU
1040469248,1040469279,FR
1040469280,1040469311,EU
1040469312,1040469343,FR
-1040469344,1040469375,EU
-1040469376,1040469567,FR
+1040469344,1040469439,EU
+1040469440,1040469471,FR
+1040469472,1040469503,EU
+1040469504,1040469567,FR
1040469568,1040469631,EU
-1040469632,1040469887,FR
-1040469888,1040469903,EU
+1040469632,1040469695,FR
+1040469696,1040469727,EU
+1040469728,1040469759,FR
+1040469760,1040469903,EU
1040469904,1040469919,FR
-1040469920,1040469967,EU
-1040469968,1040469999,FR
+1040469920,1040469983,EU
+1040469984,1040469999,FR
1040470000,1040470271,EU
1040470272,1040470335,DE
1040470336,1040470399,EU
1040470400,1040470431,DE
1040470432,1040471487,EU
-1040471488,1040471551,NL
-1040471552,1040472991,EU
-1040472992,1040473087,NL
-1040473088,1040473855,EU
-1040473856,1040474111,NL
+1040471488,1040471519,NL
+1040471520,1040472575,EU
+1040472576,1040472831,DE
+1040472832,1040474111,EU
1040474112,1040482303,CZ
1040482304,1040515071,BE
1040515072,1040547839,GB
@@ -3127,11 +6285,11 @@
1040982632,1040982639,DE
1040982640,1040982943,A2
1040982944,1040982951,DK
-1040982952,1040983807,A2
-1040983808,1040983815,NG
-1040983816,1040984143,A2
-1040984144,1040984151,NG
-1040984152,1040990207,A2
+1040982952,1040984199,A2
+1040984200,1040984203,TZ
+1040984204,1040984215,A2
+1040984216,1040984219,TZ
+1040984220,1040990207,A2
1040990208,1040994303,CY
1040994304,1040994815,RU
1040994816,1040998399,CY
@@ -3152,7 +6310,6 @@
1041253376,1041268735,RU
1041268736,1041301503,NO
1041301504,1041367039,IE
-1041367040,1041498111,GB
1041498112,1041563647,SE
1041563648,1041596415,PL
1041596416,1041629183,NL
@@ -3161,7 +6318,9 @@
1041633120,1041694719,ES
1041694720,1041695151,FR
1041695152,1041695167,GB
-1041695168,1041695647,FR
+1041695168,1041695359,FR
+1041695360,1041695391,GB
+1041695392,1041695647,FR
1041695648,1041695679,GB
1041695680,1041695695,CH
1041695696,1041695711,FR
@@ -3186,9 +6345,7 @@
1041698264,1041698271,GB
1041698272,1041698711,FR
1041698712,1041698719,GB
-1041698720,1041698807,FR
-1041698808,1041698815,GB
-1041698816,1041699287,FR
+1041698720,1041699287,FR
1041699288,1041699295,GB
1041699296,1041699583,FR
1041699584,1041699591,IT
@@ -3200,8 +6357,10 @@
1041699680,1041699695,GB
1041699696,1041699767,FR
1041699768,1041699807,GB
-1041699808,1041700539,FR
-1041700540,1041700607,GB
+1041699808,1041700423,FR
+1041700424,1041700535,GB
+1041700536,1041700559,FR
+1041700560,1041700607,GB
1041700608,1041700983,FR
1041700984,1041700991,GB
1041700992,1041701175,FR
@@ -3214,21 +6373,37 @@
1041701568,1041701631,GB
1041701632,1041701647,FR
1041701648,1041701663,GB
-1041701664,1041702167,FR
+1041701664,1041701719,FR
+1041701720,1041701727,GB
+1041701728,1041701863,FR
+1041701864,1041701871,GB
+1041701872,1041701887,FR
+1041701888,1041701919,GB
+1041701920,1041701967,FR
+1041701968,1041701975,GB
+1041701976,1041702167,FR
1041702168,1041702175,GB
1041702176,1041702306,FR
1041702307,1041702311,GB
-1041702312,1041702327,FR
-1041702328,1041702335,GB
+1041702312,1041702319,FR
+1041702320,1041702335,GB
1041702336,1041702351,FR
1041702352,1041702399,GB
-1041702400,1041703575,FR
+1041702400,1041702751,FR
+1041702752,1041702759,GB
+1041702760,1041703575,FR
1041703576,1041703583,GB
-1041703584,1041704119,FR
+1041703584,1041703639,FR
+1041703640,1041703647,GB
+1041703648,1041704119,FR
1041704120,1041704127,GB
1041704128,1041704159,FR
1041704160,1041704175,GB
-1041704176,1041704407,FR
+1041704176,1041704207,FR
+1041704208,1041704215,GB
+1041704216,1041704255,FR
+1041704256,1041704263,GB
+1041704264,1041704407,FR
1041704408,1041704431,GB
1041704432,1041704439,FR
1041704440,1041704455,GB
@@ -3236,9 +6411,7 @@
1041704480,1041704487,GB
1041704488,1041704551,FR
1041704552,1041704575,GB
-1041704576,1041704671,FR
-1041704672,1041704687,GB
-1041704688,1041704751,FR
+1041704576,1041704751,FR
1041704752,1041704759,GB
1041704760,1041704775,FR
1041704776,1041704783,GB
@@ -3248,8 +6421,8 @@
1041704848,1041704863,GB
1041704864,1041704879,FR
1041704880,1041704887,GB
-1041704888,1041704943,FR
-1041704944,1041704959,GB
+1041704888,1041704927,FR
+1041704928,1041704959,GB
1041704960,1041705231,FR
1041705232,1041705239,GB
1041705240,1041705255,FR
@@ -3262,8 +6435,8 @@
1041705392,1041705439,GB
1041705440,1041705447,FR
1041705448,1041705455,GB
-1041705456,1041705471,FR
-1041705472,1041705479,GB
+1041705456,1041705463,FR
+1041705464,1041705479,GB
1041705480,1041705487,FR
1041705488,1041705519,GB
1041705520,1041705631,FR
@@ -3290,17 +6463,17 @@
1041706112,1041706143,GB
1041706144,1041706191,FR
1041706192,1041706239,GB
-1041706240,1041706271,FR
-1041706272,1041706287,GB
-1041706288,1041706359,FR
-1041706360,1041706367,GB
-1041706368,1041706447,FR
+1041706240,1041706375,FR
+1041706376,1041706383,GB
+1041706384,1041706447,FR
1041706448,1041706463,GB
1041706464,1041706479,FR
1041706480,1041706487,GB
1041706488,1041706791,FR
1041706792,1041706799,GB
-1041706800,1041706951,FR
+1041706800,1041706863,FR
+1041706864,1041706871,GB
+1041706872,1041706951,FR
1041706952,1041706975,GB
1041706976,1041706999,FR
1041707000,1041707007,GB
@@ -3317,22 +6490,20 @@
1041707520,1041707559,FR
1041707560,1041707583,GB
1041707584,1041707631,FR
-1041707632,1041707639,GB
-1041707640,1041707679,FR
+1041707632,1041707647,GB
+1041707648,1041707679,FR
1041707680,1041707687,GB
1041707688,1041707807,FR
1041707808,1041707815,GB
-1041707816,1041707895,FR
+1041707816,1041707871,FR
+1041707872,1041707887,GB
+1041707888,1041707895,FR
1041707896,1041707903,GB
1041707904,1041707999,FR
1041708000,1041708007,GB
1041708008,1041708023,FR
1041708024,1041708031,GB
-1041708032,1041708327,FR
-1041708328,1041708335,GB
-1041708336,1041708375,FR
-1041708376,1041708383,GB
-1041708384,1041708415,FR
+1041708032,1041708415,FR
1041708416,1041708431,GB
1041708432,1041708447,FR
1041708448,1041708487,GB
@@ -3340,7 +6511,9 @@
1041708496,1041708511,GB
1041708512,1041708687,FR
1041708688,1041708695,GB
-1041708696,1041708807,FR
+1041708696,1041708703,FR
+1041708704,1041708735,GB
+1041708736,1041708807,FR
1041708808,1041708815,GB
1041708816,1041708847,FR
1041708848,1041708855,GB
@@ -3376,20 +6549,20 @@
1041710008,1041710015,GB
1041710016,1041710047,FR
1041710048,1041710055,GB
-1041710056,1041710351,FR
-1041710352,1041710359,GB
-1041710360,1041710391,FR
+1041710056,1041710343,FR
+1041710344,1041710351,GB
+1041710352,1041710391,FR
1041710392,1041710407,GB
-1041710408,1041710439,FR
-1041710440,1041710455,GB
+1041710408,1041710431,FR
+1041710432,1041710455,GB
1041710456,1041710471,FR
1041710472,1041710487,GB
1041710488,1041710495,FR
1041710496,1041710511,GB
1041710512,1041710535,FR
1041710536,1041710543,GB
-1041710544,1041710559,FR
-1041710560,1041710583,GB
+1041710544,1041710551,FR
+1041710552,1041710583,GB
1041710584,1041710719,FR
1041710720,1041710727,GB
1041710728,1041710735,FR
@@ -3406,15 +6579,17 @@
1041711584,1041711599,GB
1041711600,1041711943,FR
1041711944,1041711951,GB
-1041711952,1041712407,FR
-1041712408,1041712415,GB
-1041712416,1041712423,FR
-1041712424,1041712431,GB
-1041712432,1041713095,FR
+1041711952,1041712415,FR
+1041712416,1041712439,GB
+1041712440,1041712975,FR
+1041712976,1041712983,GB
+1041712984,1041713095,FR
1041713096,1041713103,GB
1041713104,1041713127,FR
1041713128,1041713135,GB
-1041713136,1041713975,FR
+1041713136,1041713943,FR
+1041713944,1041713951,GB
+1041713952,1041713975,FR
1041713976,1041713983,GB
1041713984,1041713991,FR
1041713992,1041714007,GB
@@ -3424,21 +6599,23 @@
1041714072,1041714079,GB
1041714080,1041714095,FR
1041714096,1041714103,GB
-1041714104,1041714523,FR
-1041714524,1041714527,GB
-1041714528,1041714775,FR
+1041714104,1041714111,FR
+1041714112,1041714175,GB
+1041714176,1041714511,FR
+1041714512,1041714519,GB
+1041714520,1041714655,FR
+1041714656,1041714687,GB
+1041714688,1041714775,FR
1041714776,1041714783,GB
-1041714784,1041714831,FR
-1041714832,1041714847,GB
+1041714784,1041714815,FR
+1041714816,1041714847,GB
1041714848,1041714855,FR
1041714856,1041714879,GB
1041714880,1041714911,FR
1041714912,1041714919,GB
-1041714920,1041714997,FR
-1041714998,1041715007,GB
-1041715008,1041715055,FR
-1041715056,1041715071,GB
-1041715072,1041715079,FR
+1041714920,1041715007,FR
+1041715008,1041715015,GB
+1041715016,1041715079,FR
1041715080,1041715087,GB
1041715088,1041715095,FR
1041715096,1041715103,GB
@@ -3470,11 +6647,7 @@
1041716048,1041716095,GB
1041716096,1041716111,FR
1041716112,1041716223,GB
-1041716224,1041716231,FR
-1041716232,1041716239,GB
-1041716240,1041716311,FR
-1041716312,1041716319,GB
-1041716320,1041716439,FR
+1041716224,1041716439,FR
1041716440,1041716447,GB
1041716448,1041716503,FR
1041716504,1041716511,GB
@@ -3496,7 +6669,9 @@
1041717200,1041717247,GB
1041717248,1041717503,FR
1041717504,1041717511,IT
-1041717512,1041717687,FR
+1041717512,1041717631,FR
+1041717632,1041717639,GB
+1041717640,1041717687,FR
1041717688,1041717695,GB
1041717696,1041718112,FR
1041718113,1041718119,GB
@@ -3505,8 +6680,8 @@
1041718136,1041718151,FR
1041718152,1041718159,GB
1041718160,1041718191,FR
-1041718192,1041718215,GB
-1041718216,1041718231,FR
+1041718192,1041718223,GB
+1041718224,1041718231,FR
1041718232,1041718255,GB
1041718256,1041718343,FR
1041718344,1041718351,GB
@@ -3522,7 +6697,9 @@
1041718624,1041718639,GB
1041718640,1041718663,FR
1041718664,1041718671,GB
-1041718672,1041718935,FR
+1041718672,1041718895,FR
+1041718896,1041718911,GB
+1041718912,1041718935,FR
1041718936,1041718943,GB
1041718944,1041718975,FR
1041718976,1041718991,GB
@@ -3540,13 +6717,7 @@
1041719229,1041719231,GB
1041719232,1041719247,FR
1041719248,1041719263,GB
-1041719264,1041719383,FR
-1041719384,1041719391,GB
-1041719392,1041719683,FR
-1041719684,1041719687,GB
-1041719688,1041719703,FR
-1041719704,1041719711,GB
-1041719712,1041719743,FR
+1041719264,1041719743,FR
1041719744,1041719759,GB
1041719760,1041719887,FR
1041719888,1041719903,GB
@@ -3554,7 +6725,11 @@
1041719920,1041719935,GB
1041719936,1041720015,FR
1041720016,1041720031,GB
-1041720032,1041720551,FR
+1041720032,1041720487,FR
+1041720488,1041720511,GB
+1041720512,1041720527,FR
+1041720528,1041720535,GB
+1041720536,1041720551,FR
1041720552,1041720559,GB
1041720560,1041720567,FR
1041720568,1041720607,GB
@@ -3562,7 +6737,11 @@
1041720632,1041720639,GB
1041720640,1041720687,FR
1041720688,1041720703,GB
-1041720704,1041721039,FR
+1041720704,1041720831,FR
+1041720832,1041720839,GB
+1041720840,1041720903,FR
+1041720904,1041720927,GB
+1041720928,1041721039,FR
1041721040,1041721055,GB
1041721056,1041721391,FR
1041721392,1041721407,GB
@@ -3572,31 +6751,39 @@
1041721776,1041721791,GB
1041721792,1041721815,FR
1041721816,1041721823,GB
-1041721824,1041722175,FR
-1041722176,1041722191,GB
-1041722192,1041722223,FR
+1041721824,1041722167,FR
+1041722168,1041722191,GB
+1041722192,1041722207,FR
+1041722208,1041722215,GB
+1041722216,1041722223,FR
1041722224,1041722239,GB
1041722240,1041722279,FR
1041722280,1041722383,GB
1041722384,1041722391,FR
1041722392,1041722399,GB
1041722400,1041722423,FR
-1041722424,1041722431,GB
-1041722432,1041722479,FR
+1041722424,1041722463,GB
+1041722464,1041722479,FR
1041722480,1041722503,GB
1041722504,1041722535,FR
1041722536,1041722551,GB
1041722552,1041722567,FR
1041722568,1041722623,GB
-1041722624,1041722703,FR
+1041722624,1041722639,FR
+1041722640,1041722655,GB
+1041722656,1041722703,FR
1041722704,1041722711,GB
1041722712,1041722743,FR
1041722744,1041722751,GB
-1041722752,1041722983,FR
+1041722752,1041722951,FR
+1041722952,1041722959,GB
+1041722960,1041722983,FR
1041722984,1041723007,GB
1041723008,1041723047,FR
1041723048,1041723135,GB
-1041723136,1041723359,FR
+1041723136,1041723167,FR
+1041723168,1041723175,GB
+1041723176,1041723359,FR
1041723360,1041723391,GB
1041723392,1041723655,FR
1041723656,1041723775,GB
@@ -3606,19 +6793,22 @@
1041723888,1041723903,GB
1041723904,1041724455,FR
1041724456,1041724463,GB
-1041724464,1041724471,FR
-1041724472,1041724479,GB
-1041724480,1041724535,FR
+1041724464,1041724511,FR
+1041724512,1041724519,GB
+1041724520,1041724535,FR
1041724536,1041724543,GB
1041724544,1041724671,FR
1041724672,1041724927,GB
-1041724928,1041725119,FR
+1041724928,1041725015,FR
+1041725016,1041725023,GB
+1041725024,1041725119,FR
1041725120,1041725167,GB
1041725168,1041725175,FR
1041725176,1041725183,GB
1041725184,1041725191,FR
-1041725192,1041725199,IT
-1041725200,1041725231,GB
+1041725192,1041725199,GB
+1041725200,1041725207,FR
+1041725208,1041725231,GB
1041725232,1041725255,FR
1041725256,1041725279,GB
1041725280,1041725375,FR
@@ -3673,9 +6863,7 @@
1041727091,1041727091,GB
1041727092,1041727167,FR
1041727168,1041727231,GB
-1041727232,1041727239,FR
-1041727240,1041727247,GB
-1041727248,1041727303,FR
+1041727232,1041727303,FR
1041727304,1041727311,GB
1041727312,1041727999,FR
1041728000,1041728047,GB
@@ -3707,9 +6895,7 @@
1041730240,1041730247,GB
1041730248,1041730639,FR
1041730640,1041730655,GB
-1041730656,1041731927,FR
-1041731928,1041731935,GB
-1041731936,1041731975,FR
+1041730656,1041731975,FR
1041731976,1041732031,GB
1041732032,1041732055,FR
1041732056,1041732063,GB
@@ -3745,12 +6931,14 @@
1041735000,1041735039,GB
1041735040,1041735055,FR
1041735056,1041735087,GB
-1041735088,1041735119,FR
+1041735088,1041735095,FR
+1041735096,1041735103,GB
+1041735104,1041735119,FR
1041735120,1041735167,GB
1041735168,1041735431,FR
1041735432,1041735495,GB
-1041735496,1041735519,FR
-1041735520,1041735551,GB
+1041735496,1041735511,FR
+1041735512,1041735551,GB
1041735552,1041735567,FR
1041735568,1041735583,GB
1041735584,1041735615,FR
@@ -3758,8 +6946,8 @@
1041735664,1041736375,FR
1041736376,1041736383,GB
1041736384,1041736423,FR
-1041736424,1041736463,GB
-1041736464,1041736527,FR
+1041736424,1041736455,GB
+1041736456,1041736527,FR
1041736528,1041736535,GB
1041736536,1041736543,FR
1041736544,1041736551,GB
@@ -3777,7 +6965,9 @@
1041737072,1041737119,GB
1041737120,1041737127,FR
1041737128,1041737151,GB
-1041737152,1041737247,FR
+1041737152,1041737167,FR
+1041737168,1041737183,GB
+1041737184,1041737247,FR
1041737248,1041737279,GB
1041737280,1041737295,FR
1041737296,1041737303,GB
@@ -3788,8 +6978,10 @@
1041737424,1041737455,FR
1041737456,1041737463,GB
1041737464,1041737487,FR
-1041737488,1041737503,GB
-1041737504,1041737583,FR
+1041737488,1041737495,GB
+1041737496,1041737503,FR
+1041737504,1041737511,GB
+1041737512,1041737583,FR
1041737584,1041737599,GB
1041737600,1041737607,FR
1041737608,1041737615,GB
@@ -3813,9 +7005,7 @@
1041738160,1041738167,GB
1041738168,1041738215,FR
1041738216,1041738223,GB
-1041738224,1041738503,FR
-1041738504,1041738511,GB
-1041738512,1041738519,FR
+1041738224,1041738519,FR
1041738520,1041738543,GB
1041738544,1041738551,FR
1041738552,1041738559,GB
@@ -3824,19 +7014,17 @@
1041738576,1041738583,FR
1041738584,1041738591,GB
1041738592,1041738599,FR
-1041738600,1041738607,GB
-1041738608,1041738703,FR
-1041738704,1041738711,GB
-1041738712,1041738735,FR
+1041738600,1041738615,GB
+1041738616,1041738663,FR
+1041738664,1041738671,GB
+1041738672,1041738703,FR
+1041738704,1041738719,GB
+1041738720,1041738735,FR
1041738736,1041738751,GB
1041738752,1041739079,FR
1041739080,1041739087,GB
1041739088,1041739167,FR
-1041739168,1041739175,GB
-1041739176,1041739183,FR
-1041739184,1041739207,GB
-1041739208,1041739215,FR
-1041739216,1041739231,GB
+1041739168,1041739231,GB
1041739232,1041739295,FR
1041739296,1041739299,BE
1041739300,1041739303,GB
@@ -3854,7 +7042,9 @@
1041739744,1041739751,GB
1041739752,1041740031,FR
1041740032,1041740039,GB
-1041740040,1041740135,FR
+1041740040,1041740103,FR
+1041740104,1041740119,GB
+1041740120,1041740135,FR
1041740136,1041740143,GB
1041740144,1041740263,FR
1041740264,1041740271,GB
@@ -3868,8 +7058,10 @@
1041740672,1041740687,GB
1041740688,1041740703,FR
1041740704,1041740719,GB
-1041740720,1041741071,FR
-1041741072,1041741087,GB
+1041740720,1041740807,FR
+1041740808,1041740831,GB
+1041740832,1041741063,FR
+1041741064,1041741087,GB
1041741088,1041741135,FR
1041741136,1041741151,GB
1041741152,1041741239,FR
@@ -3886,7 +7078,11 @@
1041741664,1041741679,GB
1041741680,1041741687,FR
1041741688,1041741823,GB
-1041741824,1041742223,FR
+1041741824,1041742087,FR
+1041742088,1041742095,GB
+1041742096,1041742183,FR
+1041742184,1041742191,GB
+1041742192,1041742223,FR
1041742224,1041742239,GB
1041742240,1041742263,FR
1041742264,1041742271,GB
@@ -3922,8 +7118,8 @@
1041743744,1041743759,GB
1041743760,1041743767,FR
1041743768,1041743775,GB
-1041743776,1041743791,FR
-1041743792,1041743799,GB
+1041743776,1041743783,FR
+1041743784,1041743799,GB
1041743800,1041743807,FR
1041743808,1041743823,GB
1041743824,1041743831,FR
@@ -3957,8 +7153,8 @@
1041745032,1041745063,FR
1041745064,1041745071,GB
1041745072,1041745127,FR
-1041745128,1041745143,GB
-1041745144,1041745167,FR
+1041745128,1041745151,GB
+1041745152,1041745167,FR
1041745168,1041745191,GB
1041745192,1041745247,FR
1041745248,1041745279,GB
@@ -3966,7 +7162,9 @@
1041745328,1041745343,GB
1041745344,1041745359,FR
1041745360,1041745375,GB
-1041745376,1041745415,FR
+1041745376,1041745399,FR
+1041745400,1041745407,GB
+1041745408,1041745415,FR
1041745416,1041745423,GB
1041745424,1041745447,FR
1041745448,1041745471,GB
@@ -3986,7 +7184,9 @@
1041745656,1041745663,GB
1041745664,1041745751,FR
1041745752,1041745767,GB
-1041745768,1041745855,FR
+1041745768,1041745791,FR
+1041745792,1041745799,GB
+1041745800,1041745855,FR
1041745856,1041745871,GB
1041745872,1041745887,FR
1041745888,1041745959,GB
@@ -4000,8 +7200,8 @@
1041746064,1041746079,GB
1041746080,1041746111,FR
1041746112,1041746135,GB
-1041746136,1041746703,FR
-1041746704,1041746735,GB
+1041746136,1041746711,FR
+1041746712,1041746735,GB
1041746736,1041746743,FR
1041746744,1041746751,GB
1041746752,1041746799,FR
@@ -4016,8 +7216,8 @@
1041749776,1041749783,GB
1041749784,1041749807,FR
1041749808,1041749815,GB
-1041749816,1041749847,FR
-1041749848,1041749855,GB
+1041749816,1041749839,FR
+1041749840,1041749855,GB
1041749856,1041749967,FR
1041749968,1041749983,GB
1041749984,1041749999,FR
@@ -4030,7 +7230,13 @@
1041750744,1041750751,GB
1041750752,1041750775,FR
1041750776,1041750783,GB
-1041750784,1041751695,FR
+1041750784,1041751303,FR
+1041751304,1041751311,GB
+1041751312,1041751351,FR
+1041751352,1041751359,GB
+1041751360,1041751567,FR
+1041751568,1041751575,GB
+1041751576,1041751695,FR
1041751696,1041751719,GB
1041751720,1041751775,FR
1041751776,1041751807,GB
@@ -4066,10 +7272,10 @@
1041755632,1041755647,GB
1041755648,1041756463,FR
1041756464,1041756471,GB
-1041756472,1041756559,FR
-1041756560,1041756567,GB
-1041756568,1041756599,FR
-1041756600,1041756607,GB
+1041756472,1041756543,FR
+1041756544,1041756567,GB
+1041756568,1041756591,FR
+1041756592,1041756607,GB
1041756608,1041756655,FR
1041756656,1041756663,GB
1041756664,1041756695,FR
@@ -4100,7 +7306,9 @@
1041758032,1041758039,GB
1041758040,1041758095,FR
1041758096,1041758111,GB
-1041758112,1041758255,FR
+1041758112,1041758159,FR
+1041758160,1041758167,GB
+1041758168,1041758255,FR
1041758256,1041758271,GB
1041758272,1041758319,FR
1041758320,1041758343,GB
@@ -4136,7 +7344,9 @@
1041959680,1042022399,DE
1042022400,1042045891,PT
1042045892,1042045895,A2
-1042045896,1042087935,PT
+1042045896,1042086739,PT
+1042086740,1042086743,A2
+1042086744,1042087935,PT
1042087936,1042120703,TR
1042120704,1042153471,PL
1042153472,1042284543,GB
@@ -4208,31 +7418,41 @@
1042825216,1042833407,CZ
1042833408,1042841599,GB
1042841600,1042874367,AT
-1042874368,1042875399,NL
+1042874368,1042875391,NL
+1042875392,1042875399,GB
1042875400,1042875407,DE
-1042875408,1042875903,NL
-1042875904,1042876159,GB
-1042876160,1042876415,NL
+1042875408,1042875423,NL
+1042875424,1042875455,GB
+1042875456,1042875903,NL
+1042875904,1042876287,GB
+1042876288,1042876415,NL
1042876416,1042876479,GB
-1042876480,1042876671,NL
+1042876480,1042876647,NL
+1042876648,1042876663,GB
+1042876664,1042876671,NL
1042876672,1042876927,DE
-1042876928,1042877183,NL
+1042876928,1042877183,GB
1042877184,1042877951,DE
-1042877952,1042880639,NL
+1042877952,1042878207,NL
+1042878208,1042878463,GB
+1042878464,1042880639,NL
1042880640,1042880767,GB
1042880768,1042882559,NL
1042882560,1042882815,DE
1042882816,1042888703,NL
1042888704,1042888959,GB
1042888960,1042889215,NL
-1042889216,1042889471,US
+1042889216,1042889471,DE
1042889472,1042889983,NL
-1042889984,1042890111,GB
-1042890112,1042890815,NL
+1042889984,1042890119,GB
+1042890120,1042890127,NL
+1042890128,1042890143,GB
+1042890144,1042890239,NL
+1042890240,1042890495,GB
+1042890496,1042890751,FR
+1042890752,1042890815,GB
1042890816,1042890819,FR
-1042890820,1042890847,NL
-1042890848,1042890879,GB
-1042890880,1042890944,NL
+1042890820,1042890944,NL
1042890945,1042890950,GB
1042890951,1042890959,NL
1042890960,1042890991,GB
@@ -4241,8 +7461,8 @@
1042891840,1042891871,BE
1042891872,1042892015,NL
1042892016,1042892031,DE
-1042892032,1042892479,NL
-1042892480,1042892543,PL
+1042892032,1042892287,NL
+1042892288,1042892543,FR
1042892544,1042892879,NL
1042892880,1042892887,DE
1042892888,1042892959,NL
@@ -4262,16 +7482,26 @@
1042893312,1042894079,NL
1042894080,1042894143,DE
1042894144,1042894175,SE
-1042894176,1042894559,NL
+1042894176,1042894335,NL
+1042894336,1042894355,FR
+1042894356,1042894359,NL
+1042894360,1042894367,GB
+1042894368,1042894399,NL
+1042894400,1042894415,GB
+1042894416,1042894431,NL
+1042894432,1042894463,PT
+1042894464,1042894559,NL
1042894560,1042894591,DE
-1042894592,1042894655,FR
-1042894656,1042894783,NL
+1042894592,1042894783,NL
1042894784,1042894847,DE
-1042894848,1042895231,NL
+1042894848,1042895103,NL
+1042895104,1042895231,GB
1042895232,1042895359,DE
1042895360,1042895615,NL
1042895616,1042895871,GB
-1042895872,1042900479,NL
+1042895872,1042896127,NL
+1042896128,1042896255,GB
+1042896256,1042900479,NL
1042900480,1042900735,GB
1042900736,1042939903,NL
1042939904,1043070975,ES
@@ -4328,11 +7558,11 @@
1043466576,1043466583,NL
1043466584,1043466607,GB
1043466608,1043466887,NL
-1043466888,1043466895,GB
-1043466896,1043466911,NL
-1043466912,1043466927,GB
+1043466888,1043466927,GB
1043466928,1043466943,NL
-1043466944,1043467039,GB
+1043466944,1043466991,GB
+1043466992,1043467007,NL
+1043467008,1043467039,GB
1043467040,1043467071,NL
1043467072,1043467087,GB
1043467088,1043467103,NL
@@ -4380,8 +7610,8 @@
1043468968,1043469023,NL
1043469024,1043469055,GB
1043469056,1043469087,NL
-1043469088,1043469143,GB
-1043469144,1043469159,NL
+1043469088,1043469151,GB
+1043469152,1043469159,NL
1043469160,1043469183,GB
1043469184,1043469199,NL
1043469200,1043469207,GB
@@ -4389,21 +7619,13 @@
1043469224,1043469231,GB
1043469232,1043469239,NL
1043469240,1043469247,GB
-1043469248,1043469335,NL
-1043469336,1043469343,GB
-1043469344,1043469359,NL
+1043469248,1043469359,NL
1043469360,1043469375,GB
1043469376,1043469399,NL
-1043469400,1043469415,GB
-1043469416,1043469423,NL
-1043469424,1043469439,GB
+1043469400,1043469439,GB
1043469440,1043469559,NL
-1043469560,1043469663,GB
-1043469664,1043469679,NL
-1043469680,1043469695,GB
-1043469696,1043469727,NL
-1043469728,1043469823,GB
-1043469824,1043469843,NL
+1043469560,1043469567,GB
+1043469568,1043469843,NL
1043469844,1043469847,GB
1043469848,1043469919,NL
1043469920,1043469939,GB
@@ -4414,11 +7636,15 @@
1043470272,1043470303,NL
1043470304,1043470335,GB
1043470336,1043470847,NL
-1043470848,1043472415,GB
-1043472416,1043472423,DE
+1043470848,1043472383,GB
+1043472384,1043472395,DE
+1043472396,1043472399,GB
+1043472400,1043472423,DE
1043472424,1043472431,GB
-1043472432,1043472439,DE
-1043472440,1043472487,GB
+1043472432,1043472443,DE
+1043472444,1043472467,GB
+1043472468,1043472475,DE
+1043472476,1043472487,GB
1043472488,1043472495,DE
1043472496,1043472503,GB
1043472504,1043472895,DE
@@ -4463,7 +7689,104 @@
1043480352,1043480359,GB
1043480360,1043480363,DE
1043480364,1043480575,GB
-1043480576,1043488767,CH
+1043480576,1043480687,CH
+1043480688,1043480695,GB
+1043480696,1043480831,CH
+1043480832,1043481855,GB
+1043481856,1043482007,CH
+1043482008,1043482015,GB
+1043482016,1043482079,CH
+1043482080,1043482623,GB
+1043482624,1043482647,CH
+1043482648,1043482667,GB
+1043482668,1043482671,CH
+1043482672,1043482687,GB
+1043482688,1043482719,CH
+1043482720,1043482735,GB
+1043482736,1043482759,CH
+1043482760,1043482783,GB
+1043482784,1043482791,CH
+1043482792,1043482807,GB
+1043482808,1043482895,CH
+1043482896,1043482911,GB
+1043482912,1043482951,CH
+1043482952,1043482959,GB
+1043482960,1043482975,CH
+1043482976,1043482995,GB
+1043482996,1043483039,CH
+1043483040,1043483047,GB
+1043483048,1043483059,CH
+1043483060,1043483063,GB
+1043483064,1043483103,CH
+1043483104,1043483111,GB
+1043483112,1043483231,CH
+1043483232,1043483235,GB
+1043483236,1043483279,CH
+1043483280,1043483295,GB
+1043483296,1043483311,CH
+1043483312,1043483319,GB
+1043483320,1043483327,CH
+1043483328,1043483335,GB
+1043483336,1043483391,CH
+1043483392,1043483655,GB
+1043483656,1043483679,CH
+1043483680,1043483687,GB
+1043483688,1043483759,CH
+1043483760,1043483775,GB
+1043483776,1043483839,CH
+1043483840,1043483871,GB
+1043483872,1043483911,CH
+1043483912,1043484159,GB
+1043484160,1043484191,CH
+1043484192,1043484199,GB
+1043484200,1043484215,CH
+1043484216,1043484223,GB
+1043484224,1043484351,CH
+1043484352,1043484383,GB
+1043484384,1043484431,CH
+1043484432,1043484463,GB
+1043484464,1043484551,CH
+1043484552,1043484559,GB
+1043484560,1043484575,CH
+1043484576,1043484583,GB
+1043484584,1043484623,CH
+1043484624,1043484631,GB
+1043484632,1043484671,CH
+1043484672,1043484679,GB
+1043484680,1043484751,CH
+1043484752,1043484767,GB
+1043484768,1043484799,CH
+1043484800,1043484927,GB
+1043484928,1043484935,CH
+1043484936,1043484943,GB
+1043484944,1043484959,CH
+1043484960,1043484991,GB
+1043484992,1043485055,CH
+1043485056,1043485191,GB
+1043485192,1043485195,CH
+1043485196,1043485439,GB
+1043485440,1043485567,CH
+1043485568,1043485695,GB
+1043485696,1043486239,CH
+1043486240,1043486463,GB
+1043486464,1043486487,CH
+1043486488,1043486719,GB
+1043486720,1043486723,CH
+1043486724,1043486975,GB
+1043486976,1043487039,CH
+1043487040,1043487055,GB
+1043487056,1043487103,CH
+1043487104,1043487231,GB
+1043487232,1043487443,CH
+1043487444,1043487447,GB
+1043487448,1043487455,CH
+1043487456,1043487487,GB
+1043487488,1043487623,CH
+1043487624,1043487631,GB
+1043487632,1043487679,CH
+1043487680,1043487743,GB
+1043487744,1043487751,CH
+1043487752,1043488767,GB
1043488768,1043496959,DE
1043496960,1043497055,FR
1043497056,1043497079,GB
@@ -4807,7 +8130,9 @@
1044053504,1044106239,NL
1044106240,1044106367,BE
1044106368,1044106495,NL
-1044106496,1044106763,BE
+1044106496,1044106751,BE
+1044106752,1044106755,NL
+1044106756,1044106763,BE
1044106764,1044106767,NL
1044106768,1044106771,BE
1044106772,1044106775,NL
@@ -4901,7 +8226,11 @@
1044496384,1044512767,EE
1044512768,1044578303,DK
1044578304,1044580607,DE
-1044580608,1044586495,GB
+1044580608,1044580735,GB
+1044580736,1044580767,DE
+1044580768,1044580863,GB
+1044580864,1044581119,DE
+1044581120,1044586495,GB
1044586496,1044587007,DE
1044587008,1044587519,GB
1044587520,1044587775,DE
@@ -4927,7 +8256,9 @@
1044592192,1044592255,DE
1044592256,1044592639,GB
1044592640,1044592655,DE
-1044592656,1044592831,GB
+1044592656,1044592671,GB
+1044592672,1044592703,DE
+1044592704,1044592831,GB
1044592832,1044594431,DE
1044594432,1044625407,GB
1044625408,1044625463,DE
@@ -4940,8 +8271,8 @@
1044628480,1044629503,GB
1044629504,1044629759,DE
1044629760,1044631551,GB
-1044631552,1044631871,DE
-1044631872,1044631951,GB
+1044631552,1044631903,DE
+1044631904,1044631951,GB
1044631952,1044631967,DE
1044631968,1044632063,GB
1044632064,1044633855,DE
@@ -4958,7 +8289,9 @@
1044638224,1044638239,DE
1044638240,1044638463,GB
1044638464,1044638719,DE
-1044638720,1044639743,GB
+1044638720,1044638975,GB
+1044638976,1044639231,DE
+1044639232,1044639743,GB
1044639744,1044642303,DE
1044642304,1044642815,GB
1044642816,1044643327,DE
@@ -4981,7 +8314,9 @@
1044697856,1044698110,DE
1044698111,1044698111,AT
1044698112,1044698367,DE
-1044698368,1044701183,AT
+1044698368,1044698623,AT
+1044698624,1044699134,DE
+1044699135,1044701183,AT
1044701184,1044709375,EG
1044709376,1044717567,RU
1044717568,1044742143,GB
@@ -5057,7 +8392,9 @@
1044931552,1044931567,GB
1044931568,1044931583,BE
1044931584,1044931623,GB
-1044931624,1044931663,BE
+1044931624,1044931631,BE
+1044931632,1044931639,GB
+1044931640,1044931663,BE
1044931664,1044931671,GB
1044931672,1044931759,BE
1044931760,1044931775,GB
@@ -5097,8 +8434,8 @@
1044932832,1044932839,GB
1044932840,1044932847,BE
1044932848,1044932863,GB
-1044932864,1044932939,BE
-1044932940,1044932947,GB
+1044932864,1044932935,BE
+1044932936,1044932947,GB
1044932948,1044932951,BE
1044932952,1044932959,GB
1044932960,1044933007,BE
@@ -5141,7 +8478,9 @@
1044933864,1044933871,GB
1044933872,1044933919,BE
1044933920,1044933935,GB
-1044933936,1044934191,BE
+1044933936,1044934095,BE
+1044934096,1044934103,GB
+1044934104,1044934191,BE
1044934192,1044934199,GB
1044934200,1044934239,BE
1044934240,1044934247,GB
@@ -5177,9 +8516,7 @@
1044935408,1044935423,GB
1044935424,1044935431,BE
1044935432,1044935439,LU
-1044935440,1044935551,BE
-1044935552,1044935559,GB
-1044935560,1044935595,BE
+1044935440,1044935595,BE
1044935596,1044935599,GB
1044935600,1044935623,BE
1044935624,1044935631,GB
@@ -5187,11 +8524,13 @@
1044935744,1044935751,GB
1044935752,1044935839,BE
1044935840,1044935847,GB
-1044935848,1044935879,BE
+1044935848,1044935851,BE
+1044935852,1044935863,GB
+1044935864,1044935879,BE
1044935880,1044935887,GB
1044935888,1044935903,BE
-1044935904,1044936063,GB
-1044936064,1044936103,BE
+1044935904,1044936095,GB
+1044936096,1044936103,BE
1044936104,1044936111,GB
1044936112,1044936123,BE
1044936124,1044936151,GB
@@ -5219,8 +8558,8 @@
1044937392,1044937399,GB
1044937400,1044937487,BE
1044937488,1044937503,GB
-1044937504,1044937527,BE
-1044937528,1044937531,GB
+1044937504,1044937515,BE
+1044937516,1044937531,GB
1044937532,1044937535,BE
1044937536,1044937551,GB
1044937552,1044937567,BE
@@ -5234,8 +8573,8 @@
1044937696,1044937703,BE
1044937704,1044937711,GB
1044937712,1044937747,BE
-1044937748,1044937759,GB
-1044937760,1044937847,BE
+1044937748,1044937767,GB
+1044937768,1044937847,BE
1044937848,1044937887,GB
1044937888,1044937903,BE
1044937904,1044937915,GB
@@ -5279,17 +8618,16 @@
1045013232,1045013247,IE
1045013248,1045013455,GB
1045013456,1045013471,IE
-1045013472,1045018207,GB
+1045013472,1045018143,GB
+1045018144,1045018151,AE
+1045018152,1045018207,GB
1045018208,1045018231,FI
1045018232,1045018367,GB
1045018368,1045018559,ES
1045018560,1045018623,GB
1045018624,1045018751,ES
1045018752,1045020159,GB
-1045020160,1045020255,ES
-1045020256,1045020287,GB
-1045020288,1045020655,ES
-1045020656,1045020671,GB
+1045020160,1045020671,ES
1045020672,1045037055,NO
1045037056,1045119231,GR
1045119232,1045119743,AL
@@ -5301,8 +8639,8 @@
1045154592,1045154623,DE
1045154624,1045154655,GB
1045154656,1045154687,DE
-1045154688,1045154719,NL
-1045154720,1045154751,DE
+1045154688,1045154719,US
+1045154720,1045154751,RU
1045154752,1045154783,SE
1045154784,1045155071,DE
1045155072,1045155327,CH
@@ -5310,9 +8648,10 @@
1045160960,1045160991,TR
1045160992,1045161023,DE
1045161024,1045161055,AT
-1045161056,1045161151,DE
-1045161152,1045161183,PT
-1045161184,1045168127,DE
+1045161056,1045161087,US
+1045161088,1045161119,DE
+1045161120,1045161151,TH
+1045161152,1045168127,DE
1045168128,1045233663,RU
1045233664,1045241855,GB
1045241856,1045250047,IT
@@ -5335,26 +8674,12 @@
1045446656,1045446911,HU
1045446912,1045447167,SK
1045447168,1045447231,HU
-1045447232,1045447239,SK
-1045447240,1045447263,HU
-1045447264,1045447279,SK
-1045447280,1045447287,HU
-1045447288,1045447295,SK
+1045447232,1045447295,SK
1045447296,1045447311,HU
-1045447312,1045447423,SK
-1045447424,1045447431,HU
-1045447432,1045447439,SK
-1045447440,1045447447,HU
-1045447448,1045447471,SK
-1045447472,1045447551,HU
-1045447552,1045448031,SK
-1045448032,1045448039,HU
-1045448040,1045448055,SK
-1045448056,1045448063,HU
-1045448064,1045448159,SK
-1045448160,1045448191,HU
-1045448192,1045448239,SK
-1045448240,1045448263,HU
+1045447312,1045447519,SK
+1045447520,1045447551,HU
+1045447552,1045448255,SK
+1045448256,1045448263,HU
1045448264,1045448703,SK
1045448704,1045448767,HU
1045448768,1045450751,SK
@@ -5390,109 +8715,88 @@
1045716992,1045725183,RU
1045725184,1045733375,CZ
1045733376,1045741567,GB
-1045741568,1045741887,SE
-1045741888,1045741951,GB
-1045741952,1045742015,SE
-1045742016,1045742023,GB
-1045742024,1045742031,SE
-1045742032,1045742039,GB
-1045742040,1045742063,SE
-1045742064,1045742111,GB
-1045742112,1045742135,SE
-1045742136,1045742143,NL
-1045742144,1045742151,SE
-1045742152,1045742159,DK
-1045742160,1045742167,SE
-1045742168,1045742175,DK
-1045742176,1045742239,SE
-1045742240,1045742247,GB
-1045742248,1045742383,SE
-1045742384,1045742391,GB
-1045742392,1045742495,SE
-1045742496,1045742535,GB
-1045742536,1045742551,SE
-1045742552,1045742559,GB
-1045742560,1045742763,SE
-1045742764,1045742767,GB
-1045742768,1045742783,SE
-1045742784,1045742831,GB
+1045741568,1045741823,SE
+1045741824,1045741831,GB
+1045741832,1045741839,BE
+1045741840,1045741887,SE
+1045741888,1045742039,GB
+1045742040,1045742047,SE
+1045742048,1045742111,GB
+1045742112,1045742115,SE
+1045742116,1045742175,GB
+1045742176,1045742191,SE
+1045742192,1045742335,GB
+1045742336,1045742351,SE
+1045742352,1045742367,GB
+1045742368,1045742383,SE
+1045742384,1045742395,GB
+1045742396,1045742471,SE
+1045742472,1045742479,GB
+1045742480,1045742487,SE
+1045742488,1045742575,GB
+1045742576,1045742623,SE
+1045742624,1045742751,GB
+1045742752,1045742759,SE
+1045742760,1045742831,GB
1045742832,1045742839,SE
1045742840,1045742847,GB
-1045742848,1045743023,SE
-1045743024,1045743031,GB
+1045742848,1045742983,SE
+1045742984,1045743031,GB
1045743032,1045743039,SE
-1045743040,1045743047,GB
-1045743048,1045743063,NL
-1045743064,1045743095,SE
-1045743096,1045743099,GB
-1045743100,1045743247,SE
-1045743248,1045743251,GB
-1045743252,1045743295,SE
-1045743296,1045743299,GB
-1045743300,1045743679,SE
-1045743680,1045743743,GB
-1045743744,1045743803,SE
-1045743804,1045743807,GB
-1045743808,1045744007,SE
+1045743040,1045743063,GB
+1045743064,1045743071,SE
+1045743072,1045743087,GB
+1045743088,1045743095,SE
+1045743096,1045743103,GB
+1045743104,1045743231,SE
+1045743232,1045743251,GB
+1045743252,1045743263,SE
+1045743264,1045743299,GB
+1045743300,1045743647,SE
+1045743648,1045743871,GB
+1045743872,1045744007,SE
1045744008,1045744015,GB
1045744016,1045744031,SE
-1045744032,1045744063,GB
-1045744064,1045744639,SE
+1045744032,1045744127,GB
+1045744128,1045744639,SE
1045744640,1045744671,BE
-1045744672,1045744703,SE
-1045744704,1045745407,GB
+1045744672,1045745407,GB
1045745408,1045745607,SE
1045745608,1045745615,FI
1045745616,1045745623,GB
-1045745624,1045745655,SE
-1045745656,1045745663,GB
+1045745624,1045745627,SE
+1045745628,1045745631,GB
+1045745632,1045745647,SE
+1045745648,1045745663,GB
1045745664,1045745695,SE
1045745696,1045745759,GB
1045745760,1045745768,SE
1045745769,1045745791,GB
1045745792,1045745855,SE
-1045745856,1045745879,GB
-1045745880,1045745951,SE
-1045745952,1045745999,GB
-1045746000,1045746079,SE
-1045746080,1045746095,GB
-1045746096,1045746163,SE
-1045746164,1045746175,GB
+1045745856,1045745919,GB
+1045745920,1045745951,SE
+1045745952,1045746175,GB
1045746176,1045746431,SE
1045746432,1045746495,GB
1045746496,1045746527,SE
-1045746528,1045746543,GB
-1045746544,1045746559,SE
-1045746560,1045746671,GB
+1045746528,1045746671,GB
1045746672,1045747071,SE
1045747072,1045747199,GB
1045747200,1045747455,SE
-1045747456,1045747583,GB
-1045747584,1045747615,SE
-1045747616,1045747679,GB
-1045747680,1045747711,SE
-1045747712,1045747751,GB
-1045747752,1045747775,SE
-1045747776,1045747815,GB
-1045747816,1045747823,SE
-1045747824,1045747839,GB
+1045747456,1045747759,GB
+1045747760,1045747775,SE
+1045747776,1045747839,GB
1045747840,1045747871,SE
1045747872,1045747919,GB
1045747920,1045747935,SE
1045747936,1045747967,GB
1045747968,1045748223,SE
-1045748224,1045748239,GB
-1045748240,1045748287,SE
-1045748288,1045748295,GB
-1045748296,1045748303,SE
-1045748304,1045748319,GB
+1045748224,1045748319,GB
1045748320,1045748351,SE
-1045748352,1045748391,GB
-1045748392,1045748395,SE
-1045748396,1045748399,GB
-1045748400,1045748407,SE
-1045748408,1045748463,GB
-1045748464,1045748735,SE
+1045748352,1045748463,GB
+1045748464,1045748471,SE
+1045748472,1045748479,GB
+1045748480,1045748735,SE
1045748736,1045749503,GB
1045749504,1045749759,SE
1045749760,1045757951,GB
@@ -5519,19 +8823,19 @@
1046229112,1046229119,SE
1046229120,1046282239,NO
1046282240,1046283007,DE
-1046283008,1046283263,BZ
+1046283008,1046283135,BZ
+1046283136,1046283263,DE
1046283264,1046283327,LU
-1046283328,1046284287,DE
-1046284288,1046285055,BZ
+1046283328,1046285055,DE
1046285056,1046285119,HR
1046285120,1046285183,MT
1046285184,1046285247,BZ
1046285248,1046285311,BA
1046285312,1046286663,DE
1046286664,1046286671,BZ
-1046286672,1046286927,DE
-1046286928,1046286935,ES
-1046286936,1046288383,DE
+1046286672,1046286935,DE
+1046286936,1046286943,ES
+1046286944,1046288383,DE
1046288384,1046288663,CZ
1046288664,1046288767,DE
1046288768,1046288775,AG
@@ -5579,8 +8883,7 @@
1046331744,1046331775,DE
1046331776,1046331839,EU
1046331840,1046331871,DE
-1046331872,1046331903,EU
-1046331904,1046332159,NL
+1046331872,1046332159,EU
1046332160,1046332415,FR
1046332416,1046333439,EU
1046333440,1046333695,DE
@@ -5594,11 +8897,7 @@
1046337536,1046338047,DE
1046338048,1046339839,EU
1046339840,1046340095,FR
-1046340096,1046340607,EU
-1046340608,1046340863,NL
-1046340864,1046342143,EU
-1046342144,1046342719,NL
-1046342720,1046343423,EU
+1046340096,1046343423,EU
1046343424,1046343935,NL
1046343936,1046344959,EU
1046344960,1046345215,DE
@@ -5888,8 +9187,8 @@
1046535488,1046535551,DE
1046535552,1046535619,GB
1046535620,1046535623,DE
-1046535624,1046535631,GB
-1046535632,1046535935,DE
+1046535624,1046535679,GB
+1046535680,1046535935,DE
1046535936,1046536023,GB
1046536024,1046536039,DE
1046536040,1046536063,GB
@@ -5910,9 +9209,7 @@
1046536320,1046536351,DE
1046536352,1046536355,GB
1046536356,1046536359,DE
-1046536360,1046536423,GB
-1046536424,1046536431,DE
-1046536432,1046536607,GB
+1046536360,1046536607,GB
1046536608,1046536667,DE
1046536668,1046536703,GB
1046536704,1046537023,DE
@@ -5939,8 +9236,8 @@
1046541696,1046541727,GB
1046541728,1046541759,DE
1046541760,1046541767,GB
-1046541768,1046541783,DE
-1046541784,1046541807,GB
+1046541768,1046541775,DE
+1046541776,1046541807,GB
1046541808,1046543103,DE
1046543104,1046543263,GB
1046543264,1046543295,DE
@@ -5951,11 +9248,11 @@
1046543616,1046544127,GB
1046544128,1046544383,DE
1046544384,1046560767,IT
-1046560768,1046569831,ES
-1046569832,1046569839,GB
-1046569840,1046570591,ES
+1046560768,1046570591,ES
1046570592,1046570607,CH
-1046570608,1046585343,ES
+1046570608,1046572007,ES
+1046572008,1046572015,DK
+1046572016,1046585343,ES
1046585344,1046609919,NO
1046609920,1046675455,IT
1046675456,1046708223,ES
@@ -5964,7 +9261,9 @@
1046757376,1046765567,IT
1046765568,1046773759,ES
1046773760,1046781951,FR
-1046781952,1046798335,GB
+1046781952,1046790143,GB
+1046790144,1046791167,US
+1046791168,1046798335,GB
1046798336,1046806527,HU
1046806528,1046814719,IT
1046814720,1046822911,SE
@@ -6057,7 +9356,12 @@
1046898688,1046898975,BE
1046898976,1046899167,EU
1046899168,1046904831,BE
-1046904832,1046937599,RU
+1046904832,1046908927,SK
+1046908928,1046910975,SE
+1046910976,1046913023,IT
+1046913024,1046921215,NO
+1046921216,1046929407,DE
+1046929408,1046937599,FR
1046937600,1047003135,GR
1047003136,1047068671,DE
1047068672,1047085055,RU
@@ -6073,7 +9377,9 @@
1047265280,1047273471,NL
1047273472,1047281663,DE
1047281664,1047289855,TR
-1047289856,1047298047,RS
+1047289856,1047295351,RS
+1047295352,1047295359,HU
+1047295360,1047298047,RS
1047298048,1047300095,CH
1047300096,1047300415,GB
1047300416,1047300479,CH
@@ -6110,15 +9416,11 @@
1047527424,1047535615,BE
1047535616,1047551999,DE
1047552000,1047560191,RU
-1047560192,1047561367,DE
-1047561368,1047561371,CN
-1047561372,1047561747,DE
+1047560192,1047561747,DE
1047561748,1047561751,ES
1047561752,1047561887,DE
1047561888,1047561891,US
-1047561892,1047563227,DE
-1047563228,1047563231,CH
-1047563232,1047563287,DE
+1047561892,1047563287,DE
1047563288,1047563295,CH
1047563296,1047563303,DE
1047563304,1047563311,CH
@@ -6143,14 +9445,20 @@
1047563468,1047563471,CH
1047563472,1047565131,DE
1047565132,1047565135,GB
-1047565136,1047566363,DE
+1047565136,1047565343,DE
+1047565344,1047565359,CH
+1047565360,1047565855,DE
+1047565856,1047565887,CH
+1047565888,1047566363,DE
1047566364,1047566367,CH
1047566368,1047566403,DE
1047566404,1047566415,CH
-1047566416,1047566443,DE
+1047566416,1047566435,DE
+1047566436,1047566439,CH
+1047566440,1047566443,DE
1047566444,1047566447,AT
-1047566448,1047566455,DE
-1047566456,1047566459,CH
+1047566448,1047566451,DE
+1047566452,1047566459,CH
1047566460,1047566475,DE
1047566476,1047566479,CH
1047566480,1047566491,DE
@@ -6158,9 +9466,7 @@
1047566500,1047566507,DE
1047566508,1047566511,CH
1047566512,1047566519,DE
-1047566520,1047566527,CH
-1047566528,1047566535,DE
-1047566536,1047566539,CH
+1047566520,1047566539,CH
1047566540,1047566543,DE
1047566544,1047566547,CH
1047566548,1047566559,DE
@@ -6176,24 +9482,34 @@
1047566948,1047566951,AT
1047566952,1047566963,DE
1047566964,1047566967,AT
-1047566968,1047566995,DE
+1047566968,1047566971,CH
+1047566972,1047566995,DE
1047566996,1047566999,CH
-1047567000,1047567031,DE
-1047567032,1047567035,CH
+1047567000,1047567015,DE
+1047567016,1047567019,CH
+1047567020,1047567027,DE
+1047567028,1047567035,CH
1047567036,1047567039,DE
1047567040,1047567043,AT
1047567044,1047567047,CH
1047567048,1047567063,DE
1047567064,1047567067,CH
1047567068,1047567071,BE
-1047567072,1047567119,DE
+1047567072,1047567075,NL
+1047567076,1047567079,DE
+1047567080,1047567083,NL
+1047567084,1047567119,DE
1047567120,1047567127,CH
1047567128,1047567143,DE
1047567144,1047567147,CH
1047567148,1047567151,BE
-1047567152,1047567163,DE
+1047567152,1047567159,CH
+1047567160,1047567163,DE
1047567164,1047567167,AT
-1047567168,1047567211,DE
+1047567168,1047567175,CH
+1047567176,1047567183,DE
+1047567184,1047567191,CH
+1047567192,1047567211,DE
1047567212,1047567227,CH
1047567228,1047567239,DE
1047567240,1047567243,CH
@@ -6201,11 +9517,12 @@
1047567248,1047567255,CH
1047567256,1047567279,DE
1047567280,1047567287,CH
-1047567288,1047567315,DE
+1047567288,1047567307,DE
+1047567308,1047567311,CH
+1047567312,1047567315,DE
1047567316,1047567319,AT
-1047567320,1047567359,DE
-1047567360,1047567375,ES
-1047567376,1047567447,DE
+1047567320,1047567327,CH
+1047567328,1047567447,DE
1047567448,1047567451,CH
1047567452,1047567455,AT
1047567456,1047567459,CH
@@ -6217,9 +9534,7 @@
1047567536,1047567539,CH
1047567540,1047567551,DE
1047567552,1047567555,CH
-1047567556,1047567567,DE
-1047567568,1047567571,AT
-1047567572,1047567647,DE
+1047567556,1047567647,DE
1047567648,1047567651,CH
1047567652,1047567655,DE
1047567656,1047567659,CH
@@ -6231,9 +9546,7 @@
1047567748,1047567751,CH
1047567752,1047567755,LU
1047567756,1047567759,CH
-1047567760,1047567799,DE
-1047567800,1047567803,CH
-1047567804,1047567823,DE
+1047567760,1047567823,DE
1047567824,1047567839,CH
1047567840,1047567847,DE
1047567848,1047567851,CH
@@ -6245,18 +9558,16 @@
1047567884,1047567935,DE
1047567936,1047567939,CH
1047567940,1047568047,DE
-1047568048,1047568059,CH
-1047568060,1047568087,DE
-1047568088,1047568095,CH
-1047568096,1047568159,DE
+1047568048,1047568051,CH
+1047568052,1047568055,DE
+1047568056,1047568059,CH
+1047568060,1047568159,DE
1047568160,1047568163,CH
1047568164,1047568187,DE
1047568188,1047568191,CH
1047568192,1047568215,DE
1047568216,1047568219,CH
-1047568220,1047568235,DE
-1047568236,1047568239,CH
-1047568240,1047568247,DE
+1047568220,1047568247,DE
1047568248,1047568251,CH
1047568252,1047568363,DE
1047568364,1047568367,CH
@@ -6277,7 +9588,9 @@
1047732224,1047740415,EU
1047740416,1047740431,US
1047740432,1047740447,DE
-1047740448,1047740543,EU
+1047740448,1047740463,IT
+1047740464,1047740479,SE
+1047740480,1047740543,EU
1047740544,1047740671,DE
1047740672,1047740927,A2
1047740928,1047781663,EU
@@ -6299,9 +9612,7 @@
1047789568,1047806031,AT
1047806032,1047806047,IT
1047806048,1047822335,AT
-1047822336,1047834895,DE
-1047834896,1047834903,CY
-1047834904,1047838719,DE
+1047822336,1047838719,DE
1047838720,1047846911,DK
1047846912,1047855103,SE
1047855104,1047863295,DE
@@ -6359,12 +9670,12 @@
1048604688,1048604743,UA
1048604744,1048604759,EE
1048604760,1048604927,UA
-1048604928,1048604965,LT
-1048604966,1048604967,UA
-1048604968,1048604971,LT
-1048604972,1048604975,UA
-1048604976,1048605079,LT
-1048605080,1048607231,UA
+1048604928,1048605079,LT
+1048605080,1048605087,UA
+1048605088,1048605095,LT
+1048605096,1048605103,UA
+1048605104,1048605119,LT
+1048605120,1048607231,UA
1048607232,1048607247,EE
1048607248,1048607487,UA
1048607488,1048607519,EE
@@ -7060,8 +10371,8 @@
1048983168,1048983423,DE
1048983424,1048983487,EU
1048983488,1048983679,DE
-1048983680,1048984831,EU
-1048984832,1048985167,DE
+1048983680,1048985087,EU
+1048985088,1048985167,DE
1048985168,1048985183,EU
1048985184,1048985199,DE
1048985200,1048985215,EU
@@ -7075,8 +10386,8 @@
1049002240,1049002623,EU
1049002624,1049002751,DE
1049002752,1049003263,EU
-1049003264,1049004291,DE
-1049004292,1049004351,EU
+1049003264,1049004287,DE
+1049004288,1049004351,EU
1049004352,1049004415,DE
1049004416,1049004543,EU
1049004544,1049006079,DE
@@ -7090,14 +10401,10 @@
1049009560,1049009567,DE
1049009568,1049009583,EU
1049009584,1049009615,DE
-1049009616,1049009623,EU
-1049009624,1049009631,DE
-1049009632,1049009647,EU
+1049009616,1049009647,EU
1049009648,1049009662,DE
1049009663,1049009663,EU
-1049009664,1049011711,DE
-1049011712,1049011967,EU
-1049011968,1049012223,DE
+1049009664,1049012223,DE
1049012224,1049012224,EU
1049012225,1049012226,DE
1049012227,1049012735,EU
@@ -7116,17 +10423,17 @@
1049017984,1049018047,GE
1049018048,1049020127,DE
1049020128,1049020135,FR
-1049020136,1049020479,DE
-1049020480,1049020543,GE
-1049020544,1049026559,DE
+1049020136,1049021343,DE
+1049021344,1049021375,US
+1049021376,1049026559,DE
1049026560,1049026815,EU
1049026816,1049031871,DE
1049031872,1049031903,EU
1049031904,1049032143,DE
1049032144,1049032167,EU
1049032168,1049032171,DE
-1049032172,1049032175,EU
-1049032176,1049032287,DE
+1049032172,1049032191,EU
+1049032192,1049032287,DE
1049032288,1049032295,EU
1049032296,1049032383,DE
1049032384,1049032399,EU
@@ -7142,8 +10449,8 @@
1049100288,1049231359,GB
1049231360,1049296895,DE
1049296896,1049362431,EG
-1049362432,1049362591,DE
-1049362592,1049362943,GB
+1049362432,1049362623,DE
+1049362624,1049362943,GB
1049362944,1049362959,DE
1049362960,1049363071,GB
1049363072,1049363135,DE
@@ -7219,9 +10526,10 @@
1049709312,1049709567,GB
1049709568,1049709823,A2
1049709824,1049710079,US
-1049710080,1049710591,NL
-1049710592,1049712639,GB
-1049712640,1049713055,IR
+1049710080,1049710335,GB
+1049710336,1049710591,NL
+1049710592,1049712895,GB
+1049712896,1049713055,IR
1049713056,1049713087,MA
1049713088,1049713151,IR
1049713152,1049713663,NL
@@ -7238,12 +10546,11 @@
1049722880,1049731071,IS
1049731072,1049739263,FI
1049739264,1049755647,NL
-1049755648,1049757599,DE
-1049757600,1049757631,LU
-1049757632,1049757647,DE
+1049755648,1049757383,DE
+1049757384,1049757391,IT
+1049757392,1049757647,DE
1049757648,1049757663,CA
-1049757664,1049757671,BA
-1049757672,1049758063,DE
+1049757664,1049758063,DE
1049758064,1049758071,PL
1049758072,1049758095,DE
1049758096,1049758103,ES
@@ -7322,9 +10629,7 @@
1049785000,1049785007,AT
1049785008,1049787135,DE
1049787136,1049787391,PL
-1049787392,1049790207,DE
-1049790208,1049790463,LU
-1049790464,1049794559,DE
+1049787392,1049794559,DE
1049794560,1049795583,CH
1049795584,1049817151,DE
1049817152,1049817159,PL
@@ -7350,9 +10655,7 @@
1050083328,1050148863,ES
1050148864,1050157055,CY
1050157056,1050173439,RU
-1050173440,1050174063,IT
-1050174064,1050174079,FR
-1050174080,1050181631,IT
+1050173440,1050181631,IT
1050181632,1050189823,PL
1050189824,1050198015,DE
1050198016,1050206207,RU
@@ -7373,17 +10676,13 @@
1050505248,1050505279,CA
1050505280,1050507503,DE
1050507504,1050507519,A2
-1050507520,1050515647,DE
-1050515648,1050515663,DK
-1050515664,1050522407,DE
+1050507520,1050522407,DE
1050522408,1050522415,CH
1050522416,1050619503,DE
1050619504,1050619511,CH
1050619512,1050621407,DE
1050621408,1050621439,BE
-1050621440,1050625959,DE
-1050625960,1050625967,AT
-1050625968,1050626559,DE
+1050621440,1050626559,DE
1050626560,1050626815,GB
1050626816,1050647431,DE
1050647432,1050647439,NL
@@ -7531,39 +10830,21 @@
1051566080,1051574271,IT
1051574272,1051574623,GB
1051574624,1051574655,GM
-1051574656,1051575999,GB
-1051576000,1051576015,IT
-1051576016,1051577503,GB
-1051577504,1051577519,NL
-1051577520,1051577535,GB
+1051574656,1051577535,GB
1051577536,1051577567,NL
-1051577568,1051577575,BE
-1051577576,1051577583,GB
-1051577584,1051577587,FI
-1051577588,1051577591,GB
-1051577592,1051577599,NL
-1051577600,1051577855,GB
+1051577568,1051577855,GB
1051577856,1051578111,NL
1051578112,1051578143,GB
1051578144,1051578175,NL
-1051578176,1051578239,GB
-1051578240,1051578263,FR
-1051578264,1051578271,GB
-1051578272,1051578279,ES
-1051578280,1051578287,GR
-1051578288,1051578295,GB
-1051578296,1051578303,PL
+1051578176,1051578247,GB
+1051578248,1051578255,FR
+1051578256,1051578303,GB
1051578304,1051578335,NL
-1051578336,1051578343,DE
-1051578344,1051578351,NL
-1051578352,1051578363,GB
-1051578364,1051578367,DE
-1051578368,1051580415,SZ
-1051580416,1051584767,GB
-1051584768,1051585535,MG
-1051585536,1051585599,GB
-1051585600,1051585663,MG
-1051585664,1051590655,GB
+1051578336,1051580535,GB
+1051580536,1051580543,SZ
+1051580544,1051584207,GB
+1051584208,1051584223,BE
+1051584224,1051590655,GB
1051590656,1051702527,ES
1051702528,1051702783,US
1051702784,1051721727,ES
@@ -7581,11 +10862,15 @@
1051852800,1051918335,AT
1051918336,1051919359,PL
1051919360,1051920383,AT
-1051920384,1051922431,PL
-1051922432,1051983871,AT
+1051920384,1051920895,PL
+1051920896,1051949823,AT
+1051949824,1051949951,NL
+1051949952,1051983871,AT
1051983872,1051986687,EU
-1051986688,1051987199,DE
-1051987200,1051991807,EU
+1051986688,1051986943,DE
+1051986944,1051990015,EU
+1051990016,1051991039,DE
+1051991040,1051991807,EU
1051991808,1051991935,DE
1051991936,1051992063,EU
1051992064,1051994639,DE
@@ -7666,7 +10951,9 @@
1052004000,1052004671,EU
1052004672,1052004687,DE
1052004688,1052004703,EU
-1052004704,1052004759,DE
+1052004704,1052004735,DE
+1052004736,1052004751,EU
+1052004752,1052004759,DE
1052004760,1052004767,EU
1052004768,1052004783,DE
1052004784,1052004815,EU
@@ -7681,9 +10968,7 @@
1052005888,1052005911,DE
1052005912,1052006543,EU
1052006544,1052006559,DE
-1052006560,1052006575,EU
-1052006576,1052006607,DE
-1052006608,1052007039,EU
+1052006560,1052007039,EU
1052007040,1052007103,DE
1052007104,1052007431,EU
1052007432,1052007435,DE
@@ -7709,9 +10994,7 @@
1052009472,1052009487,DE
1052009488,1052009503,EU
1052009504,1052009535,DE
-1052009536,1052009599,EU
-1052009600,1052009607,DE
-1052009608,1052010463,EU
+1052009536,1052010463,EU
1052010464,1052010519,DE
1052010520,1052010527,EU
1052010528,1052010559,DE
@@ -7748,10 +11031,10 @@
1052013964,1052014015,EU
1052014016,1052014079,DE
1052014080,1052014111,EU
-1052014112,1052014303,DE
-1052014304,1052014591,EU
-1052014592,1052014623,DE
-1052014624,1052015367,EU
+1052014112,1052014239,DE
+1052014240,1052014271,EU
+1052014272,1052014303,DE
+1052014304,1052015367,EU
1052015368,1052015375,DE
1052015376,1052015423,EU
1052015424,1052015519,DE
@@ -7875,15 +11158,21 @@
1052065792,1052082175,SE
1052082176,1052090367,DE
1052090368,1052098559,PL
-1052098560,1052116991,SE
+1052098560,1052099471,SE
+1052099472,1052099479,NO
+1052099480,1052104095,SE
+1052104096,1052104127,DK
+1052104128,1052116991,SE
1052116992,1052119039,RU
1052119040,1052121087,RO
1052121088,1052129279,RU
1052129280,1052131327,BE
+1052131328,1052133375,UA
1052133376,1052135423,RU
1052135424,1052137471,UA
1052137472,1052139519,RU
1052139520,1052141567,DE
+1052141568,1052143615,PL
1052143616,1052145663,BG
1052145664,1052147711,UA
1052147712,1052151807,RU
@@ -8511,7 +11800,8 @@
1052426328,1052426495,PT
1052426496,1052426511,EU
1052426512,1052426527,FR
-1052426528,1052427263,EU
+1052426528,1052426751,EU
+1052426752,1052427263,NL
1052427264,1052427839,CH
1052427840,1052427855,GB
1052427856,1052427871,IT
@@ -8724,9 +12014,7 @@
1052684608,1052770303,GB
1052770304,1052775711,CH
1052775712,1052775727,DE
-1052775728,1052775759,CH
-1052775760,1052775767,GB
-1052775768,1052777503,CH
+1052775728,1052777503,CH
1052777504,1052777535,IT
1052777536,1052778495,CH
1052778496,1052786687,RU
@@ -8762,31 +12050,31 @@
1053295616,1053296639,AT
1053296640,1053296927,IT
1053296928,1053296991,EU
-1053296992,1053297023,IT
-1053297024,1053297039,EU
+1053296992,1053297027,IT
+1053297028,1053297039,EU
1053297040,1053297055,IT
1053297056,1053297071,EU
-1053297072,1053297087,IT
-1053297088,1053297111,EU
-1053297112,1053297135,IT
-1053297136,1053297143,EU
-1053297144,1053297151,IT
-1053297152,1053298175,EU
+1053297072,1053297135,IT
+1053297136,1053298175,EU
1053298176,1053299199,CH
1053299200,1053299711,EU
-1053299712,1053300159,GB
+1053299712,1053300031,GB
+1053300032,1053300095,EU
+1053300096,1053300103,GB
+1053300104,1053300111,EU
+1053300112,1053300159,GB
1053300160,1053300223,EU
1053300224,1053300735,GB
1053300736,1053300991,CH
1053300992,1053301023,FR
1053301024,1053301039,EU
-1053301040,1053301063,FR
-1053301064,1053301071,EU
+1053301040,1053301055,FR
+1053301056,1053301071,EU
1053301072,1053301135,FR
1053301136,1053301167,EU
-1053301168,1053301183,FR
-1053301184,1053301199,EU
-1053301200,1053301295,FR
+1053301168,1053301279,FR
+1053301280,1053301287,EU
+1053301288,1053301295,FR
1053301296,1053301303,EU
1053301304,1053301359,FR
1053301360,1053301367,EU
@@ -8813,15 +12101,15 @@
1053305952,1053306111,EU
1053306112,1053306879,GR
1053306880,1053307903,EU
-1053307904,1053307951,GB
-1053307952,1053307959,EU
-1053307960,1053308095,GB
-1053308096,1053308159,EU
-1053308160,1053308543,GB
+1053307904,1053307943,GB
+1053307944,1053307959,EU
+1053307960,1053308543,GB
1053308544,1053308671,EU
-1053308672,1053308767,GB
-1053308768,1053308799,EU
-1053308800,1053308863,GB
+1053308672,1053308703,GB
+1053308704,1053308767,EU
+1053308768,1053308831,GB
+1053308832,1053308839,EU
+1053308840,1053308863,GB
1053308864,1053308927,EU
1053308928,1053308991,ZA
1053308992,1053309183,EU
@@ -8840,10 +12128,10 @@
1053312928,1053312959,DK
1053312960,1053313023,EU
1053313024,1053313343,GB
-1053313344,1053313439,EU
-1053313440,1053313599,GB
-1053313600,1053313663,EU
-1053313664,1053313671,GB
+1053313344,1053313407,EU
+1053313408,1053313471,GB
+1053313472,1053313479,EU
+1053313480,1053313671,GB
1053313672,1053313679,EU
1053313680,1053313791,GB
1053313792,1053313919,EU
@@ -8851,7 +12139,9 @@
1053314048,1053314063,EU
1053314064,1053314079,CZ
1053314080,1053315071,EU
-1053315072,1053317119,GB
+1053315072,1053316719,GB
+1053316720,1053316727,EU
+1053316728,1053317119,GB
1053317120,1053317295,ZA
1053317296,1053317375,EU
1053317376,1053317631,GB
@@ -8859,9 +12149,10 @@
1053318144,1053318655,GB
1053318656,1053318911,FI
1053318912,1053318927,EU
-1053318928,1053318951,FI
-1053318952,1053318959,EE
-1053318960,1053318975,EU
+1053318928,1053318935,FI
+1053318936,1053318943,EU
+1053318944,1053318951,FI
+1053318952,1053318975,EU
1053318976,1053319007,FI
1053319008,1053319167,EU
1053319168,1053320191,DE
@@ -8871,7 +12162,8 @@
1053326336,1053326399,BE
1053326400,1053326431,EU
1053326432,1053326447,GB
-1053326448,1053326463,BE
+1053326448,1053326455,EU
+1053326456,1053326463,BE
1053326464,1053326527,EU
1053326528,1053326543,BE
1053326544,1053326559,EU
@@ -8883,8 +12175,8 @@
1053327360,1053327871,EU
1053327872,1053328383,ZA
1053328384,1053328639,EU
-1053328640,1053328799,ZA
-1053328800,1053328895,EU
+1053328640,1053328863,ZA
+1053328864,1053328895,EU
1053328896,1053329087,ZA
1053329088,1053329119,EU
1053329120,1053329135,ZA
@@ -8893,8 +12185,8 @@
1053329152,1053329183,EU
1053329184,1053329279,ZA
1053329280,1053329407,EU
-1053329408,1053329439,ES
-1053329440,1053329503,EU
+1053329408,1053329471,ES
+1053329472,1053329503,EU
1053329504,1053329527,ES
1053329528,1053329631,EU
1053329632,1053329663,ES
@@ -8910,11 +12202,11 @@
1053331712,1053331887,NL
1053331888,1053331903,EU
1053331904,1053331927,NL
-1053331928,1053332223,EU
-1053332224,1053332271,NL
+1053331928,1053331967,EU
+1053331968,1053332271,NL
1053332272,1053332319,EU
-1053332320,1053332415,NL
-1053332416,1053332447,EU
+1053332320,1053332351,NL
+1053332352,1053332447,EU
1053332448,1053332479,NL
1053332480,1053332991,EU
1053332992,1053334015,BE
@@ -8931,9 +12223,10 @@
1053337088,1053337119,ZA
1053337120,1053337127,EU
1053337128,1053337183,ZA
-1053337184,1053337599,EU
-1053337600,1053337631,CH
-1053337632,1053338111,EU
+1053337184,1053337607,EU
+1053337608,1053337631,CH
+1053337632,1053337855,EU
+1053337856,1053338111,ZA
1053338112,1053338623,FI
1053338624,1053338943,NO
1053338944,1053338975,EU
@@ -8958,13 +12251,13 @@
1053341576,1053341695,GB
1053341696,1053343743,EU
1053343744,1053344255,FI
-1053344256,1053344511,EU
-1053344512,1053344767,BG
-1053344768,1053345279,EU
+1053344256,1053345279,EU
1053345280,1053345375,PK
1053345376,1053345407,EU
1053345408,1053345471,PK
-1053345472,1053348639,EU
+1053345472,1053347839,EU
+1053347840,1053348351,NL
+1053348352,1053348639,EU
1053348640,1053348655,PT
1053348656,1053349119,EU
1053349120,1053349631,NL
@@ -8974,23 +12267,21 @@
1053350144,1053350335,IE
1053350336,1053350351,EU
1053350352,1053350359,IE
-1053350360,1053350367,EU
-1053350368,1053350391,IE
+1053350360,1053350375,EU
+1053350376,1053350391,IE
1053350392,1053350399,EU
1053350400,1053350479,BE
1053350480,1053350655,EU
1053350656,1053350911,BE
1053350912,1053351935,EU
1053351936,1053352191,IL
-1053352192,1053353023,EU
-1053353024,1053353031,IE
-1053353032,1053353103,EU
+1053352192,1053353103,EU
1053353104,1053353119,IE
1053353120,1053353135,EU
1053353136,1053353215,IE
1053353216,1053353223,GB
-1053353224,1053353255,IE
-1053353256,1053353263,EU
+1053353224,1053353247,IE
+1053353248,1053353263,EU
1053353264,1053353279,IE
1053353280,1053353983,EU
1053353984,1053354239,IL
@@ -9002,7 +12293,9 @@
1053354752,1053354831,IL
1053354832,1053354855,EU
1053354856,1053354863,IL
-1053354864,1053354911,EU
+1053354864,1053354871,EU
+1053354872,1053354879,IL
+1053354880,1053354911,EU
1053354912,1053355007,IL
1053355008,1053360127,EU
1053360128,1053364223,ES
@@ -9030,7 +12323,6 @@
1053687808,1053702635,DE
1053702636,1053702639,GB
1053702640,1053753343,DE
-1053753344,1053818879,RU
1053818880,1053819391,DE
1053819392,1053819423,EU
1053819424,1053819439,DE
@@ -9049,7 +12341,9 @@
1053824024,1053824127,EU
1053824128,1053824255,NL
1053824256,1053825023,EU
-1053825024,1053826047,ES
+1053825024,1053825791,ES
+1053825792,1053825919,GB
+1053825920,1053826047,ES
1053826048,1053826815,EU
1053826816,1053827327,DE
1053827328,1053827583,BE
@@ -9074,7 +12368,8 @@
1053840448,1053840511,DE
1053840512,1053843199,EU
1053843200,1053843231,DK
-1053843232,1053843711,EU
+1053843232,1053843247,GB
+1053843248,1053843711,EU
1053843712,1053843967,DE
1053843968,1053844223,GB
1053844224,1053844479,DE
@@ -9171,12 +12466,11 @@
1053894744,1053894751,GE
1053894752,1053894783,DE
1053894784,1053894815,IL
-1053894816,1053894831,NL
+1053894816,1053894831,DE
1053894832,1053894847,US
1053894848,1053895423,DE
1053895424,1053895679,GB
-1053895680,1053895935,US
-1053895936,1053896087,DE
+1053895680,1053896087,DE
1053896088,1053896095,US
1053896096,1053896127,GB
1053896128,1053896159,DE
@@ -9202,7 +12496,11 @@
1054130176,1054138367,LT
1054138368,1054146559,AZ
1054146560,1054179327,RU
-1054179328,1054187519,GB
+1054179328,1054180095,GB
+1054180096,1054180351,DE
+1054180352,1054181375,GB
+1054181376,1054186495,DE
+1054186496,1054187519,GB
1054187520,1054195711,BG
1054195712,1054212095,BE
1054212096,1054212519,DE
@@ -9303,8 +12601,8 @@
1054969040,1054978815,DE
1054978816,1054979071,FR
1054979072,1055129599,DE
-1055129600,1055186943,CY
-1055186944,1055194623,GR
+1055129600,1055187027,CY
+1055187028,1055194623,GR
1055194624,1055195135,CY
1055195136,1055196159,EU
1055196160,1055197823,CH
@@ -9427,8 +12725,7 @@
1055253056,1055253087,ES
1055253088,1055256447,EU
1055256448,1055256463,ES
-1055256464,1055260671,EU
-1055260672,1055326207,SE
+1055256464,1055326207,EU
1055326208,1055334399,RU
1055334400,1055342591,IE
1055342592,1055358975,RO
@@ -9472,9 +12769,7 @@
1055981568,1055989759,IT
1055989760,1055992310,DE
1055992311,1055992318,CH
-1055992319,1055995135,DE
-1055995136,1055995391,NL
-1055995392,1055997951,DE
+1055992319,1055997951,DE
1055997952,1056014335,FR
1056014336,1056022527,EG
1056022528,1056030719,GB
@@ -9494,7 +12789,11 @@
1056244480,1056251903,CH
1056251904,1056260095,RU
1056260096,1056276479,CZ
-1056276480,1056374783,DE
+1056276480,1056286511,DE
+1056286512,1056286519,A2
+1056286520,1056286591,DE
+1056286592,1056286655,A2
+1056286656,1056374783,DE
1056374784,1056440319,SE
1056440320,1056473087,TR
1056473088,1056505087,FI
@@ -9507,6 +12806,7 @@
1056505856,1056514047,PT
1056514048,1056522239,IT
1056522240,1056538623,AT
+1056538624,1056546815,RU
1056546816,1056555007,NO
1056555008,1056571391,GB
1056571392,1056669695,NL
@@ -9705,7 +13005,9 @@
1064445184,1064445439,PK
1064445440,1064650751,US
1064650752,1064651775,EC
-1064651776,1064973055,US
+1064651776,1064769023,US
+1064769024,1064769535,A2
+1064769536,1064973055,US
1064973056,1064973183,AU
1064973184,1065049471,US
1065049472,1065049535,CA
@@ -9721,55 +13023,27 @@
1065611264,1065615359,PR
1065615360,1065811967,US
1065811968,1065820159,CA
-1065824256,1065873407,US
+1065820160,1065873407,US
1065873408,1065877503,PR
1065877504,1065906175,US
1065906176,1065908223,KY
1065908224,1065926815,US
1065926816,1065926831,CA
-1065926832,1066139647,US
-1066203904,1066204031,US
-1066401792,1066404607,US
-1066404608,1066404863,A2
-1066404864,1066475263,US
-1066475264,1066475519,CA
-1066475520,1066584063,US
+1065926832,1066311679,US
+1066311680,1066315775,CA
+1066315776,1066332159,US
+1066332160,1066336255,CA
+1066336256,1066344447,US
+1066352640,1066369023,JM
+1066369024,1066584063,US
1066584064,1066586111,PE
1066586112,1066604927,US
1066604928,1066604959,CA
-1066604960,1066627335,US
-1066627336,1066627343,CA
-1066627344,1066718559,US
-1066718560,1066718591,PR
-1066718592,1066736447,US
-1066736448,1066736479,NO
-1066736480,1066828095,US
-1066828096,1066828127,HK
-1066828128,1066828151,US
-1066828152,1066828159,CN
-1066828160,1066828255,US
-1066828256,1066828287,HK
-1066828288,1066829311,US
-1066829312,1066829567,HK
-1066829568,1066830079,US
-1066830080,1066830111,SI
-1066830112,1066830207,US
-1066830208,1066830239,SG
-1066830240,1066830271,US
-1066830272,1066830591,SG
-1066830592,1066830799,US
-1066830800,1066830807,SG
-1066830808,1066830815,US
-1066830816,1066830847,SG
-1066830848,1066831039,US
-1066831040,1066831071,JP
-1066831072,1066832527,US
-1066832528,1066832543,CA
-1066832544,1066834607,US
-1066834608,1066834623,IS
-1066834624,1066898783,US
-1066898784,1066898815,CO
-1066898816,1067473471,US
+1066604960,1066606295,US
+1066606296,1066606303,GB
+1066606304,1066831071,US
+1066831072,1066831087,JP
+1066831088,1067473471,US
1067473472,1067473535,CA
1067473536,1067474751,US
1067474752,1067474767,NL
@@ -9934,7 +13208,9 @@
1071309696,1071309727,HK
1071309728,1071318783,US
1071318784,1071319039,IN
-1071319040,1071362079,US
+1071319040,1071321487,US
+1071321488,1071321503,HK
+1071321504,1071362079,US
1071362080,1071362111,HK
1071362112,1071362207,US
1071362208,1071362239,HK
@@ -10012,7 +13288,8 @@
1072928128,1072928255,US
1072928256,1072928263,CA
1072928264,1072928287,US
-1072928288,1072928383,CA
+1072928288,1072928319,CA
+1072928320,1072928383,GA
1072928384,1072928447,US
1072928448,1072929535,CA
1072929536,1072929791,US
@@ -10024,7 +13301,8 @@
1072931584,1072931839,SY
1072931840,1072932607,CA
1072932608,1072932863,NG
-1072932864,1072934399,CA
+1072932864,1072933887,US
+1072933888,1072934399,CA
1072934400,1072934655,US
1072934656,1072934783,CA
1072934784,1072934847,AU
@@ -10054,15 +13332,13 @@
1073022976,1073025791,HN
1073025792,1073026047,NI
1073026048,1073026303,US
-1073026304,1073026431,DO
-1073026432,1073027071,US
+1073026304,1073026559,DO
+1073026560,1073027071,PR
1073027072,1073028351,NI
1073028352,1073028607,US
1073028608,1073029119,GD
1073029120,1073031167,PR
-1073031168,1073031231,US
-1073031232,1073031263,AN
-1073031264,1073031423,US
+1073031168,1073031423,US
1073031424,1073031935,AN
1073031936,1073033215,US
1073033216,1073035263,AN
@@ -10075,7 +13351,11 @@
1073038336,1073039359,US
1073039360,1073041407,GT
1073041408,1073043455,CO
-1073043456,1073045503,US
+1073043456,1073043967,PR
+1073043968,1073044735,US
+1073044736,1073044991,PR
+1073044992,1073045247,US
+1073045248,1073045503,PR
1073045504,1073047551,CO
1073047552,1073049599,PR
1073049600,1073053695,BS
@@ -10237,7 +13517,11 @@
1074229248,1074241535,CA
1074241536,1074249791,US
1074249792,1074249807,BB
-1074249808,1074397439,US
+1074249808,1074371583,US
+1074371584,1074372095,A1
+1074372096,1074375935,US
+1074375936,1074376191,A1
+1074376192,1074397439,US
1074397440,1074399039,CA
1074399040,1074399231,US
1074399232,1074408319,CA
@@ -10259,9 +13543,7 @@
1074675312,1074675327,NO
1074675328,1074675679,US
1074675680,1074675687,GB
-1074675688,1074677759,US
-1074677760,1074678271,BG
-1074678272,1074680623,US
+1074675688,1074680623,US
1074680624,1074680639,CA
1074680640,1074680703,US
1074680704,1074680719,IL
@@ -10339,7 +13621,9 @@
1074962432,1074970623,CA
1074970624,1075117287,US
1075117288,1075117311,IN
-1075117312,1075421183,US
+1075117312,1075265535,US
+1075265536,1075269631,KR
+1075269632,1075421183,US
1075421184,1075429375,CA
1075429376,1075478527,US
1075478528,1075479103,CA
@@ -10350,9 +13634,7 @@
1075479568,1075479583,US
1075479584,1075479607,CA
1075479608,1075479615,US
-1075479616,1075484047,CA
-1075484048,1075484063,US
-1075484064,1075484263,CA
+1075479616,1075484263,CA
1075484264,1075484271,US
1075484272,1075494911,CA
1075494912,1075513151,US
@@ -10378,7 +13660,9 @@
1075577272,1075577279,GB
1075577280,1075577311,NO
1075577312,1075577599,GB
-1075577600,1075577775,NO
+1075577600,1075577615,NO
+1075577616,1075577623,GB
+1075577624,1075577775,NO
1075577776,1075577791,GB
1075577792,1075577855,NO
1075577856,1075578111,GB
@@ -10486,8 +13770,8 @@
1075972352,1075973887,US
1075973888,1075974143,CA
1075974144,1075975167,US
-1075975168,1075975423,CA
-1075975424,1075976191,US
+1075975168,1075976175,CA
+1075976176,1075976191,US
1075976192,1075976511,CA
1075976512,1075976543,US
1075976544,1075976647,CA
@@ -10514,7 +13798,7 @@
1075982592,1075982599,US
1075982600,1075982607,NZ
1075982608,1075982655,CA
-1075982656,1075982671,US
+1075982656,1075982671,MX
1075982672,1075982687,CA
1075982688,1075982703,US
1075982704,1075982751,CA
@@ -10529,27 +13813,14 @@
1075983232,1075984383,CA
1075984384,1075984823,US
1075984824,1075984831,CA
-1075984832,1075985415,US
-1075985416,1075985423,CR
-1075985424,1075985919,US
-1075985920,1075986431,CA
-1075986432,1075986687,US
-1075986688,1075986943,CA
-1075986944,1075987199,US
-1075987200,1075987455,CA
-1075987456,1075987711,US
-1075987712,1075987951,CA
-1075987952,1075988223,US
-1075988224,1075988287,CA
-1075988288,1075988319,US
-1075988320,1075988479,CA
-1075988480,1075988735,US
-1075988736,1075988991,CA
-1075988992,1075989119,US
-1075989120,1075989231,CA
-1075989232,1075989247,US
+1075984832,1075985919,US
+1075985920,1075989055,CA
+1075989056,1075989119,US
+1075989120,1075989247,CA
1075989248,1075989311,FI
-1075989312,1075989359,CA
+1075989312,1075989327,CA
+1075989328,1075989335,US
+1075989336,1075989359,CA
1075989360,1075989375,US
1075989376,1075989455,CA
1075989456,1075989471,US
@@ -10564,11 +13835,16 @@
1075992320,1075992447,GB
1075992448,1075993087,US
1075993088,1075993103,CA
-1075993104,1075995007,US
+1075993104,1075994607,US
+1075994608,1075994623,BE
+1075994624,1075995007,CA
1075995008,1075995023,VG
-1075995024,1075995047,US
-1075995048,1075995055,CA
-1075995056,1075995103,US
+1075995024,1075995039,US
+1075995040,1075995055,CA
+1075995056,1075995071,US
+1075995072,1075995079,MX
+1075995080,1075995087,CA
+1075995088,1075995103,US
1075995104,1075995263,CA
1075995264,1075995295,US
1075995296,1075995326,CA
@@ -10579,9 +13855,7 @@
1075995504,1075995519,MX
1075995520,1075995567,CA
1075995568,1075995583,CN
-1075995584,1075995647,CA
-1075995648,1075995903,US
-1075995904,1075996671,CA
+1075995584,1075996671,CA
1075996672,1075996751,US
1075996752,1075996767,CA
1075996768,1075996799,BV
@@ -10613,7 +13887,9 @@
1076003072,1076003327,CA
1076003328,1076003359,US
1076003360,1076003375,CA
-1076003376,1076003519,US
+1076003376,1076003391,US
+1076003392,1076003407,CA
+1076003408,1076003519,US
1076003520,1076004383,CA
1076004384,1076004423,US
1076004424,1076004431,CA
@@ -10640,9 +13916,7 @@
1076005280,1076005311,US
1076005312,1076005319,CA
1076005320,1076005375,US
-1076005376,1076005727,CA
-1076005728,1076005759,US
-1076005760,1076005887,CA
+1076005376,1076005887,CA
1076005888,1076006015,US
1076006016,1076006047,CA
1076006048,1076006079,US
@@ -10658,11 +13932,9 @@
1076007168,1076007183,US
1076007184,1076007247,CA
1076007248,1076007263,US
-1076007264,1076007679,CA
-1076007680,1076007935,US
-1076007936,1076007967,CA
-1076007968,1076007983,US
-1076007984,1076008063,CA
+1076007264,1076007947,CA
+1076007948,1076007951,US
+1076007952,1076008063,CA
1076008064,1076008191,US
1076008192,1076009631,CA
1076009632,1076009639,US
@@ -10672,10 +13944,12 @@
1076009696,1076009711,US
1076009712,1076009887,CA
1076009888,1076009919,US
-1076009920,1076010687,CA
-1076010688,1076010695,US
-1076010696,1076011007,CA
-1076011008,1076024307,US
+1076009920,1076011007,CA
+1076011008,1076012236,US
+1076012237,1076012237,IN
+1076012238,1076013094,US
+1076013095,1076013095,IN
+1076013096,1076024307,US
1076024308,1076024315,CA
1076024316,1076026023,US
1076026024,1076026031,CA
@@ -10688,9 +13962,7 @@
1076026976,1076027031,US
1076027032,1076027263,CA
1076027264,1076027295,US
-1076027296,1076027391,CA
-1076027392,1076027399,US
-1076027400,1076027407,CA
+1076027296,1076027407,CA
1076027408,1076027423,US
1076027424,1076027711,CA
1076027712,1076027727,US
@@ -10710,7 +13982,9 @@
1076029224,1076029231,DM
1076029232,1076029239,CA
1076029240,1076029247,US
-1076029248,1076029415,CA
+1076029248,1076029311,CA
+1076029312,1076029319,GB
+1076029320,1076029415,CA
1076029416,1076029422,US
1076029423,1076029430,CA
1076029431,1076029439,US
@@ -10789,39 +14063,34 @@
1076049472,1076049503,PR
1076049504,1076049919,US
1076049920,1076050175,IL
-1076050176,1076166655,US
+1076050176,1076174847,US
+1076174848,1076178943,BM
+1076178944,1076183039,US
1076183040,1076183071,IN
1076183072,1076183231,US
1076183232,1076183295,CA
-1076183296,1076183807,US
+1076183296,1076183423,US
+1076183424,1076183487,IN
+1076183488,1076183807,US
1076183808,1076184063,CA
1076184064,1076184095,VE
-1076184096,1076184127,US
-1076184128,1076184159,VE
+1076184096,1076184159,US
1076184160,1076184191,PK
1076184192,1076184223,IN
1076184224,1076184255,US
1076184256,1076184287,BE
1076184288,1076184319,CA
1076184320,1076184575,US
-1076184576,1076184639,CA
-1076184640,1076184703,SG
-1076184704,1076184831,CA
+1076184576,1076184831,CA
1076184832,1076184895,US
1076184896,1076184927,FR
-1076184928,1076184959,US
-1076184960,1076184991,VE
-1076184992,1076185023,US
-1076185024,1076185055,GB
-1076185056,1076185215,US
+1076184928,1076185215,US
1076185216,1076185343,CA
1076185344,1076185439,US
1076185440,1076185471,IT
1076185472,1076185503,US
1076185504,1076185535,DO
-1076185536,1076185599,US
-1076185600,1076185855,MY
-1076185856,1076185919,US
+1076185536,1076185919,US
1076185920,1076185951,CA
1076185952,1076185983,US
1076185984,1076186015,PK
@@ -10854,15 +14123,16 @@
1076189344,1076189407,US
1076189408,1076189439,IN
1076189440,1076189695,US
-1076189696,1076189951,CA
+1076189696,1076189759,IN
+1076189760,1076189823,CA
+1076189824,1076189887,US
+1076189888,1076189951,CA
1076189952,1076190079,US
1076190080,1076190143,IN
1076190144,1076190175,BE
1076190176,1076190207,IN
1076190208,1076190463,CA
-1076190464,1076190655,US
-1076190656,1076190719,CA
-1076190720,1076190783,US
+1076190464,1076190783,US
1076190784,1076190815,CA
1076190816,1076190847,IN
1076190848,1076190913,US
@@ -10870,13 +14140,12 @@
1076190946,1076191231,US
1076191232,1076191487,CA
1076191488,1076192063,US
-1076192064,1076192191,CA
+1076192064,1076192127,IN
+1076192128,1076192191,CA
1076192192,1076192255,US
1076192256,1076192383,BE
-1076192384,1076192639,US
-1076192640,1076192767,CA
-1076192768,1076192831,IN
-1076192832,1076192895,KR
+1076192384,1076192767,US
+1076192768,1076192895,IN
1076192896,1076193055,US
1076193056,1076193087,AU
1076193088,1076193151,US
@@ -10906,8 +14175,7 @@
1076196416,1076196479,US
1076196480,1076196511,FR
1076196512,1076196575,AT
-1076196576,1076196607,CA
-1076196608,1076196641,US
+1076196576,1076196641,US
1076196642,1076196671,BE
1076196672,1076196703,US
1076196704,1076196735,FR
@@ -11317,9 +14585,7 @@
1076764672,1076765183,A1
1076765184,1076765439,CA
1076765440,1076765695,A1
-1076765696,1076766783,CA
-1076766784,1076766847,A1
-1076766848,1076767231,CA
+1076765696,1076767231,CA
1076767232,1076767743,A1
1076767744,1076768511,CA
1076768512,1076768767,A1
@@ -11648,9 +14914,7 @@
1077452800,1077460991,JP
1077460992,1077469183,US
1077469184,1077477375,CA
-1077477376,1077489855,US
-1077489856,1077489919,GB
-1077489920,1077506047,US
+1077477376,1077506047,US
1077506048,1077510143,LS
1077510144,1077561327,US
1077561328,1077561343,AR
@@ -11689,13 +14953,17 @@
1077839104,1077839119,ES
1077839120,1077839543,US
1077839544,1077839551,ES
-1077839552,1077841151,US
+1077839552,1077840383,US
+1077840384,1077840511,A1
+1077840512,1077841151,US
1077841152,1077841407,GB
1077841408,1077841671,US
1077841672,1077841679,ES
1077841680,1077843719,US
1077843720,1077843727,CN
-1077843728,1077846271,US
+1077843728,1077844383,US
+1077844384,1077844391,A1
+1077844392,1077846271,US
1077846272,1077846527,JP
1077846528,1077848575,US
1077848576,1077848831,GR
@@ -11705,9 +14973,7 @@
1077851472,1077851487,HK
1077851488,1077852671,US
1077852672,1077852927,CA
-1077852928,1077853183,US
-1077853184,1077853439,IT
-1077853440,1077856015,US
+1077852928,1077856015,US
1077856016,1077856031,IT
1077856032,1077856127,US
1077856128,1077856191,AU
@@ -11726,10 +14992,8 @@
1077859952,1077859967,US
1077859968,1077860095,IT
1077860096,1077861119,US
-1077861120,1077861631,IT
-1077861632,1077862911,US
-1077862912,1077863167,IT
-1077863168,1077863207,US
+1077861120,1077861375,IT
+1077861376,1077863207,US
1077863208,1077863215,NG
1077863216,1077864703,US
1077864704,1077864719,IT
@@ -11749,7 +15013,10 @@
1077870336,1077870591,CN
1077870592,1077936137,US
1077936138,1077936141,CN
-1077936142,1077936169,US
+1077936142,1077936149,US
+1077936150,1077936150,NL
+1077936151,1077936151,GB
+1077936152,1077936169,US
1077936170,1077936173,CA
1077936174,1077936177,GB
1077936178,1077936189,US
@@ -11766,7 +15033,7 @@
1077936258,1077936261,AU
1077936262,1077936265,IN
1077936266,1077936273,US
-1077936274,1077936277,BR
+1077936274,1077936277,ES
1077936278,1077936295,US
1077936296,1077936296,CA
1077936297,1077936297,US
@@ -11779,7 +15046,7 @@
1077936322,1077936325,GB
1077936326,1077936329,MX
1077936330,1077936345,US
-1077936346,1077936349,PE
+1077936346,1077936349,DO
1077936350,1077936351,IN
1077936352,1077936365,US
1077936366,1077936369,NO
@@ -11789,13 +15056,15 @@
1077936382,1077936401,US
1077936402,1077936409,GB
1077936410,1077936413,CO
-1077936414,1077936421,US
+1077936414,1077936417,AU
+1077936418,1077936421,US
1077936422,1077936422,CA
1077936423,1077936426,US
1077936427,1077936429,TH
-1077936430,1077936437,US
+1077936430,1077936433,US
+1077936434,1077936437,CZ
1077936438,1077936441,NO
-1077936442,1077936445,TH
+1077936442,1077936445,US
1077936446,1077936449,TW
1077936450,1077936453,US
1077936454,1077936457,PT
@@ -11810,8 +15079,7 @@
1077936478,1077936485,US
1077936486,1077936489,TR
1077936490,1077936493,FR
-1077936494,1077936497,CN
-1077936498,1077936501,US
+1077936494,1077936501,US
1077936502,1077936505,AR
1077936506,1077936513,US
1077936514,1077936517,BR
@@ -11830,109 +15098,593 @@
1077936598,1077936601,CA
1077936602,1077936605,TH
1077936606,1077936609,JO
-1077936610,1077936621,US
+1077936610,1077936613,US
+1077936614,1077936617,UY
+1077936618,1077936621,US
1077936622,1077936622,AU
-1077936623,1077936626,US
-1077936627,1077936630,CH
+1077936623,1077936630,US
1077936631,1077936634,PE
1077936635,1077936638,CA
1077936639,1077936645,US
1077936646,1077936649,HK
-1077936650,1077936653,CA
-1077936654,1077936667,US
-1077936668,1077936671,CA
-1077936672,1077936679,US
-1077936680,1077936683,TH
-1077936684,1077936684,RO
-1077936685,1077936691,US
-1077936692,1077936695,IT
-1077936696,1077936699,US
-1077936700,1077936703,TH
-1077936704,1077936742,US
-1077936743,1077936743,BE
-1077936744,1077936747,IN
-1077936748,1077936759,US
-1077936760,1077936763,AU
-1077936764,1077936767,US
-1077936768,1077936777,AU
-1077936778,1077936789,US
-1077936790,1077936793,NG
-1077936794,1077936797,AU
-1077936798,1077936801,SI
-1077936802,1077936805,AU
-1077936806,1077936814,US
-1077936815,1077936818,BR
+1077936650,1077936695,US
+1077936696,1077936699,OM
+1077936700,1077936759,US
+1077936760,1077936763,GB
+1077936764,1077936771,US
+1077936772,1077936775,IT
+1077936776,1077936818,US
1077936819,1077936822,RS
-1077936823,1077936826,LV
-1077936827,1077936834,US
-1077936835,1077936838,CL
-1077936839,1077936842,TH
-1077936843,1077936846,US
+1077936823,1077936834,US
+1077936835,1077936838,VE
+1077936839,1077936846,US
1077936847,1077936850,PK
-1077936851,1077936854,GB
+1077936851,1077936854,US
1077936855,1077936859,IN
1077936860,1077936879,US
1077936880,1077936883,IT
-1077936884,1077936887,CO
-1077936888,1077938949,US
+1077936884,1077936891,US
+1077936892,1077936892,OM
+1077936893,1077936913,US
+1077936914,1077936917,ES
+1077936918,1077936921,ID
+1077936922,1077936945,US
+1077936946,1077936949,GB
+1077936950,1077936957,US
+1077936958,1077936961,MA
+1077936962,1077936965,TR
+1077936966,1077936969,SE
+1077936970,1077936981,US
+1077936982,1077936985,AR
+1077936986,1077936989,ES
+1077936990,1077937005,US
+1077937006,1077937007,CA
+1077937008,1077937015,US
+1077937016,1077937019,CA
+1077937020,1077937023,GB
+1077937024,1077937027,DE
+1077937028,1077937047,US
+1077937048,1077937051,BZ
+1077937052,1077937067,US
+1077937068,1077937071,GB
+1077937072,1077937079,US
+1077937080,1077937083,SE
+1077937084,1077937087,US
+1077937088,1077937088,BE
+1077937089,1077937089,CA
+1077937090,1077937093,IT
+1077937094,1077937105,US
+1077937106,1077937109,CA
+1077937110,1077937129,US
+1077937130,1077937133,CA
+1077937134,1077937137,NG
+1077937138,1077937145,US
+1077937146,1077937149,CA
+1077937150,1077937157,US
+1077937158,1077937161,TR
+1077937162,1077937165,NI
+1077937166,1077937180,US
+1077937181,1077937184,SA
+1077937185,1077937196,US
+1077937197,1077937200,LK
+1077937201,1077937204,GB
+1077937205,1077937208,AT
+1077937209,1077937212,US
+1077937213,1077937214,CA
+1077937215,1077937222,US
+1077937223,1077937226,CA
+1077937227,1077937230,JM
+1077937231,1077937235,US
+1077937236,1077937239,JO
+1077937240,1077937260,US
+1077937261,1077937269,EE
+1077937270,1077937273,LV
+1077937274,1077937289,US
+1077937290,1077937293,GF
+1077937294,1077937297,US
+1077937298,1077937301,GB
+1077937302,1077937305,US
+1077937306,1077937309,ES
+1077937310,1077937335,US
+1077937336,1077937349,GB
+1077937350,1077937353,CA
+1077937354,1077937357,US
+1077937358,1077937361,CA
+1077937362,1077937365,US
+1077937366,1077937369,AR
+1077937370,1077937394,CA
+1077937395,1077937398,CN
+1077937399,1077937402,MX
+1077937403,1077937417,US
+1077937418,1077937421,IN
+1077937422,1077937429,US
+1077937430,1077937433,TH
+1077937434,1077937437,GB
+1077937438,1077937441,CA
+1077937442,1077937445,US
+1077937446,1077937447,ES
+1077937448,1077937449,US
+1077937450,1077937453,GR
+1077937454,1077937457,SA
+1077937458,1077937461,GB
+1077937462,1077937474,US
+1077937475,1077937478,DK
+1077937479,1077937482,MX
+1077937483,1077937484,GB
+1077937485,1077937485,LK
+1077937486,1077937502,US
+1077937503,1077937506,GB
+1077937507,1077937510,CH
+1077937511,1077937514,CR
+1077937515,1077937531,US
+1077937532,1077937535,IN
+1077937536,1077937539,ES
+1077937540,1077937547,AT
+1077937548,1077937571,US
+1077937572,1077937575,CY
+1077937576,1077937577,GB
+1077937578,1077937597,US
+1077937598,1077937601,IN
+1077937602,1077937609,US
+1077937610,1077937613,NZ
+1077937614,1077937617,US
+1077937618,1077937621,IN
+1077937622,1077937625,GB
+1077937626,1077937629,IT
+1077937630,1077937678,US
+1077937679,1077937682,ZA
+1077937683,1077937686,US
+1077937687,1077937690,IN
+1077937691,1077937702,US
+1077937703,1077937706,PK
+1077937707,1077937710,RS
+1077937711,1077937714,AN
+1077937715,1077937718,US
+1077937719,1077937722,IN
+1077937723,1077937726,AU
+1077937727,1077937730,SG
+1077937731,1077937734,US
+1077937735,1077937738,BA
+1077937739,1077937742,IL
+1077937743,1077937750,US
+1077937751,1077937754,AU
+1077937755,1077937758,US
+1077937759,1077937762,NL
+1077937763,1077937766,US
+1077937767,1077937770,RU
+1077937771,1077937782,US
+1077937783,1077937786,GR
+1077937787,1077937790,GB
+1077937791,1077937802,US
+1077937803,1077937806,BE
+1077937807,1077937822,US
+1077937823,1077937826,GB
+1077937827,1077937846,US
+1077937847,1077937850,TH
+1077937851,1077937854,US
+1077937855,1077937866,TH
+1077937867,1077937870,GB
+1077937871,1077937878,US
+1077937879,1077937882,GB
+1077937883,1077937886,US
+1077937887,1077937890,GR
+1077937891,1077937902,US
+1077937903,1077937906,IN
+1077937907,1077937933,US
+1077937934,1077937937,IT
+1077937938,1077937941,US
+1077937942,1077937945,NO
+1077937946,1077937949,MY
+1077937950,1077937953,CL
+1077937954,1077937963,US
+1077937964,1077937967,NO
+1077937968,1077937975,US
+1077937976,1077937979,TH
+1077937980,1077937983,CN
+1077937984,1077938003,US
+1077938004,1077938007,TH
+1077938008,1077938011,US
+1077938012,1077938021,GB
+1077938022,1077938025,US
+1077938026,1077938029,FR
+1077938030,1077938033,US
+1077938034,1077938037,SA
+1077938038,1077938041,AU
+1077938042,1077938045,US
+1077938046,1077938049,RU
+1077938050,1077938053,US
+1077938054,1077938057,AU
+1077938058,1077938073,US
+1077938074,1077938077,CN
+1077938078,1077938081,US
+1077938082,1077938085,IN
+1077938086,1077938089,US
+1077938090,1077938093,CA
+1077938094,1077938121,US
+1077938122,1077938125,DZ
+1077938126,1077938129,IN
+1077938130,1077938133,ID
+1077938134,1077938137,CA
+1077938138,1077938141,GB
+1077938142,1077938145,CA
+1077938146,1077938149,US
+1077938150,1077938153,IN
+1077938154,1077938157,AR
+1077938158,1077938185,US
+1077938186,1077938189,PH
+1077938190,1077938201,US
+1077938202,1077938205,CA
+1077938206,1077938209,AR
+1077938210,1077938221,US
+1077938222,1077938225,IN
+1077938226,1077938233,US
+1077938234,1077938237,AR
+1077938238,1077938258,US
+1077938259,1077938262,PE
+1077938263,1077938266,CA
+1077938267,1077938269,GB
+1077938270,1077938277,US
+1077938278,1077938281,GB
+1077938282,1077938283,DE
+1077938284,1077938284,CH
+1077938285,1077938288,CA
+1077938289,1077938296,GB
+1077938297,1077938301,US
+1077938302,1077938305,GB
+1077938306,1077938309,US
+1077938310,1077938313,TH
+1077938314,1077938321,US
+1077938322,1077938325,GB
+1077938326,1077938329,PK
+1077938330,1077938333,US
+1077938334,1077938337,MX
+1077938338,1077938345,US
+1077938346,1077938349,SA
+1077938350,1077938357,US
+1077938358,1077938361,ID
+1077938362,1077938365,US
+1077938366,1077938372,IN
+1077938373,1077938376,DK
+1077938377,1077938380,IL
+1077938381,1077938384,LT
+1077938385,1077938396,US
+1077938397,1077938400,CA
+1077938401,1077938404,US
+1077938405,1077938408,IT
+1077938409,1077938412,US
+1077938413,1077938416,PT
+1077938417,1077938426,US
+1077938427,1077938430,SE
+1077938431,1077938437,US
+1077938438,1077938441,PE
+1077938442,1077938445,US
+1077938446,1077938446,BE
+1077938447,1077938490,US
+1077938491,1077938494,MT
+1077938495,1077938502,US
+1077938503,1077938506,ES
+1077938507,1077938510,DK
+1077938511,1077938529,US
+1077938530,1077938533,NZ
+1077938534,1077938537,CA
+1077938538,1077938541,ES
+1077938542,1077938545,CY
+1077938546,1077938551,US
+1077938552,1077938552,ES
+1077938553,1077938570,US
+1077938571,1077938571,NL
+1077938572,1077938572,US
+1077938573,1077938576,CO
+1077938577,1077938580,US
+1077938581,1077938584,CA
+1077938585,1077938588,US
+1077938589,1077938592,MX
+1077938593,1077938596,US
+1077938597,1077938600,DO
+1077938601,1077938630,US
+1077938631,1077938644,IN
+1077938645,1077938648,US
+1077938649,1077938652,CA
+1077938653,1077938656,CN
+1077938657,1077938660,RO
+1077938661,1077938664,TR
+1077938665,1077938668,CA
+1077938669,1077938672,US
+1077938673,1077938676,GB
+1077938677,1077938680,IN
+1077938681,1077938702,US
+1077938703,1077938706,ID
+1077938707,1077938734,GB
+1077938735,1077938735,PK
+1077938736,1077938739,EG
+1077938740,1077938749,NO
+1077938750,1077938750,NL
+1077938751,1077938765,US
+1077938766,1077938769,CN
+1077938770,1077938777,US
+1077938778,1077938781,RO
+1077938782,1077938785,US
+1077938786,1077938789,GR
+1077938790,1077938793,CA
+1077938794,1077938797,IE
+1077938798,1077938801,SG
+1077938802,1077938805,US
+1077938806,1077938809,DK
+1077938810,1077938813,HK
+1077938814,1077938829,US
+1077938830,1077938831,ES
+1077938832,1077938835,CA
+1077938836,1077938848,US
+1077938849,1077938852,IT
+1077938853,1077938856,ES
+1077938857,1077938860,EE
+1077938861,1077938867,IN
+1077938868,1077938871,CA
+1077938872,1077938887,US
+1077938888,1077938891,VI
+1077938892,1077938895,SA
+1077938896,1077938927,CA
+1077938928,1077938931,US
+1077938932,1077938935,MY
+1077938936,1077938949,US
1077938950,1077938969,CA
-1077938970,1077939209,US
+1077938970,1077938981,US
+1077938982,1077938982,NL
+1077938983,1077938983,US
+1077938984,1077938988,CA
+1077938989,1077938992,ZA
+1077938993,1077939005,US
+1077939006,1077939009,BE
+1077939010,1077939013,ID
+1077939014,1077939017,GB
+1077939018,1077939021,TH
+1077939022,1077939025,GB
+1077939026,1077939028,TH
+1077939029,1077939032,US
+1077939033,1077939036,IE
+1077939037,1077939044,US
+1077939045,1077939048,IN
+1077939049,1077939060,US
+1077939061,1077939064,IE
+1077939065,1077939065,TH
+1077939066,1077939069,CA
+1077939070,1077939078,US
+1077939079,1077939082,IN
+1077939083,1077939086,CA
+1077939087,1077939090,ES
+1077939091,1077939099,US
+1077939100,1077939103,ID
+1077939104,1077939107,PS
+1077939108,1077939111,GB
+1077939112,1077939127,US
+1077939128,1077939131,CA
+1077939132,1077939135,US
+1077939136,1077939139,IN
+1077939140,1077939189,US
+1077939190,1077939193,CA
+1077939194,1077939209,US
1077939210,1077939210,BE
-1077939211,1077939461,US
-1077939462,1077939465,CA
-1077939466,1077939725,US
+1077939211,1077939218,US
+1077939219,1077939219,NL
+1077939220,1077939223,CA
+1077939224,1077939228,BR
+1077939229,1077939240,US
+1077939241,1077939244,NL
+1077939245,1077939251,US
+1077939252,1077939255,BR
+1077939256,1077939259,FR
+1077939260,1077939263,US
+1077939264,1077939267,MY
+1077939268,1077939284,US
+1077939285,1077939288,ES
+1077939289,1077939304,US
+1077939305,1077939308,GB
+1077939309,1077939321,US
+1077939322,1077939329,CA
+1077939330,1077939342,US
+1077939343,1077939346,ID
+1077939347,1077939350,US
+1077939351,1077939354,IN
+1077939355,1077939358,GB
+1077939359,1077939362,IN
+1077939363,1077939375,US
+1077939376,1077939379,AE
+1077939380,1077939383,US
+1077939384,1077939387,AU
+1077939388,1077939391,PK
+1077939392,1077939395,US
+1077939396,1077939399,SE
+1077939400,1077939410,US
+1077939411,1077939414,CN
+1077939415,1077939415,US
+1077939416,1077939423,BE
+1077939424,1077939439,US
+1077939440,1077939443,IS
+1077939444,1077939447,US
+1077939448,1077939451,IN
+1077939452,1077939491,US
+1077939492,1077939495,GB
+1077939496,1077939523,US
+1077939524,1077939533,CA
+1077939534,1077939569,US
+1077939570,1077939574,OM
+1077939575,1077939625,US
+1077939626,1077939630,UY
+1077939631,1077939634,GB
+1077939635,1077939644,US
+1077939645,1077939648,GR
+1077939649,1077939652,IE
+1077939653,1077939725,US
1077939726,1077939727,DE
-1077939728,1077939735,US
-1077939736,1077939739,IN
-1077939740,1077939743,MY
-1077939744,1077939747,CA
-1077939748,1077939751,US
-1077939752,1077939755,BZ
-1077939756,1077939776,US
-1077939777,1077939780,CA
-1077939781,1077939784,GB
-1077939785,1077939973,US
+1077939728,1077939790,US
+1077939791,1077939794,PE
+1077939795,1077939823,US
+1077939824,1077939827,BR
+1077939828,1077939837,PT
+1077939838,1077939895,US
+1077939896,1077939899,GB
+1077939900,1077939959,US
+1077939960,1077939963,CA
+1077939964,1077939973,US
1077939974,1077939977,CL
1077939978,1077939981,US
1077939982,1077939985,MU
-1077939986,1077939993,US
-1077939994,1077939997,CN
+1077939986,1077939997,US
1077939998,1077940001,GB
1077940002,1077940005,EG
-1077940006,1077940009,US
-1077940010,1077940013,IN
-1077940014,1077940060,US
-1077940061,1077940068,GB
-1077940069,1077940072,US
-1077940073,1077940076,TH
-1077940077,1077940089,US
-1077940090,1077940097,GB
-1077940098,1077940099,DE
-1077940100,1077940101,US
-1077940102,1077940105,IN
-1077940106,1077940109,TR
-1077940110,1077940113,CA
-1077940114,1077940125,US
-1077940126,1077940129,LV
-1077940130,1077940133,US
-1077940134,1077940137,GB
-1077940138,1077940146,US
-1077940147,1077940150,EG
-1077940151,1077940174,US
-1077940175,1077940178,GB
-1077940179,1077940182,US
-1077940183,1077940190,CA
-1077940191,1077940196,US
-1077940197,1077940200,MX
-1077940201,1077940205,GB
-1077940206,1077940209,IT
-1077940210,1077940213,US
-1077940214,1077940217,MX
-1077940218,1077960839,US
-1077960840,1077960847,CA
-1077960848,1077960943,US
-1077960944,1077960951,CO
-1077960952,1077977087,US
+1077940006,1077940072,US
+1077940073,1077940076,BE
+1077940077,1077940133,US
+1077940134,1077940137,IN
+1077940138,1077940285,US
+1077940286,1077940289,AU
+1077940290,1077940378,US
+1077940379,1077940382,PK
+1077940383,1077942394,US
+1077942395,1077942398,CA
+1077942399,1077942493,US
+1077942494,1077942497,MX
+1077942498,1077942501,VN
+1077942502,1077942505,IN
+1077942506,1077942509,GB
+1077942510,1077942513,AE
+1077942514,1077942572,US
+1077942573,1077942576,CA
+1077942577,1077942600,US
+1077942601,1077942604,PE
+1077942605,1077942620,US
+1077942621,1077942624,BD
+1077942625,1077942746,US
+1077942747,1077942750,GB
+1077942751,1077943045,US
+1077943046,1077943053,FI
+1077943054,1077943109,US
+1077943110,1077943110,CN
+1077943111,1077943179,US
+1077943180,1077943183,AU
+1077943184,1077943191,CA
+1077943192,1077943313,US
+1077943314,1077943314,BE
+1077943315,1077943318,CN
+1077943319,1077943378,US
+1077943379,1077943379,CZ
+1077943380,1077943406,US
+1077943407,1077943410,AU
+1077943411,1077943420,US
+1077943421,1077943421,CN
+1077943422,1077943425,US
+1077943426,1077943426,CN
+1077943427,1077943430,MY
+1077943431,1077943503,US
+1077943504,1077943507,CA
+1077943508,1077943523,US
+1077943524,1077943527,AU
+1077943528,1077943531,US
+1077943532,1077943535,AU
+1077943536,1077943539,ID
+1077943540,1077943540,US
+1077943541,1077943544,CA
+1077943545,1077943574,US
+1077943575,1077943575,BE
+1077943576,1077943576,CZ
+1077943577,1077943634,US
+1077943635,1077943638,ZA
+1077943639,1077943674,US
+1077943675,1077943675,CN
+1077943676,1077943789,US
+1077943790,1077943790,AU
+1077943791,1077943794,US
+1077943795,1077943796,SG
+1077943797,1077943825,US
+1077943826,1077943829,HK
+1077943830,1077943845,US
+1077943846,1077943849,AU
+1077943850,1077943853,UA
+1077943854,1077943867,US
+1077943868,1077943868,CN
+1077943869,1077943876,US
+1077943877,1077943880,CA
+1077943881,1077943896,US
+1077943897,1077943897,CN
+1077943898,1077943901,US
+1077943902,1077943905,AU
+1077943906,1077943921,US
+1077943922,1077943925,AU
+1077943926,1077943939,US
+1077943940,1077943940,BE
+1077943941,1077943944,US
+1077943945,1077943948,KH
+1077943949,1077943964,US
+1077943965,1077943968,IN
+1077943969,1077943970,US
+1077943971,1077943972,CN
+1077943973,1077943976,PK
+1077943977,1077943984,AU
+1077943985,1077943992,US
+1077943993,1077943996,CA
+1077943997,1077944000,AR
+1077944001,1077944013,US
+1077944014,1077944017,IN
+1077944018,1077944025,US
+1077944026,1077944028,CN
+1077944029,1077944058,US
+1077944059,1077944062,CA
+1077944063,1077944081,US
+1077944082,1077944085,CA
+1077944086,1077944097,US
+1077944098,1077944101,AU
+1077944102,1077944127,US
+1077944128,1077944128,BE
+1077944129,1077944136,US
+1077944137,1077944137,BE
+1077944138,1077944141,PL
+1077944142,1077944173,US
+1077944174,1077944177,CA
+1077944178,1077944181,US
+1077944182,1077944182,CN
+1077944183,1077944186,US
+1077944187,1077944190,PH
+1077944191,1077944198,US
+1077944199,1077944202,CA
+1077944203,1077944210,CN
+1077944211,1077944218,US
+1077944219,1077944219,BE
+1077944220,1077944223,US
+1077944224,1077944227,CA
+1077944228,1077944231,US
+1077944232,1077944235,JP
+1077944236,1077944243,US
+1077944244,1077944247,AU
+1077944248,1077944255,US
+1077944256,1077944259,TH
+1077944260,1077944263,PY
+1077944264,1077944271,US
+1077944272,1077944275,CA
+1077944276,1077944279,US
+1077944280,1077944283,TH
+1077944284,1077944284,US
+1077944285,1077944286,RO
+1077944287,1077944295,US
+1077944296,1077944299,CZ
+1077944300,1077944308,US
+1077944309,1077944312,CN
+1077944313,1077944316,US
+1077944317,1077944317,CZ
+1077944318,1077960703,US
+1077960704,1077960711,CA
+1077960712,1077960727,US
+1077960728,1077960735,SE
+1077960736,1077960751,US
+1077960752,1077960759,CA
+1077960760,1077960775,US
+1077960776,1077960783,FR
+1077960784,1077965855,US
+1077965856,1077965887,BA
+1077965888,1077965911,US
+1077965912,1077965919,CA
+1077965920,1077968831,US
+1077968832,1077968839,CA
+1077968840,1077977087,US
1077977088,1077985279,CA
1077985280,1077993471,US
1077993472,1078001663,CA
@@ -11962,9 +15714,7 @@
1078280896,1078281087,US
1078281088,1078281279,CA
1078281280,1078281295,US
-1078281296,1078281663,CA
-1078281664,1078281679,US
-1078281680,1078281711,CA
+1078281296,1078281711,CA
1078281712,1078281719,US
1078281720,1078281735,CA
1078281736,1078281743,US
@@ -11984,7 +15734,9 @@
1078283264,1078283264,US
1078283265,1078283375,CA
1078283376,1078283391,MX
-1078283392,1078283423,US
+1078283392,1078283399,US
+1078283400,1078283407,MX
+1078283408,1078283423,US
1078283424,1078283487,CA
1078283488,1078283503,US
1078283504,1078283551,CA
@@ -11993,9 +15745,14 @@
1078283648,1078283679,US
1078283680,1078283687,CA
1078283688,1078283695,US
-1078283696,1078283751,CA
+1078283696,1078283735,CA
+1078283736,1078283743,US
+1078283744,1078283751,CA
1078283752,1078283775,US
-1078283776,1078284031,CA
+1078283776,1078283999,CA
+1078284000,1078284007,US
+1078284008,1078284015,CA
+1078284016,1078284031,US
1078284032,1078284159,BS
1078284160,1078284255,CA
1078284256,1078284351,US
@@ -12136,11 +15893,15 @@
1078435424,1078435455,HK
1078435456,1078435471,US
1078435472,1078435479,BM
-1078435480,1078436719,US
+1078435480,1078435871,US
+1078435872,1078435879,A1
+1078435880,1078436719,US
1078436720,1078436727,JP
1078436728,1078436767,US
1078436768,1078436799,GB
-1078436800,1078437471,US
+1078436800,1078437263,US
+1078437264,1078437271,CA
+1078437272,1078437471,US
1078437472,1078437479,JP
1078437480,1078437503,US
1078437504,1078437567,IT
@@ -12153,10 +15914,11 @@
1078439680,1078439935,NL
1078439936,1078440127,US
1078440128,1078440159,MX
-1078440160,1078452991,US
+1078440160,1078443799,US
+1078443800,1078443807,A1
+1078443808,1078452991,US
1078452992,1078453247,AZ
-1078453248,1078453759,IN
-1078453760,1078453887,US
+1078453248,1078453887,US
1078453888,1078453903,AF
1078453904,1078453935,US
1078453936,1078453951,AT
@@ -12172,9 +15934,33 @@
1078456320,1078460415,CA
1078460416,1078517759,US
1078517760,1078525951,CA
-1078525952,1078581311,US
+1078525952,1078575679,US
+1078575680,1078575743,AU
+1078575744,1078575807,US
+1078575808,1078575871,IN
+1078575872,1078576639,US
+1078576640,1078576895,CA
+1078576896,1078576911,US
+1078576912,1078576943,IN
+1078576944,1078577711,US
+1078577712,1078577727,IN
+1078577728,1078578751,US
+1078578752,1078578815,CA
+1078578816,1078578879,US
+1078578880,1078578943,IN
+1078578944,1078580511,US
+1078580512,1078580543,CA
+1078580544,1078580703,US
+1078580704,1078580735,CA
+1078580736,1078581263,US
+1078581264,1078581279,IN
+1078581280,1078581311,US
1078581312,1078581327,CR
-1078581328,1078600639,US
+1078581328,1078581359,US
+1078581360,1078581391,IN
+1078581392,1078581503,US
+1078581504,1078581759,CA
+1078581760,1078600639,US
1078600640,1078600647,GB
1078600648,1078615679,US
1078615680,1078615711,GB
@@ -12184,7 +15970,9 @@
1078651056,1078651071,CA
1078651072,1078653695,US
1078653696,1078653727,CZ
-1078653728,1078660799,US
+1078653728,1078654431,US
+1078654432,1078654439,AU
+1078654440,1078660799,US
1078660800,1078660831,CN
1078660832,1078661807,US
1078661808,1078661823,IN
@@ -12304,9 +16092,7 @@
1078798688,1078798703,AU
1078798704,1078798911,US
1078798912,1078798927,IT
-1078798928,1078799039,US
-1078799040,1078799055,IT
-1078799056,1078799071,US
+1078798928,1078799071,US
1078799072,1078799087,CA
1078799088,1078799263,US
1078799264,1078799295,MX
@@ -12361,7 +16147,9 @@
1079323312,1079323327,US
1079323328,1079323415,CA
1079323416,1079323423,US
-1079323424,1079323583,CA
+1079323424,1079323447,CA
+1079323448,1079323455,US
+1079323456,1079323583,CA
1079323584,1079323599,US
1079323600,1079323615,CA
1079323616,1079323647,US
@@ -12398,9 +16186,7 @@
1079355360,1079355367,CA
1079355368,1079355967,US
1079355968,1079355991,CA
-1079355992,1079356663,US
-1079356664,1079356671,CA
-1079356672,1079377919,US
+1079355992,1079377919,US
1079377920,1079378943,CA
1079378944,1079379711,US
1079379712,1079380927,CA
@@ -12455,7 +16241,9 @@
1079396096,1079396351,CA
1079396352,1079397375,MP
1079397376,1079397631,MH
-1079397632,1079399583,CA
+1079397632,1079397887,CA
+1079397888,1079398399,US
+1079398400,1079399583,CA
1079399584,1079399599,US
1079399600,1079400447,CA
1079400448,1079400511,FR
@@ -12472,8 +16260,8 @@
1079403936,1079403999,CA
1079404000,1079404031,US
1079404032,1079404543,CA
-1079404544,1079404799,US
-1079404800,1079405023,CA
+1079404544,1079404927,US
+1079404928,1079405023,CA
1079405024,1079405119,US
1079405120,1079405407,CA
1079405408,1079405439,BD
@@ -12496,7 +16284,9 @@
1079411456,1079411711,PK
1079411712,1079413311,CA
1079413312,1079413343,US
-1079413344,1079414783,CA
+1079413344,1079413535,CA
+1079413536,1079413567,US
+1079413568,1079414783,CA
1079414784,1079415039,US
1079415040,1079415295,HN
1079415296,1079415807,CA
@@ -12538,8 +16328,9 @@
1079576496,1079578623,PR
1079578624,1079585391,US
1079585392,1079585407,IN
-1079585408,1079648255,US
-1079656448,1079664639,US
+1079585408,1079623679,US
+1079623680,1079627775,PR
+1079627776,1079664639,US
1079664640,1079668735,CA
1079668736,1079827871,US
1079827872,1079827887,RU
@@ -12547,13 +16338,13 @@
1079857888,1079857903,NZ
1079857904,1079861247,US
1079861248,1079865343,CA
-1079865344,1079944295,US
+1079865344,1079943999,US
+1079944000,1079944031,AU
+1079944032,1079944295,US
1079944296,1079944303,IL
-1079944304,1079944383,US
-1079944384,1079944415,IL
-1079944416,1079946143,US
-1079946144,1079946151,FR
-1079946152,1079946431,US
+1079944304,1079946271,US
+1079946272,1079946303,IE
+1079946304,1079946431,US
1079946432,1079946463,CA
1079946464,1079953567,US
1079953568,1079953599,GB
@@ -12563,7 +16354,9 @@
1079994368,1079996415,CA
1079996416,1080021999,US
1080022000,1080022007,GT
-1080022008,1080033279,US
+1080022008,1080030527,US
+1080030528,1080030591,AR
+1080030592,1080033279,US
1080033280,1080295423,CA
1080295424,1080722827,US
1080722828,1080722837,IT
@@ -12717,9 +16510,7 @@
1081037312,1081037567,CA
1081037568,1081038335,US
1081038336,1081040895,CA
-1081040896,1081085951,US
-1081085952,1081086207,VI
-1081086208,1081122559,US
+1081040896,1081122559,US
1081122560,1081122815,VI
1081122816,1081212927,US
1081212928,1081278463,CA
@@ -12787,9 +16578,7 @@
1081397760,1081398783,CL
1081398784,1081399295,US
1081399296,1081401343,CL
-1081401344,1081401375,AR
-1081401376,1081401383,US
-1081401384,1081401391,AR
+1081401344,1081401391,AR
1081401392,1081401415,US
1081401416,1081401471,AR
1081401472,1081401567,US
@@ -12871,8 +16660,8 @@
1081463248,1081463255,US
1081463256,1081463263,BR
1081463264,1081463271,US
-1081463272,1081463279,BR
-1081463280,1081463295,US
+1081463272,1081463287,BR
+1081463288,1081463295,US
1081463296,1081463391,BR
1081463392,1081463423,US
1081463424,1081463487,BR
@@ -12881,7 +16670,29 @@
1081483248,1081483255,US
1081483256,1081483263,CA
1081483264,1081487359,US
-1081487360,1081491455,A2
+1081487360,1081487375,A2
+1081487376,1081487383,US
+1081487384,1081487391,A2
+1081487392,1081487407,US
+1081487408,1081487567,A2
+1081487568,1081487583,US
+1081487584,1081487919,A2
+1081487920,1081487927,US
+1081487928,1081487959,A2
+1081487960,1081487967,US
+1081487968,1081488055,A2
+1081488056,1081488079,US
+1081488080,1081488087,A2
+1081488088,1081488095,US
+1081488096,1081488135,A2
+1081488136,1081488151,US
+1081488152,1081488199,A2
+1081488200,1081488215,US
+1081488216,1081488223,A2
+1081488224,1081488247,US
+1081488248,1081488255,A2
+1081488256,1081488287,US
+1081488288,1081491455,A2
1081491456,1081565183,US
1081565184,1081573375,CA
1081573376,1081581615,US
@@ -13029,11 +16840,7 @@
1081912576,1081912639,DE
1081912640,1081927135,US
1081927136,1081927143,GB
-1081927144,1081955327,US
-1081955328,1081955583,CA
-1081955584,1081955839,US
-1081955840,1081956095,CA
-1081956096,1081966871,US
+1081927144,1081966871,US
1081966872,1081966879,AS
1081966880,1082091263,US
1082091264,1082091271,CN
@@ -13051,9 +16858,25 @@
1082315472,1082318847,CA
1082318848,1082344080,US
1082344081,1082344084,GB
-1082344085,1082345733,US
+1082344085,1082344784,US
+1082344785,1082344786,HN
+1082344787,1082345733,US
1082345734,1082345737,CA
-1082345738,1082348319,US
+1082345738,1082346510,US
+1082346511,1082346514,IN
+1082346515,1082347740,US
+1082347741,1082347744,IN
+1082347745,1082347760,US
+1082347761,1082347763,MX
+1082347764,1082347882,US
+1082347883,1082347886,IN
+1082347887,1082347892,US
+1082347893,1082347896,IN
+1082347897,1082348005,US
+1082348006,1082348009,IN
+1082348010,1082348115,US
+1082348116,1082348123,CA
+1082348124,1082348319,US
1082348320,1082348327,GB
1082348328,1082348335,US
1082348336,1082348351,GB
@@ -13079,9 +16902,9 @@
1082349744,1082349767,US
1082349768,1082349775,GR
1082349776,1082349783,IT
-1082349784,1082349815,US
-1082349816,1082349823,RU
-1082349824,1082350655,US
+1082349784,1082349807,US
+1082349808,1082349815,GB
+1082349816,1082350655,US
1082350656,1082350671,IT
1082350672,1082350911,US
1082350912,1082350943,RU
@@ -13098,14 +16921,22 @@
1082885344,1082885855,US
1082885856,1082885887,CA
1082885888,1082945535,US
-1082945536,1082949631,CA
+1082945536,1082948943,CA
+1082948944,1082948959,US
+1082948960,1082949631,CA
1082949632,1082952703,US
1082952704,1082952959,CA
1082952960,1082982399,US
1082982400,1083015167,CA
-1083015168,1083263743,US
+1083015168,1083261663,US
+1083261664,1083261679,GB
+1083261680,1083263743,US
1083263744,1083263999,GB
-1083264000,1083396095,US
+1083264000,1083264447,US
+1083264448,1083264463,GB
+1083264464,1083265023,US
+1083265024,1083265279,CA
+1083265280,1083396095,US
1083396096,1083400191,BM
1083400192,1083417727,US
1083417728,1083417791,CA
@@ -13264,25 +17095,21 @@
1086023288,1086023295,NZ
1086023296,1086023335,US
1086023336,1086023343,RO
-1086023344,1086024031,US
-1086024032,1086024047,CA
-1086024048,1086027391,US
+1086023344,1086025447,US
+1086025448,1086025455,CA
+1086025456,1086027391,US
1086027392,1086027407,IT
-1086027408,1086027423,US
-1086027424,1086027455,VN
-1086027456,1086028031,US
-1086028032,1086028287,PA
-1086028288,1086028663,US
+1086027408,1086028663,US
1086028664,1086028671,BR
1086028672,1086028751,US
1086028752,1086028759,BR
-1086028760,1086029567,US
-1086029568,1086029599,BO
-1086029600,1086029727,US
+1086028760,1086029727,US
1086029728,1086029743,CA
1086029744,1086309887,US
1086309888,1086310143,AU
-1086310144,1086358143,US
+1086310144,1086317823,US
+1086317824,1086318079,CA
+1086318080,1086358143,US
1086358144,1086358271,PA
1086358272,1086359231,US
1086359232,1086359295,IL
@@ -13296,8 +17123,8 @@
1086910336,1086910463,LB
1086910464,1086922751,US
1086922752,1086923343,CA
-1086923344,1086923359,US
-1086923360,1086930943,CA
+1086923344,1086923351,US
+1086923352,1086930943,CA
1086930944,1086955519,US
1086955520,1086971903,CA
1086971904,1087008767,US
@@ -13414,9 +17241,7 @@
1088101024,1088101031,PR
1088101032,1088108351,US
1088108352,1088108359,PR
-1088108360,1088117199,US
-1088117200,1088117207,PR
-1088117208,1088120527,US
+1088108360,1088120527,US
1088120528,1088120535,PR
1088120536,1088146151,US
1088146152,1088146159,PR
@@ -13622,13 +17447,15 @@
1089970176,1089974271,PR
1089974272,1090146303,US
1090146304,1090150399,CA
-1090150400,1090207743,US
+1090150400,1090172495,US
+1090172496,1090172511,GB
+1090172512,1090207743,US
1090207744,1090215935,CA
1090215936,1090355199,US
1090355200,1090356327,CA
1090356328,1090356335,US
-1090356336,1090356407,CA
-1090356408,1090356415,US
+1090356336,1090356399,CA
+1090356400,1090356415,US
1090356416,1090357535,CA
1090357536,1090357567,US
1090357568,1090357663,CA
@@ -13660,9 +17487,7 @@
1090448256,1090453503,CA
1090453504,1090497903,US
1090497904,1090497919,AU
-1090497920,1091444735,US
-1091444736,1091445247,A2
-1091445248,1091683357,US
+1090497920,1091683357,US
1091683358,1091683367,GB
1091683368,1091683387,US
1091683388,1091683397,LB
@@ -13739,9 +17564,7 @@
1091695214,1091695223,CA
1091695224,1091695283,US
1091695284,1091695293,CA
-1091695294,1091695487,US
-1091695488,1091695551,SA
-1091695552,1091797263,US
+1091695294,1091797263,US
1091797264,1091797279,IT
1091797280,1091797855,US
1091797856,1091797871,IT
@@ -13755,19 +17578,13 @@
1091800320,1091800327,JP
1091800328,1091802111,US
1091802112,1091802367,CA
-1091802368,1091802831,US
-1091802832,1091802847,CN
-1091802848,1091802863,US
-1091802864,1091802871,HK
-1091802872,1091803135,US
+1091802368,1091803135,US
1091803136,1091803391,CN
1091803392,1091803711,US
1091803712,1091803775,TH
1091803776,1091803871,US
1091803872,1091803903,NL
-1091803904,1091804263,US
-1091804264,1091804271,BM
-1091804272,1091806719,US
+1091803904,1091806719,US
1091806720,1091806847,IT
1091806848,1091807231,US
1091807232,1091807487,CA
@@ -13810,9 +17627,9 @@
1093054080,1093054095,GB
1093054096,1093054127,US
1093054128,1093054143,FR
-1093054144,1093054175,US
-1093054176,1093054191,CA
-1093054192,1093055487,US
+1093054144,1093054287,US
+1093054288,1093054303,GB
+1093054304,1093055487,US
1093055488,1093055871,AR
1093055872,1093056095,US
1093056096,1093056127,SY
@@ -13820,16 +17637,14 @@
1093056144,1093056159,SY
1093056160,1093056167,US
1093056168,1093056175,RO
-1093056176,1093056319,US
-1093056320,1093056335,CA
-1093056336,1093056447,US
+1093056176,1093056447,US
1093056448,1093056463,FR
1093056464,1093056479,CA
1093056480,1093056511,US
1093056512,1093056519,GB
1093056520,1093056591,US
-1093056592,1093056607,CA
-1093056608,1093056959,US
+1093056592,1093056599,CA
+1093056600,1093056959,US
1093056960,1093056975,SA
1093056976,1093057103,US
1093057104,1093057119,JP
@@ -13894,7 +17709,25 @@
1093112896,1093112911,CA
1093112912,1093113087,US
1093113088,1093113119,CA
-1093113120,1093114623,US
+1093113120,1093113127,US
+1093113128,1093113135,CA
+1093113136,1093113151,US
+1093113152,1093113183,CA
+1093113184,1093113407,US
+1093113408,1093113423,CA
+1093113424,1093113479,US
+1093113480,1093113487,CA
+1093113488,1093113503,US
+1093113504,1093113535,CA
+1093113536,1093113639,US
+1093113640,1093113647,CA
+1093113648,1093113727,US
+1093113728,1093113743,CA
+1093113744,1093113759,US
+1093113760,1093113783,CA
+1093113784,1093113791,US
+1093113792,1093113823,CA
+1093113824,1093114623,US
1093114624,1093114679,CA
1093114680,1093114703,US
1093114704,1093114711,CA
@@ -13906,7 +17739,8 @@
1093114864,1093115839,CA
1093115840,1093115903,US
1093115904,1093116927,CA
-1093116928,1093117439,US
+1093116928,1093117183,HK
+1093117184,1093117439,US
1093117440,1093117455,CA
1093117456,1093117503,US
1093117504,1093117519,CA
@@ -13918,7 +17752,8 @@
1093117616,1093117631,CA
1093117632,1093117647,VG
1093117648,1093118207,CA
-1093118208,1093118479,US
+1093118208,1093118463,HK
+1093118464,1093118479,US
1093118480,1093118495,CA
1093118496,1093118527,US
1093118528,1093118531,CA
@@ -13966,8 +17801,8 @@
1093122592,1093122655,CA
1093122656,1093122671,US
1093122672,1093122687,CA
-1093122688,1093122727,US
-1093122728,1093122767,CA
+1093122688,1093122719,US
+1093122720,1093122767,CA
1093122768,1093122783,US
1093122784,1093122791,CA
1093122792,1093122799,US
@@ -13993,7 +17828,9 @@
1093125776,1093125871,US
1093125872,1093126015,CA
1093126016,1093126047,US
-1093126048,1093126111,CA
+1093126048,1093126063,CA
+1093126064,1093126079,US
+1093126080,1093126111,CA
1093126112,1093126134,US
1093126135,1093126142,CA
1093126143,1093126143,US
@@ -14004,7 +17841,9 @@
1093126544,1093126591,CA
1093126592,1093126607,US
1093126608,1093126639,CA
-1093126640,1093126801,US
+1093126640,1093126767,US
+1093126768,1093126783,CA
+1093126784,1093126801,US
1093126802,1093126809,CA
1093126810,1093126823,US
1093126824,1093126831,CA
@@ -14035,9 +17874,7 @@
1093131248,1093131263,CA
1093131264,1093131391,US
1093131392,1093131487,CA
-1093131488,1093131775,US
-1093131776,1093132287,CA
-1093132288,1093132351,US
+1093131488,1093132351,US
1093132352,1093132799,CA
1093132800,1093133055,US
1093133056,1093133311,CA
@@ -14087,18 +17924,20 @@
1093723648,1093724415,BB
1093724416,1093725183,VC
1093725184,1093730303,BB
-1093730304,1093730559,US
-1093730560,1093730815,HK
-1093730816,1093737247,US
+1093730304,1093730815,US
+1093730816,1093731071,A1
+1093731072,1093733887,US
+1093733888,1093734143,A1
+1093734144,1093737247,US
1093737248,1093737263,AE
1093737264,1093737423,US
1093737424,1093737431,GB
1093737432,1093740095,US
1093740096,1093740159,JP
-1093740160,1093740167,US
-1093740168,1093740191,CN
-1093740192,1093740223,US
-1093740224,1093740239,CN
+1093740160,1093740183,US
+1093740184,1093740191,CN
+1093740192,1093740231,US
+1093740232,1093740239,CN
1093740240,1093740247,US
1093740248,1093740255,HK
1093740256,1093740271,US
@@ -14120,9 +17959,7 @@
1093746880,1093746943,DE
1093746944,1093748799,US
1093748800,1093748863,CN
-1093748864,1093753111,US
-1093753112,1093753119,CN
-1093753120,1094549687,US
+1093748864,1094549687,US
1094549688,1094549695,CA
1094549696,1094549783,US
1094549784,1094549791,AU
@@ -14629,7 +18466,9 @@
1096925184,1096941567,CA
1096941568,1096942679,US
1096942680,1096942687,IE
-1096942688,1096950551,US
+1096942688,1096947471,US
+1096947472,1096947479,MY
+1096947480,1096950551,US
1096950552,1096950559,CA
1096950560,1096952455,US
1096952456,1096952463,GB
@@ -14649,17 +18488,15 @@
1096959600,1096959607,GB
1096959608,1096960767,US
1096960768,1096960895,GB
-1096960896,1096961023,US
-1096961024,1096961151,GB
-1096961152,1096964263,US
+1096960896,1096964263,US
1096964264,1096964271,IN
1096964272,1096968127,US
1096968128,1096968159,CA
1096968160,1096968191,US
1096968192,1096968319,GB
-1096968320,1096968447,US
-1096968448,1096968575,GB
-1096968576,1097057623,US
+1096968320,1096969471,US
+1096969472,1096969479,IN
+1096969480,1097057623,US
1097057624,1097057631,IT
1097057632,1097057655,US
1097057656,1097057663,NZ
@@ -14697,11 +18534,7 @@
1097731456,1097736191,CA
1097736192,1097768959,US
1097768960,1097777151,CA
-1097777152,1097800959,US
-1097800960,1097800991,CY
-1097800992,1097801183,US
-1097801184,1097801215,DE
-1097801216,1097830399,US
+1097777152,1097830399,US
1097830400,1097834495,CA
1097834496,1097896191,US
1097896192,1097896711,VI
@@ -14879,7 +18712,9 @@
1102005248,1102005503,CA
1102005504,1102005759,PK
1102005760,1102005823,BE
-1102005824,1102006271,US
+1102005824,1102005887,US
+1102005888,1102005951,IN
+1102005952,1102006271,US
1102006272,1102006527,CA
1102006528,1102007295,US
1102007296,1102007551,PK
@@ -14916,23 +18751,24 @@
1102011888,1102011903,AU
1102011904,1102012799,US
1102012800,1102012927,IN
-1102012928,1102012975,US
-1102012976,1102012991,RU
-1102012992,1102013167,US
+1102012928,1102013167,US
1102013168,1102013183,VE
-1102013184,1102014271,US
-1102014272,1102014335,IN
+1102013184,1102014207,US
+1102014208,1102014335,IN
1102014336,1102014399,CA
1102014400,1102016255,US
1102016256,1102016287,AR
1102016288,1102016351,US
1102016352,1102016383,MY
-1102016384,1102019583,US
+1102016384,1102017087,US
+1102017088,1102017119,DM
+1102017120,1102018431,US
+1102018432,1102018495,TZ
+1102018496,1102019583,US
1102019584,1102019711,IN
1102019712,1102389247,US
1102389248,1102393343,CA
-1102393344,1102397439,US
-1102413824,1102446591,US
+1102393344,1102446591,US
1102446592,1102448383,HN
1102448384,1102449151,US
1102449152,1102449407,SV
@@ -14942,7 +18778,14 @@
1102488124,1102488163,IN
1102488164,1102488284,US
1102488285,1102488315,IN
-1102488316,1102494332,US
+1102488316,1102494223,US
+1102494224,1102494227,AU
+1102494228,1102494262,US
+1102494263,1102494279,AU
+1102494280,1102494292,US
+1102494293,1102494297,GB
+1102494298,1102494301,CA
+1102494302,1102494332,US
1102494333,1102494378,AU
1102494379,1102495519,US
1102495520,1102495527,AU
@@ -15078,7 +18921,9 @@
1106349600,1106349607,UM
1106349608,1106428959,US
1106428960,1106428975,UM
-1106428976,1106443623,US
+1106428976,1106441615,US
+1106441616,1106441623,A2
+1106441624,1106443623,US
1106443624,1106443631,CA
1106443632,1106469695,US
1106469696,1106469759,CO
@@ -15123,7 +18968,7 @@
1107275776,1107279871,CA
1107279872,1107288063,US
1107288064,1107292159,CA
-1107296256,1107701759,US
+1107292160,1107701759,US
1107701760,1107705855,CA
1107705856,1107800063,US
1107800064,1107800319,CA
@@ -15180,8 +19025,8 @@
1108055424,1108055439,US
1108055440,1108055455,CA
1108055456,1108055471,US
-1108055472,1108055487,CA
-1108055488,1108055551,US
+1108055472,1108055519,CA
+1108055520,1108055551,US
1108055552,1108055903,CA
1108055904,1108055919,US
1108055920,1108055967,CA
@@ -15228,9 +19073,7 @@
1108057784,1108066303,CA
1108066304,1108492287,US
1108492288,1108500479,ZA
-1108500480,1108502303,US
-1108502304,1108502311,PR
-1108502312,1108525055,US
+1108500480,1108525055,US
1108525056,1108541439,CA
1108541440,1109245981,US
1109245982,1109245993,GB
@@ -15372,7 +19215,9 @@
1110443328,1110443551,CA
1110443552,1110443711,US
1110443712,1110443719,CA
-1110443720,1110444287,US
+1110443720,1110443903,US
+1110443904,1110444031,CA
+1110444032,1110444287,US
1110444288,1110444799,CA
1110444800,1110445055,US
1110445056,1110446655,CA
@@ -15447,8 +19292,8 @@
1110460320,1110460383,US
1110460384,1110460447,CA
1110460448,1110460479,US
-1110460480,1110460607,CA
-1110460608,1110460671,US
+1110460480,1110460639,CA
+1110460640,1110460671,US
1110460672,1110460719,CA
1110460720,1110460743,US
1110460744,1110460775,CA
@@ -15517,7 +19362,9 @@
1110887424,1110887679,IE
1110887680,1110929407,US
1110929408,1110933503,BM
-1110933504,1111195647,US
+1110933504,1110940751,US
+1110940752,1110940767,A1
+1110940768,1111195647,US
1111195648,1111212031,CA
1111212032,1111228415,US
1111228416,1111244799,AR
@@ -15531,9 +19378,7 @@
1112357376,1112357503,CA
1112357504,1112360959,US
1112360960,1112361023,CA
-1112361024,1112369343,US
-1112369344,1112369375,AU
-1112369376,1112432639,US
+1112361024,1112432639,US
1112432640,1112433147,CA
1112433148,1112433151,US
1112433152,1112440831,CA
@@ -15608,14 +19453,19 @@
1114170112,1114505215,US
1114505216,1114507263,CA
1114507264,1114507295,US
-1114507296,1114507423,CA
+1114507296,1114507327,CA
+1114507328,1114507391,US
+1114507392,1114507423,CA
1114507424,1114507431,GB
-1114507432,1114511359,CA
+1114507432,1114508287,CA
+1114508288,1114508799,US
+1114508800,1114511359,CA
1114511360,1114511871,US
1114511872,1114513407,CA
1114513408,1114515455,SA
1114515456,1114517503,US
-1114517504,1114520063,CA
+1114517504,1114519551,CA
+1114519552,1114520063,US
1114520064,1114520319,PH
1114520320,1114520575,US
1114520576,1114520831,PH
@@ -15627,9 +19477,7 @@
1114533376,1114533887,ZA
1114533888,1114537983,AO
1114537984,1114550271,CA
-1114550272,1114627071,US
-1114627072,1114628095,NZ
-1114628096,1114653951,US
+1114550272,1114653951,US
1114653952,1114653983,MO
1114653984,1114657927,US
1114657928,1114657935,LA
@@ -15664,11 +19512,13 @@
1114880096,1114880383,US
1114880384,1114880399,CY
1114880400,1114880407,GB
-1114880408,1114881343,US
-1114881344,1114881407,CY
+1114880408,1114881279,US
+1114881280,1114881407,CY
1114881408,1114881471,US
1114881472,1114881535,CY
-1114881536,1114930175,US
+1114881536,1114928863,US
+1114928864,1114928871,GB
+1114928872,1114930175,US
1114930176,1114930303,GB
1114930304,1114966815,US
1114966816,1114966831,GB
@@ -15678,13 +19528,9 @@
1115111936,1115112063,PR
1115112064,1115112079,US
1115112080,1115112087,ES
-1115112088,1115112159,US
-1115112160,1115112191,SV
-1115112192,1115112575,US
+1115112088,1115112575,US
1115112576,1115112607,IN
-1115112608,1115113167,US
-1115113168,1115113175,SV
-1115113176,1115113471,US
+1115112608,1115113471,US
1115113472,1115114495,HN
1115114496,1115114751,MX
1115114752,1115115007,GT
@@ -15752,9 +19598,7 @@
1115698432,1115698687,DO
1115698688,1115698783,US
1115698784,1115698791,CO
-1115698792,1115698983,US
-1115698984,1115698991,CO
-1115698992,1115699903,US
+1115698792,1115699903,US
1115699904,1115699911,CA
1115699912,1115699919,US
1115699920,1115699927,CA
@@ -15787,7 +19631,9 @@
1116158496,1116168191,US
1116168192,1116169311,CA
1116169312,1116169327,US
-1116169328,1116176383,CA
+1116169328,1116175103,CA
+1116175104,1116175135,JM
+1116175136,1116176383,CA
1116176384,1116210247,US
1116210248,1116210255,PR
1116210256,1116210375,US
@@ -15814,9 +19660,7 @@
1116214160,1116214167,PR
1116214168,1116217151,US
1116217152,1116217159,PR
-1116217160,1116217439,US
-1116217440,1116217447,PR
-1116217448,1116218527,US
+1116217160,1116218527,US
1116218528,1116218535,PR
1116218536,1116220231,US
1116220232,1116220239,PR
@@ -15982,25 +19826,21 @@
1117142272,1117142527,CA
1117142528,1117163023,US
1117163024,1117163031,CA
-1117163032,1117169503,US
+1117163032,1117167855,US
+1117167856,1117167871,GB
+1117167872,1117169503,US
1117169504,1117169535,CA
-1117169536,1117178287,US
+1117169536,1117171071,US
+1117171072,1117171103,CA
+1117171104,1117178287,US
1117178288,1117178303,GB
-1117178304,1117182271,US
-1117182272,1117182335,CA
-1117182336,1117189951,US
+1117178304,1117189951,US
1117189952,1117190015,KR
-1117190016,1117195903,US
-1117195904,1117195911,IL
-1117195912,1117195991,US
+1117190016,1117195991,US
1117195992,1117195999,A2
1117196000,1117198591,US
1117198592,1117198847,CA
-1117198848,1117206599,US
-1117206600,1117206623,FR
-1117206624,1117253247,US
-1117253248,1117253255,IL
-1117253256,1117274111,US
+1117198848,1117274111,US
1117274112,1117282303,CA
1117282304,1117299615,US
1117299616,1117299623,GB
@@ -16012,7 +19852,9 @@
1117409344,1117409351,GB
1117409352,1117409783,US
1117409784,1117409791,GB
-1117409792,1117411071,US
+1117409792,1117410239,US
+1117410240,1117410303,GB
+1117410304,1117411071,US
1117411072,1117411087,PL
1117411088,1117412863,US
1117412864,1117412991,CA
@@ -16051,7 +19893,9 @@
1117814824,1117814831,CN
1117814832,1117815295,US
1117815296,1117815551,CN
-1117815552,1117817919,US
+1117815552,1117816831,US
+1117816832,1117816959,CN
+1117816960,1117817919,US
1117817920,1117817983,CA
1117817984,1117818495,US
1117818496,1117818623,IT
@@ -16068,9 +19912,7 @@
1117829376,1117829631,GR
1117829632,1117831359,US
1117831360,1117831423,A2
-1117831424,1117832191,US
-1117832192,1117832447,IT
-1117832448,1117978623,US
+1117831424,1117978623,US
1117978624,1117979503,CA
1117979504,1117979519,US
1117979520,1117982639,CA
@@ -16127,7 +19969,7 @@
1118127232,1118127359,US
1118127360,1118127615,CA
1118127616,1118128191,US
-1118128192,1118128255,MY
+1118128192,1118128255,IN
1118128256,1118128319,CA
1118128320,1118128383,MY
1118128384,1118128639,CA
@@ -16147,7 +19989,8 @@
1118132992,1118133375,CA
1118133376,1118133503,US
1118133504,1118133631,CA
-1118133632,1118133759,US
+1118133632,1118133695,US
+1118133696,1118133759,IN
1118133760,1118133887,CA
1118133888,1118134783,US
1118134784,1118134879,CA
@@ -16163,9 +20006,7 @@
1118135648,1118135663,CA
1118135664,1118135807,US
1118135808,1118136191,CA
-1118136192,1118136319,US
-1118136320,1118136351,CA
-1118136352,1118136831,US
+1118136192,1118136831,US
1118136832,1118136863,IN
1118136864,1118136895,BE
1118136896,1118136927,US
@@ -16205,7 +20046,9 @@
1118151464,1118151471,CR
1118151472,1118151631,US
1118151632,1118151647,MX
-1118151648,1118151791,US
+1118151648,1118151759,US
+1118151760,1118151775,ES
+1118151776,1118151791,US
1118151792,1118151795,BR
1118151796,1118152015,US
1118152016,1118152031,CO
@@ -16296,7 +20139,21 @@
1118477536,1118477543,US
1118477544,1118478335,CA
1118478336,1118502911,US
-1118568448,1118789783,US
+1118507008,1118511103,US
+1118511104,1118519295,CA
+1118519296,1118527487,US
+1118527488,1118531583,CA
+1118531584,1118535679,US
+1118535680,1118539775,CA
+1118539776,1118543871,US
+1118543872,1118547967,CA
+1118547968,1118564607,US
+1118564608,1118564639,NO
+1118564640,1118564655,US
+1118564656,1118564671,IN
+1118564672,1118564895,US
+1118564896,1118564927,AU
+1118564928,1118789783,US
1118789784,1118789791,BB
1118789792,1118790351,US
1118790352,1118790367,GB
@@ -16306,19 +20163,27 @@
1118791600,1118791615,ES
1118791616,1118792815,US
1118792816,1118792831,DO
-1118792832,1118793471,US
+1118792832,1118792975,US
+1118792976,1118792991,BB
+1118792992,1118793407,US
+1118793408,1118793423,BB
+1118793424,1118793471,US
1118793472,1118793727,CO
1118793728,1118793823,US
1118793824,1118793839,CA
1118793840,1118793935,US
1118793936,1118793951,ES
-1118793952,1118794287,US
+1118793952,1118793967,US
+1118793968,1118793983,HT
+1118793984,1118794287,US
1118794288,1118794303,BR
1118794304,1118794799,US
1118794800,1118794815,PR
1118794816,1118794959,US
1118794960,1118794975,JM
-1118794976,1118795791,US
+1118794976,1118795407,US
+1118795408,1118795423,PE
+1118795424,1118795791,US
1118795792,1118795807,AG
1118795808,1118795895,US
1118795896,1118795903,CY
@@ -16476,7 +20341,7 @@
1118970112,1118970119,KE
1118970120,1118970239,A2
1118970240,1118970367,NG
-1118970368,1118970623,GY
+1118970368,1118970623,GB
1118970624,1118970751,SA
1118970752,1118970879,GY
1118970880,1118971520,SR
@@ -16484,7 +20349,7 @@
1118971648,1118971903,GY
1118971904,1118972159,A2
1118972160,1118972415,VE
-1118972416,1118972671,EC
+1118972416,1118972671,GB
1118972672,1118972927,SA
1118972928,1118972943,NI
1118972944,1118972959,VE
@@ -16507,7 +20372,7 @@
1118973160,1118973167,NI
1118973168,1118973183,A2
1118973184,1118973439,VE
-1118973440,1118973695,GY
+1118973440,1118973695,HK
1118973696,1118973951,NG
1118973952,1118974015,GY
1118974016,1118974047,A2
@@ -16561,8 +20426,8 @@
1118977552,1118977575,A2
1118977576,1118977583,SA
1118977584,1118977631,A2
-1118977632,1118977663,NG
-1118977664,1118977839,A2
+1118977632,1118977639,US
+1118977640,1118977839,A2
1118977840,1118977847,LB
1118977848,1118977879,A2
1118977880,1118977887,NI
@@ -16682,7 +20547,7 @@
1118984896,1118984943,SA
1118984944,1118984951,LB
1118984952,1118984959,SA
-1118984960,1118985215,VE
+1118984960,1118985215,LB
1118985216,1118985983,A2
1118985984,1118986111,NG
1118986112,1118986239,A2
@@ -16714,7 +20579,8 @@
1118992736,1118992743,SA
1118992744,1118992767,A2
1118992768,1118992839,US
-1118992840,1118994431,A2
+1118992840,1118994175,A2
+1118994176,1118994431,LR
1118994432,1119023735,US
1119023736,1119023743,UY
1119023744,1119109119,US
@@ -16734,15 +20600,17 @@
1119167360,1119167367,CA
1119167368,1119167407,US
1119167408,1119167415,CA
-1119167416,1119167839,US
+1119167416,1119167495,US
+1119167496,1119167503,CA
+1119167504,1119167839,US
1119167840,1119167855,CA
-1119167856,1119167895,US
-1119167896,1119167903,CA
-1119167904,1119168023,US
+1119167856,1119168023,US
1119168024,1119168031,CA
1119168032,1119168183,US
1119168184,1119168191,CA
-1119168192,1119168687,US
+1119168192,1119168351,US
+1119168352,1119168359,AF
+1119168360,1119168687,US
1119168688,1119168695,CA
1119168696,1119168799,US
1119168800,1119168807,MX
@@ -16762,7 +20630,9 @@
1119171208,1119171215,CA
1119171216,1119171383,US
1119171384,1119171391,CA
-1119171392,1119172895,US
+1119171392,1119172199,US
+1119172200,1119172207,CA
+1119172208,1119172895,US
1119172896,1119172991,MX
1119172992,1119173007,US
1119173008,1119173095,MX
@@ -16842,8 +20712,7 @@
1119502336,1119510527,CA
1119510528,1119558143,US
1119558144,1119558655,PR
-1119558656,1119567871,US
-1119571968,1119580159,US
+1119558656,1119580159,US
1119580160,1119584255,CA
1119584256,1119999935,US
1119999936,1119999967,A2
@@ -16864,9 +20733,7 @@
1120151696,1120151711,TW
1120151712,1120152159,CA
1120152160,1120152191,US
-1120152192,1120152319,CA
-1120152320,1120152575,US
-1120152576,1120153599,CA
+1120152192,1120153599,CA
1120153600,1120272383,US
1120272384,1120280575,CA
1120280576,1120280831,US
@@ -16878,7 +20745,8 @@
1120281104,1120281111,CA
1120281112,1120281119,US
1120281120,1120281135,ZA
-1120281136,1120281375,CA
+1120281136,1120281151,US
+1120281152,1120281375,CA
1120281376,1120281383,AR
1120281384,1120281391,US
1120281392,1120281407,ZA
@@ -16924,9 +20792,15 @@
1120315136,1120315391,US
1120315392,1120321535,CA
1120321536,1120346111,US
-1120346112,1120350207,CA
+1120346112,1120347527,CA
+1120347528,1120347535,US
+1120347536,1120347591,CA
+1120347592,1120347599,US
+1120347600,1120350207,CA
1120350208,1120370687,US
-1120370688,1120371487,CA
+1120370688,1120371199,CA
+1120371200,1120371455,US
+1120371456,1120371487,CA
1120371488,1120371503,US
1120371504,1120371511,CA
1120371512,1120371519,US
@@ -16952,9 +20826,9 @@
1120374512,1120374783,US
1120374784,1120375243,CA
1120375244,1120375263,US
-1120375264,1120376063,CA
-1120376064,1120376079,US
-1120376080,1120376095,CA
+1120375264,1120375423,CA
+1120375424,1120375551,US
+1120375552,1120376095,CA
1120376096,1120376127,US
1120376128,1120376223,CA
1120376224,1120376239,US
@@ -17001,9 +20875,7 @@
1120380640,1120380655,US
1120380656,1120380659,CA
1120380660,1120380663,US
-1120380664,1120380671,CA
-1120380672,1120380927,US
-1120380928,1120381055,CA
+1120380664,1120381055,CA
1120381056,1120381071,US
1120381072,1120381087,PA
1120381088,1120381095,US
@@ -17037,9 +20909,9 @@
1120385184,1120385535,CA
1120385536,1120386559,US
1120386560,1120386815,CA
-1120386816,1120485759,US
-1120485760,1120485887,CA
-1120485888,1120486079,US
+1120386816,1120485503,US
+1120485504,1120485631,IN
+1120485632,1120486079,US
1120486080,1120486143,IN
1120486144,1120486399,US
1120486400,1120486911,CA
@@ -17082,11 +20954,13 @@
1120493824,1120494079,CA
1120494080,1120494335,US
1120494336,1120494591,CA
-1120494592,1120494975,US
+1120494592,1120494847,US
+1120494848,1120494911,IN
+1120494912,1120494975,US
1120494976,1120495039,CA
-1120495040,1120495359,US
-1120495360,1120495615,CA
-1120495616,1120495743,US
+1120495040,1120495103,US
+1120495104,1120495167,IN
+1120495168,1120495743,US
1120495744,1120495871,SG
1120495872,1120496223,US
1120496224,1120496255,BE
@@ -17110,9 +20984,7 @@
1120498144,1120498303,CA
1120498304,1120498943,US
1120498944,1120499199,CA
-1120499200,1120499487,US
-1120499488,1120499519,CA
-1120499520,1120499583,US
+1120499200,1120499583,US
1120499584,1120499615,FR
1120499616,1120499647,IN
1120499648,1120500639,US
@@ -17153,7 +21025,9 @@
1120743424,1120743679,KN
1120743680,1120744447,US
1120744448,1120744703,KN
-1120744704,1120854015,US
+1120744704,1120846431,US
+1120846432,1120846463,CA
+1120846464,1120854015,US
1120854016,1120862207,CA
1120862208,1120870399,US
1120874496,1120874503,A2
@@ -17197,9 +21071,7 @@
1120894976,1120911359,US
1120911360,1120914415,CA
1120914416,1120914431,AT
-1120914432,1120914687,CA
-1120914688,1120914719,AG
-1120914720,1120918623,CA
+1120914432,1120918623,CA
1120918624,1120918639,US
1120918640,1120919551,CA
1120919552,1121005567,US
@@ -17219,8 +21091,8 @@
1121233584,1121233599,DE
1121233600,1121239039,CA
1121239040,1121247231,US
-1121247232,1121247247,CA
-1121247248,1121247255,AG
+1121247232,1121247239,CA
+1121247240,1121247255,AG
1121247256,1121247263,CA
1121247264,1121247271,CR
1121247272,1121247279,CA
@@ -17237,7 +21109,7 @@
1121247544,1121247551,CA
1121247552,1121247559,VG
1121247560,1121247567,CA
-1121247568,1121247583,PA
+1121247568,1121247583,MT
1121247584,1121247591,CY
1121247592,1121247615,CA
1121247616,1121247631,PA
@@ -17245,7 +21117,9 @@
1121247640,1121247647,VG
1121247648,1121247663,US
1121247664,1121247695,BZ
-1121247696,1121247743,CA
+1121247696,1121247711,CA
+1121247712,1121247719,AN
+1121247720,1121247743,CA
1121247744,1121247775,BZ
1121247776,1121247823,CA
1121247824,1121247855,AG
@@ -17259,7 +21133,7 @@
1121248064,1121248079,AG
1121248080,1121248095,CA
1121248096,1121248111,AG
-1121248112,1121248127,CA
+1121248112,1121248127,AN
1121248128,1121248135,MT
1121248136,1121248159,CA
1121248160,1121248255,AG
@@ -17307,9 +21181,8 @@
1121250080,1121250095,AG
1121250096,1121250111,CA
1121250112,1121250127,CR
-1121250128,1121250151,CA
-1121250152,1121250159,GB
-1121250160,1121250175,CA
+1121250128,1121250143,CA
+1121250144,1121250175,GB
1121250176,1121250183,AW
1121250184,1121250207,BZ
1121250208,1121250239,CA
@@ -17318,8 +21191,7 @@
1121250816,1121250831,AG
1121250832,1121250839,BZ
1121250840,1121250879,AG
-1121250880,1121250911,CA
-1121250912,1121250927,VG
+1121250880,1121250927,VG
1121250928,1121250935,CA
1121250936,1121251007,BZ
1121251008,1121251015,VG
@@ -17328,8 +21200,10 @@
1121251048,1121251055,AW
1121251056,1121251071,CA
1121251072,1121251079,GB
-1121251080,1121251087,CY
-1121251088,1121251135,CA
+1121251080,1121251095,CY
+1121251096,1121251103,CA
+1121251104,1121251119,BZ
+1121251120,1121251135,CA
1121251136,1121251167,AG
1121251168,1121251199,VG
1121251200,1121251263,AW
@@ -17337,12 +21211,15 @@
1121251272,1121251279,KN
1121251280,1121251295,CA
1121251296,1121251311,IM
-1121251312,1121251583,CA
+1121251312,1121251327,PA
+1121251328,1121251583,CA
1121251584,1121251591,BZ
-1121251592,1121251607,CA
+1121251592,1121251599,MT
+1121251600,1121251607,CA
1121251608,1121251615,BZ
1121251616,1121251647,NL
-1121251648,1121251663,CA
+1121251648,1121251655,BZ
+1121251656,1121251663,CA
1121251664,1121251671,MT
1121251672,1121251679,CA
1121251680,1121251687,AG
@@ -17352,24 +21229,27 @@
1121251808,1121251831,CA
1121251832,1121251839,VG
1121251840,1121251847,BZ
-1121251848,1121251871,CA
+1121251848,1121251855,PA
+1121251856,1121251863,AN
+1121251864,1121251871,CA
1121251872,1121251887,VG
1121251888,1121251895,CY
1121251896,1121251903,CA
1121251904,1121251935,AG
1121251936,1121251943,CY
-1121251944,1121251951,PA
+1121251944,1121251951,MT
1121251952,1121251967,GB
-1121251968,1121251983,PA
+1121251968,1121251983,MT
1121251984,1121251991,CA
1121251992,1121251999,AG
1121252000,1121252063,CA
1121252064,1121252359,AG
-1121252360,1121252375,CA
-1121252376,1121252383,PA
+1121252360,1121252367,ZA
+1121252368,1121252375,GG
+1121252376,1121252383,MT
1121252384,1121252391,CR
-1121252392,1121252399,CA
-1121252400,1121252415,PA
+1121252392,1121252399,GG
+1121252400,1121252415,MT
1121252416,1121252479,GI
1121252480,1121252607,CR
1121252608,1121252671,AW
@@ -17677,24 +21557,30 @@
1121483568,1121483575,PT
1121483576,1121483759,US
1121483760,1121483775,FR
-1121483776,1121655071,US
-1121655072,1121655103,RU
-1121655104,1121655231,US
+1121483776,1121654863,US
+1121654864,1121654879,IN
+1121654880,1121654975,US
+1121654976,1121654991,FR
+1121654992,1121655231,US
1121655232,1121655263,AR
1121655264,1121655439,US
-1121655440,1121655447,VE
-1121655448,1121656063,US
+1121655440,1121655447,IN
+1121655448,1121655455,US
+1121655456,1121655463,IN
+1121655464,1121656063,US
1121656064,1121656095,NZ
1121656096,1121714975,US
1121714976,1121714991,AU
-1121714992,1121715967,US
+1121714992,1121715935,US
+1121715936,1121715943,A1
+1121715944,1121715967,US
1121715968,1121716095,IT
1121716096,1121717431,US
1121717432,1121717439,JP
1121717440,1121717759,US
1121717760,1121718015,IT
-1121718016,1121721711,US
-1121721712,1121721727,CN
+1121718016,1121721703,US
+1121721704,1121721727,CN
1121721728,1121878015,US
1121878016,1121910783,CA
1121910784,1122074623,US
@@ -17703,13 +21589,15 @@
1122088192,1122091007,CA
1122091008,1122092623,US
1122092624,1122092631,CA
-1122092632,1122092695,US
-1122092696,1122092703,CA
-1122092704,1122092799,US
+1122092632,1122092687,US
+1122092688,1122092695,GB
+1122092696,1122092799,US
1122092800,1122093055,CA
1122093056,1122093807,US
1122093808,1122093815,HK
-1122093816,1122103471,US
+1122093816,1122101431,US
+1122101432,1122101439,SG
+1122101440,1122103471,US
1122103472,1122103479,BE
1122103480,1122125996,US
1122125997,1122126004,GB
@@ -17766,17 +21654,13 @@
1122493440,1122494207,PR
1122494208,1122495231,US
1122495232,1122495999,PR
-1122496000,1122497407,US
-1122497408,1122497471,SV
-1122497472,1122497535,US
+1122496000,1122497535,US
1122497536,1122498047,PR
1122498048,1122498559,US
1122498560,1122498815,PR
1122498816,1122499583,US
1122499584,1122500095,PR
-1122500096,1122506751,US
-1122506752,1122507007,IN
-1122507008,1122525855,US
+1122500096,1122525855,US
1122525856,1122525865,RU
1122525866,1122526096,US
1122526097,1122526111,RU
@@ -17798,13 +21682,7 @@
1122667072,1122667135,CH
1122667136,1122759247,US
1122759248,1122759263,CA
-1122759264,1123057663,US
-1123057664,1123061759,CA
-1123061760,1123063807,US
-1123063808,1123069951,CA
-1123069952,1123071999,US
-1123072000,1123074047,CA
-1123074048,1123123199,US
+1122759264,1123123199,US
1123123200,1123127295,CA
1123127296,1123165247,US
1123165248,1123165311,CA
@@ -17827,7 +21705,8 @@
1123584352,1123584383,DE
1123584384,1123588063,US
1123588064,1123588095,CY
-1123588096,1123590143,US
+1123588096,1123588351,DE
+1123588352,1123590143,US
1123590144,1123598335,VI
1123598336,1123651583,US
1123651584,1123655679,JM
@@ -17924,9 +21803,7 @@
1125095296,1125095327,AU
1125095328,1125096959,US
1125096960,1125097087,AR
-1125097088,1125097119,US
-1125097120,1125097151,TH
-1125097152,1125097215,US
+1125097088,1125097215,US
1125097216,1125097279,AU
1125097280,1125097343,BR
1125097344,1125097407,US
@@ -18018,11 +21895,16 @@
1125120512,1125120767,US
1125120768,1125120799,UY
1125120800,1125120831,IL
-1125120832,1125120847,TH
-1125120848,1125120863,US
+1125120832,1125120863,US
1125120864,1125120895,GB
1125120896,1125121023,RO
-1125121024,1125454111,US
+1125121024,1125396483,US
+1125396484,1125396491,LK
+1125396492,1125396999,US
+1125397000,1125397007,ES
+1125397008,1125454007,US
+1125454008,1125454015,GB
+1125454016,1125454111,US
1125454112,1125454119,ES
1125454120,1125454143,US
1125454144,1125454151,GB
@@ -18060,7 +21942,8 @@
1125454544,1125454555,ES
1125454556,1125454587,US
1125454588,1125454591,CA
-1125454592,1125455359,US
+1125454592,1125454847,A2
+1125454848,1125455359,US
1125455360,1125455363,CA
1125455364,1125455367,US
1125455368,1125455371,GB
@@ -18084,7 +21967,7 @@
1125455516,1125455519,CA
1125455520,1125455523,ES
1125455524,1125455527,US
-1125455528,1125455531,ES
+1125455528,1125455531,GB
1125455532,1125455535,NO
1125455536,1125455543,US
1125455544,1125455547,ES
@@ -18096,9 +21979,12 @@
1125455568,1125455571,US
1125455572,1125455575,NO
1125455576,1125455579,AN
-1125455580,1125456131,US
+1125455580,1125455615,US
+1125455616,1125455871,A2
+1125455872,1125456131,US
1125456132,1125456135,NO
-1125456136,1125456151,US
+1125456136,1125456139,A2
+1125456140,1125456151,US
1125456152,1125456155,NL
1125456156,1125456163,US
1125456164,1125456167,NO
@@ -18122,13 +22008,14 @@
1125456420,1125474303,US
1125474304,1125478399,CA
1125478400,1125479199,US
-1125479200,1125479231,BR
-1125479232,1125493127,US
+1125479200,1125479255,BR
+1125479256,1125493127,US
1125493128,1125493135,CA
1125493136,1125498879,US
1125498880,1125508095,CA
1125508096,1125508351,PA
-1125508352,1125514495,CA
+1125508352,1125514239,CA
+1125514240,1125514495,CY
1125514496,1125514751,US
1125514752,1125515263,CA
1125515264,1125531647,US
@@ -18153,7 +22040,21 @@
1125541152,1125541159,CN
1125541160,1125541183,CA
1125541184,1125541215,KY
-1125541216,1125543935,CA
+1125541216,1125541223,CA
+1125541224,1125541231,US
+1125541232,1125541391,CA
+1125541392,1125541407,US
+1125541408,1125541487,CA
+1125541488,1125541503,US
+1125541504,1125541543,CA
+1125541544,1125541551,CN
+1125541552,1125541807,CA
+1125541808,1125541815,US
+1125541816,1125543543,CA
+1125543544,1125543551,US
+1125543552,1125543687,CA
+1125543688,1125543695,US
+1125543696,1125543935,CA
1125543936,1125545983,US
1125548032,1125548291,CA
1125548292,1125548351,US
@@ -18162,15 +22063,21 @@
1125550336,1125552127,CA
1125552128,1125572607,US
1125572608,1125576703,CA
-1125576704,1125613567,US
+1125576704,1125595695,US
+1125595696,1125595711,NG
+1125595712,1125596343,US
+1125596344,1125596351,NO
+1125596352,1125596479,US
+1125596480,1125596503,GB
+1125596504,1125613567,US
1125613568,1125617663,CA
-1125617664,1125626111,US
-1125626112,1125626367,IN
-1125626368,1125626623,US
-1125626624,1125626879,IN
-1125626880,1125628671,US
+1125617664,1125623295,US
+1125623296,1125623551,IN
+1125623552,1125628671,US
1125628672,1125628703,NZ
-1125628704,1126009343,US
+1125628704,1125642674,US
+1125642675,1125642694,BO
+1125642695,1126009343,US
1126009344,1126009599,AR
1126009600,1126504223,US
1126504224,1126504231,PR
@@ -18240,9 +22147,7 @@
1127976192,1127976223,IL
1127976224,1127979111,US
1127979112,1127979119,CA
-1127979120,1127985951,US
-1127985952,1127985983,NG
-1127985984,1127986087,US
+1127979120,1127986087,US
1127986088,1127986095,RO
1127986096,1127986935,US
1127986936,1127986943,IN
@@ -18264,9 +22169,7 @@
1128641536,1128792063,CA
1128792064,1128818687,US
1128818688,1128818719,CA
-1128818720,1130536959,US
-1130536960,1130539007,GU
-1130539008,1131440135,US
+1128818720,1131440135,US
1131440136,1131440143,PR
1131440144,1131949295,US
1131949296,1131949303,PR
@@ -18282,7 +22185,9 @@
1132910112,1132910143,AU
1132910144,1132947431,US
1132947432,1132947439,CA
-1132947440,1133785375,US
+1132947440,1132954319,US
+1132954320,1132954335,IS
+1132954336,1133785375,US
1133785376,1133785383,NE
1133785384,1133785391,US
1133785392,1133785407,GB
@@ -19039,7 +22944,9 @@
1137278976,1137283071,CA
1137283072,1137287167,US
1137287168,1137295359,CA
-1137295360,1137369087,US
+1137295360,1137341063,US
+1137341064,1137341064,GB
+1137341065,1137369087,US
1137369088,1137369519,CA
1137369520,1137369535,US
1137369536,1137370111,CA
@@ -19053,9 +22960,7 @@
1137376480,1137376511,CA
1137376512,1137377311,US
1137377312,1137377327,DE
-1137377328,1137377471,US
-1137377472,1137377479,IN
-1137377480,1137383455,US
+1137377328,1137383455,US
1137383456,1137383471,DE
1137383472,1137426431,US
1137426432,1137442815,PR
@@ -19196,16 +23101,16 @@
1137711280,1137711287,NL
1137711288,1137711295,US
1137711296,1137711303,NL
-1137711304,1137711343,US
-1137711344,1137711367,CA
+1137711304,1137711335,US
+1137711336,1137711367,CA
1137711368,1137711375,US
1137711376,1137711399,CA
1137711400,1137711407,US
1137711408,1137711439,CA
1137711440,1137711455,US
1137711456,1137711471,CA
-1137711472,1137711479,US
-1137711480,1137711503,CA
+1137711472,1137711487,US
+1137711488,1137711503,CA
1137711504,1137711511,US
1137711512,1137711559,CA
1137711560,1137711567,US
@@ -19230,8 +23135,10 @@
1137712120,1137712127,CA
1137712128,1137712135,US
1137712136,1137712151,CA
-1137712152,1137712207,US
-1137712208,1137712223,CA
+1137712152,1137712183,US
+1137712184,1137712191,CA
+1137712192,1137712215,US
+1137712216,1137712223,CA
1137712224,1137712239,US
1137712240,1137712255,CA
1137712256,1137712263,US
@@ -19240,8 +23147,8 @@
1137712288,1137712295,CA
1137712296,1137712327,US
1137712328,1137712343,CA
-1137712344,1137712351,US
-1137712352,1137712383,CA
+1137712344,1137712359,US
+1137712360,1137712383,CA
1137712384,1137712671,US
1137712672,1137712687,CA
1137712688,1137712711,US
@@ -19249,8 +23156,8 @@
1137712720,1137712759,US
1137712760,1137712767,CA
1137712768,1137712919,US
-1137712920,1137712935,CA
-1137712936,1137712959,US
+1137712920,1137712927,CA
+1137712928,1137712959,US
1137712960,1137712975,CA
1137712976,1137713015,US
1137713016,1137713023,CA
@@ -19258,7 +23165,9 @@
1137713072,1137713087,CA
1137713088,1137713103,US
1137713104,1137713111,CA
-1137713112,1137724495,US
+1137713112,1137713127,US
+1137713128,1137713135,CA
+1137713136,1137724495,US
1137724496,1137724511,CA
1137724512,1137724543,US
1137724544,1137724575,CA
@@ -19278,13 +23187,13 @@
1137758496,1137758527,AU
1137758528,1137758671,US
1137758672,1137758687,CH
-1137758688,1137759999,US
-1137760000,1137760255,PA
-1137760256,1137785855,US
+1137758688,1137785855,US
1137785856,1137786111,HU
1137786112,1137795071,US
1137795072,1137799167,A2
-1137799168,1137840127,US
+1137799168,1137803519,US
+1137803520,1137803775,CA
+1137803776,1137840127,US
1137840128,1137840383,CA
1137840384,1137843711,US
1137843712,1137843775,NO
@@ -19337,7 +23246,8 @@
1137927680,1137927807,CR
1137927808,1137927935,CA
1137927936,1137928063,VG
-1137928064,1137928255,CA
+1137928064,1137928191,PA
+1137928192,1137928255,CA
1137928256,1137928319,BZ
1137928320,1137930143,CA
1137930144,1137930159,MT
@@ -19346,7 +23256,9 @@
1137946146,1137946153,DE
1137946154,1137946585,US
1137946586,1137946593,NO
-1137946594,1137953023,US
+1137946594,1137950975,US
+1137950976,1137951231,CA
+1137951232,1137953023,US
1137953024,1137954815,CA
1137954816,1137963007,US
1137963008,1137967103,VI
@@ -19358,7 +23270,9 @@
1138000096,1138001519,US
1138001520,1138001535,CA
1138001536,1138049023,US
-1138049024,1138061311,CA
+1138049024,1138053631,CA
+1138053632,1138053887,US
+1138053888,1138061311,CA
1138061312,1138163711,US
1138163712,1138163967,CA
1138163968,1138163975,MA
@@ -19396,8 +23310,8 @@
1138164824,1138164831,CA
1138164832,1138164839,PH
1138164840,1138164863,CA
-1138164864,1138165247,US
-1138165248,1138165311,CA
+1138164864,1138164991,US
+1138164992,1138165311,CA
1138165312,1138165319,US
1138165320,1138165431,CA
1138165432,1138165439,LB
@@ -19467,13 +23381,22 @@
1138212864,1138216959,CA
1138216960,1138271087,US
1138271088,1138271103,TN
-1138271104,1138401279,US
-1138409472,1138417663,US
+1138271104,1138337167,US
+1138337168,1138337183,GB
+1138337184,1138337199,US
+1138337200,1138337207,SG
+1138337208,1138417663,US
1138417664,1138417695,CA
1138417696,1138417727,DE
1138417728,1138421759,US
1138421760,1138421791,DE
-1138421792,1138450959,US
+1138421792,1138422783,US
+1138422784,1138423039,PA
+1138423040,1138425855,US
+1138425856,1138427519,KN
+1138427520,1138427647,US
+1138427648,1138429951,KN
+1138429952,1138450959,US
1138450960,1138450967,JM
1138450968,1138450991,US
1138450992,1138450999,MX
@@ -19500,7 +23423,9 @@
1138452016,1138452047,US
1138452048,1138452055,AU
1138452056,1138452063,GB
-1138452064,1138452263,US
+1138452064,1138452223,US
+1138452224,1138452231,DE
+1138452232,1138452263,US
1138452264,1138452271,IN
1138452272,1138452287,US
1138452288,1138452295,GR
@@ -19516,11 +23441,18 @@
1138452456,1138452479,FR
1138452480,1138453567,US
1138453568,1138453615,FR
-1138453616,1138454015,US
-1138454016,1138454271,RU
-1138454272,1138454591,US
+1138453616,1138454527,US
+1138454528,1138454543,BR
+1138454544,1138454591,US
1138454592,1138454599,CA
-1138454600,1138480127,US
+1138454600,1138458127,US
+1138458128,1138458143,AU
+1138458144,1138458159,IN
+1138458160,1138458239,US
+1138458240,1138458255,PK
+1138458256,1138458271,AR
+1138458272,1138458287,RU
+1138458288,1138480127,US
1138480128,1138482687,AU
1138482688,1138499583,US
1138499584,1138503679,CA
@@ -19550,7 +23482,9 @@
1138512640,1138512671,ID
1138512672,1138512895,US
1138512896,1138512927,ID
-1138512928,1138548735,US
+1138512928,1138544895,US
+1138544896,1138545151,GB
+1138545152,1138548735,US
1138548736,1138556927,CA
1138556928,1138593791,US
1138593792,1138597887,CA
@@ -19574,11 +23508,15 @@
1138655696,1138655703,MX
1138655704,1138655715,US
1138655716,1138655723,GB
-1138655724,1138655841,US
+1138655724,1138655817,US
+1138655818,1138655825,MX
+1138655826,1138655841,US
1138655842,1138655849,CN
1138655850,1138655899,US
1138655900,1138655911,MX
-1138655912,1138656077,US
+1138655912,1138656025,US
+1138656026,1138656033,MX
+1138656034,1138656077,US
1138656078,1138656093,MX
1138656094,1138656141,US
1138656142,1138656173,GB
@@ -19587,30 +23525,36 @@
1138656199,1138656206,GB
1138656207,1138656222,US
1138656223,1138656230,EG
-1138656231,1138656661,US
+1138656231,1138656597,US
+1138656598,1138656605,EG
+1138656606,1138656661,US
1138656662,1138656669,MA
1138656670,1138656745,US
1138656746,1138656753,AE
-1138656754,1138657123,US
+1138656754,1138657101,US
+1138657102,1138657109,IN
+1138657110,1138657123,US
1138657124,1138657131,EG
1138657132,1138657173,US
1138657174,1138657181,EG
-1138657182,1138657197,US
-1138657198,1138657205,EG
-1138657206,1138657206,US
+1138657182,1138657206,US
1138657207,1138657214,EG
1138657215,1138657222,IN
1138657223,1138657235,US
1138657236,1138657244,MA
1138657245,1138657324,US
1138657325,1138657332,LK
-1138657333,1138657504,US
+1138657333,1138657401,US
+1138657402,1138657409,IN
+1138657410,1138657504,US
1138657505,1138657520,EG
1138657521,1138657748,US
1138657749,1138657780,GB
1138657781,1138658057,US
1138658058,1138658123,GB
-1138658124,1138658175,US
+1138658124,1138658131,US
+1138658132,1138658163,EG
+1138658164,1138658175,US
1138658176,1138658302,GB
1138658303,1138658431,US
1138658432,1138658496,PK
@@ -19625,9 +23569,11 @@
1138659498,1138659593,US
1138659594,1138659609,LK
1138659610,1138659642,GB
-1138659643,1138659673,US
+1138659643,1138659650,ID
+1138659651,1138659673,US
1138659674,1138659681,MA
-1138659682,1138659705,US
+1138659682,1138659697,US
+1138659698,1138659705,ID
1138659706,1138659713,CA
1138659714,1138659723,US
1138659724,1138659731,ID
@@ -19657,8 +23603,7 @@
1138660218,1138660225,IN
1138660226,1138660233,US
1138660234,1138660241,EG
-1138660242,1138660242,US
-1138660243,1138660270,CA
+1138660242,1138660270,US
1138660271,1138660310,GB
1138660311,1138660311,US
1138660312,1138660333,GB
@@ -19717,21 +23662,26 @@
1138661670,1138661677,IN
1138661678,1138661713,US
1138661714,1138661721,EG
-1138661722,1138661769,US
+1138661722,1138661761,US
+1138661762,1138661769,ID
1138661770,1138661777,MA
1138661778,1138661821,US
1138661822,1138661829,MA
1138661830,1138661913,US
1138661914,1138661954,EG
-1138661955,1138661985,US
-1138661986,1138661993,EG
+1138661955,1138661977,US
+1138661978,1138661993,EG
1138661994,1138662057,US
1138662058,1138662107,EG
1138662108,1138662169,US
1138662170,1138662233,EG
1138662234,1138662273,US
1138662274,1138662309,EG
-1138662310,1138662409,US
+1138662310,1138662333,US
+1138662334,1138662353,GB
+1138662354,1138662369,US
+1138662370,1138662393,GB
+1138662394,1138662409,US
1138662410,1138662473,EG
1138662474,1138662505,GB
1138662506,1138662537,US
@@ -19744,18 +23694,14 @@
1138662794,1138662801,ID
1138662802,1138662841,US
1138662842,1138662849,GB
-1138662850,1138662966,US
-1138662967,1138662982,EG
-1138662983,1138663037,US
+1138662850,1138663037,US
1138663038,1138663166,GB
1138663167,1138712575,US
1138712576,1138713583,CA
-1138713584,1138713599,IR
+1138713584,1138713599,MY
1138713600,1138713927,CA
1138713928,1138713935,US
-1138713936,1138713951,CA
-1138713952,1138713959,US
-1138713960,1138714039,CA
+1138713936,1138714039,CA
1138714040,1138714047,US
1138714048,1138714071,CA
1138714072,1138714079,US
@@ -19789,7 +23735,13 @@
1138950144,1139146751,US
1139146752,1139154943,GT
1139154944,1139167231,JM
-1139167232,1139179519,US
+1139167232,1139167743,US
+1139167744,1139169023,PR
+1139169024,1139169279,US
+1139169280,1139170047,PR
+1139170048,1139171327,US
+1139171328,1139175423,GT
+1139175424,1139179519,US
1139179520,1139188223,CA
1139188224,1139188479,GB
1139188480,1139188735,CA
@@ -19808,7 +23760,7 @@
1139195136,1139195391,GB
1139195392,1139195775,US
1139195776,1139195903,CA
-1139195904,1139265535,US
+1139195904,1139261439,US
1139265536,1139269631,CA
1139269632,1142187775,US
1142187776,1142187783,PR
@@ -19834,42 +23786,48 @@
1145259264,1145259327,IN
1145259328,1145260031,US
1145260032,1145260095,IN
-1145260096,1145261055,US
+1145260096,1145260623,US
+1145260624,1145260631,IN
+1145260632,1145261055,US
1145261056,1145261119,IN
1145261120,1145261311,US
1145261312,1145261375,IN
1145261376,1145307135,US
1145307136,1145311231,CA
-1145311232,1145315559,US
-1145315560,1145315567,GB
-1145315568,1145331711,US
+1145311232,1145331711,US
1145331712,1145331967,DK
1145331968,1145333031,US
1145333032,1145333039,IT
-1145333040,1145333239,US
+1145333040,1145333191,US
+1145333192,1145333199,CN
+1145333200,1145333215,US
+1145333216,1145333223,CN
+1145333224,1145333239,US
1145333240,1145333247,CN
1145333248,1145333327,US
1145333328,1145333343,CN
1145333344,1145333351,US
-1145333352,1145333367,CN
+1145333352,1145333359,CN
+1145333360,1145333367,US
1145333368,1145333375,PA
1145333376,1145333503,BD
1145333504,1145333863,US
1145333864,1145333871,EG
1145333872,1145333879,US
1145333880,1145333903,CN
-1145333904,1145333911,US
-1145333912,1145333919,CN
-1145333920,1145334055,US
-1145334056,1145334063,CN
-1145334064,1145334143,US
-1145334144,1145334167,CN
-1145334168,1145334175,HK
-1145334176,1145335167,US
-1145335168,1145335199,CN
-1145335200,1145335215,US
-1145335216,1145335231,CN
-1145335232,1145376767,US
+1145333904,1145334151,US
+1145334152,1145334167,CN
+1145334168,1145334175,US
+1145334176,1145334223,CN
+1145334224,1145334231,US
+1145334232,1145334239,CN
+1145334240,1145335103,US
+1145335104,1145335135,NL
+1145335136,1145335167,US
+1145335168,1145335183,CN
+1145335184,1145335215,US
+1145335216,1145335223,CN
+1145335224,1145376767,US
1145376768,1145380863,CA
1145380864,1145405439,US
1145405440,1145413631,CA
@@ -19931,20 +23889,24 @@
1151896088,1151896127,CA
1151896128,1151896191,US
1151896192,1151896319,CA
-1151896320,1151943999,US
+1151896320,1151896575,US
+1151896576,1151896831,CA
+1151896832,1151943999,US
1151944000,1151944063,HK
1151944064,1151945759,US
1151945760,1151945791,IE
-1151945792,1151954943,US
-1151959040,1152073727,US
+1151945792,1152073727,US
1152073728,1152077823,CA
-1152077824,1152581631,US
+1152077824,1152081919,US
+1152081920,1152082175,AU
+1152082176,1152082303,IN
+1152082304,1152082431,US
+1152082432,1152082687,AU
+1152082688,1152581631,US
1152581632,1152614399,CA
1152614400,1152778239,US
1152778240,1152843775,CA
-1152843776,1154488319,US
-1154488320,1154488575,A2
-1154488576,1156071423,US
+1152843776,1156071423,US
1156071424,1156079615,CA
1156079616,1156129479,US
1156129480,1156129487,SG
@@ -19965,9 +23927,13 @@
1157670432,1157670463,CA
1157670464,1157713663,US
1157713664,1157713791,CA
-1157713792,1157755247,US
+1157713792,1157753087,US
+1157753088,1157753343,GB
+1157753344,1157755247,US
1157755248,1157755263,GR
-1157755264,1157931007,US
+1157755264,1157758207,US
+1157758208,1157758463,RU
+1157758464,1157931007,US
1157931008,1157935103,BS
1157935104,1157943295,US
1157943296,1157947391,CA
@@ -20248,9 +24214,7 @@
1158732877,1158732884,GB
1158732885,1158736241,US
1158736242,1158736249,IN
-1158736250,1158741290,US
-1158741291,1158741298,CA
-1158741299,1158774783,US
+1158736250,1158774783,US
1158774784,1158791167,CA
1158791168,1158799359,BM
1158799360,1158807551,CA
@@ -20336,7 +24300,9 @@
1158946640,1158946647,IL
1158946648,1158946711,US
1158946712,1158946719,HK
-1158946720,1158947087,US
+1158946720,1158946771,US
+1158946772,1158946772,MX
+1158946773,1158947087,US
1158947088,1158947095,ZA
1158947096,1158947391,US
1158947392,1158947399,CA
@@ -20371,7 +24337,9 @@
1158949408,1158949415,ZA
1158949416,1158949775,US
1158949776,1158949783,GB
-1158949784,1158950319,US
+1158949784,1158950105,US
+1158950106,1158950107,CA
+1158950108,1158950319,US
1158950320,1158950327,CA
1158950328,1158950335,US
1158950336,1158950351,CA
@@ -20404,10 +24372,14 @@
1158952816,1158952823,CA
1158952824,1158952895,US
1158952896,1158952903,IL
-1158952904,1158954815,US
+1158952904,1158953503,US
+1158953504,1158953511,NL
+1158953512,1158954815,US
1158954816,1158954823,GB
1158954824,1158954831,CA
-1158954832,1158955039,US
+1158954832,1158955015,US
+1158955016,1158955023,CA
+1158955024,1158955039,US
1158955040,1158955047,GB
1158955048,1158956063,US
1158956064,1158956079,NL
@@ -20457,9 +24429,7 @@
1158961256,1158961263,ES
1158961264,1158961775,US
1158961776,1158961783,CA
-1158961784,1158961823,US
-1158961824,1158961855,BD
-1158961856,1158962175,US
+1158961784,1158962175,US
1158962176,1158962183,GB
1158962184,1158962287,US
1158962288,1158962295,ZA
@@ -20467,7 +24437,9 @@
1158962592,1158962607,GB
1158962608,1158962615,US
1158962616,1158962623,GB
-1158962624,1158963271,US
+1158962624,1158962671,US
+1158962672,1158962675,IN
+1158962676,1158963271,US
1158963272,1158963279,IE
1158963280,1158963335,US
1158963336,1158963343,SE
@@ -20479,7 +24451,9 @@
1158963728,1158963735,GB
1158963736,1158964103,US
1158964104,1158964111,IN
-1158964112,1158964255,US
+1158964112,1158964189,US
+1158964190,1158964191,CA
+1158964192,1158964255,US
1158964256,1158964263,IN
1158964264,1158964287,US
1158964288,1158964319,CA
@@ -20504,7 +24478,7 @@
1158965168,1158965199,US
1158965200,1158965215,CA
1158965216,1158965247,US
-1158965248,1158965255,RU
+1158965248,1158965255,IN
1158965256,1158965559,US
1158965560,1158965567,IN
1158965568,1158965743,US
@@ -20577,13 +24551,18 @@
1159254016,1159262471,US
1159262472,1159262475,TZ
1159262476,1159262479,SA
-1159262480,1159262727,US
+1159262480,1159262483,US
+1159262484,1159262487,TZ
+1159262488,1159262491,SA
+1159262492,1159262727,US
1159262728,1159262731,DE
1159262732,1159262735,RU
-1159262736,1159266935,US
+1159262736,1159262743,US
+1159262744,1159262747,RU
+1159262748,1159266935,US
1159266936,1159266943,PR
1159266944,1159269119,US
-1159269120,1159269375,CA
+1159269120,1159269375,AR
1159269376,1159274495,US
1159274496,1159274751,GB
1159274752,1159276799,US
@@ -20610,9 +24589,9 @@
1159314080,1159314087,TR
1159314088,1159314367,US
1159314368,1159314383,BR
-1159314384,1159314687,US
-1159314688,1159314703,MX
-1159314704,1159318015,US
+1159314384,1159314943,US
+1159314944,1159315199,CR
+1159315200,1159318015,US
1159318016,1159318047,GB
1159318048,1159328655,US
1159328656,1159328671,FR
@@ -20620,9 +24599,7 @@
1159348224,1159356415,CA
1159356416,1159421951,US
1159421952,1159430143,CA
-1159430144,1159441343,US
-1159441344,1159441375,CA
-1159441376,1159480439,US
+1159430144,1159480439,US
1159480440,1159480447,CA
1159480448,1159481167,US
1159481168,1159481183,VG
@@ -20657,8 +24634,8 @@
1159517120,1159517151,CA
1159517152,1159517183,US
1159517184,1159517327,CA
-1159517328,1159517567,US
-1159517568,1159517599,CA
+1159517328,1159517439,US
+1159517440,1159517599,CA
1159517600,1159517631,US
1159517632,1159517663,CA
1159517664,1159517695,US
@@ -20701,9 +24678,7 @@
1159525376,1159526399,CA
1159526400,1159527935,US
1159527936,1159528191,CA
-1159528192,1159530671,US
-1159530672,1159530679,MO
-1159530680,1159532103,US
+1159528192,1159532103,US
1159532104,1159532111,MO
1159532112,1159560207,US
1159560208,1159560215,MO
@@ -20711,8 +24686,8 @@
1159643440,1159643455,TR
1159643456,1159643471,JP
1159643472,1159656487,US
-1159656488,1159656511,BR
-1159656512,1159657023,US
+1159656488,1159656495,BR
+1159656496,1159657023,US
1159657024,1159657039,AU
1159657040,1159657071,US
1159657072,1159657087,NZ
@@ -20740,8 +24715,7 @@
1159997584,1159997591,BB
1159997592,1159997623,US
1159997624,1159997631,SC
-1159997632,1159997639,GB
-1159997640,1159998575,US
+1159997632,1159998575,US
1159998576,1159998583,UG
1159998584,1159998703,US
1159998704,1159998711,RS
@@ -20817,7 +24791,8 @@
1160406480,1160406487,A2
1160406488,1160408095,US
1160408096,1160408111,GD
-1160408112,1160408319,US
+1160408112,1160408127,ES
+1160408128,1160408319,US
1160408320,1160408575,CA
1160408576,1160409423,US
1160409424,1160409439,PT
@@ -20885,7 +24860,20 @@
1160487424,1160503295,US
1160503296,1160503871,A2
1160503872,1160503903,US
-1160503904,1160507391,A2
+1160503904,1160504159,A2
+1160504160,1160504175,US
+1160504176,1160504191,A2
+1160504192,1160504207,AU
+1160504208,1160504287,A2
+1160504288,1160504303,US
+1160504304,1160504319,A2
+1160504320,1160504383,US
+1160504384,1160504511,A2
+1160504512,1160504543,NP
+1160504544,1160504575,AF
+1160504576,1160505343,A2
+1160505344,1160505855,AU
+1160505856,1160507391,A2
1160507392,1160542207,US
1160542208,1160542239,LB
1160542240,1160543327,US
@@ -20900,7 +24888,21 @@
1160563200,1160563711,MP
1160563712,1160609791,US
1160609792,1160610815,MX
-1160610816,1160667135,US
+1160610816,1160660111,US
+1160660112,1160660119,GB
+1160660120,1160661639,US
+1160661640,1160661647,GB
+1160661648,1160662487,US
+1160662488,1160662495,GB
+1160662496,1160662743,US
+1160662744,1160662751,GB
+1160662752,1160665623,US
+1160665624,1160665631,GB
+1160665632,1160665807,US
+1160665808,1160665815,GB
+1160665816,1160667087,US
+1160667088,1160667095,GB
+1160667096,1160667135,US
1160667136,1160675327,CA
1160675328,1160677015,US
1160677016,1160677023,AR
@@ -21034,7 +25036,15 @@
1160864000,1160864255,CA
1160864256,1160921087,US
1160921088,1160925183,AG
-1160925184,1160941535,US
+1160925184,1160938879,US
+1160938880,1160938887,NL
+1160938888,1160938895,US
+1160938896,1160938911,CY
+1160938912,1160941463,US
+1160941464,1160941471,RU
+1160941472,1160941503,US
+1160941504,1160941519,CY
+1160941520,1160941535,US
1160941536,1160941567,CA
1160941568,1160945663,US
1160953856,1160973439,US
@@ -21057,8 +25067,8 @@
1161293824,1161297919,CA
1161297920,1161298303,US
1161298304,1161298311,IL
-1161298312,1161300511,US
-1161300512,1161300519,CA
+1161298312,1161300495,US
+1161300496,1161300519,CA
1161300520,1161304591,US
1161304592,1161304599,AU
1161304600,1161311743,US
@@ -21078,7 +25088,9 @@
1161314160,1161363455,US
1161363456,1161367551,CA
1161367552,1161416703,US
-1161420800,1161421311,AG
+1161420800,1161421151,AG
+1161421152,1161421167,MS
+1161421168,1161421311,AG
1161421312,1161421567,AI
1161421568,1161422079,AG
1161422080,1161422335,VG
@@ -21103,7 +25115,9 @@
1161426176,1161426943,AG
1161426944,1161427199,AI
1161427200,1161427455,VG
-1161427456,1161428223,AG
+1161427456,1161427487,AG
+1161427488,1161427519,MS
+1161427520,1161428223,AG
1161428224,1161428991,KN
1161428992,1161453567,US
1161453568,1161457663,CA
@@ -21115,44 +25129,78 @@
1161586688,1161586943,PA
1161586944,1161617407,US
1161617408,1161625599,CA
-1161625600,1161627695,US
-1161627696,1161627703,AR
-1161627704,1161627727,US
+1161625600,1161627663,US
+1161627664,1161627679,SE
+1161627680,1161627687,US
+1161627688,1161627695,HR
+1161627696,1161627703,US
+1161627704,1161627711,DE
+1161627712,1161627727,US
1161627728,1161627743,AR
-1161627744,1161627759,US
+1161627744,1161627751,RO
+1161627752,1161627759,US
1161627760,1161627775,GB
1161627776,1161627807,US
-1161627808,1161627823,AR
+1161627808,1161627815,HR
+1161627816,1161627823,US
1161627824,1161627831,AU
-1161627832,1161627863,AR
-1161627864,1161627871,US
-1161627872,1161627879,GB
+1161627832,1161627839,US
+1161627840,1161627863,AR
+1161627864,1161627871,CA
+1161627872,1161627879,HR
1161627880,1161627895,US
-1161627896,1161627903,AZ
-1161627904,1161628479,US
+1161627896,1161627903,CA
+1161627904,1161628447,US
+1161628448,1161628455,NL
+1161628456,1161628463,GB
+1161628464,1161628479,US
1161628480,1161628487,GB
1161628488,1161628607,US
1161628608,1161628639,AR
1161628640,1161628647,IN
-1161628648,1161628655,CA
-1161628656,1161628663,US
+1161628648,1161628663,US
1161628664,1161628671,AR
-1161628672,1161629327,US
-1161629328,1161629335,RO
-1161629336,1161629343,NL
-1161629344,1161629391,US
-1161629392,1161629399,RU
-1161629400,1161629519,US
+1161628672,1161629199,US
+1161629200,1161629215,SI
+1161629216,1161629223,US
+1161629224,1161629231,GB
+1161629232,1161629239,US
+1161629240,1161629247,PL
+1161629248,1161629263,US
+1161629264,1161629271,PL
+1161629272,1161629343,US
+1161629344,1161629375,FI
+1161629376,1161629383,CA
+1161629384,1161629391,AR
+1161629392,1161629399,IE
+1161629400,1161629407,IL
+1161629408,1161629415,GB
+1161629416,1161629423,SI
+1161629424,1161629431,US
+1161629432,1161629439,MY
+1161629440,1161629519,US
1161629520,1161629527,GB
1161629528,1161629535,MY
-1161629536,1161629551,GB
-1161629552,1161629695,US
+1161629536,1161629567,GB
+1161629568,1161629583,US
+1161629584,1161629599,GB
+1161629600,1161629615,HR
+1161629616,1161629695,US
1161629696,1161629951,PL
-1161629952,1161630335,US
-1161630336,1161630343,PL
-1161630344,1161630399,US
+1161629952,1161630263,US
+1161630264,1161630271,AR
+1161630272,1161630335,US
+1161630336,1161630343,AR
+1161630344,1161630351,IL
+1161630352,1161630367,US
+1161630368,1161630375,GB
+1161630376,1161630383,US
+1161630384,1161630391,AR
+1161630392,1161630399,US
1161630400,1161630431,GB
-1161630432,1161630727,US
+1161630432,1161630455,US
+1161630456,1161630463,NL
+1161630464,1161630727,US
1161630728,1161630735,EG
1161630736,1161630743,AU
1161630744,1161630751,GB
@@ -21160,46 +25208,58 @@
1161630768,1161630775,IL
1161630776,1161630791,US
1161630792,1161630799,AR
-1161630800,1161630823,US
-1161630824,1161630831,AR
-1161630832,1161630855,US
-1161630856,1161630863,DE
-1161630864,1161630911,US
+1161630800,1161630807,US
+1161630808,1161630815,BG
+1161630816,1161630823,US
+1161630824,1161630831,GB
+1161630832,1161630895,US
+1161630896,1161630903,DK
+1161630904,1161630911,US
1161630912,1161630919,KW
1161630920,1161630927,US
1161630928,1161630935,GB
-1161630936,1161630967,US
+1161630936,1161630943,SI
+1161630944,1161630951,US
+1161630952,1161630959,TR
+1161630960,1161630967,US
1161630968,1161630975,IL
1161630976,1161630983,US
1161630984,1161630991,CA
1161630992,1161630999,US
1161631000,1161631007,AU
1161631008,1161631015,IL
-1161631016,1161631039,US
+1161631016,1161631031,US
+1161631032,1161631039,CZ
1161631040,1161631047,GB
-1161631048,1161631079,US
-1161631080,1161631087,AR
-1161631088,1161631127,US
+1161631048,1161631055,IN
+1161631056,1161631079,US
+1161631080,1161631087,SI
+1161631088,1161631103,US
+1161631104,1161631111,KW
+1161631112,1161631127,US
1161631128,1161631135,BG
1161631136,1161631159,US
1161631160,1161631167,CA
1161631168,1161631183,US
1161631184,1161631199,GB
-1161631200,1161631215,AR
+1161631200,1161631207,US
+1161631208,1161631215,AR
1161631216,1161631223,GB
-1161631224,1161631471,US
+1161631224,1161631431,US
+1161631432,1161631439,KW
+1161631440,1161631471,US
1161631472,1161631479,AR
-1161631480,1161631487,US
-1161631488,1161631495,AR
+1161631480,1161631495,US
1161631496,1161631503,CA
1161631504,1161631511,US
1161631512,1161631519,BG
-1161631520,1161631535,US
+1161631520,1161631535,GB
1161631536,1161631543,AR
1161631544,1161631551,BR
1161631552,1161631591,US
1161631592,1161631599,BR
-1161631600,1161631631,US
+1161631600,1161631623,US
+1161631624,1161631631,KW
1161631632,1161631639,BR
1161631640,1161631647,US
1161631648,1161631655,AU
@@ -21210,7 +25270,8 @@
1161632520,1161632527,BG
1161632528,1161632551,US
1161632552,1161632559,BR
-1161632560,1161632631,US
+1161632560,1161632575,GB
+1161632576,1161632631,US
1161632632,1161632639,GB
1161632640,1161632655,US
1161632656,1161632663,GB
@@ -21220,13 +25281,21 @@
1161633024,1161633055,CA
1161633056,1161633215,US
1161633216,1161633231,EE
-1161633232,1161634063,US
-1161634064,1161634071,RO
+1161633232,1161633631,US
+1161633632,1161633639,CA
+1161633640,1161634055,US
+1161634056,1161634063,IN
+1161634064,1161634071,CA
1161634072,1161634127,US
1161634128,1161634135,AR
-1161634136,1161634199,US
+1161634136,1161634143,PH
+1161634144,1161634175,US
+1161634176,1161634191,PL
+1161634192,1161634199,US
1161634200,1161634207,NZ
-1161634208,1161634239,US
+1161634208,1161634223,US
+1161634224,1161634231,VN
+1161634232,1161634239,US
1161634240,1161634247,GB
1161634248,1161634271,US
1161634272,1161634287,CH
@@ -21234,11 +25303,14 @@
1161634336,1161634352,PL
1161634353,1161634495,US
1161634496,1161634503,GB
-1161634504,1161634943,US
+1161634504,1161634519,US
+1161634520,1161634527,BG
+1161634528,1161634943,US
1161634944,1161634959,PL
1161634960,1161634975,US
1161634976,1161635007,PL
-1161635008,1161635855,US
+1161635008,1161635071,KW
+1161635072,1161635855,US
1161635856,1161635871,BE
1161635872,1161636063,US
1161636064,1161636095,IL
@@ -21251,9 +25323,12 @@
1161636464,1161636471,EG
1161636472,1161636495,US
1161636496,1161636503,CA
-1161636504,1161637159,US
+1161636504,1161637135,US
+1161637136,1161637143,CA
+1161637144,1161637159,US
1161637160,1161637167,NZ
-1161637168,1161637199,US
+1161637168,1161637175,GB
+1161637176,1161637199,US
1161637200,1161637207,GB
1161637208,1161637215,US
1161637216,1161637223,PL
@@ -21261,7 +25336,9 @@
1161637296,1161637303,AR
1161637304,1161637343,US
1161637344,1161637351,RU
-1161637352,1161637671,US
+1161637352,1161637655,US
+1161637656,1161637663,IL
+1161637664,1161637671,US
1161637672,1161637679,IL
1161637680,1161637695,AR
1161637696,1161637775,US
@@ -21272,7 +25349,11 @@
1161638968,1161638975,GB
1161638976,1161638991,US
1161638992,1161638999,PL
-1161639000,1161639063,US
+1161639000,1161639007,US
+1161639008,1161639023,BG
+1161639024,1161639039,US
+1161639040,1161639047,CA
+1161639048,1161639063,US
1161639064,1161639071,PL
1161639072,1161639087,US
1161639088,1161639095,CA
@@ -21287,33 +25368,43 @@
1161639520,1161639527,PL
1161639528,1161639575,US
1161639576,1161639583,BG
-1161639584,1161639703,US
+1161639584,1161639687,US
+1161639688,1161639695,KW
+1161639696,1161639703,US
1161639704,1161639711,BZ
1161639712,1161639719,PL
1161639720,1161639727,US
1161639728,1161639743,GB
1161639744,1161639831,US
1161639832,1161639839,AR
-1161639840,1161639887,US
+1161639840,1161639879,US
+1161639880,1161639887,NL
1161639888,1161639895,AT
-1161639896,1161639951,US
-1161639952,1161639959,IL
+1161639896,1161639959,US
1161639960,1161639967,GB
-1161639968,1161639999,US
-1161640000,1161640015,PL
-1161640016,1161640023,US
+1161639968,1161639991,US
+1161639992,1161639999,HR
+1161640000,1161640015,US
+1161640016,1161640023,PL
1161640024,1161640031,AR
1161640032,1161640095,US
1161640096,1161640127,AR
1161640128,1161640767,US
-1161640768,1161640791,GB
+1161640768,1161640783,RO
+1161640784,1161640791,GB
1161640792,1161640847,US
1161640848,1161640863,PL
-1161640864,1161641887,US
+1161640864,1161640895,AR
+1161640896,1161641375,US
+1161641376,1161641383,KW
+1161641384,1161641463,US
+1161641464,1161641471,IN
+1161641472,1161641887,US
1161641888,1161641911,KW
1161641912,1161641919,US
1161641920,1161641983,PL
-1161641984,1161642007,US
+1161641984,1161641999,US
+1161642000,1161642007,IN
1161642008,1161642015,NL
1161642016,1161642039,GB
1161642040,1161642175,US
@@ -21339,56 +25430,95 @@
1161647104,1161647119,PL
1161647120,1161647135,GB
1161647136,1161647167,PL
-1161647168,1161650183,US
-1161650184,1161650191,IL
+1161647168,1161649407,US
+1161649408,1161649663,AR
+1161649664,1161650175,US
+1161650176,1161650183,HR
+1161650184,1161650191,AR
1161650192,1161650199,US
1161650200,1161650207,BG
-1161650208,1161650303,US
+1161650208,1161650215,US
+1161650216,1161650223,FI
+1161650224,1161650239,CA
+1161650240,1161650303,US
1161650304,1161650311,NL
1161650312,1161650327,US
-1161650328,1161650335,AR
-1161650336,1161650359,US
-1161650360,1161650367,RO
-1161650368,1161650687,US
-1161650688,1161650695,AR
-1161650696,1161650703,BR
-1161650704,1161650847,US
+1161650328,1161650343,AR
+1161650344,1161650359,US
+1161650360,1161650367,IL
+1161650368,1161650375,ES
+1161650376,1161650391,US
+1161650392,1161650399,CA
+1161650400,1161650415,US
+1161650416,1161650423,PL
+1161650424,1161650799,US
+1161650800,1161650815,SI
+1161650816,1161650823,US
+1161650824,1161650831,AU
+1161650832,1161650847,US
1161650848,1161650863,AR
-1161650864,1161650927,US
+1161650864,1161650879,US
+1161650880,1161650895,GB
+1161650896,1161650927,US
1161650928,1161650935,HR
-1161650936,1161651055,US
+1161650936,1161650943,US
+1161650944,1161650951,SI
+1161650952,1161650967,US
+1161650968,1161650975,SI
+1161650976,1161651055,US
1161651056,1161651071,PL
-1161651072,1161651103,US
+1161651072,1161651079,HR
+1161651080,1161651095,US
+1161651096,1161651103,HR
1161651104,1161651135,GB
-1161651136,1161651487,US
+1161651136,1161651143,BG
+1161651144,1161651183,US
+1161651184,1161651199,GB
+1161651200,1161651487,US
1161651488,1161651503,GB
-1161651504,1161651535,US
+1161651504,1161651511,US
+1161651512,1161651519,GB
+1161651520,1161651535,CA
1161651536,1161651543,PL
-1161651544,1161651551,US
-1161651552,1161651559,CA
-1161651560,1161651599,US
-1161651600,1161651607,AR
+1161651544,1161651575,US
+1161651576,1161651583,CA
+1161651584,1161651599,US
+1161651600,1161651607,RS
1161651608,1161651647,US
1161651648,1161651711,PL
-1161651712,1161651967,US
+1161651712,1161651743,US
+1161651744,1161651775,GB
+1161651776,1161651807,AR
+1161651808,1161651839,US
+1161651840,1161651855,MY
+1161651856,1161651967,US
1161651968,1161651975,CH
1161651976,1161652007,US
1161652008,1161652015,GB
1161652016,1161652095,US
1161652096,1161652103,CY
-1161652104,1161652127,US
-1161652128,1161652135,AR
-1161652136,1161653023,US
+1161652104,1161652143,US
+1161652144,1161652151,GB
+1161652152,1161652991,US
+1161652992,1161653023,CA
1161653024,1161653055,AR
-1161653056,1161653503,US
+1161653056,1161653087,US
+1161653088,1161653119,PL
+1161653120,1161653503,US
1161653504,1161653759,CA
1161653760,1161653791,US
1161653792,1161653799,SI
1161653800,1161653831,US
-1161653832,1161653839,HR
-1161653840,1161655807,US
-1161655808,1161656063,IL
-1161656064,1161657615,US
+1161653832,1161653839,SI
+1161653840,1161653847,US
+1161653848,1161653855,SI
+1161653856,1161653887,US
+1161653888,1161653951,SE
+1161653952,1161654239,US
+1161654240,1161654247,GB
+1161654248,1161654263,US
+1161654264,1161654271,SI
+1161654272,1161657615,US
1161657616,1161657623,CA
1161657624,1161657679,US
1161657680,1161657695,PL
@@ -21399,22 +25529,40 @@
1161658160,1161764863,US
1161764864,1161773055,CA
1161773056,1161777151,SZ
-1161777152,1161790407,US
-1161790408,1161790416,PA
-1161790417,1161790839,US
+1161777152,1161789981,US
+1161789982,1161789983,CA
+1161789984,1161789984,US
+1161789985,1161789985,CA
+1161789986,1161790165,US
+1161790166,1161790171,CA
+1161790172,1161790196,US
+1161790197,1161790205,DE
+1161790206,1161790839,US
1161790840,1161790848,CA
-1161790849,1161818111,US
+1161790849,1161791321,US
+1161791322,1161791330,CA
+1161791331,1161791381,US
+1161791382,1161791386,CA
+1161791387,1161795979,US
+1161795980,1161795983,CA
+1161795984,1161818111,US
1161818112,1161822207,CA
-1161822208,1161832799,US
-1161832800,1161832831,ZA
-1161832832,1161832863,DE
-1161832864,1161833967,US
+1161822208,1161832767,US
+1161832768,1161832831,BR
+1161832832,1161833759,US
+1161833760,1161833791,FR
+1161833792,1161833855,US
+1161833856,1161833887,FR
+1161833888,1161833919,US
+1161833920,1161833951,UA
+1161833952,1161833967,US
1161833968,1161833975,DE
1161833976,1161835341,US
1161835342,1161835353,GR
1161835354,1161836031,US
1161836032,1161836063,CA
-1161836064,1161836159,US
+1161836064,1161836095,JP
+1161836096,1161836159,US
1161836160,1161836191,BR
1161836192,1161836287,US
1161836288,1161836319,RS
@@ -21422,7 +25570,7 @@
1161836384,1161836415,CY
1161836416,1161836447,BR
1161836448,1161836479,US
-1161836480,1161836511,UA
+1161836480,1161836511,GB
1161836512,1161837567,US
1161837568,1161837823,JP
1161837824,1161838548,US
@@ -21457,7 +25605,9 @@
1161891528,1161891535,CA
1161891536,1161891543,US
1161891544,1161891551,CA
-1161891552,1161901647,US
+1161891552,1161900863,US
+1161900864,1161900895,A1
+1161900896,1161901647,US
1161901648,1161901655,VN
1161901656,1161925631,US
1161925632,1161925887,EC
@@ -21528,7 +25678,9 @@
1162461184,1162461695,BB
1162461696,1162462207,GD
1162462208,1162462975,BB
-1162462976,1162463999,VC
+1162462976,1162463054,VC
+1162463055,1162463055,BB
+1162463056,1162463999,VC
1162464000,1162465279,BB
1162465280,1162465535,GD
1162465536,1162470911,BB
@@ -21551,7 +25703,8 @@
1162811648,1162812159,US
1162812160,1162812415,DO
1162812416,1162813439,BS
-1162813440,1162821631,US
+1162813440,1162817535,AN
+1162817536,1162821631,GT
1162821632,1162823679,PR
1162823680,1162825727,GT
1162825728,1162827775,US
@@ -21561,16 +25714,28 @@
1162836224,1162836735,AN
1162836736,1162836991,US
1162836992,1162838015,BS
-1162838016,1162870783,US
+1162838016,1162840063,PR
+1162840064,1162853375,US
+1162853376,1162854399,PR
+1162854400,1162858495,JM
+1162858496,1162862591,HN
+1162862592,1162870783,US
1162870784,1162871295,BB
-1162871296,1162874367,LC
-1162874368,1162887167,BB
-1162903552,1162925983,US
+1162871296,1162879999,LC
+1162880000,1162882559,DM
+1162882560,1162883839,GD
+1162883840,1162887167,BB
+1162887168,1162895359,US
+1162895360,1162899455,A1
+1162899456,1162925983,US
1162925984,1162926015,AU
1162926016,1162926071,US
1162926072,1162926079,AU
1162926080,1163395071,US
-1163395072,1163395839,A2
+1163395072,1163395823,A2
+1163395824,1163395827,NP
+1163395828,1163395831,AF
+1163395832,1163395839,A2
1163395840,1163395847,BD
1163395848,1163395855,ID
1163395856,1163395863,BD
@@ -21634,7 +25799,9 @@
1163397576,1163397583,BD
1163397584,1163397663,A2
1163397664,1163397695,BD
-1163397696,1163397855,A2
+1163397696,1163397791,A2
+1163397792,1163397807,AF
+1163397808,1163397855,A2
1163397856,1163397887,US
1163397888,1163398143,NP
1163398144,1163398239,A2
@@ -21644,7 +25811,7 @@
1163399040,1163399103,A2
1163399104,1163399295,BD
1163399296,1163399679,A2
-1163399680,1163399807,BD
+1163399680,1163399807,US
1163399808,1163399935,A2
1163399936,1163400063,US
1163400064,1163400447,A2
@@ -21686,29 +25853,30 @@
1163403264,1163407359,US
1163407360,1163411455,CA
1163411456,1163468799,US
-1163468800,1163472895,PR
-1163472896,1163526143,US
+1163468800,1163469055,PR
+1163469056,1163469311,US
+1163469312,1163472895,PR
+1163472896,1163477695,US
+1163477696,1163477727,JP
+1163477728,1163478047,US
+1163478048,1163478063,JP
+1163478064,1163526143,US
1163526144,1163526463,CA
-1163526464,1163526911,US
-1163526912,1163527007,CA
-1163527008,1163527023,US
+1163526464,1163526655,US
+1163526656,1163527023,CA
1163527024,1163527039,BV
1163527040,1163527059,CA
1163527060,1163527071,US
1163527072,1163527103,CA
1163527104,1163527135,US
-1163527136,1163527143,CA
-1163527144,1163527151,US
-1163527152,1163527167,CA
-1163527168,1163527743,US
+1163527136,1163527679,CA
+1163527680,1163527743,US
1163527744,1163527775,CA
1163527776,1163527791,US
-1163527792,1163528191,CA
-1163528192,1163528703,US
-1163528704,1163529215,CA
+1163527792,1163529215,CA
1163529216,1163530239,US
-1163530240,1163530399,CA
-1163530400,1163530431,US
+1163530240,1163530415,CA
+1163530416,1163530431,US
1163530432,1163530639,CA
1163530640,1163530655,US
1163530656,1163530839,CA
@@ -21729,12 +25897,14 @@
1163533696,1163533727,US
1163533728,1163533791,CA
1163533792,1163533807,US
-1163533808,1163533823,CA
-1163533824,1163534015,US
+1163533808,1163533951,CA
+1163533952,1163534015,US
1163534016,1163534031,CA
1163534032,1163534047,US
1163534048,1163534063,CA
-1163534064,1163534143,US
+1163534064,1163534071,US
+1163534072,1163534079,MX
+1163534080,1163534143,US
1163534144,1163534175,CA
1163534176,1163534255,US
1163534256,1163534311,CA
@@ -21759,9 +25929,7 @@
1163542848,1163542855,US
1163542856,1163542919,CA
1163542920,1163542927,US
-1163542928,1163542975,CA
-1163542976,1163543007,US
-1163543008,1163543687,CA
+1163542928,1163543687,CA
1163543688,1163543695,FI
1163543696,1163543839,CA
1163543840,1163543847,US
@@ -21769,20 +25937,17 @@
1163543984,1163543991,US
1163543992,1163544319,CA
1163544320,1163544327,US
-1163544328,1163544383,CA
+1163544328,1163544335,GB
+1163544336,1163544383,CA
1163544384,1163544423,US
1163544424,1163544575,CA
1163544576,1163544607,US
-1163544608,1163544671,CA
-1163544672,1163544687,US
-1163544688,1163544751,CA
+1163544608,1163544751,CA
1163544752,1163544759,SG
1163544760,1163544783,CA
1163544784,1163544799,US
-1163544800,1163545215,CA
-1163545216,1163545247,FI
-1163545248,1163545279,CA
-1163545280,1163545303,US
+1163544800,1163545295,CA
+1163545296,1163545303,US
1163545304,1163545311,CA
1163545312,1163545343,BV
1163545344,1163545351,US
@@ -21798,62 +25963,45 @@
1163545984,1163546015,US
1163546016,1163546039,CA
1163546040,1163546047,NZ
-1163546048,1163546079,CA
-1163546080,1163546111,US
-1163546112,1163546119,CA
+1163546048,1163546119,CA
1163546120,1163546127,US
1163546128,1163546135,CA
-1163546136,1163546175,US
-1163546176,1163546199,CA
-1163546200,1163546239,US
-1163546240,1163546367,CA
-1163546368,1163546375,US
-1163546376,1163546391,CA
-1163546392,1163546423,US
+1163546136,1163546143,US
+1163546144,1163546199,CA
+1163546200,1163546207,US
+1163546208,1163546399,CA
+1163546400,1163546423,US
1163546424,1163546447,CA
1163546448,1163546455,US
1163546456,1163546527,CA
1163546528,1163546535,US
-1163546536,1163546543,CA
-1163546544,1163546559,US
+1163546536,1163546551,CA
+1163546552,1163546559,US
1163546560,1163547455,CA
1163547456,1163547463,US
1163547464,1163547487,CA
1163547488,1163547519,US
-1163547520,1163547527,CA
-1163547528,1163547539,US
-1163547540,1163547551,CA
-1163547552,1163547567,US
+1163547520,1163547535,CA
+1163547536,1163547539,US
+1163547540,1163547567,CA
1163547568,1163547583,VG
1163547584,1163547647,CA
1163547648,1163547903,US
1163547904,1163547951,CA
-1163547952,1163547999,US
-1163548000,1163549007,CA
-1163549008,1163549023,US
-1163549024,1163549183,CA
-1163549184,1163549695,US
-1163549696,1163550239,CA
-1163550240,1163550255,US
-1163550256,1163550271,CA
-1163550272,1163550303,US
-1163550304,1163550335,CA
+1163547952,1163547983,US
+1163547984,1163550335,CA
1163550336,1163550351,US
1163550352,1163550367,CA
1163550368,1163550375,US
1163550376,1163550383,CA
1163550384,1163550399,US
-1163550400,1163550591,CA
-1163550592,1163550655,US
-1163550656,1163550783,CA
+1163550400,1163550783,CA
1163550784,1163550815,US
1163550816,1163551071,CA
1163551072,1163551087,US
1163551088,1163551423,CA
1163551424,1163551439,US
-1163551440,1163551455,CA
-1163551456,1163551487,US
-1163551488,1163551623,CA
+1163551440,1163551623,CA
1163551624,1163551631,CN
1163551632,1163551663,CA
1163551664,1163551679,US
@@ -21867,9 +26015,7 @@
1163552576,1163552607,PA
1163552608,1163552679,CA
1163552680,1163552687,US
-1163552688,1163553791,CA
-1163553792,1163553807,US
-1163553808,1163553855,CA
+1163552688,1163553855,CA
1163553856,1163553871,US
1163553872,1163553919,CA
1163553920,1163553935,BV
@@ -21881,10 +26027,8 @@
1163554648,1163554655,MX
1163554656,1163554703,CA
1163554704,1163554751,US
-1163554752,1163554815,CA
-1163554816,1163555071,US
-1163555072,1163555327,CA
-1163555328,1163556095,US
+1163554752,1163555839,CA
+1163555840,1163556095,US
1163556096,1163556607,CA
1163556608,1163557727,US
1163557728,1163557759,CA
@@ -21893,9 +26037,7 @@
1163558029,1163560191,US
1163560192,1163560447,CA
1163560448,1163560959,US
-1163560960,1163561727,CA
-1163561728,1163561983,FI
-1163561984,1163562063,CA
+1163560960,1163562063,CA
1163562064,1163562079,US
1163562080,1163562119,CA
1163562120,1163562127,SG
@@ -21904,7 +26046,9 @@
1163562208,1163562231,CA
1163562232,1163562239,US
1163562240,1163563007,CA
-1163563008,1163566047,US
+1163563008,1163564031,US
+1163564032,1163564799,CA
+1163564800,1163566047,US
1163566048,1163566079,CA
1163566080,1163567103,US
1163567104,1163568127,CA
@@ -21915,9 +26059,7 @@
1163571984,1163571999,US
1163572000,1163572031,CA
1163572032,1163572063,BE
-1163572064,1163572079,CA
-1163572080,1163572087,US
-1163572088,1163572175,CA
+1163572064,1163572175,CA
1163572176,1163572183,US
1163572184,1163572687,CA
1163572688,1163572703,US
@@ -21927,7 +26069,7 @@
1163573200,1163573215,US
1163573216,1163573263,CA
1163573264,1163573439,US
-1163573440,1163573503,EG
+1163573440,1163573503,IN
1163573504,1163575295,US
1163575296,1163576703,CA
1163576704,1163576799,US
@@ -21940,8 +26082,10 @@
1163577376,1163577407,CA
1163577408,1163577423,US
1163577424,1163577439,CA
-1163577440,1163577871,US
-1163577872,1163577919,CA
+1163577440,1163577471,US
+1163577472,1163577503,CA
+1163577504,1163577863,US
+1163577864,1163577919,CA
1163577920,1163577951,US
1163577952,1163578111,CA
1163578112,1163578191,US
@@ -21949,9 +26093,7 @@
1163578240,1163578255,US
1163578256,1163578271,CA
1163578272,1163578287,US
-1163578288,1163578335,CA
-1163578336,1163578351,US
-1163578352,1163578711,CA
+1163578288,1163578711,CA
1163578712,1163578715,US
1163578716,1163579119,CA
1163579120,1163579127,US
@@ -21965,8 +26107,8 @@
1163581184,1163581439,US
1163581440,1163581503,CA
1163581504,1163581567,US
-1163581568,1163581591,CA
-1163581592,1163581615,US
+1163581568,1163581583,CA
+1163581584,1163581615,US
1163581616,1163581631,CA
1163581632,1163581695,US
1163581696,1163581983,CA
@@ -21978,7 +26120,9 @@
1163582168,1163582183,CA
1163582184,1163582191,US
1163582192,1163583487,CA
-1163583488,1163585855,US
+1163583488,1163585199,US
+1163585200,1163585215,CA
+1163585216,1163585855,US
1163585856,1163585887,CA
1163585888,1163585889,US
1163585890,1163585905,GB
@@ -21986,8 +26130,8 @@
1163586741,1163586743,CA
1163586744,1163586744,NL
1163586745,1163586745,GB
-1163586746,1163587839,US
-1163587840,1163588095,CA
+1163586746,1163587583,US
+1163587584,1163588095,CA
1163588096,1163588111,US
1163588112,1163588159,CA
1163588160,1163588199,US
@@ -21998,9 +26142,9 @@
1163588608,1163588608,US
1163588609,1163588655,CA
1163588656,1163588671,US
-1163588672,1163588703,CA
-1163588704,1163588711,US
-1163588712,1163588727,CA
+1163588672,1163588695,CA
+1163588696,1163588703,US
+1163588704,1163588727,CA
1163588728,1163588863,US
1163588864,1163589631,CA
1163589632,1163870575,US
@@ -22009,15 +26153,17 @@
1163876472,1163876479,PA
1163876480,1163878399,US
1163878400,1163878407,CN
-1163878408,1167321959,US
+1163878408,1167319111,US
+1167319112,1167319119,ZA
+1167319120,1167321959,US
1167321960,1167321967,GB
1167321968,1167322695,US
1167322696,1167322703,IN
-1167322704,1167323799,US
-1167323800,1167323807,IN
-1167323808,1167323823,US
+1167322704,1167323823,US
1167323824,1167323831,IN
-1167323832,1167325935,US
+1167323832,1167324287,US
+1167324288,1167324295,GB
+1167324296,1167325935,US
1167325936,1167325951,CA
1167325952,1167326207,US
1167326208,1167326271,IN
@@ -22038,11 +26184,15 @@
1167693200,1167693215,UA
1167693216,1167851519,US
1167851520,1168113663,CA
-1168113664,1168138239,US
+1168113664,1168134271,US
+1168134272,1168134303,CA
+1168134304,1168138239,US
1168138240,1168146431,JM
1168146432,1168211967,US
1168211968,1168220159,CA
-1168220160,1168318719,US
+1168220160,1168281599,US
+1168281600,1168281855,EG
+1168281856,1168318719,US
1168318720,1168318975,CA
1168318976,1168321535,US
1168321536,1168321791,CA
@@ -22052,14 +26202,12 @@
1168394280,1168394375,CA
1168394376,1168394383,US
1168394384,1168394423,CA
-1168394424,1168394463,US
-1168394464,1168394471,CA
+1168394424,1168394431,US
+1168394432,1168394471,CA
1168394472,1168394479,US
1168394480,1168394503,CA
1168394504,1168394511,US
-1168394512,1168394527,CA
-1168394528,1168394559,US
-1168394560,1168394751,CA
+1168394512,1168394751,CA
1168394752,1168420863,US
1168420864,1168424959,CA
1168424960,1168474111,US
@@ -22078,11 +26226,15 @@
1168887808,1168891903,CA
1168891904,1168916479,US
1168916480,1168932863,CA
-1168932864,1168936959,US
+1168932864,1168935807,US
+1168935808,1168935935,RU
+1168935936,1168936959,US
1168936960,1168949247,CA
1168949248,1168949503,US
1168949504,1168949759,CA
-1168949760,1168950271,US
+1168949760,1168949823,US
+1168949824,1168949855,CA
+1168949856,1168950271,US
1168950272,1168951823,CA
1168951824,1168952063,US
1168952064,1168952095,CA
@@ -22094,10 +26246,14 @@
1168952888,1168952895,CA
1168952896,1168952959,US
1168952960,1168953343,CA
-1168953344,1168954075,US
+1168953344,1168954015,US
+1168954016,1168954047,IN
+1168954048,1168954075,US
1168954076,1168954079,CA
-1168954080,1168955903,US
-1168955904,1168956159,CA
+1168954080,1168954623,US
+1168954624,1168954687,IN
+1168954688,1168955647,US
+1168955648,1168956159,CA
1168956160,1168957439,US
1168957440,1168958047,CA
1168958048,1168958055,DE
@@ -22115,8 +26271,8 @@
1168958424,1168958463,US
1168958464,1168958479,CA
1168958480,1168958495,US
-1168958496,1168958527,FR
-1168958528,1168960543,US
+1168958496,1168958559,IN
+1168958560,1168960543,US
1168960544,1168960591,CA
1168960592,1168960607,US
1168960608,1168960623,CA
@@ -22127,9 +26283,7 @@
1168960832,1168960863,US
1168960864,1168960887,CA
1168960888,1168960895,US
-1168960896,1168961887,CA
-1168961888,1168961919,US
-1168961920,1168961983,CA
+1168960896,1168961983,CA
1168961984,1168961991,US
1168961992,1168961999,CA
1168962000,1168962303,US
@@ -22183,104 +26337,197 @@
1170456960,1170456975,CR
1170456976,1170456991,US
1170456992,1170457007,PR
-1170457008,1170458063,US
+1170457008,1170457599,US
+1170457600,1170457663,BR
+1170457664,1170458063,US
1170458064,1170458079,DE
-1170458080,1170461183,US
-1170461184,1170461439,CO
+1170458080,1170461055,US
+1170461056,1170461439,CO
1170461440,1170461695,US
1170461696,1170462719,IL
-1170462720,1170472959,US
+1170462720,1170465791,US
+1170465792,1170466047,CY
+1170466048,1170466767,US
+1170466768,1170466783,MQ
+1170466784,1170466815,US
+1170466816,1170467839,IL
+1170467840,1170468351,DO
+1170468352,1170469055,US
+1170469056,1170469071,VG
+1170469072,1170472959,US
1170472960,1170481151,CA
1170481152,1170489343,US
1170489344,1170497535,CA
1170497536,1170505727,US
1170505728,1170522111,CA
-1170522112,1170539329,US
+1170522112,1170538495,US
+1170538496,1170538751,KH
+1170538752,1170539329,US
1170539330,1170539330,CN
-1170539331,1170539393,US
-1170539394,1170539394,TR
-1170539395,1170539399,US
-1170539400,1170539400,TR
-1170539401,1170539416,US
-1170539417,1170539417,TR
-1170539418,1170539463,US
-1170539464,1170539464,CN
-1170539465,1170539466,US
-1170539467,1170539467,IE
-1170539468,1170539523,US
-1170539524,1170539524,IE
-1170539525,1170539586,US
-1170539587,1170539587,FR
-1170539588,1170539590,US
+1170539331,1170539331,TR
+1170539332,1170539332,CA
+1170539333,1170539333,RO
+1170539334,1170539460,US
+1170539461,1170539461,PK
+1170539462,1170539522,US
+1170539523,1170539523,AU
+1170539524,1170539589,US
+1170539590,1170539590,SA
1170539591,1170539591,CN
-1170539592,1170539592,US
-1170539593,1170539593,CN
-1170539594,1170539652,US
+1170539592,1170539592,AU
+1170539593,1170539650,US
+1170539651,1170539651,TR
+1170539652,1170539652,US
1170539653,1170539653,GB
-1170539654,1170539714,US
+1170539654,1170539712,US
+1170539713,1170539713,CN
+1170539714,1170539714,US
1170539715,1170539715,PK
-1170539716,1170539776,US
-1170539777,1170539777,FR
-1170539778,1170539778,US
-1170539779,1170539779,FR
-1170539780,1170539969,US
+1170539716,1170539777,US
+1170539778,1170539778,CN
+1170539779,1170539780,US
+1170539781,1170539781,KR
+1170539782,1170539841,US
+1170539842,1170539842,BD
+1170539843,1170539843,MY
+1170539844,1170539910,US
+1170539911,1170539911,KH
+1170539912,1170539969,US
1170539970,1170539970,KH
-1170539971,1170540038,US
+1170539971,1170540036,US
+1170540037,1170540037,TR
+1170540038,1170540038,US
1170540039,1170540039,PH
-1170540040,1170540097,US
-1170540098,1170540098,TR
-1170540099,1170540104,US
-1170540105,1170540105,PK
-1170540106,1170540231,US
+1170540040,1170540096,US
+1170540097,1170540098,TR
+1170540099,1170540105,US
+1170540106,1170540106,CN
+1170540107,1170540163,US
+1170540164,1170540164,RO
+1170540165,1170540228,US
+1170540229,1170540229,TR
+1170540230,1170540230,US
+1170540231,1170540231,KR
1170540232,1170540232,CN
-1170540233,1170540289,US
-1170540290,1170540290,CN
-1170540291,1170544199,US
+1170540233,1170540288,US
+1170540289,1170540290,CN
+1170540291,1170540291,US
+1170540292,1170540292,TR
+1170540293,1170540294,US
+1170540295,1170540295,CN
+1170540296,1170540296,TR
+1170540297,1170540353,US
+1170540354,1170540354,CN
+1170540355,1170540359,US
+1170540360,1170540360,CN
+1170540361,1170540361,CA
+1170540362,1170540369,US
+1170540370,1170540370,CN
+1170540371,1170540371,US
+1170540372,1170540372,CN
+1170540373,1170540416,US
+1170540417,1170540417,CN
+1170540418,1170540428,US
+1170540429,1170540429,TR
+1170540430,1170540480,US
+1170540481,1170540481,TR
+1170540482,1170540485,US
+1170540486,1170540487,TR
+1170540488,1170540491,US
+1170540492,1170540494,TR
+1170540495,1170540608,US
+1170540609,1170540609,CN
+1170540610,1170540616,US
+1170540617,1170540617,TR
+1170540618,1170542863,US
+1170542864,1170542871,CN
+1170542872,1170544127,US
+1170544128,1170544191,CN
+1170544192,1170544195,US
+1170544196,1170544199,BD
1170544200,1170544207,TR
-1170544208,1170544255,US
-1170544256,1170544383,IN
+1170544208,1170544239,US
+1170544240,1170544247,CN
+1170544248,1170544251,US
+1170544252,1170544255,CN
+1170544256,1170544383,PK
1170544384,1170544387,US
1170544388,1170544391,BD
-1170544392,1170544431,US
+1170544392,1170544395,TR
+1170544396,1170544431,US
1170544432,1170544439,CN
-1170544440,1170544511,US
-1170544512,1170544575,SE
-1170544576,1170544639,US
-1170544640,1170544767,MY
-1170544768,1170547455,US
-1170547456,1170547711,CA
-1170547712,1170553087,US
+1170544440,1170544443,AU
+1170544444,1170544511,US
+1170544512,1170544543,TR
+1170544544,1170544807,US
+1170544808,1170544815,CN
+1170544816,1170544831,US
+1170544832,1170544959,CN
+1170544960,1170544983,US
+1170544984,1170544987,CN
+1170544988,1170545055,US
+1170545056,1170545087,CN
+1170545088,1170545407,US
+1170545408,1170545439,TR
+1170545440,1170545595,US
+1170545596,1170545599,CN
+1170545600,1170552607,US
+1170552608,1170552611,CN
+1170552612,1170552959,US
+1170552960,1170553023,CN
+1170553024,1170553087,US
1170553088,1170553151,GB
-1170553152,1170553215,FR
-1170553216,1170553343,PK
-1170553344,1170553407,CN
-1170553408,1170553431,US
+1170553152,1170553279,US
+1170553280,1170553407,CN
+1170553408,1170553423,US
+1170553424,1170553427,CN
+1170553428,1170553431,US
1170553432,1170553435,TR
-1170553436,1170553439,CA
-1170553440,1170553471,US
+1170553436,1170553439,US
+1170553440,1170553471,TR
1170553472,1170553535,PK
-1170553536,1170553599,CN
-1170553600,1170553855,US
+1170553536,1170553599,US
+1170553600,1170553603,TR
+1170553604,1170553615,US
+1170553616,1170553619,SA
+1170553620,1170553623,TR
+1170553624,1170553627,US
+1170553628,1170553631,TR
+1170553632,1170553635,US
+1170553636,1170553643,SA
+1170553644,1170553647,TR
+1170553648,1170553651,US
+1170553652,1170553655,TR
+1170553656,1170553663,US
+1170553664,1170553667,SA
+1170553668,1170553683,US
+1170553684,1170553687,CN
+1170553688,1170553707,US
+1170553708,1170553711,TR
+1170553712,1170553855,US
1170553856,1170553983,MY
-1170553984,1170554367,US
+1170553984,1170554047,CN
+1170554048,1170554367,US
1170554368,1170554431,CN
1170554432,1170554463,US
1170554464,1170554479,CN
1170554480,1170554483,TR
1170554484,1170554487,BD
1170554488,1170554495,CN
-1170554496,1170554559,US
-1170554560,1170554623,CN
-1170554624,1175977983,US
+1170554496,1170554683,US
+1170554684,1170554687,TR
+1170554688,1170573375,US
+1170573376,1170573391,RU
+1170573392,1170573392,US
+1170573393,1170573439,RU
+1170573440,1175977983,US
1175977984,1176068167,CA
1176068168,1176068175,US
1176068176,1176068191,CA
1176068192,1176068207,US
1176068208,1176069007,CA
1176069008,1176069023,US
-1176069024,1176100903,CA
-1176100904,1176100911,US
-1176100912,1176101023,CA
+1176069024,1176101023,CA
1176101024,1176101039,US
1176101040,1176101063,CA
1176101064,1176101071,US
@@ -22289,7 +26536,9 @@
1176108560,1176502271,CA
1176502272,1176512151,US
1176512152,1176512159,GB
-1176512160,1176513879,US
+1176512160,1176512703,US
+1176512704,1176512711,ZA
+1176512712,1176513879,US
1176513880,1176513887,GB
1176513888,1176514271,US
1176514272,1176514303,IN
@@ -22302,9 +26551,7 @@
1176609664,1176613927,US
1176613928,1176613935,CA
1176613936,1176616959,US
-1176616960,1176619007,CA
-1176619008,1176620031,CY
-1176620032,1176620047,CA
+1176616960,1176620047,CA
1176620048,1176620055,US
1176620056,1176620095,CA
1176620096,1176620127,US
@@ -22322,16 +26569,26 @@
1176620968,1176620975,US
1176620976,1176620991,CA
1176620992,1176620999,US
-1176621000,1176621023,CA
-1176621024,1176621055,US
-1176621056,1176623359,CA
+1176621000,1176621599,CA
+1176621600,1176621631,US
+1176621632,1176621695,CA
+1176621696,1176621727,US
+1176621728,1176621759,CA
+1176621760,1176621823,US
+1176621824,1176621871,CA
+1176621872,1176621887,US
+1176621888,1176622047,CA
+1176622048,1176622079,US
+1176622080,1176622335,GB
+1176622336,1176622591,US
+1176622592,1176623359,CA
1176623360,1176623487,US
1176623488,1176623567,CA
1176623568,1176623583,US
1176623584,1176623615,CA
1176623616,1176623871,US
-1176623872,1176629287,CA
-1176629288,1176629295,US
+1176623872,1176629279,CA
+1176629280,1176629295,US
1176629296,1176629303,CA
1176629304,1176629311,US
1176629312,1176629343,CA
@@ -22339,13 +26596,14 @@
1176629376,1176629439,GI
1176629440,1176629455,CA
1176629456,1176629463,GI
-1176629464,1176629471,CA
-1176629472,1176629503,US
+1176629464,1176629503,US
1176629504,1176629519,CA
1176629520,1176629535,NZ
1176629536,1176629631,CA
1176629632,1176629727,US
-1176629728,1176631295,CA
+1176629728,1176630271,CA
+1176630272,1176631039,US
+1176631040,1176631295,CA
1176631296,1176631551,NL
1176631552,1176662015,US
1176662016,1176666111,CA
@@ -22355,17 +26613,230 @@
1176682544,1176682559,TR
1176682560,1176682623,US
1176682624,1176682631,JM
-1176682632,1176682639,US
+1176682632,1176682639,GB
1176682640,1176682687,TR
-1176682688,1176686591,US
-1176686592,1176686599,PK
+1176682688,1176684383,US
+1176684384,1176684399,DE
+1176684400,1176686591,US
+1176686592,1176686599,BR
1176686600,1176686623,US
1176686624,1176686631,IL
-1176686632,1176686719,US
+1176686632,1176686639,US
+1176686640,1176686647,DE
+1176686648,1176686719,US
1176686720,1176686751,CA
1176686752,1176686847,US
1176686848,1176687103,AN
-1176687104,1176702975,US
+1176687104,1176687519,US
+1176687520,1176687551,JP
+1176687552,1176687775,US
+1176687776,1176687807,MX
+1176687808,1176687839,US
+1176687840,1176687871,GB
+1176687872,1176687887,US
+1176687888,1176687895,AU
+1176687896,1176687903,US
+1176687904,1176687911,MX
+1176687912,1176688383,US
+1176688384,1176688391,GB
+1176688392,1176688399,US
+1176688400,1176688407,CA
+1176688408,1176688439,US
+1176688440,1176688447,CZ
+1176688448,1176688471,US
+1176688472,1176688479,RU
+1176688480,1176688487,US
+1176688488,1176688495,AU
+1176688496,1176688503,BG
+1176688504,1176688511,SG
+1176688512,1176688567,US
+1176688568,1176688575,DE
+1176688576,1176688631,US
+1176688632,1176688639,TR
+1176688640,1176688767,US
+1176688768,1176688799,NZ
+1176688800,1176688831,CN
+1176688832,1176688863,US
+1176688864,1176688895,GB
+1176688896,1176688927,US
+1176688928,1176688959,GB
+1176688960,1176688991,NL
+1176688992,1176689023,US
+1176689024,1176689055,CA
+1176689056,1176689087,MY
+1176689088,1176689183,US
+1176689184,1176689215,BR
+1176689216,1176689407,US
+1176689408,1176689439,DE
+1176689440,1176689503,US
+1176689504,1176689535,IL
+1176689536,1176689567,BR
+1176689568,1176689599,FI
+1176689600,1176689823,US
+1176689824,1176689839,AU
+1176689840,1176689847,US
+1176689848,1176689855,FR
+1176689856,1176689983,US
+1176689984,1176690015,DE
+1176690016,1176690047,JM
+1176690048,1176690055,US
+1176690056,1176690063,GB
+1176690064,1176690071,US
+1176690072,1176690079,GB
+1176690080,1176690111,AU
+1176690112,1176690175,US
+1176690176,1176690207,FR
+1176690208,1176690271,US
+1176690272,1176690303,EG
+1176690304,1176690335,US
+1176690336,1176690367,CA
+1176690368,1176690399,PK
+1176690400,1176690431,CA
+1176690432,1176690463,US
+1176690464,1176690495,DO
+1176690496,1176690527,CA
+1176690528,1176690535,FR
+1176690536,1176690543,US
+1176690544,1176690551,RU
+1176690552,1176690559,US
+1176690560,1176690591,IN
+1176690592,1176690791,US
+1176690792,1176690799,CA
+1176690800,1176690815,US
+1176690816,1176690847,BR
+1176690848,1176691007,US
+1176691008,1176691039,ES
+1176691040,1176691071,US
+1176691072,1176691103,ID
+1176691104,1176691135,DE
+1176691136,1176691167,GB
+1176691168,1176691199,US
+1176691200,1176691231,GB
+1176691232,1176691263,US
+1176691264,1176691295,RU
+1176691296,1176691327,TR
+1176691328,1176691375,US
+1176691376,1176691391,AU
+1176691392,1176691519,US
+1176691520,1176691551,GB
+1176691552,1176691583,US
+1176691584,1176691615,BE
+1176691616,1176691647,LT
+1176691648,1176691743,US
+1176691744,1176691775,CA
+1176691776,1176691807,US
+1176691808,1176691839,GB
+1176691840,1176691871,HK
+1176691872,1176691999,US
+1176692000,1176692031,PK
+1176692032,1176692127,US
+1176692128,1176692143,FR
+1176692144,1176692151,NO
+1176692152,1176692159,BR
+1176692160,1176692287,US
+1176692288,1176692319,GB
+1176692320,1176692351,US
+1176692352,1176692383,CA
+1176692384,1176692415,US
+1176692416,1176692447,ID
+1176692448,1176692575,US
+1176692576,1176692583,TR
+1176692584,1176692591,RO
+1176692592,1176692599,FR
+1176692600,1176692607,SE
+1176692608,1176692639,US
+1176692640,1176692671,GR
+1176692672,1176692703,DE
+1176692704,1176692735,GB
+1176692736,1176692767,BR
+1176692768,1176692799,US
+1176692800,1176692831,AT
+1176692832,1176692927,US
+1176692928,1176692959,GB
+1176692960,1176692991,US
+1176692992,1176693023,CN
+1176693024,1176693063,US
+1176693064,1176693071,AU
+1176693072,1176693079,US
+1176693080,1176693087,GB
+1176693088,1176693215,US
+1176693216,1176693247,FI
+1176693248,1176693567,US
+1176693568,1176693599,GB
+1176693600,1176693631,LT
+1176693632,1176693663,TR
+1176693664,1176693695,MY
+1176693696,1176693727,US
+1176693728,1176693759,TR
+1176693760,1176693791,US
+1176693792,1176693823,TR
+1176693824,1176693887,US
+1176693888,1176693919,CA
+1176693920,1176694047,US
+1176694048,1176694079,IT
+1176694080,1176694111,PA
+1176694112,1176694143,FR
+1176694144,1176694175,ES
+1176694176,1176694303,US
+1176694304,1176694335,RU
+1176694336,1176694367,CN
+1176694368,1176694399,UY
+1176694400,1176694431,GR
+1176694432,1176694463,HR
+1176694464,1176694559,US
+1176694560,1176694591,IE
+1176694592,1176694623,US
+1176694624,1176694655,TH
+1176694656,1176694943,US
+1176694944,1176694975,GB
+1176694976,1176695007,CA
+1176695008,1176695231,US
+1176695232,1176695263,DE
+1176695264,1176695295,US
+1176695296,1176695303,TR
+1176695304,1176695327,US
+1176695328,1176695335,CA
+1176695336,1176695359,US
+1176695360,1176695391,JP
+1176695392,1176695487,US
+1176695488,1176695519,AU
+1176695520,1176695551,FR
+1176695552,1176695583,CA
+1176695584,1176695615,US
+1176695616,1176695647,HR
+1176695648,1176695655,GB
+1176695656,1176695663,US
+1176695664,1176695671,HR
+1176695672,1176696447,US
+1176696448,1176696463,CA
+1176696464,1176697015,US
+1176697016,1176697023,TR
+1176697024,1176697159,US
+1176697160,1176697167,AT
+1176697168,1176697223,US
+1176697224,1176697231,FR
+1176697232,1176697239,US
+1176697240,1176697247,IL
+1176697248,1176697407,US
+1176697408,1176697415,IL
+1176697416,1176697423,US
+1176697424,1176697439,CA
+1176697440,1176697815,US
+1176697816,1176697823,DE
+1176697824,1176697951,US
+1176697952,1176697959,CA
+1176697960,1176697967,DE
+1176697968,1176697975,US
+1176697976,1176697983,AU
+1176697984,1176698535,US
+1176698536,1176698543,CA
+1176698544,1176698615,US
+1176698616,1176698623,DZ
+1176698624,1176698727,US
+1176698728,1176698735,NL
+1176698736,1176698847,US
+1176698848,1176698855,GB
+1176698856,1176702975,US
1176702976,1176707071,CA
1176707072,1176731647,US
1176731648,1176735743,PR
@@ -22377,9 +26848,19 @@
1176764416,1176768511,PM
1176768512,1176770751,US
1176770752,1176770783,AE
-1176770784,1176770831,US
+1176770784,1176770799,US
+1176770800,1176770803,KR
+1176770804,1176770811,US
+1176770812,1176770815,CA
+1176770816,1176770831,US
1176770832,1176770847,BR
-1176770848,1176771895,US
+1176770848,1176770851,BM
+1176770852,1176770919,US
+1176770920,1176770927,BR
+1176770928,1176770935,DO
+1176770936,1176771327,US
+1176771328,1176771583,KR
+1176771584,1176771895,US
1176771896,1176771903,AE
1176771904,1176776703,US
1176776704,1176780799,CA
@@ -22407,10 +26888,8 @@
1177053696,1177053951,GB
1177053952,1177059327,US
1177059328,1177061375,CA
-1177061376,1177062399,US
-1177062400,1177074943,CA
-1177074944,1177075199,US
-1177075200,1177075455,CA
+1177061376,1177062143,US
+1177062144,1177075455,CA
1177075456,1177164255,US
1177164256,1177164263,CA
1177164264,1177164415,US
@@ -22421,7 +26900,11 @@
1177164928,1177164943,CA
1177164944,1177165311,US
1177165312,1177165823,CA
-1177165824,1177175199,US
+1177165824,1177167743,US
+1177167744,1177167751,LB
+1177167752,1177168223,US
+1177168224,1177168231,IE
+1177168232,1177175199,US
1177175200,1177175231,CZ
1177175232,1177182527,US
1177182528,1177182591,CA
@@ -22437,13 +26920,9 @@
1178000920,1178075135,CA
1178075136,1178599423,US
1178599424,1179910143,CA
-1179910144,1184805887,US
-1184805888,1184806015,A2
-1184806016,1184811007,US
-1184811008,1184811263,A2
-1184811264,1184829439,US
-1184829440,1184829695,A2
-1184829696,1189130447,US
+1179910144,1180113919,US
+1180113920,1180114431,AE
+1180114432,1189130447,US
1189130448,1189130463,IN
1189130464,1190170111,US
1190170112,1190170127,UY
@@ -22455,6 +26934,7 @@
1192296448,1192361983,CA
1192361984,1192427519,US
1192427520,1192460287,CA
+1192464384,1192468479,US
1192493056,1207975935,US
1207975936,1207980031,CA
1207980032,1208008703,US
@@ -22533,7 +27013,13 @@
1208194088,1208194095,AU
1208194096,1208194191,US
1208194192,1208194223,MY
-1208194224,1208195359,US
+1208194224,1208194289,US
+1208194290,1208194291,GB
+1208194292,1208194511,US
+1208194512,1208194513,CA
+1208194514,1208194519,US
+1208194520,1208194521,AU
+1208194522,1208195359,US
1208195360,1208195375,MY
1208195376,1208195391,US
1208195392,1208195399,IN
@@ -22559,7 +27045,9 @@
1208196608,1208196615,CA
1208196616,1208196703,US
1208196704,1208196719,CA
-1208196720,1208197023,US
+1208196720,1208196951,US
+1208196952,1208196959,ZA
+1208196960,1208197023,US
1208197024,1208197031,CR
1208197032,1208197135,US
1208197136,1208197167,MY
@@ -22585,13 +27073,16 @@
1208198040,1208198047,BS
1208198048,1208198135,US
1208198136,1208198143,AU
-1208198144,1208198279,US
+1208198144,1208198159,US
+1208198160,1208198167,ID
+1208198168,1208198279,US
1208198280,1208198287,ZA
1208198288,1208198303,US
1208198304,1208198319,FR
1208198320,1208198343,US
1208198344,1208198347,GB
-1208198348,1208198463,US
+1208198348,1208198349,CA
+1208198350,1208198463,US
1208198464,1208198471,CA
1208198472,1208198559,US
1208198560,1208198575,IN
@@ -22725,7 +27216,9 @@
1208208256,1208208287,US
1208208288,1208208303,GB
1208208304,1208208311,KR
-1208208312,1208208799,US
+1208208312,1208208319,US
+1208208320,1208208321,CA
+1208208322,1208208799,US
1208208800,1208208807,AU
1208208808,1208208815,US
1208208816,1208208831,CA
@@ -22766,7 +27259,9 @@
1208213088,1208213103,NG
1208213104,1208213383,US
1208213384,1208213391,CA
-1208213392,1208215935,US
+1208213392,1208215351,US
+1208215352,1208215359,PR
+1208215360,1208215935,US
1208215936,1208215951,GB
1208215952,1208216367,US
1208216368,1208216375,CA
@@ -22831,62 +27326,106 @@
1208338176,1208516607,US
1208516608,1208516623,MX
1208516624,1208516639,US
-1208516640,1208516671,CN
-1208516672,1208516735,TR
+1208516640,1208516735,TR
1208516736,1208516799,ID
1208516800,1208516855,US
1208516856,1208516859,CN
-1208516860,1208517001,US
+1208516860,1208516955,US
+1208516956,1208516959,CN
+1208516960,1208516999,US
+1208517000,1208517000,TR
+1208517001,1208517001,US
1208517002,1208517002,CN
-1208517003,1208517009,US
-1208517010,1208517011,CN
-1208517012,1208517017,US
+1208517003,1208517010,US
+1208517011,1208517011,TR
+1208517012,1208517012,GB
+1208517013,1208517017,US
1208517018,1208517018,GB
-1208517019,1208517019,US
-1208517020,1208517020,FR
-1208517021,1208517119,US
+1208517019,1208517119,US
1208517120,1208517375,KH
-1208517376,1208517631,US
+1208517376,1208517471,US
+1208517472,1208517487,CN
+1208517488,1208517503,US
+1208517504,1208517567,CN
+1208517568,1208517631,US
1208517632,1208517887,KH
-1208517888,1208518143,US
-1208518144,1208518207,MY
-1208518208,1208518246,US
+1208517888,1208518015,TR
+1208518016,1208518079,CN
+1208518080,1208518143,US
+1208518144,1208518207,CN
+1208518208,1208518243,US
+1208518244,1208518244,CN
+1208518245,1208518246,US
1208518247,1208518247,KH
-1208518248,1208518263,US
+1208518248,1208518261,US
+1208518262,1208518262,TR
+1208518263,1208518263,CN
1208518264,1208518264,GB
-1208518265,1208518271,US
-1208518272,1208518287,GB
-1208518288,1208518291,US
-1208518292,1208518295,CN
-1208518296,1208518335,US
+1208518265,1208518299,US
+1208518300,1208518303,BD
+1208518304,1208518335,US
1208518336,1208518399,TR
-1208518400,1208519167,US
+1208518400,1208518655,ID
+1208518656,1208519167,US
1208519168,1208519423,CN
-1208519424,1208519551,US
-1208519552,1208519679,TR
-1208519680,1208523775,US
-1208523776,1208523903,GB
-1208523904,1208523991,US
+1208519424,1208519551,TR
+1208519552,1208521983,US
+1208521984,1208522239,CN
+1208522240,1208522271,US
+1208522272,1208522303,TR
+1208522304,1208522319,US
+1208522320,1208522335,TR
+1208522336,1208522367,US
+1208522368,1208522431,CN
+1208522432,1208523975,US
+1208523976,1208523983,CN
+1208523984,1208523991,US
1208523992,1208523995,TR
-1208523996,1208524063,US
+1208523996,1208523999,US
+1208524000,1208524031,TR
+1208524032,1208524047,US
+1208524048,1208524055,TR
+1208524056,1208524059,CN
+1208524060,1208524063,US
1208524064,1208524079,CN
-1208524080,1208524159,US
+1208524080,1208524083,US
+1208524084,1208524087,KR
+1208524088,1208524091,US
+1208524092,1208524095,TR
+1208524096,1208524159,US
1208524160,1208524223,ID
-1208524224,1208524287,US
+1208524224,1208524227,US
+1208524228,1208524231,TR
+1208524232,1208524287,US
1208524288,1208524351,PK
1208524352,1208524415,CN
-1208524416,1208525823,US
-1208525824,1208526079,CA
-1208526080,1208527615,US
-1208527616,1208527871,CA
-1208527872,1208528127,VN
-1208528128,1208528895,US
-1208528896,1208529151,CA
-1208529152,1208529919,US
-1208529920,1208530175,CN
-1208530176,1208531967,US
-1208531968,1208532223,CA
-1208532224,1208586364,US
+1208524416,1208524863,US
+1208524864,1208524927,PK
+1208524928,1208525311,US
+1208525312,1208525343,CN
+1208525344,1208525375,TR
+1208525376,1208525823,US
+1208525824,1208526079,KH
+1208526080,1208526335,US
+1208526336,1208526591,CN
+1208526592,1208526607,TR
+1208526608,1208526623,US
+1208526624,1208526655,TR
+1208526656,1208526815,US
+1208526816,1208526847,CN
+1208526848,1208527871,US
+1208527872,1208527887,VN
+1208527888,1208527903,US
+1208527904,1208528127,VN
+1208528128,1208531007,US
+1208531008,1208531071,CN
+1208531072,1208531455,US
+1208531456,1208531583,CN
+1208531584,1208531711,US
+1208531712,1208531967,PK
+1208531968,1208532287,US
+1208532288,1208532351,PK
+1208532352,1208586364,US
1208586365,1208586372,MA
1208586373,1208586419,US
1208586420,1208586427,AE
@@ -22911,7 +27450,9 @@
1208586957,1208586957,US
1208586958,1208586973,GB
1208586974,1208586976,US
-1208586977,1208586992,GB
+1208586977,1208586980,GB
+1208586981,1208586988,US
+1208586989,1208586992,GB
1208586993,1208587025,US
1208587026,1208587033,NZ
1208587034,1208587045,US
@@ -22930,9 +27471,7 @@
1208587334,1208587341,CA
1208587342,1208587345,US
1208587346,1208587353,GB
-1208587354,1208587359,US
-1208587360,1208587377,GB
-1208587378,1208587378,US
+1208587354,1208587378,US
1208587379,1208587386,GE
1208587387,1208587394,US
1208587395,1208587402,EG
@@ -22940,7 +27479,9 @@
1208587419,1208587426,TR
1208587427,1208587427,US
1208587428,1208587443,GB
-1208587444,1208587479,US
+1208587444,1208587450,US
+1208587451,1208587458,IN
+1208587459,1208587479,US
1208587480,1208587487,LK
1208587488,1208587488,US
1208587489,1208587504,GB
@@ -22969,17 +27510,26 @@
1208588104,1208588111,MA
1208588112,1208588211,US
1208588212,1208588219,CA
-1208588220,1208588427,US
+1208588220,1208588408,US
+1208588409,1208588416,PE
+1208588417,1208588427,US
1208588428,1208588435,MO
1208588436,1208588463,US
1208588464,1208588476,AU
1208588477,1208588591,US
1208588592,1208588599,IN
-1208588600,1208588728,US
+1208588600,1208588706,US
+1208588707,1208588707,PE
+1208588708,1208588711,US
+1208588712,1208588714,PE
+1208588715,1208588728,US
1208588729,1208588760,GB
1208588761,1208588771,US
1208588772,1208588779,GB
-1208588780,1208588953,US
+1208588780,1208588853,US
+1208588854,1208588861,IN
+1208588862,1208588869,PE
+1208588870,1208588953,US
1208588954,1208588961,TR
1208588962,1208588972,US
1208588973,1208588985,GB
@@ -23001,9 +27551,7 @@
1208589640,1208589651,TR
1208589652,1208589857,US
1208589858,1208589865,MA
-1208589866,1208589894,US
-1208589895,1208589904,GB
-1208589905,1208589970,US
+1208589866,1208589970,US
1208589971,1208590002,GB
1208590003,1208590004,US
1208590005,1208590014,GB
@@ -23125,23 +27673,33 @@
1208814688,1208814719,CA
1208814720,1208814855,US
1208814856,1208814863,CA
-1208814864,1208832455,US
+1208814864,1208832391,US
+1208832392,1208832407,CN
+1208832408,1208832455,US
1208832456,1208832463,CN
1208832464,1208832567,US
1208832568,1208832575,CN
-1208832576,1208832599,US
+1208832576,1208832583,US
+1208832584,1208832591,CN
+1208832592,1208832599,US
1208832600,1208832607,CN
1208832608,1208832623,IT
1208832624,1208832631,NZ
-1208832632,1208832639,HK
-1208832640,1208832703,IN
-1208832704,1208832775,US
+1208832632,1208832639,CN
+1208832640,1208832711,US
+1208832712,1208832719,CN
+1208832720,1208832775,US
1208832776,1208832783,CA
1208832784,1208833023,US
1208833024,1208833031,PR
-1208833032,1208833439,US
-1208833440,1208833471,GB
-1208833472,1208852479,US
+1208833032,1208834415,US
+1208834416,1208834423,TK
+1208834424,1208834967,US
+1208834968,1208834975,ID
+1208834976,1208834991,US
+1208834992,1208834999,NP
+1208835000,1208835007,CA
+1208835008,1208852479,US
1208852480,1208860671,CA
1208860672,1208918015,US
1208918016,1208920007,CA
@@ -23171,86 +27729,152 @@
1209190852,1209190883,CA
1209190884,1209190911,US
1209190912,1209191167,MX
-1209191168,1209270543,US
-1209270544,1209270547,CN
-1209270548,1209270579,US
+1209191168,1209270579,US
1209270580,1209270583,ID
-1209270584,1209270759,US
-1209270760,1209270763,CA
-1209270764,1209270859,US
-1209270860,1209270863,CA
-1209270864,1209271067,US
+1209270584,1209270607,US
+1209270608,1209270611,KR
+1209270612,1209270615,CN
+1209270616,1209271067,US
1209271068,1209271071,VN
-1209271072,1209271111,US
-1209271112,1209271115,CA
-1209271116,1209271207,US
-1209271208,1209271211,FR
-1209271212,1209271371,US
+1209271072,1209271083,US
+1209271084,1209271087,BR
+1209271088,1209271127,US
+1209271128,1209271131,SA
+1209271132,1209271187,US
+1209271188,1209271191,TR
+1209271192,1209271195,RO
+1209271196,1209271215,US
+1209271216,1209271219,IN
+1209271220,1209271367,US
+1209271368,1209271371,TR
1209271372,1209271375,PE
1209271376,1209271435,US
1209271436,1209271439,CN
-1209271440,1209271463,US
-1209271464,1209271467,IN
-1209271468,1209271491,US
-1209271492,1209271499,CA
+1209271440,1209271451,US
+1209271452,1209271455,CN
+1209271456,1209271463,US
+1209271464,1209271467,PK
+1209271468,1209271487,US
+1209271488,1209271495,CN
+1209271496,1209271499,CA
1209271500,1209271503,MX
-1209271504,1209271527,US
-1209271528,1209271531,CA
-1209271532,1209271579,US
+1209271504,1209271519,US
+1209271520,1209271523,RO
+1209271524,1209271543,US
+1209271544,1209271551,CN
+1209271552,1209271567,US
+1209271568,1209271571,PL
+1209271572,1209271575,TR
+1209271576,1209271579,US
1209271580,1209271583,BD
1209271584,1209271607,US
1209271608,1209271611,KH
-1209271612,1209271639,US
-1209271640,1209271643,CZ
-1209271644,1209271691,US
+1209271612,1209271615,CA
+1209271616,1209271639,US
+1209271640,1209271643,CA
+1209271644,1209271659,US
+1209271660,1209271663,PK
+1209271664,1209271691,US
1209271692,1209271695,CA
-1209271696,1209271791,US
-1209271792,1209271795,GB
-1209271796,1209271871,US
-1209271872,1209271875,TR
-1209271876,1209271967,US
+1209271696,1209271703,US
+1209271704,1209271707,CN
+1209271708,1209271719,US
+1209271720,1209271723,CN
+1209271724,1209271727,US
+1209271728,1209271731,PK
+1209271732,1209271735,CN
+1209271736,1209271767,US
+1209271768,1209271771,RO
+1209271772,1209271783,US
+1209271784,1209271787,RO
+1209271788,1209271827,US
+1209271828,1209271831,CN
+1209271832,1209271839,US
+1209271840,1209271843,CN
+1209271844,1209271847,US
+1209271848,1209271855,IN
+1209271856,1209271867,US
+1209271868,1209271871,BR
+1209271872,1209271951,US
+1209271952,1209271955,KH
+1209271956,1209271963,US
+1209271964,1209271967,TR
1209271968,1209271971,VN
1209271972,1209271975,TR
-1209271976,1209271995,US
-1209271996,1209271999,FR
-1209272000,1209272015,US
-1209272016,1209272019,GB
-1209272020,1209272031,US
-1209272032,1209272035,GB
-1209272036,1209272407,US
+1209271976,1209271979,CA
+1209271980,1209271983,ZA
+1209271984,1209271999,US
+1209272000,1209272007,TR
+1209272008,1209272011,PL
+1209272012,1209272043,US
+1209272044,1209272047,TR
+1209272048,1209272079,US
+1209272080,1209272095,TR
+1209272096,1209272127,US
+1209272128,1209272159,CN
+1209272160,1209272175,US
+1209272176,1209272191,BR
+1209272192,1209272223,TR
+1209272224,1209272239,US
+1209272240,1209272255,TR
+1209272256,1209272287,CN
+1209272288,1209272383,US
+1209272384,1209272399,CN
+1209272400,1209272407,US
1209272408,1209272415,PE
1209272416,1209272447,US
1209272448,1209272479,KH
-1209272480,1209272511,US
+1209272480,1209272495,CN
+1209272496,1209272511,US
1209272512,1209272575,CN
1209272576,1209272583,US
1209272584,1209272591,PH
-1209272592,1209272655,US
+1209272592,1209272607,US
+1209272608,1209272623,TR
+1209272624,1209272655,US
1209272656,1209272671,TR
-1209272672,1209272895,US
+1209272672,1209272719,US
+1209272720,1209272767,CN
+1209272768,1209272783,TR
+1209272784,1209272847,US
+1209272848,1209272863,TR
+1209272864,1209272895,US
1209272896,1209272959,CN
-1209272960,1209273215,US
-1209273216,1209273279,CN
-1209273280,1209273647,US
+1209272960,1209273023,BR
+1209273024,1209273055,US
+1209273056,1209273071,TR
+1209273072,1209273119,US
+1209273120,1209273135,BR
+1209273136,1209273151,TR
+1209273152,1209273207,US
+1209273208,1209273215,CA
+1209273216,1209273279,US
+1209273280,1209273311,BR
+1209273312,1209273359,US
+1209273360,1209273407,TR
+1209273408,1209273555,US
+1209273556,1209273559,CA
+1209273560,1209273647,US
1209273648,1209273655,CN
-1209273656,1209273663,US
+1209273656,1209273663,AU
1209273664,1209273671,BD
-1209273672,1209273991,US
-1209273992,1209273999,FR
-1209274000,1209274031,US
+1209273672,1209273999,US
+1209274000,1209274015,TR
+1209274016,1209274023,US
+1209274024,1209274031,RO
1209274032,1209274039,TR
-1209274040,1209274115,US
+1209274040,1209274047,US
+1209274048,1209274111,CN
+1209274112,1209274115,US
1209274116,1209274119,CZ
1209274120,1209274135,US
1209274136,1209274151,TR
-1209274152,1209274175,US
-1209274176,1209274239,FR
-1209274240,1209274303,US
-1209274304,1209274367,CN
-1209274368,1209274607,US
-1209274608,1209274623,FR
-1209274624,1209274751,CN
-1209274752,1209274815,US
+1209274152,1209274367,US
+1209274368,1209274495,TR
+1209274496,1209274527,CN
+1209274528,1209274543,US
+1209274544,1209274559,TR
+1209274560,1209274815,US
1209274816,1209274879,CA
1209274880,1209274911,CZ
1209274912,1209274927,US
@@ -23259,90 +27883,222 @@
1209274960,1209274967,PH
1209274968,1209275071,US
1209275072,1209275135,GB
-1209275136,1209275863,US
-1209275864,1209275871,FR
-1209275872,1209275906,US
+1209275136,1209275679,US
+1209275680,1209275695,TR
+1209275696,1209275791,US
+1209275792,1209275799,TR
+1209275800,1209275823,US
+1209275824,1209275827,CN
+1209275828,1209275906,US
1209275907,1209275908,KH
-1209275909,1209275910,US
-1209275911,1209275911,MY
-1209275912,1209275924,US
-1209275925,1209275925,CN
-1209275926,1209275928,US
+1209275909,1209275913,US
+1209275914,1209275914,KH
+1209275915,1209275917,US
+1209275918,1209275918,KH
+1209275919,1209275924,US
+1209275925,1209275925,TR
+1209275926,1209275927,US
+1209275928,1209275928,CN
1209275929,1209275929,MY
-1209275930,1209275931,US
+1209275930,1209275930,US
+1209275931,1209275931,AU
1209275932,1209275932,CN
-1209275933,1209276351,US
+1209275933,1209275935,US
+1209275936,1209275951,RO
+1209275952,1209275999,US
+1209276000,1209276031,MY
+1209276032,1209276063,BR
+1209276064,1209276351,US
1209276352,1209276415,CN
-1209276416,1209276799,US
-1209276800,1209276807,BD
-1209276808,1209276815,FR
-1209276816,1209276911,US
+1209276416,1209276591,US
+1209276592,1209276607,RO
+1209276608,1209276671,US
+1209276672,1209276703,CN
+1209276704,1209276799,US
+1209276800,1209276803,SA
+1209276804,1209276807,BD
+1209276808,1209276903,US
+1209276904,1209276911,CN
1209276912,1209276927,TR
-1209276928,1209277087,US
-1209277088,1209277095,FR
-1209277096,1209277103,US
+1209276928,1209277103,US
1209277104,1209277119,TR
-1209277120,1209277135,US
-1209277136,1209277143,FR
-1209277144,1209277155,US
+1209277120,1209277135,RO
+1209277136,1209277143,US
+1209277144,1209277147,TR
+1209277148,1209277154,US
+1209277155,1209277155,TR
1209277156,1209277156,SE
-1209277157,1209277177,US
-1209277178,1209277178,FR
-1209277179,1209277575,US
+1209277157,1209277157,US
+1209277158,1209277158,IN
+1209277159,1209277159,US
+1209277160,1209277160,CN
+1209277161,1209277166,US
+1209277167,1209277167,CN
+1209277168,1209277168,AU
+1209277169,1209277171,US
+1209277172,1209277172,AU
+1209277173,1209277215,US
+1209277216,1209277231,BR
+1209277232,1209277247,US
+1209277248,1209277263,BR
+1209277264,1209277279,US
+1209277280,1209277283,CA
+1209277284,1209277287,US
+1209277288,1209277295,RO
+1209277296,1209277375,US
+1209277376,1209277379,PL
+1209277380,1209277399,US
+1209277400,1209277419,CN
+1209277420,1209277575,US
1209277576,1209277583,BD
-1209277584,1209278207,US
-1209278208,1209278463,IE
-1209278464,1209278911,US
+1209277584,1209277599,TR
+1209277600,1209277695,US
+1209277696,1209277951,KH
+1209277952,1209278083,US
+1209278084,1209278087,CN
+1209278088,1209278095,AU
+1209278096,1209278111,US
+1209278112,1209278143,TR
+1209278144,1209278207,US
+1209278208,1209278463,KH
+1209278464,1209278495,US
+1209278496,1209278511,TR
+1209278512,1209278523,US
+1209278524,1209278527,CN
+1209278528,1209278591,US
+1209278592,1209278719,CN
+1209278720,1209278795,US
+1209278796,1209278799,CN
+1209278800,1209278815,US
+1209278816,1209278823,CN
+1209278824,1209278827,US
+1209278828,1209278831,CN
+1209278832,1209278839,US
+1209278840,1209278847,CN
+1209278848,1209278911,US
1209278912,1209278919,TR
-1209278920,1209279167,US
+1209278920,1209278975,US
+1209278976,1209279103,CA
+1209279104,1209279119,US
+1209279120,1209279135,CA
+1209279136,1209279139,US
+1209279140,1209279143,PL
+1209279144,1209279167,US
1209279168,1209279231,VN
-1209279232,1209279615,US
+1209279232,1209279295,BR
+1209279296,1209279615,US
1209279616,1209279743,GB
-1209279744,1209279871,US
+1209279744,1209279855,US
+1209279856,1209279871,TR
1209279872,1209279935,MY
-1209279936,1209280191,US
-1209280192,1209280255,VN
-1209280256,1209280575,US
-1209280576,1209280607,FR
-1209280608,1209280619,US
-1209280620,1209280623,GB
-1209280624,1209280959,US
-1209280960,1209280975,GB
-1209280976,1209281247,US
+1209279936,1209279951,GB
+1209279952,1209279967,US
+1209279968,1209279999,CN
+1209280000,1209280015,TR
+1209280016,1209280027,US
+1209280028,1209280031,SA
+1209280032,1209280047,IN
+1209280048,1209280191,US
+1209280192,1209280255,ID
+1209280256,1209280419,US
+1209280420,1209280423,CN
+1209280424,1209280439,US
+1209280440,1209280447,CN
+1209280448,1209280463,IN
+1209280464,1209280495,US
+1209280496,1209280511,CN
+1209280512,1209280515,US
+1209280516,1209280519,TR
+1209280520,1209280527,AU
+1209280528,1209280623,US
+1209280624,1209280639,TR
+1209280640,1209280895,US
+1209280896,1209280959,BR
+1209280960,1209281007,US
+1209281008,1209281023,TR
+1209281024,1209281151,US
+1209281152,1209281231,CN
+1209281232,1209281247,US
1209281248,1209281279,CA
1209281280,1209281535,KH
-1209281536,1209281983,US
+1209281536,1209281791,IN
+1209281792,1209281871,US
+1209281872,1209281887,TR
+1209281888,1209281927,US
+1209281928,1209281935,IN
+1209281936,1209281983,US
1209281984,1209282047,TR
-1209282048,1209282583,US
-1209282584,1209282591,GB
-1209282592,1209283479,US
-1209283480,1209283487,GB
-1209283488,1209283535,US
-1209283536,1209283543,GB
-1209283544,1209283587,US
-1209283588,1209283591,CN
-1209283592,1209283695,US
-1209283696,1209283703,GB
-1209283704,1209283751,US
+1209282048,1209282063,US
+1209282064,1209282067,SA
+1209282068,1209282159,US
+1209282160,1209282175,CN
+1209282176,1209282559,US
+1209282560,1209282623,CN
+1209282624,1209283487,US
+1209283488,1209283503,TR
+1209283504,1209283543,US
+1209283544,1209283547,SA
+1209283548,1209283567,US
+1209283568,1209283575,CN
+1209283576,1209283583,US
+1209283584,1209283587,SA
+1209283588,1209283599,US
+1209283600,1209283607,IN
+1209283608,1209283751,US
1209283752,1209283759,BD
-1209283760,1209283871,US
+1209283760,1209283775,US
+1209283776,1209283807,ZA
+1209283808,1209283839,CA
+1209283840,1209283871,US
1209283872,1209283875,TR
-1209283876,1209283967,US
-1209283968,1209284095,GB
-1209284096,1209284223,US
+1209283876,1209283887,US
+1209283888,1209283903,BR
+1209283904,1209283915,US
+1209283916,1209283919,KR
+1209283920,1209284159,US
+1209284160,1209284223,TR
1209284224,1209284351,IE
-1209284352,1209284759,US
-1209284760,1209284767,FR
-1209284768,1209284799,US
-1209284800,1209284815,TR
-1209284816,1209284831,CN
-1209284832,1209284855,US
-1209284856,1209284863,TR
-1209284864,1209285063,US
+1209284352,1209284391,US
+1209284392,1209284399,RO
+1209284400,1209284415,TR
+1209284416,1209284431,US
+1209284432,1209284447,TR
+1209284448,1209284607,US
+1209284608,1209284671,TR
+1209284672,1209284735,CN
+1209284736,1209284767,US
+1209284768,1209284799,MY
+1209284800,1209284831,TR
+1209284832,1209284839,US
+1209284840,1209284843,TR
+1209284844,1209284855,US
+1209284856,1209284863,CN
+1209284864,1209284993,US
+1209284994,1209284994,TR
+1209284995,1209284995,US
+1209284996,1209284996,TR
+1209284997,1209284997,US
+1209284998,1209284998,CN
+1209284999,1209284999,US
+1209285000,1209285000,CA
+1209285001,1209285002,US
+1209285003,1209285004,CN
+1209285005,1209285009,US
+1209285010,1209285010,CA
+1209285011,1209285011,US
+1209285012,1209285012,TR
+1209285013,1209285017,US
+1209285018,1209285018,CA
+1209285019,1209285021,US
+1209285022,1209285022,CA
+1209285023,1209285063,US
1209285064,1209285071,TR
-1209285072,1209285183,US
+1209285072,1209285151,US
+1209285152,1209285183,RO
1209285184,1209285247,TR
-1209285248,1209347839,US
+1209285248,1209286143,US
+1209286144,1209286399,KH
+1209286400,1209347839,US
1209347840,1209348095,GB
1209348096,1209357215,US
1209357216,1209357231,SI
@@ -23369,9 +28125,7 @@
1209860448,1209860479,BE
1209860480,1209860575,US
1209860576,1209860607,IN
-1209860608,1209860863,US
-1209860864,1209860895,CY
-1209860896,1209860927,US
+1209860608,1209860927,US
1209860928,1209860959,AU
1209860960,1209861119,US
1209861120,1209861375,CA
@@ -23395,8 +28149,8 @@
1209866112,1209866143,IN
1209866144,1209866175,US
1209866176,1209866207,BE
-1209866208,1209866239,IN
-1209866240,1209866751,US
+1209866208,1209866303,IN
+1209866304,1209866751,US
1209866752,1209867007,IN
1209867008,1209867039,NZ
1209867040,1209867071,BE
@@ -23426,7 +28180,9 @@
1209890496,1209890559,AU
1209890560,1209893503,US
1209893504,1209893519,MX
-1209893520,1209917439,US
+1209893520,1209904959,US
+1209904960,1209904975,GB
+1209904976,1209917439,US
1209917440,1209925631,CA
1209925632,1210057039,US
1210057040,1210057047,JM
@@ -23438,7 +28194,9 @@
1210057568,1210057583,NG
1210057584,1210057615,US
1210057616,1210057623,CA
-1210057624,1210057879,US
+1210057624,1210057639,US
+1210057640,1210057647,GB
+1210057648,1210057879,US
1210057880,1210057887,IL
1210057888,1210057895,US
1210057896,1210057903,MX
@@ -23501,7 +28259,9 @@
1210062928,1210062935,AU
1210062936,1210062975,US
1210062976,1210062983,CR
-1210062984,1210064311,US
+1210062984,1210064067,US
+1210064068,1210064071,CA
+1210064072,1210064311,US
1210064312,1210064319,IE
1210064320,1210064527,US
1210064528,1210064535,AU
@@ -23584,9 +28344,7 @@
1210070504,1210070511,CA
1210070512,1210070631,US
1210070632,1210070639,MX
-1210070640,1210070703,US
-1210070704,1210070711,GB
-1210070712,1210070799,US
+1210070640,1210070799,US
1210070800,1210070807,AU
1210070808,1210070863,US
1210070864,1210070871,BH
@@ -23631,7 +28389,9 @@
1210081336,1210081343,CR
1210081344,1210081559,US
1210081560,1210081567,PK
-1210081568,1210081823,US
+1210081568,1210081599,US
+1210081600,1210081615,AU
+1210081616,1210081823,US
1210081824,1210081831,MX
1210081832,1210081839,US
1210081840,1210081847,MX
@@ -23704,7 +28464,9 @@
1210090368,1210090375,JM
1210090376,1210090383,US
1210090384,1210090399,CA
-1210090400,1210090623,US
+1210090400,1210090439,US
+1210090440,1210090443,FR
+1210090444,1210090623,US
1210090624,1210090639,BD
1210090640,1210090767,US
1210090768,1210090783,BD
@@ -23724,7 +28486,9 @@
1210091536,1210091543,CA
1210091544,1210091679,US
1210091680,1210091687,AU
-1210091688,1210091791,US
+1210091688,1210091723,US
+1210091724,1210091725,GB
+1210091726,1210091791,US
1210091792,1210091807,CA
1210091808,1210091839,US
1210091840,1210091847,CA
@@ -23755,7 +28519,11 @@
1210093672,1210093679,AU
1210093680,1210093751,US
1210093752,1210093759,AU
-1210093760,1210093847,US
+1210093760,1210093771,US
+1210093772,1210093775,HU
+1210093776,1210093815,US
+1210093816,1210093817,JE
+1210093818,1210093847,US
1210093848,1210093855,AU
1210093856,1210094175,US
1210094176,1210094183,TT
@@ -23763,7 +28531,9 @@
1210094408,1210094415,GB
1210094416,1210094831,US
1210094832,1210094847,SG
-1210094848,1210094943,US
+1210094848,1210094855,US
+1210094856,1210094863,SE
+1210094864,1210094943,US
1210094944,1210094951,GB
1210094952,1210094959,US
1210094960,1210094967,GB
@@ -23850,7 +28620,9 @@
1210100632,1210100639,NZ
1210100640,1210101023,US
1210101024,1210101039,GB
-1210101040,1210101263,US
+1210101040,1210101191,US
+1210101192,1210101195,CA
+1210101196,1210101263,US
1210101264,1210101279,MY
1210101280,1210101311,US
1210101312,1210101319,IE
@@ -23861,7 +28633,9 @@
1210101728,1210101743,GB
1210101744,1210101879,US
1210101880,1210101887,CA
-1210101888,1210102399,US
+1210101888,1210102287,US
+1210102288,1210102295,IL
+1210102296,1210102399,US
1210102400,1210102407,AU
1210102408,1210102815,US
1210102816,1210102823,CA
@@ -24012,7 +28786,9 @@
1210117888,1210117895,TH
1210117896,1210118023,US
1210118024,1210118031,GB
-1210118032,1210118191,US
+1210118032,1210118089,US
+1210118090,1210118091,IN
+1210118092,1210118191,US
1210118192,1210118199,NZ
1210118200,1210118239,US
1210118240,1210118255,TH
@@ -24037,7 +28813,9 @@
1210119552,1210119559,MX
1210119560,1210119823,US
1210119824,1210119831,CA
-1210119832,1210120007,US
+1210119832,1210119881,US
+1210119882,1210119883,GB
+1210119884,1210120007,US
1210120008,1210120015,IN
1210120016,1210120847,US
1210120848,1210120855,MY
@@ -24094,7 +28872,8 @@
1211035664,1211035711,US
1211035712,1211035775,CA
1211035776,1211035791,US
-1211035792,1211035823,CR
+1211035792,1211035807,CR
+1211035808,1211035823,US
1211035824,1211035839,CH
1211035840,1211036031,US
1211036032,1211036095,EC
@@ -24104,7 +28883,10 @@
1211036736,1211036751,GT
1211036752,1211036991,US
1211036992,1211037055,BR
-1211037056,1211037519,US
+1211037056,1211037135,US
+1211037136,1211037151,GB
+1211037152,1211037183,DO
+1211037184,1211037519,US
1211037520,1211037535,UY
1211037536,1211037679,US
1211037680,1211037695,AR
@@ -24116,20 +28898,26 @@
1211038064,1211038079,TT
1211038080,1211038719,US
1211038720,1211038975,CY
-1211038976,1211039087,US
+1211038976,1211039007,US
+1211039008,1211039023,VG
+1211039024,1211039087,US
1211039088,1211039103,RU
1211039104,1211039503,US
1211039504,1211039519,A2
1211039520,1211039551,US
1211039552,1211039567,BM
-1211039568,1211039679,US
+1211039568,1211039647,US
+1211039648,1211039663,AR
+1211039664,1211039679,US
1211039680,1211039695,BR
1211039696,1211236351,US
1211236352,1211269119,PR
1211269120,1211303935,US
1211303936,1211304159,CA
-1211304160,1211304191,US
-1211304192,1211304319,CA
+1211304160,1211304223,US
+1211304224,1211304255,CA
+1211304256,1211304287,US
+1211304288,1211304319,CA
1211304320,1211304351,NL
1211304352,1211304703,CA
1211304704,1211304767,GB
@@ -24139,8 +28927,8 @@
1211305984,1211306111,NL
1211306112,1211306751,US
1211306752,1211306879,CA
-1211306880,1211308159,US
-1211308160,1211308175,CA
+1211306880,1211308167,US
+1211308168,1211308175,CA
1211308176,1211308191,BV
1211308192,1211308543,CA
1211308544,1211308559,KN
@@ -24156,12 +28944,26 @@
1211308736,1211308751,BV
1211308752,1211308767,CA
1211308768,1211308783,US
-1211308784,1211309055,CA
-1211309056,1211309311,US
-1211309312,1211310079,CA
-1211310080,1211313219,US
+1211308784,1211310079,CA
+1211310080,1211310404,US
+1211310405,1211310405,IN
+1211310406,1211310951,US
+1211310952,1211310952,IN
+1211310953,1211311378,US
+1211311379,1211311379,IN
+1211311380,1211311394,US
+1211311395,1211311395,IN
+1211311396,1211311883,US
+1211311884,1211311884,IN
+1211311885,1211311963,US
+1211311964,1211311964,IN
+1211311965,1211312569,US
+1211312570,1211312570,IN
+1211312571,1211313219,US
1211313220,1211313231,IN
-1211313232,1211313431,US
+1211313232,1211313311,US
+1211313312,1211313315,IN
+1211313316,1211313431,US
1211313432,1211313439,IN
1211313440,1211313567,US
1211313568,1211313579,IN
@@ -24187,8 +28989,7 @@
1211333120,1211333631,VC
1211333632,1211333887,GD
1211333888,1211334655,VG
-1211334656,1211367423,US
-1211367424,1211367487,EE
+1211334656,1211367487,US
1211367488,1211367495,GB
1211367496,1211367503,US
1211367504,1211367519,CH
@@ -24199,9 +29000,13 @@
1211368192,1211368447,EE
1211368448,1211384279,US
1211384280,1211384287,GB
-1211384288,1211387983,US
+1211384288,1211384327,US
+1211384328,1211384335,A1
+1211384336,1211387983,US
1211387984,1211387999,AE
-1211388000,1211388671,US
+1211388000,1211388159,US
+1211388160,1211388287,A1
+1211388288,1211388671,US
1211388672,1211388687,IT
1211388688,1211391455,US
1211391456,1211391487,CN
@@ -24354,7 +29159,15 @@
1244848128,1244852223,CA
1244852224,1244864511,US
1244864512,1244872703,CA
-1244872704,1245183999,US
+1244872704,1244996655,US
+1244996656,1244996663,CH
+1244996664,1245144575,US
+1245144576,1245144831,CH
+1245144832,1245168215,US
+1245168216,1245168219,CH
+1245168220,1245173215,US
+1245173216,1245173223,CH
+1245173224,1245183999,US
1245184000,1245446143,CA
1245446144,1246864899,US
1246864900,1246864958,EG
@@ -24375,7 +29188,13 @@
1246875930,1246902783,US
1246902784,1246903039,NL
1246903040,1246937087,US
-1246937088,1246945279,CA
+1246937088,1246938111,CA
+1246938112,1246938127,US
+1246938128,1246940159,CA
+1246940160,1246940415,GB
+1246940416,1246943287,CA
+1246943288,1246943295,DE
+1246943296,1246945279,CA
1246945280,1247027199,US
1247027200,1247034559,A2
1247034560,1247034575,US
@@ -24386,14 +29205,78 @@
1247070816,1247070831,CA
1247070832,1247072719,US
1247072720,1247072735,NL
-1247072736,1248864255,US
+1247072736,1247481855,US
+1247481856,1247481863,CN
+1247481864,1247481871,CO
+1247481872,1247481879,TR
+1247481880,1247481887,US
+1247481888,1247481903,CN
+1247481904,1247481911,BO
+1247481912,1247481927,CN
+1247481928,1247481951,US
+1247481952,1247481967,CN
+1247481968,1247481983,US
+1247481984,1247482015,GB
+1247482016,1247482047,CN
+1247482048,1247482063,CA
+1247482064,1247482071,BO
+1247482072,1247482079,US
+1247482080,1247482175,CN
+1247482176,1247482239,US
+1247482240,1247482255,GB
+1247482256,1247482319,CN
+1247482320,1247482335,US
+1247482336,1247482351,CN
+1247482352,1247482367,US
+1247482368,1247482383,GB
+1247482384,1247482543,CN
+1247482544,1247482551,US
+1247482552,1247482559,CN
+1247482560,1247482567,US
+1247482568,1247482583,CN
+1247482584,1247482607,US
+1247482608,1247482623,CN
+1247482624,1247482687,US
+1247482688,1247482751,CA
+1247482752,1247482815,US
+1247482816,1247482879,CN
+1247482880,1247482927,US
+1247482928,1247482951,BO
+1247482952,1247482967,US
+1247482968,1247482975,CN
+1247482976,1247483015,US
+1247483016,1247483039,CN
+1247483040,1247483047,CA
+1247483048,1247483079,US
+1247483080,1247483095,CN
+1247483096,1247483111,US
+1247483112,1247483119,CN
+1247483120,1247483647,US
+1247483648,1247484671,CN
+1247484672,1247484927,US
+1247484928,1247485191,CN
+1247485192,1247485231,US
+1247485232,1247485263,CN
+1247485264,1247485439,US
+1247485440,1247485543,CN
+1247485544,1247485615,US
+1247485616,1247485639,CN
+1247485640,1247485647,US
+1247485648,1247485951,CN
+1247485952,1248864255,US
1248864256,1248866303,CA
1248866304,1248885759,US
1248885760,1248886783,CA
-1248886784,1248899071,US
+1248886784,1248897263,US
+1248897264,1248897271,FR
+1248897272,1248899071,US
1248899072,1248900095,CA
-1248900096,1248913407,US
-1248913408,1248915455,GP
+1248900096,1248903695,US
+1248903696,1248903711,ZA
+1248903712,1248903775,US
+1248903776,1248903791,FR
+1248903792,1248913407,US
+1248913408,1248915455,MF
1248915456,1248919551,US
1248919552,1248920575,CA
1248920576,1248921599,US
@@ -24412,23 +29295,38 @@
1249010688,1249011711,CA
1249011712,1249019903,US
1249019904,1249020927,CA
-1249020928,1249027175,US
+1249020928,1249026423,US
+1249026424,1249026431,CA
+1249026432,1249026455,US
+1249026456,1249026463,ES
+1249026464,1249026703,US
+1249026704,1249026711,ZA
+1249026712,1249026719,CA
+1249026720,1249026767,US
+1249026768,1249026775,CA
+1249026776,1249026783,MX
+1249026784,1249027127,US
+1249027128,1249027135,ZA
+1249027136,1249027143,AU
+1249027144,1249027175,US
1249027176,1249027183,IN
-1249027184,1249027391,US
+1249027184,1249027271,US
+1249027272,1249027279,GB
+1249027280,1249027391,US
1249027392,1249027407,PH
-1249027408,1249027455,US
-1249027456,1249027471,CA
-1249027472,1249027503,US
+1249027408,1249027503,US
1249027504,1249027519,CA
1249027520,1249027551,US
1249027552,1249027559,CA
1249027560,1249027647,US
-1249027648,1249027655,AU
-1249027656,1249027823,US
+1249027648,1249027655,GB
+1249027656,1249027719,US
+1249027720,1249027727,GR
+1249027728,1249027823,US
1249027824,1249027839,CA
-1249027840,1249027887,US
-1249027888,1249027895,EG
-1249027896,1249027919,US
+1249027840,1249027895,US
+1249027896,1249027903,PL
+1249027904,1249027919,US
1249027920,1249027935,AU
1249027936,1249029119,US
1249029120,1249030143,CA
@@ -24446,36 +29344,26 @@
1249092608,1249099775,US
1249099776,1249101823,CA
1249101824,1249102847,PR
-1249102848,1249103871,CA
+1249102848,1249103103,US
+1249103104,1249103871,CA
1249103872,1249103887,TW
-1249103888,1249103903,PH
-1249103904,1249103951,US
+1249103888,1249103951,US
1249103952,1249103967,TW
1249103968,1249104095,US
1249104096,1249104111,TW
-1249104112,1249104127,US
-1249104128,1249104191,GB
-1249104192,1249104255,US
-1249104256,1249104319,GB
-1249104320,1249104351,US
+1249104112,1249104351,US
1249104352,1249104367,AU
-1249104368,1249104383,US
-1249104384,1249104447,GB
-1249104448,1249104511,US
-1249104512,1249104543,GB
+1249104368,1249104543,US
1249104544,1249104551,ES
1249104552,1249104575,US
1249104576,1249104607,ES
-1249104608,1249104895,US
-1249104896,1249104959,GB
-1249104960,1249105119,US
+1249104608,1249105119,US
1249105120,1249105127,AR
1249105128,1249105135,US
1249105136,1249105143,CH
1249105144,1249105183,US
1249105184,1249105191,ZA
-1249105192,1249105215,US
-1249105216,1249105279,GB
+1249105192,1249105279,US
1249105280,1249105295,CA
1249105296,1249105367,US
1249105368,1249105375,ES
@@ -24501,7 +29389,9 @@
1249180032,1249180095,TW
1249180096,1249191935,US
1249191936,1249193983,CA
-1249193984,1249203199,US
+1249193984,1249195007,US
+1249195008,1249196031,CA
+1249196032,1249203199,US
1249203200,1249204223,GD
1249204224,1249210367,US
1249210368,1249212415,KY
@@ -24509,12 +29399,50 @@
1249217536,1249218559,CA
1249218560,1249221887,US
1249221888,1249222655,RO
-1249222656,1249236991,US
+1249222656,1249227007,US
+1249227008,1249227071,CY
+1249227072,1249227135,VG
+1249227136,1249227167,US
+1249227168,1249227199,VG
+1249227200,1249227263,HK
+1249227264,1249227519,VG
+1249227520,1249228031,US
+1249228032,1249228063,CZ
+1249228064,1249228095,US
+1249228096,1249228223,UA
+1249228224,1249228239,CZ
+1249228240,1249228287,US
+1249228288,1249228351,SC
+1249228352,1249229007,US
+1249229008,1249229008,CA
+1249229009,1249229087,US
+1249229088,1249229095,CA
+1249229096,1249229216,US
+1249229217,1249229217,CA
+1249229218,1249229289,US
+1249229290,1249229291,CA
+1249229292,1249236991,US
1249236992,1249239039,KY
1249239040,1249245183,US
1249245184,1249247231,CA
1249247232,1249256447,US
-1249256448,1249257471,CA
+1249256448,1249256500,CA
+1249256501,1249256542,GB
+1249256543,1249256713,CA
+1249256714,1249256773,US
+1249256774,1249256988,CA
+1249256989,1249256998,US
+1249256999,1249256999,CA
+1249257000,1249257009,LB
+1249257010,1249257017,CA
+1249257018,1249257042,US
+1249257043,1249257052,CA
+1249257053,1249257062,US
+1249257063,1249257121,CA
+1249257122,1249257131,LB
+1249257132,1249257348,CA
+1249257349,1249257412,US
+1249257413,1249257471,CA
1249257472,1249260543,US
1249260544,1249261567,CA
1249261568,1249272831,US
@@ -24527,7 +29455,13 @@
1249335296,1249337343,CA
1249337344,1249359871,US
1249359872,1249361919,CA
-1249361920,1249384447,US
+1249361920,1249381503,US
+1249381504,1249381519,DE
+1249381520,1249381759,US
+1249381760,1249381775,DE
+1249381776,1249382287,US
+1249382288,1249382303,DE
+1249382304,1249384447,US
1249384448,1249386495,PR
1249386496,1249391615,US
1249391616,1249392639,CA
@@ -24535,7 +29469,15 @@
1249396736,1249397759,CA
1249397760,1249409023,US
1249409024,1249410047,CA
-1249410048,1249452031,US
+1249410048,1249439823,US
+1249439824,1249439839,BR
+1249439840,1249440063,US
+1249440064,1249440127,AN
+1249440128,1249440255,US
+1249440256,1249440271,AN
+1249440272,1249440279,US
+1249440280,1249440287,FR
+1249440288,1249452031,US
1249452032,1249453055,CA
1249453056,1249474559,US
1249474560,1249475583,CA
@@ -24551,14 +29493,22 @@
1249531904,1249533951,GD
1249533952,1249542143,US
1249542144,1249544191,CA
-1249544192,1249562623,US
+1249544192,1249550367,US
+1249550368,1249550375,HK
+1249550376,1249562623,US
1249562624,1249564671,CA
1249564672,1249568319,US
1249568320,1249568327,NL
1249568328,1249571839,US
1249571840,1249572863,CA
1249572864,1249577087,US
-1249577088,1249577983,CA
+1249577088,1249577232,CA
+1249577233,1249577343,US
+1249577344,1249577480,CA
+1249577481,1249577545,US
+1249577546,1249577730,CA
+1249577731,1249577794,US
+1249577795,1249577983,CA
1249577984,1249592319,US
1249592320,1249593343,CA
1249593344,1249598463,US
@@ -24580,10 +29530,12 @@
1249804288,1249838847,US
1249838848,1249838911,IN
1249838912,1249838975,US
-1249838976,1249839039,IN
-1249839040,1249839423,US
+1249838976,1249839103,IN
+1249839104,1249839423,US
1249839424,1249839487,VE
-1249839488,1249843231,US
+1249839488,1249839551,US
+1249839552,1249839615,IN
+1249839616,1249843231,US
1249843232,1249843247,IN
1249843248,1249843423,US
1249843424,1249843439,IN
@@ -24601,9 +29553,7 @@
1249847872,1249847903,US
1249847904,1249847935,NO
1249847936,1249847967,GB
-1249847968,1249848479,US
-1249848480,1249848511,PH
-1249848512,1249848927,US
+1249847968,1249848927,US
1249848928,1249848959,AU
1249848960,1249850367,US
1249850368,1249850383,IN
@@ -24626,23 +29576,23 @@
1249886208,1249902591,CA
1249902592,1254490111,US
1254490112,1254555647,CA
-1254555648,1254604159,US
+1254555648,1254604047,US
+1254604048,1254604063,ES
+1254604064,1254604159,US
1254604160,1254604175,GB
1254604176,1254604191,US
1254604192,1254604199,IE
1254604200,1254621183,US
1254621184,1254629375,CA
-1254629376,1254704383,US
+1254629376,1254688511,US
+1254688512,1254688543,CA
+1254688544,1254704383,US
1254704384,1254704639,PH
1254704640,1254704903,US
1254704904,1254704911,PH
-1254704912,1254708927,US
-1254708928,1254708959,SG
-1254708960,1254713359,US
+1254704912,1254713359,US
1254713360,1254713407,CA
-1254713408,1254725119,US
-1254725120,1254725151,GB
-1254725152,1254924687,US
+1254713408,1254924687,US
1254924688,1254924703,RO
1254924704,1254948927,US
1254948928,1254948935,SG
@@ -24650,12 +29600,12 @@
1254948960,1254948975,CA
1254948976,1254949247,US
1254949248,1254949279,IN
-1254949280,1254950671,US
+1254949280,1254950199,US
+1254950200,1254950207,IL
+1254950208,1254950671,US
1254950672,1254950679,RU
1254950680,1254950687,CA
-1254950688,1254950719,US
-1254950720,1254950727,SG
-1254950728,1254950751,US
+1254950688,1254950751,US
1254950752,1254950759,IL
1254950760,1254950767,US
1254950768,1254950775,GR
@@ -24718,9 +29668,7 @@
1254953616,1254953623,GB
1254953624,1254953639,US
1254953640,1254953647,TW
-1254953648,1254953671,US
-1254953672,1254953679,MT
-1254953680,1254953687,US
+1254953648,1254953687,US
1254953688,1254953703,CA
1254953704,1254953743,US
1254953744,1254953751,IN
@@ -24750,7 +29698,9 @@
1254954664,1254954671,GB
1254954672,1254954887,US
1254954888,1254954895,IL
-1254954896,1254955599,US
+1254954896,1254955103,US
+1254955104,1254955111,GB
+1254955112,1254955599,US
1254955600,1254955607,GB
1254955608,1254955735,US
1254955736,1254955743,GB
@@ -24766,7 +29716,9 @@
1254957248,1254957263,MT
1254957264,1254957287,US
1254957288,1254957295,IN
-1254957296,1254957375,US
+1254957296,1254957311,US
+1254957312,1254957327,CA
+1254957328,1254957375,US
1254957376,1254957391,CA
1254957392,1254957407,US
1254957408,1254957423,IN
@@ -24879,7 +29831,9 @@
1254964344,1254964351,PR
1254964352,1254964391,US
1254964392,1254964399,AU
-1254964400,1254964799,US
+1254964400,1254964639,US
+1254964640,1254964671,AU
+1254964672,1254964799,US
1254964800,1254964815,CA
1254964816,1254964927,US
1254964928,1254964943,CA
@@ -25178,9 +30132,7 @@
1255042752,1255042783,CA
1255042784,1255047167,US
1255047168,1255055359,CA
-1255055360,1255055487,US
-1255055488,1255055503,CA
-1255055504,1255056063,US
+1255055360,1255056063,US
1255056064,1255056095,NL
1255056096,1255057887,US
1255057888,1255057919,NL
@@ -25191,7 +30143,8 @@
1255059168,1255059327,US
1255059328,1255059343,NL
1255059344,1255059359,US
-1255059360,1255059407,CA
+1255059360,1255059391,CA
+1255059392,1255059407,US
1255059408,1255059423,AR
1255059424,1255060159,US
1255060160,1255060191,NL
@@ -25209,15 +30162,19 @@
1255061984,1255062015,CA
1255062016,1255062463,US
1255062464,1255062527,PA
-1255062528,1255062591,US
-1255062592,1255062607,CA
-1255062608,1255062847,US
+1255062528,1255062847,US
1255062848,1255062863,CA
1255062864,1255063551,US
1255063552,1255071743,PR
1255071744,1255210495,US
1255210496,1255211007,DE
-1255211008,1255276543,US
+1255211008,1255265279,US
+1255265280,1255266303,SG
+1255266304,1255274047,US
+1255274048,1255274079,GB
+1255274080,1255274495,US
+1255274496,1255274751,SG
+1255274752,1255276543,US
1255276544,1255342079,CA
1255342080,1255369055,US
1255369056,1255369087,DE
@@ -25233,15 +30190,21 @@
1255669760,1255735295,CA
1255735296,1255746799,US
1255746800,1255746815,BB
-1255746816,1255753215,US
-1255753216,1255753471,GB
-1255753472,1255768063,US
+1255746816,1255750239,US
+1255750240,1255750271,AU
+1255750272,1255756799,US
+1255756800,1255756815,CA
+1255756816,1255768063,US
1255768064,1255768575,CA
1255768576,1255770367,US
1255770368,1255770623,CA
-1255770624,1255780351,US
+1255770624,1255776431,US
+1255776432,1255776439,LB
+1255776440,1255780351,US
1255780352,1255782399,CA
-1255782400,1255796743,US
+1255782400,1255792127,US
+1255792128,1255792383,IL
+1255792384,1255796743,US
1255796744,1255796751,GB
1255796752,1255972863,US
1255972864,1255981055,CA
@@ -25257,11 +30220,13 @@
1256079360,1256087551,KY
1256087552,1256098559,US
1256098560,1256098815,CA
-1256098816,1263264273,US
-1263264274,1263264289,PK
-1263264290,1263264305,US
-1263264306,1263264354,PK
-1263264355,1263266623,US
+1256098816,1263263999,US
+1263264000,1263264127,CA
+1263264128,1263264305,US
+1263264306,1263264321,PK
+1263264322,1263264511,US
+1263264512,1263264767,CA
+1263264768,1263266623,US
1263266624,1263266655,CA
1263266656,1263267327,US
1263267328,1263267583,CA
@@ -25273,21 +30238,37 @@
1263268276,1263268340,CA
1263268341,1263268343,US
1263268344,1263268351,CA
-1263268352,1263268607,US
-1263268608,1263268672,CA
-1263268673,1263268769,US
+1263268352,1263268769,US
1263268770,1263268863,CA
-1263268864,1263271423,US
+1263268864,1263270143,US
+1263270144,1263270159,CA
+1263270160,1263271423,US
1263271424,1263271679,CA
1263271680,1264717823,US
1264717824,1264718335,CA
-1264718336,1264736255,US
+1264718336,1264718591,US
+1264718592,1264718599,GB
+1264718600,1264718719,US
+1264718720,1264718847,CA
+1264718848,1264719103,US
+1264719104,1264719359,CA
+1264719360,1264736255,US
1264736256,1264737279,DO
-1264737280,1264762879,US
+1264737280,1264738175,US
+1264738176,1264738207,IL
+1264738208,1264762879,US
1264762880,1264766975,CA
1264766976,1264980735,US
1264980736,1264980743,CA
-1264980744,1266107759,US
+1264980744,1264982895,US
+1264982896,1264982903,AF
+1264982904,1264983031,US
+1264983032,1264983039,AU
+1264983040,1264984703,US
+1264984704,1264984711,CA
+1264984712,1264984799,US
+1264984800,1264984807,AF
+1264984808,1266107759,US
1266107760,1266107775,UM
1266107776,1266147327,US
1266147328,1266155519,CA
@@ -25658,7 +30639,11 @@
1275920080,1275920095,CA
1275920096,1279262719,US
1279262720,1279787007,CA
-1279787008,1279848447,US
+1279787008,1279828567,US
+1279828568,1279828575,CA
+1279828576,1279828615,US
+1279828616,1279828623,CA
+1279828624,1279848447,US
1279848448,1279852543,PR
1279852544,1279921919,US
1279921920,1279922047,IE
@@ -25671,13 +30656,13 @@
1279941000,1279943679,US
1279943680,1279943743,PR
1279943744,1279950847,US
-1279950848,1279951103,FI
+1279950848,1279951103,CA
1279951104,1279951135,US
1279951136,1279951151,CA
1279951152,1279951167,US
1279951168,1279951199,CA
-1279951200,1279951231,US
-1279951232,1279952919,CA
+1279951200,1279951223,US
+1279951224,1279952919,CA
1279952920,1279952927,VG
1279952928,1279952943,US
1279952944,1279953023,CA
@@ -25685,7 +30670,9 @@
1279953056,1279953087,US
1279953088,1279953671,CA
1279953672,1279953679,US
-1279953680,1279953951,CA
+1279953680,1279953759,CA
+1279953760,1279953791,GB
+1279953792,1279953951,CA
1279953952,1279953967,US
1279953968,1279954095,CA
1279954096,1279954119,US
@@ -25694,13 +30681,16 @@
1279954432,1279954527,CA
1279954528,1279954559,US
1279954560,1279954623,CA
-1279954624,1279954687,FI
-1279954688,1279954783,CA
+1279954624,1279954655,FI
+1279954656,1279954719,CA
+1279954720,1279954727,US
+1279954728,1279954783,CA
1279954784,1279954839,US
1279954840,1279954879,CA
1279954880,1279954911,US
1279954912,1279954943,CA
-1279954944,1279955103,US
+1279954944,1279955095,US
+1279955096,1279955103,BB
1279955104,1279955119,CA
1279955120,1279955151,US
1279955152,1279955159,AU
@@ -25723,13 +30713,21 @@
1279957120,1279957128,IN
1279957129,1279957135,US
1279957136,1279957151,IN
-1279957152,1279957231,US
+1279957152,1279957172,US
+1279957173,1279957173,IN
+1279957174,1279957174,US
+1279957175,1279957175,IN
+1279957176,1279957179,US
+1279957180,1279957180,IN
+1279957181,1279957184,US
+1279957185,1279957185,IN
+1279957186,1279957231,US
1279957232,1279957243,IN
-1279957244,1279957375,US
+1279957244,1279957252,US
+1279957253,1279957253,IN
+1279957254,1279957375,US
1279957376,1279957383,IN
-1279957384,1279957407,US
-1279957408,1279957427,IN
-1279957428,1279957431,US
+1279957384,1279957431,US
1279957432,1279957439,IN
1279957440,1279957631,US
1279957632,1279957651,IN
@@ -25737,7 +30735,9 @@
1279957656,1279957674,IN
1279957675,1279958020,US
1279958021,1279958030,IN
-1279958031,1279958399,US
+1279958031,1279958305,US
+1279958306,1279958306,IN
+1279958307,1279958399,US
1279958400,1279958495,IN
1279958496,1279959551,US
1279959552,1279959807,CA
@@ -25746,16 +30746,13 @@
1279960128,1279960143,US
1279960144,1279960159,CA
1279960160,1279960215,US
-1279960216,1279960319,CA
-1279960320,1279960335,US
-1279960336,1279960343,CA
+1279960216,1279960343,CA
1279960344,1279960415,US
-1279960416,1279960479,CA
-1279960480,1279960511,US
-1279960512,1279960527,CA
+1279960416,1279960527,CA
1279960528,1279960535,US
1279960536,1279960559,CA
-1279960560,1279962175,US
+1279960560,1279960567,MX
+1279960568,1279962175,US
1279962176,1279962207,CA
1279962208,1279962223,US
1279962224,1279962239,CA
@@ -25764,7 +30761,9 @@
1279962912,1279962927,CN
1279962928,1279962943,US
1279962944,1279962975,CN
-1279962976,1279963935,US
+1279962976,1279963135,US
+1279963136,1279963391,IN
+1279963392,1279963935,US
1279963936,1279963967,CA
1279963968,1279965183,US
1279965184,1279966207,CA
@@ -25772,16 +30771,17 @@
1279967232,1279971327,CA
1279971328,1279971583,US
1279971584,1279972095,CA
-1279972096,1279973951,US
+1279972096,1279973887,US
+1279973888,1279973951,IN
1279973952,1279973967,CA
-1279973968,1279974175,US
+1279973968,1279973983,US
+1279973984,1279974015,IN
+1279974016,1279974175,US
1279974176,1279974207,CN
1279974208,1279974271,CA
1279974272,1279974391,US
1279974392,1279974399,CA
-1279974400,1279974527,US
-1279974528,1279974655,CA
-1279974656,1279974783,US
+1279974400,1279974783,US
1279974784,1279974799,EG
1279974800,1279974815,CA
1279974816,1279975263,US
@@ -25818,7 +30818,9 @@
1279979008,1279979263,IN
1279979264,1279979327,US
1279979328,1279979391,IN
-1279979392,1279979559,US
+1279979392,1279979424,US
+1279979425,1279979425,IN
+1279979426,1279979559,US
1279979560,1279979575,CA
1279979576,1279979583,US
1279979584,1279980063,CA
@@ -25826,7 +30828,9 @@
1279980072,1279980079,BV
1279980080,1279980127,CA
1279980128,1279980135,US
-1279980136,1279981567,CA
+1279980136,1279980159,CA
+1279980160,1279980287,US
+1279980288,1279981567,CA
1279981568,1279981823,US
1279981824,1279981855,VG
1279981856,1279982778,US
@@ -25835,9 +30839,7 @@
1279983048,1279983072,IN
1279983073,1279983079,US
1279983080,1279983087,IN
-1279983088,1279983519,US
-1279983520,1279983532,IN
-1279983533,1279999999,US
+1279983088,1279999999,US
1280000000,1280032767,CA
1280032768,1280040959,US
1280040960,1280043527,CA
@@ -26053,11 +31055,12 @@
1296237312,1296237567,US
1296237568,1296237823,NL
1296237824,1296238079,ES
-1296238080,1296238591,IL
+1296238080,1296238591,DE
1296238592,1296239103,NL
1296239104,1296239231,FR
1296239232,1296239359,NL
-1296239360,1296240127,FR
+1296239360,1296239615,DE
+1296239616,1296240127,FR
1296240128,1296241151,BE
1296241152,1296241407,IT
1296241408,1296242175,NL
@@ -26088,7 +31091,9 @@
1296248384,1296248447,IT
1296248448,1296248575,US
1296248576,1296248703,IE
-1296248704,1296249855,FR
+1296248704,1296248959,FR
+1296248960,1296249024,DE
+1296249025,1296249855,FR
1296249856,1296249887,US
1296249888,1296249951,FR
1296249952,1296250015,DE
@@ -26103,7 +31108,8 @@
1296250272,1296250303,DE
1296250304,1296250335,FR
1296250336,1296250367,ES
-1296250368,1296251135,FR
+1296250368,1296251103,FR
+1296251104,1296251135,ES
1296251136,1296251167,GB
1296251168,1296251199,HR
1296251200,1296251295,DE
@@ -26111,7 +31117,16 @@
1296251328,1296251359,IE
1296251360,1296251391,DE
1296251392,1296251775,NL
-1296251776,1296252095,FR
+1296251776,1296251903,DE
+1296251904,1296251967,FR
+1296251968,1296252015,NL
+1296252016,1296252031,US
+1296252032,1296252039,FR
+1296252040,1296252055,DE
+1296252056,1296252063,BE
+1296252064,1296252079,IT
+1296252080,1296252087,IE
+1296252088,1296252095,FR
1296252096,1296252111,US
1296252112,1296252127,GB
1296252128,1296252143,ES
@@ -26127,12 +31142,13 @@
1296252304,1296252319,IL
1296252320,1296252367,FR
1296252368,1296252383,DE
-1296252384,1296252415,IE
+1296252384,1296252399,FR
+1296252400,1296252415,IE
1296252416,1296252671,FR
1296252672,1296252679,GB
1296252680,1296252687,FR
1296252688,1296252695,NL
-1296252696,1296252703,IE
+1296252696,1296252703,FR
1296252704,1296252711,DE
1296252712,1296252719,FR
1296252720,1296252727,BE
@@ -26147,7 +31163,7 @@
1296252848,1296252855,GB
1296252856,1296252871,IE
1296252872,1296252879,BE
-1296252880,1296252887,DE
+1296252880,1296252887,FR
1296252888,1296252895,IE
1296252896,1296252911,BE
1296252912,1296252919,GB
@@ -26161,12 +31177,12 @@
1296258048,1296258303,TW
1296258304,1296259071,NL
1296259072,1296259583,US
-1296259584,1296259839,FR
+1296259584,1296259839,DE
1296259840,1296260351,NL
1296260352,1296260607,US
-1296260608,1296260863,DE
-1296260864,1296262143,FR
-1296262144,1296262655,US
+1296260608,1296262143,DE
+1296262144,1296262399,FR
+1296262400,1296262655,US
1296262656,1296262911,CA
1296262912,1296263935,US
1296263936,1296263943,FR
@@ -26186,8 +31202,8 @@
1296264240,1296264271,FR
1296264272,1296264303,US
1296264304,1296264319,CA
-1296264320,1296264399,US
-1296264400,1296264447,FR
+1296264320,1296264383,US
+1296264384,1296264447,FR
1296264448,1296264543,US
1296264544,1296264639,CA
1296264640,1296264671,US
@@ -26198,7 +31214,9 @@
1296265152,1296265215,FR
1296265216,1296265727,US
1296265728,1296265983,FR
-1296265984,1296267263,US
+1296265984,1296266751,US
+1296266752,1296267007,FR
+1296267008,1296267263,US
1296267264,1296267519,FR
1296267520,1296267775,CA
1296267776,1296268031,US
@@ -26215,17 +31233,17 @@
1296465920,1296466239,NG
1296466240,1296466303,NO
1296466304,1296466335,BF
-1296466336,1296466367,NO
-1296466368,1296466383,AO
-1296466384,1296466399,NO
+1296466336,1296466399,NO
1296466400,1296466415,AO
1296466416,1296466431,NG
-1296466432,1296466439,TZ
-1296466440,1296466559,NO
-1296466560,1296466583,NG
-1296466584,1296466607,NO
-1296466608,1296466623,NG
-1296466624,1296466639,NO
+1296466432,1296466447,TZ
+1296466448,1296466495,NO
+1296466496,1296466543,GN
+1296466544,1296466559,NO
+1296466560,1296466575,NG
+1296466576,1296466623,NO
+1296466624,1296466631,MR
+1296466632,1296466639,NO
1296466640,1296466655,NG
1296466656,1296466671,BJ
1296466672,1296466687,NO
@@ -26235,18 +31253,15 @@
1296466760,1296466767,SL
1296466768,1296466775,BF
1296466776,1296466783,GN
-1296466784,1296467711,NO
-1296467712,1296467967,NG
-1296467968,1296468479,NO
+1296466784,1296468479,NO
1296468480,1296469247,NG
-1296469248,1296472351,NO
-1296472352,1296472383,NG
+1296469248,1296472383,NO
1296472384,1296472415,BI
1296472416,1296473087,NO
1296473088,1296474623,LT
1296474624,1296476159,US
-1296476160,1296480255,LT
-1296480256,1296482303,NO
+1296476160,1296479743,LT
+1296479744,1296482303,NO
1296482304,1296498687,LT
1296498688,1296531455,BG
1296531456,1296564223,MT
@@ -26273,7 +31288,9 @@
1296606272,1296606335,DE
1296606336,1296606367,AT
1296606368,1296606399,CH
-1296606400,1296607231,AT
+1296606400,1296607103,AT
+1296607104,1296607135,CH
+1296607136,1296607231,AT
1296607232,1296607743,CH
1296607744,1296607999,NL
1296608000,1296609023,CH
@@ -26283,7 +31300,7 @@
1296613376,1296615423,IT
1296615424,1296617471,GB
1296617472,1296619519,ES
-1296619520,1296621567,IT
+1296619520,1296621567,DE
1296621568,1296623615,SE
1296623616,1296625663,BE
1296625664,1296629759,RU
@@ -26337,9 +31354,7 @@
1296678152,1296678159,A2
1296678160,1296678215,NG
1296678216,1296678223,A2
-1296678224,1296678319,NG
-1296678320,1296678327,A2
-1296678328,1296678351,NG
+1296678224,1296678351,NG
1296678352,1296678367,A2
1296678368,1296678415,NG
1296678416,1296678431,A2
@@ -26352,7 +31367,10 @@
1296678792,1296678831,NG
1296678832,1296678839,A2
1296678840,1296678911,NG
-1296678912,1296680959,SA
+1296678912,1296680191,SA
+1296680192,1296680447,AE
+1296680448,1296680703,KW
+1296680704,1296680959,SA
1296680960,1296683007,ES
1296683008,1296685055,IE
1296685056,1296687103,TR
@@ -26360,7 +31378,9 @@
1296689152,1296691199,RU
1296691200,1296693247,CH
1296693248,1296695295,DE
-1296695296,1296697343,CH
+1296695296,1296696831,CH
+1296696832,1296697087,DE
+1296697088,1296697343,CH
1296697344,1296699391,RU
1296699392,1296701439,IT
1296701440,1296703487,RU
@@ -26392,12 +31412,9 @@
1296748544,1296750591,FR
1296750592,1296752639,NO
1296752640,1296754687,BA
-1296754688,1296754911,DE
-1296754912,1296754927,AT
-1296754928,1296756735,DE
+1296754688,1296756735,DE
1296756736,1296758783,FR
1296758784,1296760831,RS
-1296760832,1296762879,GB
1296762880,1296764927,RU
1296764928,1296769023,AT
1296769024,1296771071,TR
@@ -26411,7 +31428,7 @@
1296785408,1296787455,IE
1296787456,1296789503,GB
1296789504,1296791551,CH
-1296791552,1296793599,NL
+1296791552,1296793599,GB
1296793600,1296795647,RU
1296795648,1296795903,NL
1296795904,1296797695,GB
@@ -26439,15 +31456,15 @@
1296957440,1296973823,BG
1296973824,1296990207,CZ
1296990208,1297006591,BG
-1297006592,1297022207,BA
-1297022208,1297022463,MD
-1297022464,1297022975,BA
-1297022976,1297039359,LT
+1297006592,1297022975,BA
+1297022976,1297026815,LT
+1297026816,1297026847,FR
+1297026848,1297026879,LT
+1297026880,1297026888,CY
+1297026889,1297039359,LT
1297039360,1297055743,TR
1297055744,1297072127,RU
-1297072128,1297074743,PL
-1297074744,1297074751,SE
-1297074752,1297083375,PL
+1297072128,1297083375,PL
1297083376,1297083391,SE
1297083392,1297088511,PL
1297088512,1297121279,AT
@@ -26510,7 +31527,9 @@
1297867584,1297867647,SC
1297867648,1297867687,RU
1297867688,1297867695,CY
-1297867696,1297867855,RU
+1297867696,1297867743,RU
+1297867744,1297867775,AQ
+1297867776,1297867855,RU
1297867856,1297867871,MK
1297867872,1297867879,ES
1297867880,1297868799,RU
@@ -26595,7 +31614,6 @@
1298126848,1298127615,SA
1298127616,1298128127,IR
1298128128,1298128895,SA
-1298128896,1298130943,FR
1298130944,1298132991,BG
1298132992,1298135039,FI
1298135040,1298137087,NL
@@ -26619,8 +31637,8 @@
1298956288,1298972671,GB
1298972672,1298989055,RU
1298989056,1299005439,UA
-1299005440,1299005695,RU
-1299005696,1299005951,BE
+1299005440,1299005695,BE
+1299005696,1299005951,RU
1299005952,1299008511,NL
1299008512,1299009791,BE
1299009792,1299010047,NL
@@ -26640,15 +31658,15 @@
1299016960,1299017215,NL
1299017216,1299017727,RU
1299017728,1299021823,BE
-1299021824,1299024559,CH
+1299021824,1299023879,CH
+1299023880,1299023887,DE
+1299023888,1299024559,CH
1299024560,1299024575,DE
1299024576,1299026111,CH
1299026112,1299026127,ES
1299026128,1299026251,CH
1299026252,1299026263,PT
-1299026264,1299032063,CH
-1299032064,1299032319,NL
-1299032320,1299038207,CH
+1299026264,1299038207,CH
1299038208,1299054591,FI
1299054592,1299070975,SE
1299070976,1299075071,SA
@@ -26673,7 +31691,13 @@
1305477120,1305739263,ES
1305739264,1306001407,DK
1306001408,1306132479,RU
-1306132480,1306263551,SE
+1306132480,1306198015,SE
+1306198016,1306206207,LV
+1306206208,1306214399,HR
+1306214400,1306222591,LT
+1306222592,1306230783,HR
+1306230784,1306238975,LT
+1306238976,1306263551,SE
1306263552,1306271743,KE
1306271744,1306279935,RU
1306279936,1306286079,IT
@@ -26686,7 +31710,9 @@
1306311144,1306311151,CH
1306311152,1306312703,RU
1306312704,1306320895,UZ
-1306320896,1306329087,DE
+1306320896,1306323199,DE
+1306323200,1306323263,NL
+1306323264,1306329087,DE
1306329088,1306337279,BA
1306337280,1306345471,HU
1306345472,1306353663,LT
@@ -26831,7 +31857,7 @@
1307701248,1307709439,RU
1307709440,1307713535,AL
1307713536,1307717631,IT
-1307717632,1307721727,DK
+1307717632,1307721727,GE
1307721728,1307725823,AT
1307725824,1307729919,CZ
1307729920,1307734015,RU
@@ -26846,15 +31872,14 @@
1307756288,1307756431,GB
1307756432,1307756447,FR
1307756448,1307756543,GB
-1307756544,1307756847,FR
-1307756848,1307756863,US
+1307756544,1307756863,FR
1307756864,1307756903,GB
1307756904,1307756911,US
1307756912,1307757063,GB
1307757064,1307757071,US
1307757072,1307757183,GB
-1307757184,1307757247,US
-1307757248,1307758591,GB
+1307757184,1307757279,US
+1307757280,1307758591,GB
1307758592,1307762687,SM
1307762688,1307766783,PL
1307766784,1307770879,GB
@@ -26867,11 +31892,21 @@
1307803648,1307807743,DK
1307807744,1307811839,SE
1307811840,1307815935,NL
-1307815936,1307819791,BE
-1307819792,1307820031,EU
+1307815936,1307816191,EU
+1307816192,1307816447,GB
+1307816448,1307818239,EU
+1307818240,1307818495,GB
+1307818496,1307818751,DE
+1307818752,1307819007,ES
+1307819008,1307819263,DE
+1307819264,1307819519,NL
+1307819520,1307819775,BE
+1307819776,1307820031,IT
1307820032,1307824127,ES
1307824128,1307828223,HU
-1307828224,1307832319,NL
+1307828224,1307830128,NL
+1307830129,1307830129,SE
+1307830130,1307832319,NL
1307832320,1307836415,RU
1307836416,1307840511,SE
1307840512,1307844607,RU
@@ -26922,19 +31957,7 @@
1307907328,1307910143,CH
1307910144,1307914239,DE
1307914240,1307918335,NL
-1307918336,1307919439,GB
-1307919440,1307919447,ES
-1307919448,1307919503,GB
-1307919504,1307919511,ES
-1307919512,1307919699,GB
-1307919700,1307919703,ZA
-1307919704,1307920575,GB
-1307920576,1307920583,AU
-1307920584,1307921431,GB
-1307921432,1307921439,BD
-1307921440,1307921471,GB
-1307921472,1307921535,ES
-1307921536,1307922431,GB
+1307918336,1307922431,GB
1307922432,1307926527,NL
1307926528,1307930623,KZ
1307930624,1307934719,RU
@@ -26950,7 +31973,12 @@
1307979776,1307981823,ZW
1307981824,1307982847,ZA
1307982848,1307983359,ZW
-1307983360,1307983871,GB
+1307983360,1307983423,ZA
+1307983424,1307983487,BW
+1307983488,1307983551,ZM
+1307983552,1307983583,MZ
+1307983584,1307983615,ZA
+1307983616,1307983871,GB
1307983872,1307987967,LB
1307987968,1307992063,FR
1307992064,1307996159,RU
@@ -26966,13 +31994,16 @@
1308033280,1308033535,FR
1308033536,1308033791,DE
1308033792,1308034047,IT
-1308034048,1308034559,DE
+1308034048,1308034559,GB
1308034560,1308034815,CZ
1308034816,1308035327,DE
1308035328,1308035583,GB
1308035584,1308035839,AE
1308035840,1308036095,GB
-1308036096,1308037119,DE
+1308036096,1308036351,SE
+1308036352,1308036607,BE
+1308036608,1308036863,ES
+1308036864,1308037119,FR
1308037120,1308041215,UA
1308041216,1308049407,RU
1308049408,1308053503,DK
@@ -26981,11 +32012,11 @@
1308061696,1308069887,RU
1308069888,1308073983,NO
1308073984,1308078079,RU
-1308078080,1308078263,NL
-1308078264,1308078267,SE
-1308078268,1308078879,NL
+1308078080,1308078879,NL
1308078880,1308078911,FR
-1308078912,1308080127,NL
+1308078912,1308079807,NL
+1308079808,1308079823,SC
+1308079824,1308080127,NL
1308080128,1308082175,RU
1308082176,1308084223,GB
1308084224,1308086271,RS
@@ -26993,7 +32024,6 @@
1308088320,1308090367,UA
1308090368,1308092415,SK
1308092416,1308094463,RU
-1308094464,1308096511,KW
1308096512,1308098559,RS
1308098560,1308360703,NL
1308360704,1308622847,PL
@@ -27005,19 +32035,10 @@
1309933568,1310195711,BE
1310195712,1310197759,RU
1310197760,1310199807,CZ
-1310199808,1310201855,IE
+1310199808,1310201599,IE
+1310201600,1310201855,GB
1310201856,1310203903,RU
-1310203904,1310204191,FR
-1310204192,1310204255,BE
-1310204256,1310204287,FR
-1310204288,1310204321,BE
-1310204322,1310204415,FR
-1310204416,1310204671,BE
-1310204672,1310204675,FR
-1310204676,1310204687,BE
-1310204688,1310204707,FR
-1310204708,1310204715,BE
-1310204716,1310205951,FR
+1310203904,1310205951,FR
1310205952,1310207999,RU
1310208000,1310210047,MD
1310210048,1310212095,RU
@@ -27025,7 +32046,9 @@
1310214144,1310216191,UA
1310216192,1310218239,IT
1310218240,1310220287,NO
-1310220288,1310222335,NL
+1310220288,1310221311,NL
+1310221312,1310221567,MK
+1310221568,1310222335,NL
1310222336,1310224383,RS
1310224384,1310226431,GB
1310226432,1310228479,BE
@@ -27210,7 +32233,7 @@
1310257152,1310259199,FR
1310259200,1310261247,GB
1310261248,1310277631,UA
-1310277632,1310310399,RU
+1310294016,1310310399,RU
1310310400,1310326783,GB
1310326784,1310343167,NO
1310343168,1310359551,IT
@@ -27268,22 +32291,28 @@
1311256576,1311258623,FR
1311258624,1311262719,GB
1311262720,1311262975,FR
-1311262976,1311263247,CH
-1311263248,1311263263,FR
-1311263264,1311263359,CH
+1311262976,1311263359,CH
1311263360,1311263375,FR
1311263376,1311263407,CH
1311263408,1311263423,BE
1311263424,1311263615,CH
-1311263616,1311264767,FR
+1311263616,1311263679,FR
+1311263680,1311263871,CH
+1311263872,1311263999,FR
+1311264000,1311264095,CH
+1311264096,1311264767,FR
1311264768,1311266815,RU
1311266816,1311268863,FR
1311268864,1311270911,BE
1311270912,1311272959,RU
1311272960,1311275007,GB
-1311275008,1311277055,FR
+1311275008,1311276671,FR
+1311276672,1311276687,RU
+1311276688,1311277055,FR
1311277056,1311279103,IT
-1311279104,1311281151,BG
+1311279104,1311280127,BG
+1311280128,1311280383,MK
+1311280384,1311281151,BG
1311281152,1311285247,GB
1311285248,1311289343,IT
1311289344,1311291391,LB
@@ -27296,7 +32325,9 @@
1311301632,1311303679,TR
1311303680,1311307775,GB
1311307776,1311309823,IS
-1311309824,1311311871,GB
+1311309824,1311311823,GB
+1311311824,1311311824,JE
+1311311825,1311311871,GB
1311311872,1311315967,CZ
1311315968,1311316423,PL
1311316424,1311316439,GB
@@ -27340,10 +32371,23 @@
1311367808,1311367839,US
1311367840,1311367871,DK
1311367872,1311367887,LR
-1311367888,1311367895,A2
-1311367896,1311367935,DK
+1311367888,1311367895,DE
+1311367896,1311367903,NG
+1311367904,1311367927,A2
+1311367928,1311367935,DE
1311367936,1311367967,BJ
-1311367968,1311368191,A2
+1311367968,1311367999,ET
+1311368000,1311368015,A2
+1311368016,1311368023,DE
+1311368024,1311368031,A2
+1311368032,1311368063,PG
+1311368064,1311368071,A2
+1311368072,1311368103,NG
+1311368104,1311368111,AF
+1311368112,1311368143,NG
+1311368144,1311368159,ET
+1311368160,1311368175,NG
+1311368176,1311368191,A2
1311368192,1311368319,BD
1311368320,1311368447,CF
1311368448,1311368575,TZ
@@ -27359,9 +32403,19 @@
1311374352,1311375359,FR
1311375360,1311506431,DE
1311506432,1311637503,CZ
-1311637504,1311707655,DE
+1311637504,1311676023,DE
+1311676024,1311676031,IT
+1311676032,1311707655,DE
1311707656,1311707663,NL
-1311707664,1312292863,DE
+1311707664,1311756823,DE
+1311756824,1311756831,ES
+1311756832,1311757439,DE
+1311757440,1311757447,ES
+1311757448,1311757463,DE
+1311757464,1311757471,ES
+1311757472,1311767311,DE
+1311767312,1311767319,IT
+1311767320,1312292863,DE
1312292864,1312817151,LT
1312817152,1313865727,SE
1313865728,1313931263,CZ
@@ -27442,9 +32496,7 @@
1315771936,1315771951,NA
1315771952,1315771959,UA
1315771960,1315771967,NA
-1315771968,1315771975,UA
-1315771976,1315771983,NA
-1315771984,1315772031,UA
+1315771968,1315772031,UA
1315772032,1315772039,NA
1315772040,1315772167,UA
1315772168,1315772175,NA
@@ -27512,9 +32564,11 @@
1315774264,1315774423,UA
1315774424,1315774431,NA
1315774432,1315774463,UA
-1315774464,1315782655,RU
+1315774464,1315778559,RU
1315782656,1315786751,AM
-1315786752,1315790847,FR
+1315786752,1315790592,FR
+1315790593,1315790593,IT
+1315790594,1315790847,FR
1315790848,1315794943,RS
1315794944,1315803135,RU
1315803136,1315807231,KZ
@@ -27544,22 +32598,7 @@
1315885056,1315889151,CZ
1315889152,1315893247,DE
1315893248,1315897343,RU
-1315897344,1315897855,IR
-1315897856,1315897863,AE
-1315897864,1315897879,IR
-1315897880,1315897887,AE
-1315897888,1315897951,IR
-1315897952,1315897991,AE
-1315897992,1315897999,IR
-1315898000,1315898015,AE
-1315898016,1315898031,IR
-1315898032,1315898111,AE
-1315898112,1315900671,IR
-1315900672,1315900735,AE
-1315900736,1315900799,IR
-1315900800,1315900927,AE
-1315900928,1315901223,IR
-1315901224,1315901439,AE
+1315897344,1315901439,IR
1315901440,1315905535,UA
1315905536,1315907583,BA
1315907584,1315908095,SI
@@ -27569,7 +32608,9 @@
1315917824,1315921919,RU
1315921920,1315926015,TR
1315926016,1315930111,CZ
-1315930112,1315934207,DE
+1315930112,1315930623,DE
+1315930624,1315930879,LB
+1315930880,1315934207,DE
1315934208,1315938303,RU
1315938304,1315942399,DK
1315942400,1315946495,UA
@@ -27581,7 +32622,9 @@
1317011456,1317044223,BG
1317044224,1317076991,CZ
1317076992,1317109759,BE
-1317109760,1317113855,GB
+1317109760,1317113103,GB
+1317113104,1317113119,IE
+1317113120,1317113855,GB
1317113856,1317114111,US
1317114112,1317115135,GB
1317115136,1317115391,IE
@@ -27595,11 +32638,15 @@
1317129280,1317129343,CA
1317129344,1317129471,GB
1317129472,1317129727,IT
-1317129728,1317137663,GB
+1317129728,1317135615,GB
+1317135616,1317135871,DE
+1317135872,1317137663,GB
1317137664,1317137919,SE
1317137920,1317140095,GB
1317140096,1317140223,US
-1317140224,1317142143,GB
+1317140224,1317140559,GB
+1317140560,1317140575,FR
+1317140576,1317142143,GB
1317142144,1317142271,CA
1317142272,1317142527,GB
1317142528,1317175295,PT
@@ -27632,7 +32679,9 @@
1317642864,1317642879,GB
1317642880,1317642975,IE
1317642976,1317642991,GB
-1317642992,1317645407,IE
+1317642992,1317643023,IE
+1317643024,1317643039,GB
+1317643040,1317645407,IE
1317645408,1317645823,GB
1317645824,1317646895,IE
1317646896,1317646911,GB
@@ -27649,10 +32698,9 @@
1317650096,1317650135,IE
1317650136,1317650143,GB
1317650144,1317650431,IE
-1317650432,1317666815,RU
1317666816,1317666823,IQ
1317666824,1317666831,CD
-1317666832,1317666839,NG
+1317666832,1317666839,A2
1317666840,1317666855,GH
1317666856,1317666863,A2
1317666864,1317666871,GH
@@ -27669,7 +32717,7 @@
1317667048,1317667055,A2
1317667056,1317667063,LR
1317667064,1317667103,A2
-1317667104,1317667111,NG
+1317667104,1317667111,UG
1317667112,1317667135,A2
1317667136,1317667143,AO
1317667144,1317667151,A2
@@ -27678,14 +32726,14 @@
1317667168,1317667175,NG
1317667176,1317667191,A2
1317667192,1317667231,NG
-1317667232,1317667239,GH
+1317667232,1317667239,A2
1317667240,1317667247,NG
1317667248,1317667263,A2
1317667264,1317667271,GB
-1317667272,1317667279,A2
-1317667280,1317667295,NG
-1317667296,1317667303,A2
-1317667304,1317667335,NG
+1317667272,1317667287,A2
+1317667288,1317667295,NG
+1317667296,1317667311,A2
+1317667312,1317667335,NG
1317667336,1317667343,A2
1317667344,1317667351,NG
1317667352,1317667359,AO
@@ -27711,11 +32759,13 @@
1317667760,1317667767,FR
1317667768,1317667775,ZA
1317667776,1317667783,US
-1317667784,1317667823,NG
-1317667824,1317668095,A2
+1317667784,1317667791,AO
+1317667792,1317667799,NG
+1317667800,1317667807,A2
+1317667808,1317667815,NG
+1317667816,1317668095,A2
1317668096,1317668103,GH
-1317668104,1317668111,ZM
-1317668112,1317668143,A2
+1317668104,1317668143,A2
1317668144,1317668151,AO
1317668152,1317668167,NG
1317668168,1317668183,A2
@@ -27723,17 +32773,14 @@
1317668192,1317668199,A2
1317668200,1317668207,BW
1317668208,1317668215,LR
-1317668216,1317668223,CM
+1317668216,1317668223,A2
1317668224,1317668239,NG
-1317668240,1317668247,A2
-1317668248,1317668255,NG
-1317668256,1317668271,A2
+1317668240,1317668271,A2
1317668272,1317668279,SL
1317668280,1317668303,A2
-1317668304,1317668311,NG
+1317668304,1317668311,UG
1317668312,1317668319,IQ
-1317668320,1317668343,A2
-1317668344,1317668351,AO
+1317668320,1317668351,A2
1317668352,1317668359,NG
1317668360,1317668367,SL
1317668368,1317668391,A2
@@ -27746,7 +32793,7 @@
1317668464,1317668471,AO
1317668472,1317668479,NG
1317668480,1317668487,A2
-1317668488,1317668495,NG
+1317668488,1317668495,UG
1317668496,1317668503,GH
1317668504,1317668511,CD
1317668512,1317668519,IQ
@@ -27758,9 +32805,9 @@
1317668560,1317668575,NG
1317668576,1317668583,A2
1317668584,1317668591,LR
-1317668592,1317668599,NG
+1317668592,1317668599,UG
1317668600,1317668615,A2
-1317668616,1317668623,NG
+1317668616,1317668623,UG
1317668624,1317668631,IQ
1317668632,1317668639,A2
1317668640,1317668655,NG
@@ -27770,27 +32817,22 @@
1317668728,1317668735,NG
1317668736,1317668767,A2
1317668768,1317668775,LR
-1317668776,1317668791,NG
+1317668776,1317668783,A2
+1317668784,1317668791,NG
1317668792,1317668807,A2
1317668808,1317668815,NG
-1317668816,1317668831,A2
-1317668832,1317668839,NG
-1317668840,1317668847,A2
+1317668816,1317668847,A2
1317668848,1317668855,NG
1317668856,1317668863,A2
1317668864,1317668871,LR
-1317668872,1317668911,A2
-1317668912,1317668919,NG
-1317668920,1317668935,A2
-1317668936,1317668943,NG
-1317668944,1317668959,A2
-1317668960,1317668983,NG
-1317668984,1317668999,A2
+1317668872,1317668959,A2
+1317668960,1317668991,UG
+1317668992,1317668999,A2
1317669000,1317669007,CD
1317669008,1317669015,NG
1317669016,1317669055,A2
-1317669056,1317669079,NG
-1317669080,1317669095,A2
+1317669056,1317669063,NG
+1317669064,1317669095,A2
1317669096,1317669103,NG
1317669104,1317669111,A2
1317669112,1317669119,NG
@@ -27803,11 +32845,11 @@
1317669944,1317669959,NG
1317669960,1317669983,A2
1317669984,1317669991,LR
-1317669992,1317670015,NG
-1317670016,1317670063,A2
+1317669992,1317669999,NG
+1317670000,1317670063,A2
1317670064,1317670103,NG
-1317670104,1317670111,A2
-1317670112,1317670143,NG
+1317670104,1317670135,A2
+1317670136,1317670143,NG
1317670144,1317670175,SL
1317670176,1317670215,A2
1317670216,1317670223,NG
@@ -27816,9 +32858,7 @@
1317670240,1317670247,NG
1317670248,1317670255,A2
1317670256,1317670263,NG
-1317670264,1317670423,A2
-1317670424,1317670431,NG
-1317670432,1317670447,A2
+1317670264,1317670447,A2
1317670448,1317670455,IQ
1317670456,1317670463,A2
1317670464,1317670471,NG
@@ -27827,12 +32867,15 @@
1317670512,1317670519,CI
1317670520,1317670543,NG
1317670544,1317670551,IQ
-1317670552,1317670567,NG
+1317670552,1317670559,UG
+1317670560,1317670567,NG
1317670568,1317670575,A2
1317670576,1317670583,NG
1317670584,1317670591,GH
1317670592,1317670607,A2
-1317670608,1317670639,NG
+1317670608,1317670615,NG
+1317670616,1317670631,UG
+1317670632,1317670639,NG
1317670640,1317670647,A2
1317670648,1317670655,NG
1317670656,1317670663,AO
@@ -27842,13 +32885,12 @@
1317670712,1317670719,GH
1317670720,1317670727,A2
1317670728,1317670735,GH
-1317670736,1317670759,A2
-1317670760,1317670767,NG
+1317670736,1317670767,A2
1317670768,1317670775,GH
1317670776,1317670783,A2
1317670784,1317670791,GH
-1317670792,1317670807,NG
-1317670808,1317670815,A2
+1317670792,1317670799,NG
+1317670800,1317670815,A2
1317670816,1317670823,NG
1317670824,1317670847,A2
1317670848,1317670855,NG
@@ -27859,15 +32901,13 @@
1317670897,1317670911,NG
1317670912,1317671175,A2
1317671176,1317671191,NG
-1317671192,1317671231,A2
-1317671232,1317671239,NG
+1317671192,1317671239,A2
1317671240,1317671247,CI
-1317671248,1317671255,NG
+1317671248,1317671255,A2
1317671256,1317671263,CI
-1317671264,1317671271,NG
-1317671272,1317671279,A2
-1317671280,1317671311,NG
-1317671312,1317671319,A2
+1317671264,1317671279,A2
+1317671280,1317671303,NG
+1317671304,1317671319,A2
1317671320,1317671327,NG
1317671328,1317671335,A2
1317671336,1317671343,BW
@@ -27879,9 +32919,9 @@
1317671392,1317671399,NG
1317671400,1317671407,IQ
1317671408,1317671415,UG
-1317671416,1317671423,NG
-1317671424,1317671439,A2
-1317671440,1317671487,NG
+1317671416,1317671439,A2
+1317671440,1317671447,ZW
+1317671448,1317671487,NG
1317671488,1317671527,A2
1317671528,1317671543,NG
1317671544,1317671551,GH
@@ -27891,10 +32931,11 @@
1317671592,1317671607,A2
1317671608,1317671615,GH
1317671616,1317671647,A2
-1317671648,1317671679,NG
+1317671648,1317671671,NG
+1317671672,1317671679,AO
1317671680,1317671687,LR
-1317671688,1317671711,A2
-1317671712,1317671727,NG
+1317671688,1317671719,A2
+1317671720,1317671727,NG
1317671728,1317671759,A2
1317671760,1317671767,IQ
1317671768,1317671783,A2
@@ -27902,16 +32943,18 @@
1317671808,1317671823,CI
1317671824,1317671831,NG
1317671832,1317671847,A2
-1317671848,1317671863,NG
+1317671848,1317671855,NG
+1317671856,1317671863,UG
1317671864,1317671887,A2
1317671888,1317671895,NG
-1317671896,1317671903,CM
+1317671896,1317671903,A2
1317671904,1317671911,NG
1317671912,1317671919,AO
1317671920,1317671927,NG
1317671928,1317671935,A2
1317671936,1317672447,GA
-1317672448,1317672463,A2
+1317672448,1317672455,A2
+1317672456,1317672463,GA
1317672464,1317672471,NG
1317672472,1317672479,A2
1317672480,1317672487,ZM
@@ -27920,32 +32963,30 @@
1317672544,1317672551,CD
1317672552,1317672583,A2
1317672584,1317672591,CD
-1317672592,1317672599,NG
-1317672600,1317672615,A2
+1317672592,1317672615,A2
1317672616,1317672623,NG
1317672624,1317672655,A2
1317672656,1317672663,CD
-1317672664,1317672679,NG
+1317672664,1317672671,A2
+1317672672,1317672679,NG
1317672680,1317672727,A2
-1317672728,1317672735,NG
+1317672728,1317672735,UG
1317672736,1317672743,LR
1317672744,1317672759,A2
1317672760,1317672767,NG
-1317672768,1317672775,A2
-1317672776,1317672783,NG
-1317672784,1317672815,A2
+1317672768,1317672815,A2
1317672816,1317672823,BW
1317672824,1317672831,NG
1317672832,1317672839,A2
1317672840,1317672847,NG
1317672848,1317672863,A2
1317672864,1317672871,NG
-1317672872,1317672879,A2
-1317672880,1317672895,NG
-1317672896,1317672903,A2
+1317672872,1317672903,A2
1317672904,1317672919,CI
1317672920,1317672927,GH
-1317672928,1317672951,NG
+1317672928,1317672935,A2
+1317672936,1317672943,NG
+1317672944,1317672951,UG
1317672952,1317672959,A2
1317672960,1317673247,NG
1317673248,1317673263,A2
@@ -27955,32 +32996,32 @@
1317673288,1317673335,A2
1317673336,1317673343,GH
1317673344,1317673359,A2
-1317673360,1317673375,NG
+1317673360,1317673367,NG
+1317673368,1317673375,A2
1317673376,1317673383,AO
1317673384,1317673391,NG
1317673392,1317673399,A2
1317673400,1317673407,NG
1317673408,1317673423,A2
1317673424,1317673431,NG
-1317673432,1317673447,A2
-1317673448,1317673463,AO
+1317673432,1317673455,A2
+1317673456,1317673463,AO
1317673464,1317673471,A2
1317673472,1317673479,NG
1317673480,1317673495,A2
1317673496,1317673527,NG
1317673528,1317673535,A2
-1317673536,1317673551,NG
+1317673536,1317673551,ZW
1317673552,1317673559,A2
1317673560,1317673575,NG
1317673576,1317673583,CD
-1317673584,1317673591,A2
-1317673592,1317673615,NG
+1317673584,1317673607,A2
+1317673608,1317673615,NG
1317673616,1317673623,A2
1317673624,1317673631,NG
1317673632,1317673639,A2
1317673640,1317673647,AO
-1317673648,1317673671,A2
-1317673672,1317673679,CM
+1317673648,1317673679,A2
1317673680,1317673687,IQ
1317673688,1317673695,A2
1317673696,1317673703,NG
@@ -28003,10 +33044,7 @@
1317673952,1317673967,NG
1317673968,1317673975,A2
1317673976,1317674239,NG
-1317674240,1317674247,A2
-1317674248,1317674255,NG
-1317674256,1317674263,CM
-1317674264,1317674271,A2
+1317674240,1317674271,A2
1317674272,1317674279,NG
1317674280,1317674287,A2
1317674288,1317674295,GH
@@ -28018,27 +33056,27 @@
1317674384,1317674399,NG
1317674400,1317674415,A2
1317674416,1317674423,AO
-1317674424,1317674431,NG
+1317674424,1317674431,UG
1317674432,1317674439,A2
1317674440,1317674440,AO
1317674441,1317674447,A2
1317674448,1317674455,AO
1317674456,1317674471,NG
1317674472,1317674487,A2
-1317674488,1317674495,NG
+1317674488,1317674495,UG
1317674496,1317674527,A2
1317674528,1317674535,NG
1317674536,1317674543,IQ
-1317674544,1317674575,NG
-1317674576,1317674607,A2
+1317674544,1317674567,NG
+1317674568,1317674607,A2
1317674608,1317674615,NG
1317674616,1317674623,IQ
1317674624,1317674631,NG
1317674632,1317674639,A2
1317674640,1317674647,NG
1317674648,1317674655,A2
-1317674656,1317674679,NG
-1317674680,1317674687,A2
+1317674656,1317674671,NG
+1317674672,1317674687,A2
1317674688,1317674703,NG
1317674704,1317674711,A2
1317674712,1317674735,NG
@@ -28046,12 +33084,14 @@
1317674744,1317674751,IQ
1317674752,1317674759,NG
1317674760,1317674767,A2
-1317674768,1317674791,NG
+1317674768,1317674775,NG
+1317674776,1317674783,A2
+1317674784,1317674791,NG
1317674792,1317674799,A2
1317674800,1317674807,NG
1317674808,1317674823,A2
-1317674824,1317674839,NG
-1317674840,1317674847,A2
+1317674824,1317674831,NG
+1317674832,1317674847,A2
1317674848,1317674863,NG
1317674864,1317674879,A2
1317674880,1317674887,NG
@@ -28063,36 +33103,26 @@
1317674952,1317674959,NG
1317674960,1317674967,GH
1317674968,1317674983,NG
-1317674984,1317674991,A2
-1317674992,1317675007,NG
-1317675008,1317675023,A2
-1317675024,1317675047,NG
-1317675048,1317675055,A2
+1317674984,1317674999,A2
+1317675000,1317675007,NG
+1317675008,1317675031,A2
+1317675032,1317675039,NG
+1317675040,1317675055,A2
1317675056,1317675063,NG
1317675064,1317675071,AO
1317675072,1317675095,NG
-1317675096,1317675103,A2
-1317675104,1317675111,CD
-1317675112,1317675183,A2
-1317675184,1317675199,CM
-1317675200,1317675223,NG
-1317675224,1317675231,A2
-1317675232,1317675239,LR
-1317675240,1317675247,A2
+1317675096,1317675199,A2
+1317675200,1317675215,NG
+1317675216,1317675247,A2
1317675248,1317675255,AO
1317675256,1317675271,A2
1317675272,1317675279,NG
-1317675280,1317675287,CM
-1317675288,1317675295,A2
+1317675280,1317675295,A2
1317675296,1317675319,NG
-1317675320,1317675343,CM
-1317675344,1317675351,A2
+1317675320,1317675351,A2
1317675352,1317675359,IQ
1317675360,1317675367,NG
-1317675368,1317675375,A2
-1317675376,1317675383,CM
-1317675384,1317675391,NG
-1317675392,1317675407,A2
+1317675368,1317675407,A2
1317675408,1317675415,NG
1317675416,1317675423,A2
1317675424,1317675439,NG
@@ -28105,12 +33135,11 @@
1317675488,1317675503,A2
1317675504,1317675511,NG
1317675512,1317675535,A2
-1317675536,1317675543,NG
+1317675536,1317675543,UG
1317675544,1317675551,IQ
1317675552,1317675559,NG
1317675560,1317675567,NA
-1317675568,1317675583,A2
-1317675584,1317675591,LR
+1317675568,1317675591,A2
1317675592,1317675607,NG
1317675608,1317675623,A2
1317675624,1317675639,NG
@@ -28123,52 +33152,56 @@
1317675696,1317675703,NG
1317675704,1317675711,A2
1317675712,1317675719,CM
-1317675720,1317675727,A2
-1317675728,1317675735,NG
-1317675736,1317675743,A2
+1317675720,1317675743,A2
1317675744,1317675751,GH
1317675752,1317675759,NG
1317675760,1317675775,GH
1317675776,1317675783,NG
-1317675784,1317675799,A2
-1317675800,1317675807,NG
-1317675808,1317675815,A2
-1317675816,1317675839,NG
-1317675840,1317675855,A2
+1317675784,1317675791,A2
+1317675792,1317675799,CD
+1317675800,1317675807,GB
+1317675808,1317675815,NG
+1317675816,1317675823,A2
+1317675824,1317675847,NG
+1317675848,1317675855,TD
1317675856,1317675863,NG
1317675864,1317675887,A2
1317675888,1317675895,CD
-1317675896,1317675911,A2
-1317675912,1317675935,NG
-1317675936,1317675943,A2
-1317675944,1317675975,NG
+1317675896,1317675919,A2
+1317675920,1317675927,UG
+1317675928,1317675935,LR
+1317675936,1317675951,A2
+1317675952,1317675959,NG
+1317675960,1317675967,A2
+1317675968,1317675975,NG
1317675976,1317675983,A2
-1317675984,1317675991,LR
-1317675992,1317675999,A2
+1317675984,1317675991,ML
+1317675992,1317675999,NG
1317676000,1317676007,GN
1317676008,1317676015,GH
1317676016,1317676023,SD
1317676024,1317676031,GQ
1317676032,1317676039,NG
-1317676040,1317676047,CD
-1317676048,1317676063,A2
-1317676064,1317676071,CM
+1317676040,1317676055,A2
+1317676056,1317676063,NG
+1317676064,1317676071,GH
1317676072,1317676079,A2
1317676080,1317676087,AO
1317676088,1317676095,NG
-1317676096,1317676103,NE
+1317676096,1317676103,CM
1317676104,1317676111,NG
-1317676112,1317676127,A2
-1317676128,1317676135,NG
-1317676136,1317676151,A2
+1317676112,1317676119,CM
+1317676120,1317676135,A2
+1317676136,1317676143,CM
+1317676144,1317676151,NG
1317676152,1317676159,CM
1317676160,1317676167,TG
1317676168,1317676175,ML
1317676176,1317676191,A2
1317676192,1317676207,SD
1317676208,1317676215,A2
-1317676216,1317676223,GH
-1317676224,1317676231,AO
+1317676216,1317676223,NG
+1317676224,1317676231,GH
1317676232,1317676239,NG
1317676240,1317676247,SD
1317676248,1317676255,NG
@@ -28176,26 +33209,23 @@
1317676264,1317676271,NG
1317676272,1317676279,A2
1317676280,1317676287,NG
-1317676288,1317676551,LR
+1317676288,1317676543,LR
+1317676544,1317676551,A2
1317676552,1317676559,AO
1317676560,1317676567,NG
-1317676568,1317676583,A2
+1317676568,1317676575,LR
+1317676576,1317676583,A2
1317676584,1317676591,NG
1317676592,1317676599,AO
1317676600,1317676607,UG
1317676608,1317676615,NG
-1317676616,1317676623,A2
-1317676624,1317676631,CM
-1317676632,1317676639,A2
-1317676640,1317676647,LR
+1317676616,1317676639,A2
+1317676640,1317676647,CD
1317676648,1317676655,A2
1317676656,1317676671,NG
1317676672,1317676687,A2
1317676688,1317676695,LR
-1317676696,1317676711,A2
-1317676712,1317676719,NG
-1317676720,1317676727,GQ
-1317676728,1317676751,A2
+1317676696,1317676751,A2
1317676752,1317676759,ML
1317676760,1317676767,LR
1317676768,1317676775,A2
@@ -28204,8 +33234,7 @@
1317676800,1317676807,CD
1317676808,1317676815,NG
1317676816,1317676823,LR
-1317676824,1317676831,NG
-1317676832,1317676847,A2
+1317676824,1317676847,A2
1317676848,1317676855,NG
1317676856,1317676863,A2
1317676864,1317676871,TG
@@ -28213,32 +33242,35 @@
1317676880,1317676903,A2
1317676904,1317676927,NG
1317676928,1317676943,A2
-1317676944,1317676959,CM
-1317676960,1317676983,A2
+1317676944,1317676951,CM
+1317676952,1317676983,A2
1317676984,1317676991,NG
-1317676992,1317676999,LR
+1317676992,1317676999,A2
1317677000,1317677007,IQ
1317677008,1317677015,CD
-1317677016,1317677023,GH
-1317677024,1317677031,NG
-1317677032,1317677047,A2
+1317677016,1317677023,A2
+1317677024,1317677039,NG
+1317677040,1317677047,A2
1317677048,1317677055,NG
-1317677056,1317677071,A2
+1317677056,1317677063,UG
+1317677064,1317677071,TD
1317677072,1317677079,NG
-1317677080,1317677087,SD
-1317677088,1317677143,A2
-1317677144,1317677151,SD
-1317677152,1317677191,A2
+1317677080,1317677087,UG
+1317677088,1317677095,A2
+1317677096,1317677103,BF
+1317677104,1317677127,A2
+1317677128,1317677135,NG
+1317677136,1317677191,A2
1317677192,1317677199,SD
-1317677200,1317677207,NG
-1317677208,1317677223,A2
-1317677224,1317677231,NG
+1317677200,1317677207,A2
+1317677208,1317677215,NG
+1317677216,1317677231,A2
1317677232,1317677239,UG
1317677240,1317677247,A2
1317677248,1317677271,NG
-1317677272,1317677295,A2
-1317677296,1317677311,NG
-1317677312,1317677319,A2
+1317677272,1317677303,A2
+1317677304,1317677311,NG
+1317677312,1317677319,CD
1317677320,1317677327,AO
1317677328,1317677335,CD
1317677336,1317677343,A2
@@ -28248,98 +33280,126 @@
1317677376,1317677399,A2
1317677400,1317677407,NG
1317677408,1317677415,CD
-1317677416,1317677423,A2
+1317677416,1317677423,LR
1317677424,1317677431,CD
-1317677432,1317677439,A2
-1317677440,1317677455,CD
+1317677432,1317677439,LR
+1317677440,1317677447,NG
+1317677448,1317677455,CD
1317677456,1317677463,AO
-1317677464,1317677471,A2
+1317677464,1317677471,GQ
1317677472,1317677479,NG
1317677480,1317677487,AO
-1317677488,1317677495,A2
-1317677496,1317677503,CD
-1317677504,1317677511,NG
-1317677512,1317677519,CD
-1317677520,1317677527,NG
+1317677488,1317677495,CD
+1317677496,1317677527,NG
1317677528,1317677535,GQ
-1317677536,1317677543,A2
-1317677544,1317677551,CD
-1317677552,1317677591,NG
-1317677592,1317677599,A2
-1317677600,1317677711,NG
-1317677712,1317677719,A2
-1317677720,1317677735,NG
-1317677736,1317677743,A2
-1317677744,1317677775,NG
-1317677776,1317677791,A2
-1317677792,1317677823,NG
+1317677536,1317677551,CD
+1317677552,1317677567,NG
+1317677568,1317677663,A2
+1317677664,1317677671,GB
+1317677672,1317677823,A2
1317677824,1317677831,AO
1317677832,1317677839,A2
1317677840,1317677847,LR
1317677848,1317677855,NG
-1317677856,1317677895,A2
+1317677856,1317677863,BF
+1317677864,1317677895,A2
1317677896,1317677903,GN
-1317677904,1317677959,A2
-1317677960,1317677967,NG
-1317677968,1317678007,A2
+1317677904,1317678007,A2
1317678008,1317678015,NG
1317678016,1317678047,A2
1317678048,1317678055,IQ
-1317678056,1317678143,A2
+1317678056,1317678079,A2
+1317678080,1317678095,NG
+1317678096,1317678103,GQ
+1317678104,1317678111,NG
+1317678112,1317678127,A2
+1317678128,1317678135,SD
+1317678136,1317678143,NG
1317678144,1317678151,CD
-1317678152,1317678167,A2
+1317678152,1317678159,NG
+1317678160,1317678167,GQ
1317678168,1317678175,NG
-1317678176,1317678207,A2
-1317678208,1317678215,NG
-1317678216,1317678231,A2
+1317678176,1317678183,GR
+1317678184,1317678191,NG
+1317678192,1317678199,A2
+1317678200,1317678207,CD
+1317678208,1317678223,A2
+1317678224,1317678231,NG
1317678232,1317678239,BF
-1317678240,1317678335,A2
-1317678336,1317678343,NG
-1317678344,1317678375,A2
+1317678240,1317678247,CD
+1317678248,1317678255,TD
+1317678256,1317678271,A2
+1317678272,1317678287,NG
+1317678288,1317678295,GR
+1317678296,1317678311,A2
+1317678312,1317678319,SD
+1317678320,1317678327,NG
+1317678328,1317678335,A2
+1317678336,1317678343,AO
+1317678344,1317678351,A2
+1317678352,1317678359,CD
+1317678360,1317678367,NG
+1317678368,1317678375,CD
1317678376,1317678383,NG
-1317678384,1317678439,A2
+1317678384,1317678391,GL
+1317678392,1317678399,A2
+1317678400,1317678407,ML
+1317678408,1317678415,A2
+1317678416,1317678431,NG
+1317678432,1317678439,A2
1317678440,1317678447,CD
1317678448,1317678455,A2
1317678456,1317678463,CD
-1317678464,1317678471,A2
-1317678472,1317678479,AO
-1317678480,1317678487,A2
-1317678488,1317678495,NG
-1317678496,1317679615,A2
+1317678464,1317678471,NG
+1317678472,1317678479,A2
+1317678480,1317678487,CD
+1317678488,1317678495,ML
+1317678496,1317678503,A2
+1317678504,1317678527,NG
+1317678528,1317678543,A2
+1317678544,1317678551,CD
+1317678552,1317678559,ML
+1317678560,1317678567,NG
+1317678568,1317678575,CD
+1317678576,1317678583,NG
+1317678584,1317678591,AO
+1317678592,1317679615,A2
1317679616,1317679631,AO
-1317679632,1317679639,A2
+1317679632,1317679639,NG
1317679640,1317679647,ZW
-1317679648,1317679663,A2
+1317679648,1317679655,CD
+1317679656,1317679663,NG
1317679664,1317679671,AO
-1317679672,1317679679,NG
-1317679680,1317679695,A2
+1317679672,1317679687,NG
+1317679688,1317679695,A2
1317679696,1317679703,LU
-1317679704,1317679711,A2
-1317679712,1317679719,NG
-1317679720,1317679727,A2
+1317679704,1317679727,NG
1317679728,1317679735,GN
-1317679736,1317679743,A2
+1317679736,1317679743,NG
1317679744,1317679751,AO
1317679752,1317679767,NG
-1317679768,1317679783,A2
-1317679784,1317679799,NG
-1317679800,1317679831,A2
-1317679832,1317679839,CD
+1317679768,1317679775,A2
+1317679776,1317679799,NG
+1317679800,1317679807,A2
+1317679808,1317679831,NG
+1317679832,1317679839,A2
1317679840,1317679847,NG
-1317679848,1317683199,A2
+1317679848,1317679855,A2
+1317679856,1317679871,NG
+1317679872,1317681183,A2
+1317681184,1317681191,NG
+1317681192,1317683199,A2
1317683200,1317683839,DE
1317683840,1317683855,CH
1317683856,1317683863,DE
1317683864,1317683871,FR
1317683872,1317685503,DE
1317685504,1317685631,BE
-1317685632,1317686271,DE
-1317686272,1317686287,NL
-1317686288,1317686335,DE
+1317685632,1317686303,DE
+1317686304,1317686319,NL
+1317686320,1317686335,DE
1317686336,1317686399,NL
-1317686400,1317695743,DE
-1317695744,1317695999,CH
-1317696000,1317698559,DE
+1317686400,1317698559,DE
1317698560,1317698687,NL
1317698688,1317699583,DE
1317699584,1317715967,RU
@@ -28349,34 +33409,63 @@
1317765120,1317781503,GE
1317781504,1317814271,RU
1317814272,1317830655,DE
-1317830656,1317832191,NL
+1317830656,1317831839,NL
+1317831840,1317831871,CA
+1317831872,1317832191,NL
1317832192,1317832447,GB
1317832448,1317832511,CY
-1317832512,1317832959,NL
+1317832512,1317832575,NL
+1317832576,1317832703,GI
+1317832704,1317832959,NL
1317832960,1317833215,IT
-1317833216,1317835615,NL
+1317833216,1317835007,NL
+1317835008,1317835071,RU
+1317835072,1317835135,GI
+1317835136,1317835199,RU
+1317835200,1317835263,CY
+1317835264,1317835615,NL
1317835616,1317835647,RU
-1317835648,1317836863,NL
+1317835648,1317835711,NL
+1317835712,1317835775,GI
+1317835776,1317836031,CY
+1317836032,1317836863,NL
1317836864,1317836927,CY
1317836928,1317836991,NL
1317836992,1317837007,GB
-1317837008,1317838943,NL
+1317837008,1317837023,RU
+1317837024,1317837567,NL
+1317837568,1317837823,US
+1317837824,1317838943,NL
1317838944,1317838959,GB
-1317838960,1317839359,NL
+1317838960,1317838975,NL
+1317838976,1317839103,GI
+1317839104,1317839359,NL
1317839360,1317839615,RU
1317839616,1317839679,HK
1317839680,1317839695,CZ
1317839696,1317841407,NL
1317841408,1317841439,SC
-1317841440,1317841663,NL
+1317841440,1317841471,MT
+1317841472,1317841535,CY
+1317841536,1317841599,NL
+1317841600,1317841663,GI
1317841664,1317841727,HK
1317841728,1317841855,CY
-1317841856,1317842943,NL
+1317841856,1317841887,IL
+1317841888,1317842943,NL
1317842944,1317843071,CY
1317843072,1317843135,HK
1317843136,1317843199,CY
1317843200,1317843391,US
-1317843392,1317847039,NL
+1317843392,1317843423,NL
+1317843424,1317843455,PR
+1317843456,1317843519,NL
+1317843520,1317843583,GI
+1317843584,1317843647,US
+1317843648,1317843839,NL
+1317843840,1317843967,SC
+1317843968,1317844223,MY
+1317844224,1317847039,NL
1317847040,1317863423,RU
1317863424,1317879807,GB
1317879808,1317896191,SK
@@ -28386,12 +33475,11 @@
1317945344,1317965047,AT
1317965048,1317965055,DE
1317965056,1317978111,AT
-1317978112,1317994495,RU
-1317994496,1317996031,NL
-1317996032,1317996095,DE
+1317994496,1317995519,NL
+1317995520,1317996095,DE
1317996096,1317996287,NL
-1317996288,1317997567,DE
-1317997568,1317998591,NL
+1317996288,1317998207,DE
+1317998208,1317998591,NL
1317998592,1318000383,DE
1318000384,1318000447,NL
1318000448,1318002175,DE
@@ -28402,12 +33490,10 @@
1318006272,1318006783,NL
1318006784,1318007999,DE
1318008000,1318008031,NL
-1318008032,1318008703,DE
-1318008704,1318008767,NL
-1318008768,1318009423,DE
+1318008032,1318009423,DE
1318009424,1318009471,NL
-1318009472,1318010527,DE
-1318010528,1318010879,NL
+1318009472,1318010511,DE
+1318010512,1318010879,NL
1318010880,1318027263,DK
1318027264,1318043647,IE
1318043648,1318584319,GB
@@ -28440,12 +33526,16 @@
1318707776,1318707783,GB
1318707784,1318708511,FR
1318708512,1318708519,GB
-1318708520,1318708523,FR
-1318708524,1318708527,GB
-1318708528,1318708599,FR
+1318708520,1318708599,FR
1318708600,1318708607,GB
-1318708608,1318708639,FR
-1318708640,1318708731,GB
+1318708608,1318708623,FR
+1318708624,1318708627,GB
+1318708628,1318708639,FR
+1318708640,1318708647,GB
+1318708648,1318708683,FR
+1318708684,1318708687,GB
+1318708688,1318708723,FR
+1318708724,1318708731,GB
1318708732,1318708735,FR
1318708736,1318708991,GB
1318708992,1318711647,FR
@@ -28485,9 +33575,10 @@
1318936576,1318944767,DK
1318944768,1318956287,CZ
1318956288,1318957055,PL
-1318957056,1318958847,CZ
-1318958848,1318961151,PL
-1318961152,1318969343,NL
+1318957056,1318958079,CZ
+1318958080,1318960895,PL
+1318960896,1318961151,CZ
+1318961152,1318969343,GB
1318969344,1318977535,RU
1318977536,1318985727,LT
1318985728,1319001087,GB
@@ -28511,15 +33602,14 @@
1319069777,1319069823,CN
1319069824,1319070217,DE
1319070218,1319070254,CN
-1319070255,1319070271,GB
+1319070255,1319070271,DE
1319070272,1319070335,PT
1319070336,1319070463,RU
1319070464,1319070975,DE
1319070976,1319071103,PL
1319071104,1319071231,RU
1319071232,1319071487,PL
-1319071488,1319072767,DE
-1319072768,1319073023,IT
+1319071488,1319073023,DE
1319073024,1319073279,TR
1319073280,1319074303,DE
1319074304,1319074559,HK
@@ -28546,7 +33636,9 @@
1331757056,1331822591,IE
1331822592,1331824639,IT
1331824640,1331826687,RU
-1331826688,1331828735,FR
+1331826688,1331828607,FR
+1331828608,1331828615,BE
+1331828616,1331828735,FR
1331828736,1331830783,LT
1331830784,1331831335,GB
1331831336,1331831343,IE
@@ -28574,8 +33666,9 @@
1331873792,1331879935,RU
1331879936,1331881983,DE
1331881984,1331883007,GB
-1331883008,1331883263,SE
+1331883008,1331883263,SL
1331883264,1331886079,GB
+1331886080,1331888127,RU
1331888128,1331890175,SE
1331890176,1331892223,IT
1331892224,1331894271,RU
@@ -28601,25 +33694,47 @@
1331931136,1331933183,SE
1331933184,1331935231,TR
1331935232,1331937279,NL
-1331937280,1331937535,GB
+1331937280,1331937407,PL
+1331937408,1331937471,GB
+1331937472,1331937519,NG
+1331937520,1331937535,GB
1331937536,1331937567,SM
1331937568,1331937583,US
1331937584,1331937599,ZA
-1331937600,1331938111,GB
+1331937600,1331937663,GB
+1331937664,1331937727,DE
+1331937728,1331938111,GB
1331938112,1331938127,AE
1331938128,1331938135,SA
-1331938136,1331938191,GB
+1331938136,1331938143,AE
+1331938144,1331938151,GB
+1331938152,1331938159,PL
+1331938160,1331938167,GB
+1331938168,1331938175,KW
+1331938176,1331938191,GB
1331938192,1331938207,AE
-1331938208,1331938375,GB
+1331938208,1331938319,GB
+1331938320,1331938335,AE
+1331938336,1331938375,GB
1331938376,1331938383,AE
1331938384,1331938399,IE
-1331938400,1331938823,GB
+1331938400,1331938815,GB
+1331938816,1331938823,NG
1331938824,1331938831,US
1331938832,1331938839,NG
1331938840,1331938847,IE
-1331938848,1331938879,GB
-1331938880,1331938895,NG
-1331938896,1331939327,GB
+1331938848,1331938871,GB
+1331938872,1331938895,NG
+1331938896,1331938911,GB
+1331938912,1331938927,NG
+1331938928,1331938935,RU
+1331938936,1331938943,NG
+1331938944,1331938958,US
+1331938959,1331938959,GB
+1331938960,1331938967,US
+1331938968,1331938983,GB
+1331938984,1331938999,NG
+1331939000,1331939327,GB
1331939328,1331941375,BE
1331941376,1331943423,ES
1331943424,1331945471,RU
@@ -28646,7 +33761,9 @@
1332412416,1332477951,GR
1332477952,1332609023,ES
1332609024,1332613119,PL
-1332613120,1332629503,UA
+1332613120,1332617215,UA
+1332621312,1332625407,UA
+1332625408,1332629503,RU
1332629504,1332633599,DE
1332633600,1332637695,UA
1332637696,1332641791,BG
@@ -28692,7 +33809,9 @@
1334181888,1334190079,RU
1334190080,1334198271,BG
1334198272,1334206463,RU
-1334206464,1334214655,FI
+1334206464,1334214551,FI
+1334214552,1334214559,AX
+1334214560,1334214655,FI
1334214656,1334222847,JO
1334222848,1334231039,BG
1334231040,1334239231,EE
@@ -28727,9 +33846,7 @@
1334583808,1334584063,CH
1334584064,1334584255,DE
1334584256,1334584287,AT
-1334584288,1334584351,DE
-1334584352,1334584383,LU
-1334584384,1334584999,DE
+1334584288,1334584999,DE
1334585000,1334585007,US
1334585008,1334585111,DE
1334585112,1334585119,AT
@@ -28769,11 +33886,10 @@
1334645248,1334647807,IQ
1334647808,1334648063,LB
1334648064,1334648319,IQ
-1334648320,1334648831,A2
-1334648832,1334650959,GB
-1334650960,1334650975,NL
-1334650976,1334651391,GB
-1334651392,1334651647,NL
+1334648320,1334648575,DE
+1334648576,1334648831,A2
+1334648832,1334651455,GB
+1334651456,1334651647,NL
1334651648,1334651903,FR
1334651904,1334652159,DE
1334652160,1334652543,GB
@@ -28807,9 +33923,13 @@
1334710272,1334714367,RU
1334714368,1334718463,DE
1334718464,1334722559,KZ
-1334722560,1334726655,NL
+1334722560,1334725631,NL
+1334725632,1334726143,SE
+1334726144,1334726655,NL
1334726656,1334729983,RU
-1334729984,1334730431,KZ
+1334729984,1334730027,KZ
+1334730028,1334730239,RU
+1334730240,1334730431,KZ
1334730432,1334730439,RU
1334730440,1334730443,KZ
1334730444,1334730447,RU
@@ -28819,12 +33939,12 @@
1334730500,1334730503,RU
1334730504,1334730539,KZ
1334730540,1334730543,RU
-1334730544,1334730667,KZ
-1334730668,1334730687,RU
-1334730688,1334730699,KZ
-1334730700,1334730703,RU
-1334730704,1334730743,KZ
-1334730744,1334734847,RU
+1334730544,1334730579,KZ
+1334730580,1334730583,RU
+1334730584,1334730667,KZ
+1334730668,1334730671,RU
+1334730672,1334730751,KZ
+1334730752,1334734847,RU
1334734848,1334738943,LT
1334738944,1334743039,CH
1334743040,1334747135,CZ
@@ -28893,7 +34013,6 @@
1336614912,1336616959,GB
1336616960,1336619007,ES
1336619008,1336621055,AL
-1336621056,1336623103,IT
1336623104,1336625151,BE
1336625152,1336625823,IE
1336625824,1336625839,GB
@@ -28976,13 +34095,15 @@
1343017984,1343018367,RE
1343018368,1343025151,FR
1343025152,1343025663,RE
-1343025664,1343217663,FR
+1343025664,1343025819,FR
+1343025820,1343025820,LU
+1343025821,1343217663,FR
1343217664,1343218687,MU
1343218688,1343219711,FR
1343219712,1343219967,KR
1343219968,1343220479,FR
-1343220480,1343220639,DE
-1343220640,1343220735,FR
+1343220480,1343220671,DE
+1343220672,1343220735,FR
1343220736,1343220863,GB
1343220864,1343221023,FR
1343221024,1343221027,DE
@@ -29022,7 +34143,9 @@
1346371584,1346375679,FI
1346375680,1346379775,RU
1346379776,1346383871,ES
-1346383872,1346387967,GB
+1346383872,1346386719,GB
+1346386720,1346386727,SE
+1346386728,1346387967,GB
1346387968,1346392063,HU
1346392064,1346396159,UA
1346396160,1346400255,RU
@@ -29055,32 +34178,32 @@
1346486272,1346490367,SE
1346490368,1346494463,GB
1346494464,1346498559,FR
-1346498560,1346499967,IM
-1346499968,1346499983,GB
-1346499984,1346500607,IM
+1346498560,1346500607,IM
1346500608,1346500639,GB
1346500640,1346500735,IM
1346500736,1346500767,GB
1346500768,1346500863,IM
-1346500864,1346501151,GB
-1346501152,1346501247,IM
+1346500864,1346501231,GB
+1346501232,1346501247,IM
1346501248,1346501343,GB
1346501344,1346501375,IM
1346501376,1346501695,GB
-1346501696,1346501727,IM
-1346501728,1346501743,GB
-1346501744,1346501775,IM
-1346501776,1346501795,GB
-1346501796,1346501823,IM
-1346501824,1346501847,GB
+1346501696,1346501759,IM
+1346501760,1346501795,GB
+1346501796,1346501799,IM
+1346501800,1346501807,GB
+1346501808,1346501839,IM
+1346501840,1346501847,GB
1346501848,1346501879,IM
-1346501880,1346502223,GB
-1346502224,1346502239,IM
-1346502240,1346502319,GB
+1346501880,1346501883,GB
+1346501884,1346501887,IM
+1346501888,1346501891,GB
+1346501892,1346501895,IM
+1346501896,1346502223,GB
+1346502224,1346502263,IM
+1346502264,1346502319,GB
1346502320,1346502323,IM
-1346502324,1346502399,GB
-1346502400,1346502527,IM
-1346502528,1346502655,GB
+1346502324,1346502655,GB
1346502656,1346510847,DE
1346510848,1346519039,AT
1346519040,1346527231,RU
@@ -29107,7 +34230,8 @@
1346563072,1346563327,CH
1346563328,1346564095,LI
1346564096,1346568191,EE
-1346568192,1346572287,SE
+1346568192,1346571775,SE
+1346571776,1346572287,A1
1346572288,1346576383,DE
1346576384,1346580479,DK
1346580480,1346584575,RU
@@ -29138,21 +34262,44 @@
1346686976,1346691071,GB
1346691072,1346695167,PL
1346695168,1346699263,RU
-1346699264,1346700575,GB
+1346699264,1346699755,GB
+1346699756,1346699756,LI
+1346699757,1346699767,GB
+1346699768,1346699775,US
+1346699776,1346699839,GB
+1346699840,1346699871,HK
+1346699872,1346699875,GB
+1346699876,1346699879,IL
+1346699880,1346699887,US
+1346699888,1346700575,GB
1346700576,1346700591,VG
-1346700592,1346700608,GB
-1346700609,1346700623,US
-1346700624,1346700847,GB
+1346700592,1346700607,GB
+1346700608,1346700639,US
+1346700640,1346700847,GB
1346700848,1346700855,US
-1346700856,1346701184,GB
-1346701185,1346701215,GR
-1346701216,1346703871,GB
+1346700856,1346701183,GB
+1346701184,1346701215,GR
+1346701216,1346703431,GB
+1346703432,1346703435,US
+1346703436,1346703483,GB
+1346703484,1346703487,US
+1346703488,1346703503,GB
+1346703504,1346703511,US
+1346703512,1346703871,GB
1346703872,1346704127,LI
-1346704128,1346704479,GB
+1346704128,1346704383,GB
+1346704384,1346704447,US
+1346704448,1346704479,GB
1346704480,1346704511,US
-1346704512,1346704639,GB
+1346704512,1346704575,GB
+1346704576,1346704639,US
1346704640,1346704767,LI
-1346704768,1346707455,GB
+1346704768,1346704895,US
+1346704896,1346705247,GB
+1346705248,1346705279,US
+1346705280,1346705407,GB
+1346705408,1346705535,US
+1346705536,1346707455,GB
1346707456,1346711551,DE
1346711552,1346715647,AZ
1346715648,1346723839,NL
@@ -29174,7 +34321,9 @@
1346793472,1346797567,IT
1346797568,1346801663,IL
1346801664,1346805759,SE
-1346805760,1346818047,DE
+1346805760,1346806031,DE
+1346806032,1346806047,CH
+1346806048,1346818047,DE
1346818048,1346822143,FR
1346822144,1346826239,RU
1346826240,1346830335,RS
@@ -29201,6 +34350,7 @@
1346928640,1346932735,DE
1346932736,1346936831,DK
1346936832,1346940927,IT
+1346940928,1346945023,KG
1346945024,1346949119,PL
1346949120,1346957311,RU
1346957312,1346961407,DE
@@ -29259,14 +34409,16 @@
1347133440,1347141631,EG
1347141632,1347145727,CH
1347145728,1347146239,GB
-1347146240,1347147007,FR
+1347146240,1347146495,IN
+1347146496,1347146751,FR
+1347146752,1347147007,IN
1347147008,1347147263,DE
1347147264,1347147775,GB
1347147776,1347148287,DE
1347148288,1347148543,GB
-1347148544,1347148799,FR
+1347148544,1347148799,IN
1347148800,1347149055,NO
-1347149056,1347149823,FR
+1347149056,1347149823,IN
1347149824,1347153919,HU
1347153920,1347158015,AT
1347158016,1347162111,CH
@@ -29288,7 +34440,7 @@
1347210936,1347211111,GB
1347211112,1347211119,IE
1347211120,1347215359,GB
-1347215360,1347219455,RU
+1347215360,1347223551,RU
1347223552,1347223807,EG
1347223808,1347224063,HK
1347224064,1347224183,US
@@ -29305,7 +34457,9 @@
1347229312,1347229343,AT
1347229344,1347229895,DE
1347229896,1347229903,GR
-1347229904,1347231071,DE
+1347229904,1347230975,DE
+1347230976,1347230983,ES
+1347230984,1347231071,DE
1347231072,1347231087,AT
1347231088,1347231095,GR
1347231096,1347231743,DE
@@ -29314,9 +34468,11 @@
1347239936,1347240943,DK
1347240944,1347240959,GB
1347240960,1347244031,DK
-1347244032,1347247359,GB
-1347247360,1347247871,RU
-1347247872,1347248127,US
+1347244032,1347245311,GB
+1347245312,1347245567,US
+1347245568,1347247359,GB
+1347247360,1347247839,RU
+1347247840,1347248127,US
1347248128,1347248863,SE
1347248864,1347248864,FI
1347248865,1347249343,SE
@@ -29351,148 +34507,74 @@
1347293184,1347293311,SE
1347293312,1347293319,LR
1347293320,1347293327,GA
-1347293328,1347293335,NG
-1347293336,1347293339,A2
-1347293340,1347293343,SO
-1347293344,1347293351,A2
-1347293352,1347293391,NG
-1347293392,1347293399,CY
-1347293400,1347293407,IQ
-1347293408,1347293415,NG
-1347293416,1347293423,A2
+1347293328,1347293351,A2
+1347293352,1347293359,NG
+1347293360,1347293423,A2
1347293424,1347293431,GN
-1347293432,1347293439,NG
-1347293440,1347293447,A2
+1347293432,1347293447,A2
1347293448,1347293455,GB
-1347293456,1347293463,NG
-1347293464,1347293471,A2
-1347293472,1347293479,IQ
+1347293456,1347293479,A2
1347293480,1347293487,LR
-1347293488,1347293495,TD
-1347293496,1347293503,GH
-1347293504,1347293511,US
+1347293488,1347293511,A2
1347293512,1347293519,GN
1347293520,1347293527,PS
1347293528,1347293535,NG
1347293536,1347293543,GH
-1347293544,1347293551,US
-1347293552,1347293559,A2
+1347293544,1347293559,A2
1347293560,1347293567,GN
-1347293568,1347293575,GH
-1347293576,1347293583,IQ
-1347293584,1347293591,AF
-1347293592,1347293599,A2
+1347293568,1347293599,A2
1347293600,1347293607,NG
1347293608,1347293615,A2
-1347293616,1347293639,US
-1347293640,1347293647,IQ
-1347293648,1347293655,US
-1347293656,1347293675,GN
-1347293676,1347293679,BH
-1347293680,1347293687,GN
-1347293688,1347293723,NG
-1347293724,1347293727,IQ
-1347293728,1347293735,A2
-1347293736,1347293759,GN
-1347293760,1347293767,US
-1347293768,1347293775,CM
-1347293776,1347293799,NG
-1347293800,1347293807,IQ
+1347293616,1347293623,US
+1347293624,1347293631,A2
+1347293632,1347293639,US
+1347293640,1347293655,A2
+1347293656,1347293671,GN
+1347293672,1347293687,A2
+1347293688,1347293711,NG
+1347293712,1347293743,A2
+1347293744,1347293751,GN
+1347293752,1347293759,A2
+1347293760,1347293767,ZM
+1347293768,1347293791,A2
+1347293792,1347293799,NG
+1347293800,1347293807,A2
1347293808,1347293815,NG
-1347293816,1347293823,SO
-1347293824,1347293831,CM
-1347293832,1347293839,NG
+1347293816,1347293839,A2
1347293840,1347293847,CA
-1347293848,1347293855,BH
+1347293848,1347293855,A2
1347293856,1347293863,GN
1347293864,1347293871,GB
-1347293872,1347293879,A2
-1347293880,1347293887,NG
+1347293872,1347293887,A2
1347293888,1347293903,GQ
-1347293904,1347293911,NG
-1347293912,1347293919,GA
+1347293904,1347293919,A2
1347293920,1347293927,GB
1347293928,1347293935,US
1347293936,1347293943,NG
-1347293944,1347293951,A2
-1347293952,1347293975,NG
-1347293976,1347293983,GN
-1347293984,1347293991,US
+1347293944,1347293959,A2
+1347293960,1347293967,NG
+1347293968,1347293991,A2
1347293992,1347293999,NG
-1347294000,1347294007,US
-1347294008,1347294015,A2
-1347294016,1347294023,US
-1347294024,1347294039,GN
-1347294040,1347294047,GB
-1347294048,1347294055,TH
-1347294056,1347294063,NG
-1347294064,1347294071,GH
-1347294072,1347294079,NG
-1347294080,1347294087,A2
+1347294000,1347294031,A2
+1347294032,1347294039,GN
+1347294040,1347294087,A2
1347294088,1347294095,US
-1347294096,1347294111,CM
-1347294112,1347294119,GN
-1347294120,1347294127,A2
-1347294128,1347294135,NG
-1347294136,1347294143,LR
+1347294096,1347294143,A2
1347294144,1347294151,NG
1347294152,1347294159,GB
-1347294160,1347294167,CM
-1347294168,1347294175,GB
-1347294176,1347294183,NG
-1347294184,1347294191,A2
-1347294192,1347294199,GB
+1347294160,1347294199,A2
1347294200,1347294207,NG
-1347294208,1347294215,A2
-1347294216,1347294223,IQ
-1347294224,1347294231,A2
-1347294232,1347294239,US
-1347294240,1347294271,A2
-1347294272,1347294279,BH
-1347294280,1347294287,BD
-1347294288,1347294303,UG
-1347294304,1347294311,US
-1347294312,1347294319,A2
-1347294320,1347294327,NG
-1347294328,1347294343,A2
-1347294344,1347294351,CM
-1347294352,1347294367,LR
-1347294368,1347294375,NG
-1347294376,1347294383,A2
-1347294384,1347294399,NG
-1347294400,1347294407,A2
-1347294408,1347294415,GN
-1347294416,1347294423,A2
+1347294208,1347294423,A2
1347294424,1347294431,KW
-1347294432,1347294435,US
-1347294436,1347294439,A2
-1347294440,1347294447,SO
-1347294448,1347294975,US
-1347294976,1347294991,A2
-1347294992,1347295007,NG
-1347295008,1347295039,A2
-1347295040,1347295047,GB
-1347295048,1347295055,IQ
-1347295056,1347295063,AF
-1347295064,1347295071,A2
+1347294432,1347295071,A2
1347295072,1347295079,US
1347295080,1347295087,NG
-1347295088,1347295095,A2
-1347295096,1347295103,NG
-1347295104,1347295143,A2
-1347295144,1347295151,IQ
-1347295152,1347295159,US
-1347295160,1347295199,A2
-1347295200,1347295215,GB
-1347295216,1347295223,A2
-1347295224,1347295231,CH
-1347295232,1347295743,A2
-1347295744,1347295755,US
-1347295756,1347295759,A2
-1347295760,1347295775,US
+1347295088,1347295207,A2
+1347295208,1347295215,GB
+1347295216,1347295775,A2
1347295776,1347295783,IQ
-1347295784,1347295999,A2
-1347296000,1347296015,US
+1347295784,1347296007,A2
+1347296008,1347296015,US
1347296016,1347297279,A2
1347297280,1347305471,UA
1347305472,1347309567,AL
@@ -29502,16 +34584,12 @@
1347313664,1347321855,RU
1347321856,1347323775,KW
1347323776,1347323903,IR
-1347323904,1347325183,KW
-1347325184,1347325439,SA
-1347325440,1347325951,KW
+1347323904,1347325951,KW
1347325952,1347327231,CZ
1347327232,1347327487,SK
1347327488,1347327743,CZ
1347327744,1347327999,SK
-1347328000,1347329535,CZ
-1347329536,1347329599,SK
-1347329600,1347330047,CZ
+1347328000,1347330047,CZ
1347330048,1347338239,DE
1347338240,1347342335,RU
1347342336,1347346431,SE
@@ -29524,9 +34602,27 @@
1347371008,1347375103,RU
1347375104,1347379199,GB
1347379200,1347383295,NL
-1347383296,1347386751,EE
+1347383296,1347384111,EE
+1347384112,1347384115,FI
+1347384116,1347384703,EE
+1347384704,1347384831,US
+1347384832,1347385063,EE
+1347385064,1347385071,RU
+1347385072,1347385599,EE
+1347385600,1347385855,US
+1347385856,1347386559,EE
+1347386560,1347386567,RU
+1347386568,1347386655,EE
+1347386656,1347386671,US
+1347386672,1347386751,EE
1347386752,1347386815,MY
-1347386816,1347387391,EE
+1347386816,1347387011,EE
+1347387012,1347387015,DE
+1347387016,1347387215,EE
+1347387216,1347387219,NZ
+1347387220,1347387224,EE
+1347387225,1347387228,DE
+1347387229,1347387391,EE
1347387392,1347391487,GB
1347391488,1347395583,LB
1347395584,1347399679,SE
@@ -29556,11 +34652,7 @@
1347440640,1347444735,ES
1347444736,1347452927,RU
1347452928,1347461119,BG
-1347461120,1347461671,AL
-1347461672,1347461679,RS
-1347461680,1347462023,AL
-1347462024,1347462031,RS
-1347462032,1347462579,AL
+1347461120,1347462579,AL
1347462580,1347462583,RS
1347462584,1347462591,AL
1347462592,1347462607,RS
@@ -29583,8 +34675,7 @@
1347505408,1347505663,DE
1347505664,1347506175,ES
1347506176,1347506431,GB
-1347506432,1347510271,FR
-1347510272,1347518463,ES
+1347506432,1347518463,ES
1347518464,1347522559,AT
1347522560,1347526655,LB
1347526656,1347527967,FI
@@ -29629,9 +34720,7 @@
1347655176,1347655183,EG
1347655184,1347657727,GB
1347657728,1347661823,IT
-1347661824,1347663119,DE
-1347663120,1347663127,GB
-1347663128,1347665919,DE
+1347661824,1347665919,DE
1347665920,1347670015,RU
1347670016,1347674111,SE
1347674112,1347682303,RU
@@ -29675,7 +34764,7 @@
1347754936,1347754943,RS
1347754944,1347754951,CY
1347754952,1347754959,TN
-1347754960,1347754967,MA
+1347754960,1347754967,CY
1347754968,1347754983,GR
1347754984,1347754991,CY
1347754992,1347755112,GR
@@ -29721,8 +34810,8 @@
1347854880,1347854887,DE
1347854888,1347854911,EU
1347854912,1347855071,DE
-1347855072,1347855079,EU
-1347855080,1347855103,DE
+1347855072,1347855087,EU
+1347855088,1347855103,DE
1347855104,1347855359,CH
1347855360,1347855935,DE
1347855936,1347855943,EU
@@ -29731,12 +34820,14 @@
1347855960,1347855967,DE
1347855968,1347855999,EU
1347856000,1347856063,DE
-1347856064,1347856095,EU
+1347856064,1347856079,EU
+1347856080,1347856087,DE
+1347856088,1347856095,EU
1347856096,1347856239,DE
1347856240,1347856255,EU
1347856256,1347856383,DE
-1347856384,1347856391,EU
-1347856392,1347856431,DE
+1347856384,1347856399,EU
+1347856400,1347856431,DE
1347856432,1347856447,EU
1347856448,1347856639,DE
1347856640,1347856895,AT
@@ -29748,12 +34839,14 @@
1347858576,1347858623,EU
1347858624,1347858631,DE
1347858632,1347858639,EU
-1347858640,1347859351,DE
+1347858640,1347859335,DE
+1347859336,1347859343,EU
+1347859344,1347859351,DE
1347859352,1347859359,EU
1347859360,1347859383,DE
1347859384,1347859407,EU
-1347859408,1347859439,DE
-1347859440,1347859455,EU
+1347859408,1347859423,DE
+1347859424,1347859455,EU
1347859456,1347860863,DE
1347860864,1347860879,EU
1347860880,1347860895,DE
@@ -29767,7 +34860,9 @@
1347861800,1347861823,DE
1347861824,1347861943,EU
1347861944,1347861951,DE
-1347861952,1347862111,EU
+1347861952,1347862007,EU
+1347862008,1347862015,CH
+1347862016,1347862111,EU
1347862112,1347862143,DE
1347862144,1347862303,EU
1347862304,1347862431,DE
@@ -29799,9 +34894,7 @@
1347960832,1347964927,DE
1347964928,1347969023,IT
1347969024,1347977215,SE
-1347977216,1347977599,A2
-1347977600,1347977607,NG
-1347977608,1347978007,A2
+1347977216,1347978007,A2
1347978008,1347978015,NG
1347978016,1347978031,A2
1347978032,1347978039,NG
@@ -29809,25 +34902,19 @@
1347978192,1347978199,NG
1347978200,1347978263,A2
1347978264,1347978271,NG
-1347978272,1347978287,A2
-1347978288,1347978295,NG
-1347978296,1347978303,A2
-1347978304,1347978327,NG
-1347978328,1347978343,A2
-1347978344,1347978359,NG
+1347978272,1347978319,A2
+1347978320,1347978327,NG
+1347978328,1347978351,A2
+1347978352,1347978359,NG
1347978360,1347978375,A2
1347978376,1347978407,NG
1347978408,1347978447,A2
1347978448,1347978463,NG
-1347978464,1347978575,A2
-1347978576,1347978623,NG
-1347978624,1347978631,A2
+1347978464,1347978631,A2
1347978632,1347978647,NG
1347978648,1347978727,A2
1347978728,1347978735,NG
-1347978736,1347978775,A2
-1347978776,1347978783,NG
-1347978784,1347978847,A2
+1347978736,1347978847,A2
1347978848,1347978855,NG
1347978856,1347978935,A2
1347978936,1347978943,NG
@@ -29837,64 +34924,39 @@
1347979136,1347979143,NG
1347979144,1347979159,A2
1347979160,1347979167,NG
-1347979168,1347979215,A2
-1347979216,1347979223,NG
-1347979224,1347979231,A2
+1347979168,1347979231,A2
1347979232,1347979247,NG
1347979248,1347979375,A2
1347979376,1347979399,NG
-1347979400,1347979567,A2
-1347979568,1347979575,NG
-1347979576,1347979583,A2
+1347979400,1347979583,A2
1347979584,1347979591,NG
1347979592,1347979743,A2
1347979744,1347979751,NG
1347979752,1347980111,A2
1347980112,1347980127,GN
-1347980128,1347980167,A2
-1347980168,1347980175,NG
-1347980176,1347980223,A2
-1347980224,1347980271,NG
+1347980128,1347980271,A2
1347980272,1347980279,DK
-1347980280,1347980415,A2
-1347980416,1347980479,NG
-1347980480,1347980543,A2
-1347980544,1347980559,DK
-1347980560,1347981007,A2
+1347980280,1347981007,A2
1347981008,1347981015,NG
1347981016,1347981023,A2
1347981024,1347981031,NG
-1347981032,1347981239,A2
-1347981240,1347981247,NG
-1347981248,1347981255,A2
+1347981032,1347981255,A2
1347981256,1347981263,DK
1347981264,1347981927,A2
1347981928,1347981935,NG
1347981936,1347982031,A2
1347982032,1347982055,NG
-1347982056,1347982223,A2
-1347982224,1347982231,NG
-1347982232,1347982279,A2
+1347982056,1347982279,A2
1347982280,1347982287,NG
-1347982288,1347982911,A2
-1347982912,1347982919,NG
-1347982920,1347982927,A2
+1347982288,1347982927,A2
1347982928,1347982943,NG
-1347982944,1347983039,A2
-1347983040,1347983047,NG
-1347983048,1347983063,A2
+1347982944,1347983063,A2
1347983064,1347983071,NG
-1347983072,1347983103,A2
-1347983104,1347983119,NG
-1347983120,1347983247,A2
+1347983072,1347983247,A2
1347983248,1347983263,DK
1347983264,1347983303,A2
1347983304,1347983311,NG
-1347983312,1347983423,A2
-1347983424,1347983487,NG
-1347983488,1347983567,A2
-1347983568,1347983575,NG
-1347983576,1347983903,A2
+1347983312,1347983903,A2
1347983904,1347983911,NG
1347983912,1347983919,A2
1347983920,1347983927,NG
@@ -29904,18 +34966,16 @@
1347984208,1347984215,NG
1347984216,1347984415,A2
1347984416,1347984423,NG
-1347984424,1347984647,A2
-1347984648,1347984655,NG
-1347984656,1347984719,A2
-1347984720,1347984735,NG
-1347984736,1347984879,A2
+1347984424,1347984719,A2
+1347984720,1347984727,NG
+1347984728,1347984879,A2
1347984880,1347984895,NG
1347984896,1347984959,A2
1347984960,1347984991,NG
1347984992,1347985031,A2
1347985032,1347985039,NG
-1347985040,1347985095,A2
-1347985096,1347985119,NG
+1347985040,1347985103,A2
+1347985104,1347985119,NG
1347985120,1347985151,A2
1347985152,1347985407,DK
1347985408,1347989503,IT
@@ -30135,7 +35195,9 @@
1352038696,1352038699,US
1352038700,1352041471,DE
1352041472,1352041727,US
-1352041728,1352139671,DE
+1352041728,1352058431,DE
+1352058432,1352058495,US
+1352058496,1352139671,DE
1352139672,1352139679,IT
1352139680,1352144519,DE
1352144520,1352144527,IT
@@ -30162,18 +35224,26 @@
1352149428,1352149451,FR
1352149452,1352149455,DE
1352149456,1352149487,FR
-1352149488,1352277535,DE
+1352149488,1352149743,DE
+1352149744,1352149751,AT
+1352149752,1352149783,DE
+1352149784,1352149791,SE
+1352149792,1352149807,DE
+1352149808,1352149823,SE
+1352149824,1352149855,DE
+1352149856,1352149871,SE
+1352149872,1352277535,DE
1352277536,1352277567,IT
-1352277568,1352287399,DE
-1352287400,1352287407,NL
-1352287408,1352402791,DE
+1352277568,1352402791,DE
1352402792,1352402799,BE
1352402800,1352404599,DE
1352404600,1352404607,NL
1352404608,1352445687,DE
1352445688,1352445703,NL
1352445704,1352663039,DE
-1352663040,1353187327,DK
+1352663040,1353182591,DK
+1353182592,1353182599,DE
+1353182600,1353187327,DK
1353187328,1353252991,GB
1353252992,1353253023,FR
1353253024,1353253663,GB
@@ -30190,14 +35260,18 @@
1353257984,1353258247,SE
1353258248,1353258255,GB
1353258256,1353258263,SE
-1353258264,1353258271,DK
+1353258264,1353258271,NO
1353258272,1353258303,SE
1353258304,1353258367,FI
-1353258368,1353258415,SE
+1353258368,1353258391,SE
+1353258392,1353258399,GB
+1353258400,1353258415,SE
1353258416,1353258423,DK
1353258424,1353258495,SE
1353258496,1353258503,GB
-1353258504,1353258639,SE
+1353258504,1353258519,SE
+1353258520,1353258559,GB
+1353258560,1353258639,SE
1353258640,1353258783,GB
1353258784,1353258807,SE
1353258808,1353259271,GB
@@ -30213,7 +35287,9 @@
1353266976,1353267455,GB
1353267456,1353268223,IE
1353268224,1353268479,GB
-1353268480,1353269247,BE
+1353268480,1353268599,BE
+1353268600,1353268607,GB
+1353268608,1353269247,BE
1353269248,1353270527,GB
1353270528,1353270783,IE
1353270784,1353271295,GB
@@ -30232,7 +35308,9 @@
1353272692,1353272695,GB
1353272696,1353272807,ES
1353272808,1353272815,GB
-1353272816,1353273343,ES
+1353272816,1353273023,ES
+1353273024,1353273031,GB
+1353273032,1353273343,ES
1353273344,1353273631,BE
1353273632,1353273639,ES
1353273640,1353273711,BE
@@ -30246,39 +35324,43 @@
1353274896,1353274911,GB
1353274912,1353275007,ES
1353275008,1353275015,GB
-1353275016,1353275111,ES
-1353275112,1353275119,GB
-1353275120,1353275391,ES
+1353275016,1353275391,ES
1353275392,1353277439,GB
1353277440,1353279487,CH
1353279488,1353279743,IT
1353279744,1353279751,GB
1353279752,1353279759,IT
1353279760,1353279763,GB
-1353279764,1353280079,IT
-1353280080,1353280087,GB
-1353280088,1353280119,IT
+1353279764,1353280119,IT
1353280120,1353280127,GB
1353280128,1353280143,IT
1353280144,1353280151,GB
-1353280152,1353280279,IT
-1353280280,1353280287,GB
-1353280288,1353280567,IT
-1353280568,1353280575,GB
-1353280576,1353280663,IT
-1353280664,1353280671,GB
-1353280672,1353281023,IT
+1353280152,1353280159,IT
+1353280160,1353280167,GB
+1353280168,1353280191,IT
+1353280192,1353280199,GB
+1353280200,1353280287,IT
+1353280288,1353280295,GB
+1353280296,1353280463,IT
+1353280464,1353280471,GB
+1353280472,1353280671,IT
+1353280672,1353280679,GB
+1353280680,1353281023,IT
1353281024,1353281535,BE
1353281536,1353282047,GB
-1353282048,1353282559,IT
+1353282048,1353282103,IT
+1353282104,1353282111,GB
+1353282112,1353282159,IT
+1353282160,1353282167,GB
+1353282168,1353282215,IT
+1353282216,1353282223,GB
+1353282224,1353282559,IT
1353282560,1353283071,GB
1353283072,1353283327,IT
1353283328,1353287327,GB
1353287328,1353287359,IE
1353287360,1353287679,GB
-1353287680,1353287935,IE
-1353287936,1353287943,GB
-1353287944,1353288031,IE
+1353287680,1353288031,IE
1353288032,1353288063,GB
1353288064,1353288151,IE
1353288152,1353288159,GB
@@ -30303,7 +35385,9 @@
1353288896,1353288959,IE
1353288960,1353288975,GB
1353288976,1353288991,IE
-1353288992,1353289087,GB
+1353288992,1353288999,GB
+1353289000,1353289023,IE
+1353289024,1353289087,GB
1353289088,1353289247,IE
1353289248,1353289255,GB
1353289256,1353289279,IE
@@ -30334,14 +35418,20 @@
1353298752,1353298815,SE
1353298816,1353298831,PT
1353298832,1353298839,SE
-1353298840,1353298879,GB
+1353298840,1353298847,IE
+1353298848,1353298863,SE
+1353298864,1353298879,GB
1353298880,1353298881,SE
1353298882,1353298887,GB
-1353298888,1353299647,SE
+1353298888,1353299503,SE
+1353299504,1353299511,GB
+1353299512,1353299647,SE
1353299648,1353299839,GB
-1353299840,1353299855,SE
-1353299856,1353299863,GB
-1353299864,1353300079,SE
+1353299840,1353299847,SE
+1353299848,1353299863,GB
+1353299864,1353299951,SE
+1353299952,1353299967,GB
+1353299968,1353300079,SE
1353300080,1353300095,PT
1353300096,1353300103,GB
1353300104,1353300111,SE
@@ -30362,22 +35452,30 @@
1353307136,1353307143,IT
1353307144,1353308159,GB
1353308160,1353309183,FR
-1353309184,1353310463,GB
-1353310464,1353310599,ES
+1353309184,1353310303,GB
+1353310304,1353310335,IE
+1353310336,1353310463,GB
+1353310464,1353310479,ES
+1353310480,1353310487,GB
+1353310488,1353310599,ES
1353310600,1353310607,DE
1353310608,1353310719,ES
-1353310720,1353311175,IT
+1353310720,1353311071,IT
+1353311072,1353311079,GB
+1353311080,1353311151,IT
+1353311152,1353311159,GB
+1353311160,1353311175,IT
1353311176,1353311183,ES
-1353311184,1353311199,IT
-1353311200,1353311215,GB
-1353311216,1353311231,IT
+1353311184,1353311214,IT
+1353311215,1353311223,GB
+1353311224,1353311231,IT
1353311232,1353312255,GB
1353312256,1353312767,CH
1353312768,1353312815,IT
1353312816,1353312823,GB
-1353312824,1353313111,IT
-1353313112,1353313119,GB
-1353313120,1353313191,IT
+1353312824,1353312999,IT
+1353313000,1353313007,GB
+1353313008,1353313191,IT
1353313192,1353313199,GB
1353313200,1353313279,IT
1353313280,1353313791,IE
@@ -30426,7 +35524,15 @@
1353956864,1353968639,IL
1353968640,1353968895,A2
1353968896,1353970431,IL
-1353970432,1353970687,A2
+1353970432,1353970543,A2
+1353970544,1353970547,IL
+1353970548,1353970571,A2
+1353970572,1353970575,IL
+1353970576,1353970579,A2
+1353970580,1353970587,IL
+1353970588,1353970623,A2
+1353970624,1353970639,IL
+1353970640,1353970687,A2
1353970688,1353973759,IL
1353973760,1354235903,IT
1354235904,1354301439,KW
@@ -30439,17 +35545,16 @@
1354662144,1354662151,AT
1354662152,1354662463,DE
1354662464,1354662527,AT
-1354662528,1354662591,ES
-1354662592,1354663807,DE
-1354663808,1354663808,AT
-1354663809,1354664743,DE
-1354664744,1354664751,IT
+1354662528,1354662943,DE
+1354662944,1354662975,AT
+1354662976,1354664743,DE
+1354664744,1354664751,AT
1354664752,1354664759,DE
1354664760,1354664767,IT
-1354664768,1354665215,DE
-1354665216,1354665247,ES
-1354665248,1354665943,DE
-1354665944,1354665951,IT
+1354664768,1354665923,DE
+1354665924,1354665927,AT
+1354665928,1354665943,DE
+1354665944,1354665951,AT
1354665952,1354666639,DE
1354666640,1354666650,FI
1354666651,1354666687,DE
@@ -30524,9 +35629,7 @@
1354687400,1354687407,IT
1354687408,1354687455,DE
1354687456,1354687487,IT
-1354687488,1354687759,DE
-1354687760,1354687763,CH
-1354687764,1354694655,DE
+1354687488,1354694655,DE
1354694656,1354760191,IR
1354760192,1355022335,GB
1355022336,1355284479,DK
@@ -30569,8 +35672,8 @@
1357321008,1357321015,GB
1357321016,1357321023,DK
1357321024,1357321087,KE
-1357321088,1357321215,EU
-1357321216,1357321471,GB
+1357321088,1357321215,HK
+1357321216,1357321471,EU
1357321472,1357321503,ES
1357321504,1357321727,EU
1357321728,1357321983,CY
@@ -30598,7 +35701,7 @@
1357334016,1357334271,TZ
1357334272,1357334527,CA
1357334528,1357335039,FR
-1357335040,1357335295,LB
+1357335040,1357335295,GB
1357335296,1357335551,FR
1357335552,1357335807,GB
1357335808,1357336063,KE
@@ -30613,9 +35716,10 @@
1357339648,1357339903,DZ
1357339904,1357340159,GB
1357340160,1357340415,DE
-1357340416,1357340671,LB
-1357340672,1357342719,GB
-1357342720,1357348863,EU
+1357340416,1357342719,GB
+1357342720,1357344767,EU
+1357344768,1357346815,CA
+1357346816,1357348863,EU
1357348864,1357349119,DE
1357349120,1357349375,LU
1357349376,1357349887,GB
@@ -30624,7 +35728,8 @@
1357350912,1357351167,GB
1357351168,1357351423,PL
1357351424,1357352959,GB
-1357352960,1357355007,EU
+1357352960,1357353983,CA
+1357353984,1357355007,EU
1357355008,1357355263,NL
1357355264,1357355775,FR
1357355776,1357356031,GB
@@ -30637,9 +35742,17 @@
1357358592,1357358847,DE
1357358848,1357359103,PL
1357359104,1357359999,ES
-1357360000,1357360127,EU
-1357360128,1357360255,GB
-1357360256,1357360383,EU
+1357360000,1357360015,GB
+1357360016,1357360023,IT
+1357360024,1357360031,BE
+1357360032,1357360271,GB
+1357360272,1357360279,FR
+1357360280,1357360287,GB
+1357360288,1357360319,IN
+1357360320,1357360335,GB
+1357360336,1357360343,BE
+1357360344,1357360351,LU
+1357360352,1357360383,GB
1357360384,1357360639,ES
1357360640,1357360895,GB
1357360896,1357361151,DE
@@ -30656,15 +35769,19 @@
1357366528,1357366591,BE
1357366592,1357366655,FR
1357366656,1357366719,PT
-1357366720,1357366783,EU
+1357366720,1357366783,GB
1357366784,1357366799,MD
1357366800,1357366815,ES
1357366816,1357366847,FR
1357366848,1357366863,GB
1357366864,1357366879,ES
-1357366880,1357366911,GB
-1357366912,1357367039,EU
-1357367040,1357367295,GB
+1357366880,1357366911,EU
+1357366912,1357366927,GB
+1357366928,1357366943,EU
+1357366944,1357366959,GB
+1357366960,1357366967,BE
+1357366968,1357366975,EU
+1357366976,1357367295,GB
1357367296,1357367551,FR
1357367552,1357367807,EU
1357367808,1357368063,GB
@@ -30674,13 +35791,12 @@
1357369600,1357369855,GB
1357369856,1357370111,KE
1357370112,1357370367,DE
-1357370368,1357370879,EU
+1357370368,1357370879,GB
1357370880,1357371391,LY
1357371392,1357371647,GB
1357371648,1357371903,FR
1357371904,1357372159,RU
-1357372160,1357372415,GB
-1357372416,1357372927,EU
+1357372160,1357372927,GB
1357372928,1357373183,AM
1357373184,1357373439,GB
1357373440,1357381631,EU
@@ -30729,13 +35845,15 @@
1357876224,1357876239,NO
1357876240,1357876287,EU
1357876288,1357876303,PL
-1357876304,1357876335,EU
+1357876304,1357876319,GB
+1357876320,1357876335,EU
1357876336,1357876339,PL
1357876340,1357876343,RU
1357876344,1357876383,EU
1357876384,1357876391,RU
1357876392,1357876399,PL
-1357876400,1357876415,EU
+1357876400,1357876407,DE
+1357876408,1357876415,EU
1357876416,1357876479,PL
1357876480,1357876495,SE
1357876496,1357876543,EU
@@ -30744,7 +35862,15 @@
1357876928,1357877335,DE
1357877336,1357877343,EU
1357877344,1357877759,DE
-1357877760,1357878783,EU
+1357877760,1357878271,EU
+1357878272,1357878335,CH
+1357878336,1357878399,CZ
+1357878400,1357878463,NL
+1357878464,1357878527,NO
+1357878528,1357878591,AT
+1357878592,1357878655,PL
+1357878656,1357878719,DE
+1357878720,1357878783,NL
1357878784,1357879807,DE
1357879808,1357879871,RU
1357879872,1357879935,DE
@@ -30765,25 +35891,31 @@
1357883536,1357883551,FR
1357883552,1357883583,EU
1357883584,1357883727,FR
-1357883728,1357883759,EU
+1357883728,1357883743,DE
+1357883744,1357883759,EU
1357883760,1357883775,FR
-1357883776,1357883807,EU
-1357883808,1357883903,FR
+1357883776,1357883807,RU
+1357883808,1357883839,EU
+1357883840,1357883903,FR
1357883904,1357883999,EU
1357884000,1357884031,FR
1357884032,1357884095,RU
1357884096,1357884159,EU
-1357884160,1357884423,FR
+1357884160,1357884415,GB
+1357884416,1357884423,FR
1357884424,1357884427,BE
-1357884428,1357884439,EU
+1357884428,1357884431,DE
+1357884432,1357884439,US
1357884440,1357884447,FR
1357884448,1357884511,EU
-1357884512,1357884935,FR
-1357884936,1357884943,EU
+1357884512,1357884927,FR
+1357884928,1357884935,EU
+1357884936,1357884943,GB
1357884944,1357884959,FR
1357884960,1357884991,RU
1357884992,1357885183,FR
-1357885184,1357885215,EU
+1357885184,1357885191,SE
+1357885192,1357885215,EU
1357885216,1357885247,ES
1357885248,1357885439,DE
1357885440,1357885695,FR
@@ -30791,9 +35923,7 @@
1357885952,1357886463,FR
1357886464,1357887487,US
1357887488,1357888511,FR
-1357888512,1357888703,DE
-1357888704,1357888767,EU
-1357888768,1357889023,DE
+1357888512,1357889023,DE
1357889024,1357889535,GB
1357889536,1357890815,PL
1357890816,1357890827,NL
@@ -30804,32 +35934,46 @@
1357890944,1357891327,NL
1357891328,1357891391,EU
1357891392,1357891399,NL
-1357891400,1357891423,EU
-1357891424,1357891455,NL
+1357891400,1357891455,EU
1357891456,1357891583,SE
1357891584,1357891647,EU
1357891648,1357891679,NL
1357891680,1357891711,GB
-1357891712,1357891839,NL
+1357891712,1357891839,SE
1357891840,1357892095,GB
-1357892096,1357892351,EU
+1357892096,1357892111,DE
+1357892112,1357892127,ES
+1357892128,1357892143,FR
+1357892144,1357892159,IT
+1357892160,1357892175,GB
+1357892176,1357892183,AR
+1357892184,1357892191,AU
+1357892192,1357892199,BR
+1357892200,1357892207,NL
+1357892208,1357892215,SE
+1357892216,1357892223,US
+1357892224,1357892351,EU
1357892352,1357893119,NL
1357893120,1357893375,SE
1357893376,1357893407,EU
1357893408,1357893439,SE
-1357893440,1357893503,EU
+1357893440,1357893471,IT
+1357893472,1357893503,PL
1357893504,1357893631,DE
1357893632,1357897855,EU
1357897856,1357898495,DE
1357898496,1357898751,EU
-1357898752,1357899015,DE
-1357899016,1357899023,EU
+1357898752,1357899019,DE
+1357899020,1357899023,NL
1357899024,1357899039,DE
1357899040,1357899047,EU
1357899048,1357899063,DE
1357899064,1357899071,EU
1357899072,1357899199,DE
-1357899200,1357899279,EU
+1357899200,1357899263,EU
+1357899264,1357899267,DE
+1357899268,1357899275,FR
+1357899276,1357899279,NL
1357899280,1357899287,RU
1357899288,1357899327,EU
1357899328,1357899391,PL
@@ -30851,7 +35995,8 @@
1357903872,1357904383,EU
1357904384,1357904895,DE
1357904896,1357905407,GB
-1357905408,1357905919,EU
+1357905408,1357905663,SE
+1357905664,1357905919,NL
1357905920,1357910015,LT
1357910016,1357914111,GR
1357914112,1357922303,RU
@@ -30870,7 +36015,9 @@
1357975552,1357979647,AT
1357979648,1357983743,KZ
1357983744,1357987839,RU
-1357987840,1357988495,GB
+1357987840,1357988479,GB
+1357988480,1357988483,DE
+1357988484,1357988495,GB
1357988496,1357988543,DE
1357988544,1357988551,NL
1357988552,1357988559,DE
@@ -30894,7 +36041,8 @@
1357989784,1357989791,GB
1357989792,1357989807,FR
1357989808,1357989823,GB
-1357989824,1357989839,FR
+1357989824,1357989831,NL
+1357989832,1357989839,FR
1357989840,1357989847,GB
1357989848,1357989887,FR
1357989888,1357991679,GB
@@ -30919,7 +36067,7 @@
1358008320,1358012415,BH
1358012416,1358016511,IT
1358016512,1358020607,GE
-1358020608,1358024703,DE
+1358020608,1358028799,DE
1358028800,1358032895,IT
1358032896,1358036991,GE
1358036992,1358041087,IR
@@ -30974,37 +36122,45 @@
1358223360,1358223631,GB
1358223632,1358223663,DE
1358223664,1358223671,GB
-1358223672,1358223719,DE
-1358223720,1358223775,GB
-1358223776,1358223843,DE
+1358223672,1358223687,DE
+1358223688,1358223695,GB
+1358223696,1358223719,DE
+1358223720,1358223815,GB
+1358223816,1358223843,DE
1358223844,1358223871,GB
1358223872,1358223887,NL
-1358223888,1358223911,DE
+1358223888,1358223895,DE
+1358223896,1358223903,NL
+1358223904,1358223911,DE
1358223912,1358223927,NL
-1358223928,1358223975,DE
+1358223928,1358223935,DE
+1358223936,1358223939,NL
+1358223940,1358223975,DE
1358223976,1358223991,NL
1358223992,1358223999,DE
-1358224000,1358224079,NL
-1358224080,1358224511,DE
+1358224000,1358224087,NL
+1358224088,1358224511,DE
1358224512,1358224519,BE
1358224520,1358224611,DE
1358224612,1358224651,BE
1358224652,1358224655,DE
-1358224656,1358224719,BE
-1358224720,1358224959,DE
+1358224656,1358224727,BE
+1358224728,1358224959,DE
1358224960,1358225127,IT
-1358225128,1358225407,DE
+1358225128,1358225135,DE
+1358225136,1358225183,IT
+1358225184,1358225191,DE
+1358225192,1358225199,IT
+1358225200,1358225407,DE
1358225408,1358229503,RU
-1358229504,1358229631,DE
-1358229632,1358229639,LU
-1358229640,1358230111,DE
+1358229504,1358230111,DE
1358230112,1358230115,AT
1358230116,1358230383,DE
1358230384,1358230391,TR
1358230392,1358230399,CH
1358230400,1358232863,DE
-1358232864,1358232879,IT
-1358232880,1358232903,DE
+1358232864,1358232867,IT
+1358232868,1358232903,DE
1358232904,1358232911,CH
1358232912,1358233599,DE
1358233600,1358237695,ES
@@ -31016,7 +36172,9 @@
1358242592,1358242623,BE
1358242624,1358244351,FR
1358244352,1358244607,IT
-1358244608,1358245695,FR
+1358244608,1358245503,FR
+1358245504,1358245631,BE
+1358245632,1358245695,FR
1358245696,1358245759,BE
1358245760,1358249215,FR
1358249216,1358249471,IT
@@ -31155,8 +36313,21 @@
1358475264,1358479359,GB
1358479360,1358483455,LI
1358483456,1358487551,FR
-1358487552,1358491647,SE
-1358491648,1358495743,FI
+1358487552,1358487711,SE
+1358487712,1358487727,US
+1358487728,1358487999,FR
+1358488000,1358488191,SE
+1358488192,1358488223,GB
+1358488224,1358488239,US
+1358488240,1358488255,FR
+1358488256,1358488447,SE
+1358488448,1358488479,GB
+1358488480,1358488495,US
+1358488496,1358488511,FR
+1358488512,1358491647,SE
+1358491648,1358493823,FI
+1358493824,1358493887,AX
+1358493888,1358495743,FI
1358495744,1358499839,PL
1358499840,1358503935,KZ
1358503936,1358508031,IT
@@ -31184,8 +36355,8 @@
1358602240,1358622719,RU
1358622720,1358626815,SK
1358626816,1358630911,A2
-1358630912,1358634495,US
-1358634496,1358635007,GB
+1358630912,1358632959,US
+1358632960,1358635007,GB
1358635008,1358639103,TR
1358639104,1358643199,RU
1358643200,1358647295,ES
@@ -31194,16 +36365,18 @@
1358655488,1358667775,RU
1358667776,1358668067,PT
1358668068,1358668071,GB
-1358668072,1358668271,PT
+1358668072,1358668159,PT
+1358668160,1358668175,GB
+1358668176,1358668271,PT
1358668272,1358668279,ES
1358668280,1358668359,PT
1358668360,1358668367,GB
1358668368,1358668463,PT
1358668464,1358668479,ES
1358668480,1358668495,GB
-1358668496,1358668551,PT
-1358668552,1358668575,GB
-1358668576,1358668799,PT
+1358668496,1358668535,PT
+1358668536,1358668543,GB
+1358668544,1358668799,PT
1358668800,1358668807,GB
1358668808,1358668927,PT
1358668928,1358668959,ES
@@ -31211,27 +36384,27 @@
1358669352,1358669359,GB
1358669360,1358669463,PT
1358669464,1358669471,GB
-1358669472,1358669503,PT
-1358669504,1358669519,GB
-1358669520,1358669543,PT
+1358669472,1358669543,PT
1358669544,1358669551,GB
1358669552,1358669975,PT
1358669976,1358669983,GB
-1358669984,1358669991,PT
-1358669992,1358669999,GB
-1358670000,1358670015,PT
+1358669984,1358670015,PT
1358670016,1358670023,GB
-1358670024,1358670071,PT
-1358670072,1358670079,GB
-1358670080,1358670183,PT
+1358670024,1358670183,PT
1358670184,1358670191,GB
-1358670192,1358671415,PT
+1358670192,1358670943,PT
+1358670944,1358670951,FR
+1358670952,1358671039,PT
+1358671040,1358671103,GB
+1358671104,1358671415,PT
1358671416,1358671423,GB
1358671424,1358671431,PT
1358671432,1358671439,GB
1358671440,1358671839,PT
1358671840,1358671855,ES
-1358671856,1358671967,PT
+1358671856,1358671871,PT
+1358671872,1358671903,GB
+1358671904,1358671967,PT
1358671968,1358671983,GB
1358671984,1358672479,PT
1358672480,1358672511,GB
@@ -31239,7 +36412,8 @@
1358672688,1358672703,GB
1358672704,1358673535,PT
1358673536,1358673567,US
-1358673568,1358673663,PT
+1358673568,1358673599,GB
+1358673600,1358673663,PT
1358673664,1358675967,GB
1358675968,1358676735,SE
1358676736,1358677759,DK
@@ -31295,12 +36469,17 @@
1358739136,1358739151,NL
1358739152,1358739503,SE
1358739504,1358739519,FR
-1358739520,1358740159,SE
+1358739520,1358740099,SE
+1358740100,1358740103,MY
+1358740104,1358740159,SE
1358740160,1358740175,FR
1358740176,1358740335,SE
1358740336,1358740351,GB
1358740352,1358740671,SE
-1358740672,1358740687,GB
+1358740672,1358740675,PL
+1358740676,1358740679,BG
+1358740680,1358740683,BR
+1358740684,1358740687,TR
1358740688,1358740883,SE
1358740884,1358740887,NL
1358740888,1358740927,SE
@@ -31348,7 +36527,8 @@
1358861312,1358861823,DE
1358861824,1358862335,FR
1358862336,1358862847,US
-1358862848,1358863359,DK
+1358862848,1358863103,DK
+1358863104,1358863359,CH
1358863360,1358864383,US
1358864384,1358864399,CH
1358864400,1358864407,IN
@@ -31359,7 +36539,9 @@
1358876672,1358880767,LV
1358880768,1358884863,GB
1358884864,1358888959,SE
-1358888960,1358893055,DE
+1358888960,1358889599,DE
+1358889600,1358889631,IN
+1358889632,1358893055,DE
1358893056,1358897151,RU
1358897152,1358898175,A2
1358898176,1358898239,CA
@@ -31396,28 +36578,23 @@
1358899392,1358899407,A2
1358899408,1358899415,DE
1358899416,1358899423,CD
-1358899424,1358899431,US
-1358899432,1358899455,NG
+1358899424,1358899439,A2
+1358899440,1358899455,NG
1358899456,1358899463,A2
1358899464,1358899471,US
1358899472,1358899479,SV
-1358899480,1358899583,A2
-1358899584,1358899591,IN
-1358899592,1358899599,NG
+1358899480,1358899599,A2
1358899600,1358899607,LK
1358899608,1358899615,A2
1358899616,1358899631,NG
1358899632,1358899647,NP
-1358899648,1358899654,NG
-1358899655,1358899983,A2
+1358899648,1358899983,A2
1358899984,1358899991,KY
1358899992,1358900767,A2
1358900768,1358900783,BI
1358900784,1358900959,A2
1358900960,1358900975,SL
-1358900976,1358901543,A2
-1358901544,1358901551,DE
-1358901552,1358901807,A2
+1358900976,1358901807,A2
1358901808,1358901815,CD
1358901816,1358901935,A2
1358901936,1358901951,NG
@@ -31507,18 +36684,19 @@
1359003648,1359020031,CZ
1359020032,1359036415,FR
1359036416,1359052799,GB
-1359052800,1359069183,SE
1359069184,1359101951,RU
1359101952,1359118335,GB
-1359118336,1359118655,DE
-1359118656,1359118719,NL
+1359118336,1359118591,DE
+1359118592,1359118719,NL
1359118720,1359118815,DE
1359118816,1359118831,NL
1359118832,1359120383,DE
1359120384,1359121407,DK
1359121408,1359123583,DE
1359123584,1359123711,SE
-1359123712,1359134303,DE
+1359123712,1359133311,DE
+1359133312,1359133439,AT
+1359133440,1359134303,DE
1359134304,1359134319,NL
1359134320,1359134719,DE
1359134720,1359150079,CZ
@@ -31577,18 +36755,19 @@
1359467488,1359467495,DE
1359467496,1359467647,US
1359467648,1359467775,DE
-1359467776,1359467815,US
-1359467816,1359467903,DE
-1359467904,1359468031,US
-1359468032,1359468575,DE
+1359467776,1359467839,US
+1359467840,1359467903,DE
+1359467904,1359468063,US
+1359468064,1359468575,DE
1359468576,1359468583,SG
1359468584,1359468639,DE
1359468640,1359468655,SG
1359468656,1359468671,JP
1359468672,1359468695,SG
1359468696,1359468711,DE
-1359468712,1359468743,SG
-1359468744,1359468863,DE
+1359468712,1359468751,SG
+1359468752,1359468759,AU
+1359468760,1359468863,DE
1359468864,1359468879,SG
1359468880,1359468927,DE
1359468928,1359469055,SG
@@ -31657,7 +36836,7 @@
1360056320,1360060415,SA
1360060416,1360064511,LT
1360064512,1360068607,GE
-1360068608,1360076799,RU
+1360068608,1360072703,RU
1360076800,1360084991,NL
1360084992,1360089087,GB
1360089088,1360093183,AZ
@@ -31728,7 +36907,11 @@
1360265216,1360269311,GB
1360269312,1360273407,KG
1360273408,1360281599,GB
-1360281600,1360285695,NL
+1360281600,1360281727,NL
+1360281728,1360281855,ES
+1360281856,1360282751,NL
+1360282752,1360282783,GB
+1360282784,1360285695,NL
1360285696,1360289791,DE
1360289792,1360293887,RU
1360293888,1360302079,DE
@@ -31746,6 +36929,7 @@
1360322560,1360326655,FI
1360326656,1360330751,PT
1360330752,1360334847,UA
+1360334848,1360338943,IT
1360338944,1360343039,CY
1360343040,1360347135,SA
1360347136,1360351231,GB
@@ -31753,6 +36937,7 @@
1360355328,1360359423,EG
1360359424,1360363519,AT
1360363520,1360365567,IT
+1360365568,1360367615,NL
1360367616,1360371711,IE
1360371712,1360375807,TR
1360375808,1360379903,NL
@@ -31817,7 +37002,9 @@
1360625664,1360626687,DE
1360626688,1360627199,LB
1360627200,1360627455,DE
-1360627456,1360627743,LB
+1360627456,1360627520,IQ
+1360627521,1360627711,DE
+1360627712,1360627743,LB
1360627744,1360627967,DE
1360627968,1360628095,IQ
1360628096,1360628223,LU
@@ -31853,7 +37040,9 @@
1360736256,1360740351,RU
1360740352,1360743679,GB
1360743680,1360743935,FR
-1360743936,1360752639,GB
+1360743936,1360749759,GB
+1360749760,1360749791,IM
+1360749792,1360752639,GB
1360752640,1360756735,DE
1360756736,1360760831,IT
1360760832,1360764927,RU
@@ -31898,46 +37087,33 @@
1360891648,1360891903,RU
1360891904,1360892427,CH
1360892428,1360892431,IT
-1360892432,1360892479,CH
-1360892480,1360892487,FR
-1360892488,1360892495,CH
-1360892496,1360892502,GB
-1360892503,1360892671,CH
-1360892672,1360892703,IT
-1360892704,1360892735,CH
-1360892736,1360892739,EE
-1360892740,1360892743,GB
-1360892744,1360892763,CH
-1360892764,1360892771,IT
-1360892772,1360892791,CH
+1360892432,1360892487,CH
+1360892488,1360892495,IT
+1360892496,1360892751,CH
+1360892752,1360892767,IT
+1360892768,1360892791,CH
1360892792,1360892799,IT
1360892800,1360892807,CH
-1360892808,1360892823,IT
-1360892824,1360892927,CH
-1360892928,1360893055,IT
-1360893056,1360893191,CH
-1360893192,1360893195,IT
-1360893196,1360893831,CH
-1360893832,1360893835,IT
-1360893836,1360893951,CH
-1360893952,1360894207,IT
-1360894208,1360894975,CH
-1360894976,1360895007,IT
-1360895008,1360895751,CH
-1360895752,1360895755,IT
-1360895756,1360895999,CH
+1360892808,1360892815,MR
+1360892816,1360892927,CH
+1360892928,1360893183,IT
+1360893184,1360893191,CH
+1360893192,1360893199,IT
+1360893200,1360894071,CH
+1360894072,1360894075,IT
+1360894076,1360894079,CH
+1360894080,1360894083,IT
+1360894084,1360894975,CH
+1360894976,1360894983,IT
+1360894984,1360895999,CH
1360896000,1360900095,QA
-1360900096,1360904335,IT
-1360904336,1360904343,GB
-1360904344,1360905039,IT
+1360900096,1360905039,IT
1360905040,1360905055,GB
1360905056,1360905391,IT
1360905392,1360905407,GB
1360905408,1360906687,IT
1360906688,1360906719,GB
-1360906720,1360907679,IT
-1360907680,1360907711,GB
-1360907712,1360909391,IT
+1360906720,1360909391,IT
1360909392,1360909407,GB
1360909408,1360910495,IT
1360910496,1360910511,GB
@@ -31956,10 +37132,10 @@
1360957440,1360961535,DE
1360961536,1360965631,UA
1360965632,1360977919,RU
-1360977920,1360987535,CZ
-1360987536,1360987903,GB
-1360987904,1360987919,CZ
-1360987920,1360987927,GB
+1360977920,1360987391,CZ
+1360987392,1360987455,GB
+1360987456,1360987535,CZ
+1360987536,1360987927,GB
1360987928,1360987935,CZ
1360987936,1360987983,SK
1360987984,1360987999,CZ
@@ -31968,24 +37144,17 @@
1360988048,1360988055,GB
1360988056,1360988063,SK
1360988064,1360988079,CZ
-1360988080,1360988159,GB
-1360988160,1360988415,SK
-1360988416,1360988927,CZ
-1360988928,1360989183,GB
-1360989184,1360989439,SK
-1360989440,1360989695,GB
-1360989696,1360990079,CZ
+1360988080,1360989951,GB
+1360989952,1360990079,CZ
1360990080,1360990207,GB
1360990208,1360990463,CZ
1360990464,1360990719,GB
1360990720,1360990975,CZ
-1360990976,1360991231,GB
-1360991232,1360991743,CZ
+1360990976,1360991487,GB
+1360991488,1360991743,CZ
1360991744,1360991999,GB
1360992000,1360992255,SK
-1360992256,1360992511,GB
-1360992512,1360992767,CZ
-1360992768,1360994303,GB
+1360992256,1360994303,GB
1360994304,1360998399,CZ
1360998400,1361002495,FI
1361002496,1361006591,GB
@@ -32022,7 +37191,9 @@
1361035680,1361035683,IE
1361035684,1361035687,IQ
1361035688,1361035691,GB
-1361035692,1361035715,IQ
+1361035692,1361035695,IQ
+1361035696,1361035703,NL
+1361035704,1361035715,IQ
1361035716,1361035723,GB
1361035724,1361035727,IQ
1361035728,1361035735,NL
@@ -32147,7 +37318,7 @@
1361036596,1361036599,GI
1361036600,1361036607,IQ
1361036608,1361036611,GI
-1361036612,1361036615,IQ
+1361036612,1361036615,NL
1361036616,1361036623,GB
1361036624,1361036631,IQ
1361036632,1361036635,GR
@@ -32325,7 +37496,6 @@
1361038320,1361038335,US
1361038336,1361039359,NL
1361039360,1361043455,PL
-1361043456,1361051647,NO
1361051648,1362100223,ES
1362100224,1362395135,FR
1362395136,1362395183,CH
@@ -32341,11 +37511,7 @@
1362397440,1362397503,US
1362397504,1362398463,FR
1362398464,1362398719,DE
-1362398720,1362399231,FR
-1362399232,1362399263,GB
-1362399264,1362399487,FR
-1362399488,1362400767,GB
-1362400768,1362403583,FR
+1362398720,1362403583,FR
1362403584,1362405887,DZ
1362405888,1362406143,FR
1362406144,1362407167,SV
@@ -32396,7 +37562,9 @@
1364526592,1364528639,GB
1364528640,1364528895,UA
1364528896,1364530175,GB
-1364530176,1364540671,NL
+1364530176,1364531455,NL
+1364531456,1364531711,IT
+1364531712,1364540671,NL
1364540672,1364540927,US
1364540928,1364577023,NL
1364577024,1364577279,GB
@@ -32444,7 +37612,9 @@
1364803584,1364811775,RU
1364811776,1364815871,DE
1364815872,1364819967,RU
-1364819968,1364824063,GB
+1364819968,1364823295,GB
+1364823296,1364823311,AE
+1364823312,1364824063,GB
1364824064,1364828159,SE
1364828160,1364829439,GB
1364829440,1364829487,FR
@@ -32502,7 +37672,8 @@
1364971520,1364975615,CZ
1364975616,1364979711,BJ
1364979712,1364982783,GB
-1364982784,1364983551,CH
+1364982784,1364983295,CH
+1364983296,1364983551,US
1364983552,1364983807,GB
1364983808,1364991999,DE
1364992000,1364996095,IT
@@ -32519,7 +37690,16 @@
1365004064,1365004287,GB
1365004288,1365008383,FR
1365008384,1365012479,CH
-1365012480,1365016575,FR
+1365012480,1365012735,FR
+1365012736,1365013503,DE
+1365013504,1365013631,FR
+1365013632,1365015551,DE
+1365015552,1365015839,FR
+1365015840,1365015927,DE
+1365015928,1365015935,ES
+1365015936,1365016063,DE
+1365016064,1365016079,FR
+1365016080,1365016575,DE
1365016576,1365020671,ES
1365020672,1365024767,CZ
1365024768,1365027839,DE
@@ -32627,7 +37807,9 @@
1365110784,1365114879,FR
1365114880,1365118975,BA
1365118976,1365127167,RU
-1365127168,1365130271,AT
+1365127168,1365127427,AT
+1365127428,1365127431,TR
+1365127432,1365130271,AT
1365130272,1365130303,IT
1365130304,1365130495,AT
1365130496,1365131007,IT
@@ -32637,11 +37819,7 @@
1365147648,1365155839,RU
1365155840,1365159935,SE
1365159936,1365164031,HU
-1365164032,1365166255,GB
-1365166256,1365166271,IE
-1365166272,1365166303,GB
-1365166304,1365166311,BD
-1365166312,1365172223,GB
+1365164032,1365172223,GB
1365172224,1365176319,LV
1365176320,1365180415,HU
1365180416,1365183231,DE
@@ -32654,28 +37832,37 @@
1365204992,1365209087,CZ
1365209088,1365213183,BE
1365213184,1365217279,RU
-1365217280,1365217567,GB
+1365217280,1365217551,GB
+1365217552,1365217567,US
1365217568,1365217575,PT
1365217576,1365217591,GB
1365217592,1365217599,EG
1365217600,1365217631,GB
-1365217632,1365217671,US
+1365217632,1365217663,US
+1365217664,1365217671,PH
1365217672,1365217687,IL
1365217688,1365217695,KW
1365217696,1365217703,GB
1365217704,1365217711,AU
-1365217712,1365217791,GB
+1365217712,1365217791,US
1365217792,1365217807,BD
1365217808,1365217815,US
-1365217816,1365217831,GB
+1365217816,1365217823,DK
+1365217824,1365217831,GB
1365217832,1365217839,TR
-1365217840,1365217879,GB
+1365217840,1365217847,GB
+1365217848,1365217855,BD
+1365217856,1365217871,GB
+1365217872,1365217879,BD
1365217880,1365217919,US
-1365217920,1365217975,GB
-1365217976,1365218031,US
-1365218032,1365218039,CA
-1365218040,1365218047,GB
-1365218048,1365218303,US
+1365217920,1365217927,DK
+1365217928,1365217951,BD
+1365217952,1365217975,GB
+1365217976,1365217983,US
+1365217984,1365217991,DK
+1365217992,1365218023,US
+1365218024,1365218031,DK
+1365218032,1365218303,US
1365218304,1365218311,CA
1365218312,1365218319,AR
1365218320,1365218327,ZA
@@ -32718,7 +37905,7 @@
1365219104,1365219111,SA
1365219112,1365219119,GB
1365219120,1365219135,US
-1365219136,1365219143,SA
+1365219136,1365219143,GB
1365219144,1365219159,US
1365219160,1365219167,CA
1365219168,1365219183,ES
@@ -32797,8 +37984,7 @@
1365220424,1365220431,GB
1365220432,1365220435,JO
1365220436,1365220439,US
-1365220440,1365220471,GB
-1365220472,1365220479,US
+1365220440,1365220479,GB
1365220480,1365220487,AU
1365220488,1365220523,US
1365220524,1365220527,GB
@@ -32869,15 +38055,13 @@
1369559040,1369563135,RU
1369563136,1369567231,PL
1369567232,1369571327,BG
-1369636864,1369702399,DE
+1369571328,1369636863,DE
1369702400,1369833471,BE
1369833472,1369964543,NO
1369964544,1369997311,GB
1369997312,1370030079,PL
1370030080,1370062847,BE
-1370062848,1370081279,DE
-1370081280,1370091519,EU
-1370091520,1370095615,DE
+1370062848,1370095615,DE
1370095616,1370128383,GB
1370128384,1370161151,SE
1370161152,1370187775,NL
@@ -32930,7 +38114,8 @@
1371799552,1371865087,RO
1371865088,1371930623,FI
1371930624,1371996159,LV
-1371996160,1371997183,A2
+1371996160,1371996415,NG
+1371996416,1371997183,A2
1371997184,1371997439,KE
1371997440,1371998207,NG
1371998208,1371998463,CD
@@ -33038,7 +38223,11 @@
1372147712,1372151807,BE
1372151808,1372152823,DE
1372152824,1372152831,GB
-1372152832,1372159999,DE
+1372152832,1372156063,DE
+1372156064,1372156095,GB
+1372156096,1372156719,DE
+1372156720,1372156735,GB
+1372156736,1372159999,DE
1372160000,1372164095,GB
1372164096,1372166863,DE
1372166864,1372166879,US
@@ -33126,8 +38315,8 @@
1372702992,1372703271,EU
1372703272,1372703323,DE
1372703324,1372703327,EU
-1372703328,1372703407,DE
-1372703408,1372703423,EU
+1372703328,1372703391,DE
+1372703392,1372703423,EU
1372703424,1372703487,DE
1372703488,1372703743,EU
1372703744,1372713327,DE
@@ -33140,7 +38329,7 @@
1372717056,1372749823,PL
1372749824,1372782591,DE
1372782592,1372815359,RU
-1372815360,1372848127,SE
+1372815360,1372848127,KZ
1372848128,1373110271,TR
1373110272,1373175807,SE
1373175808,1373241343,AT
@@ -33189,7 +38378,9 @@
1382039056,1382039071,DE
1382039072,1382039175,SE
1382039176,1382039191,GB
-1382039192,1382039551,SE
+1382039192,1382039271,SE
+1382039272,1382039275,GB
+1382039276,1382039551,SE
1382039552,1382055935,DE
1382055936,1382072319,FR
1382072320,1382088703,RU
@@ -33248,12 +38439,15 @@
1382182832,1382182895,DE
1382182896,1382182911,GB
1382182912,1382183167,LI
-1382183168,1382187007,DE
+1382183168,1382183423,CH
+1382183424,1382183935,LI
+1382183936,1382185031,DE
+1382185032,1382185039,SK
+1382185040,1382187007,DE
1382187008,1382191871,ES
1382191872,1382192127,VE
1382192128,1382203391,ES
-1382203392,1382204479,NL
-1382204480,1382205439,GB
+1382203392,1382205439,GB
1382205440,1382205695,EU
1382205696,1382205951,DE
1382205952,1382207743,EU
@@ -33264,40 +38458,20 @@
1382209536,1382209791,DE
1382209792,1382211071,EU
1382211072,1382211199,DE
-1382211200,1382211327,EU
-1382211328,1382211583,NL
+1382211200,1382211583,EU
1382211584,1382211711,FR
-1382211712,1382211839,EU
-1382211840,1382212095,FR
-1382212096,1382212223,EU
+1382211712,1382212223,EU
1382212224,1382212239,FR
-1382212240,1382212287,EU
-1382212288,1382212351,NL
-1382212352,1382212607,EU
+1382212240,1382212607,EU
1382212608,1382212863,FR
-1382212864,1382213183,NL
-1382213184,1382213199,EU
-1382213200,1382213375,NL
-1382213376,1382213631,EU
-1382213632,1382214079,NL
-1382214080,1382214111,GB
-1382214112,1382214879,NL
-1382214880,1382214895,GB
-1382214896,1382216831,NL
-1382216832,1382216895,GB
-1382216896,1382216959,NL
-1382216960,1382217215,GB
-1382217216,1382218399,NL
-1382218400,1382218447,GB
-1382218448,1382218455,NL
-1382218456,1382218495,GB
-1382218496,1382218623,NL
-1382218624,1382218751,GB
-1382218752,1382218815,NL
-1382218816,1382218911,GB
-1382218912,1382218959,NL
-1382218960,1382218991,GB
-1382218992,1382219775,NL
+1382212864,1382213631,EU
+1382213632,1382215679,GB
+1382215680,1382216447,NL
+1382216448,1382217727,GB
+1382217728,1382217983,NL
+1382217984,1382219007,GB
+1382219008,1382219519,NL
+1382219520,1382219775,GB
1382219776,1382223327,SE
1382223328,1382223359,FI
1382223360,1382223551,SE
@@ -33322,9 +38496,7 @@
1382233424,1382252543,SE
1382252544,1382268927,CZ
1382268928,1382285311,IR
-1382285312,1382301391,CZ
-1382301392,1382301407,SK
-1382301408,1382301695,CZ
+1382285312,1382301695,CZ
1382301696,1382318079,SE
1382318080,1382334463,RU
1382334464,1382350847,DE
@@ -33354,8 +38526,7 @@
1383073280,1383073535,KZ
1383073536,1383088127,RU
1383088128,1383096319,IS
-1383096320,1383096383,PL
-1383096384,1383096447,GB
+1383096320,1383096447,PL
1383096448,1383096575,FR
1383096576,1383096831,GB
1383096832,1383096863,FR
@@ -33363,11 +38534,15 @@
1383097088,1383097343,ES
1383097344,1383098111,GB
1383098112,1383098367,DE
-1383098368,1383099391,GB
-1383099392,1383099903,DE
-1383099904,1383099967,FR
-1383099968,1383100159,GB
-1383100160,1383100415,FR
+1383098368,1383099135,GB
+1383099136,1383099151,DE
+1383099152,1383099391,GB
+1383099392,1383099679,DE
+1383099680,1383099687,GB
+1383099688,1383099695,DE
+1383099696,1383099711,GB
+1383099712,1383099903,DE
+1383099904,1383100415,FR
1383100416,1383100831,GB
1383100832,1383100847,IE
1383100848,1383100879,GB
@@ -33375,13 +38550,12 @@
1383100896,1383103271,GB
1383103272,1383103279,ES
1383103280,1383103471,GB
-1383103472,1383103487,NL
+1383103472,1383103487,AE
1383103488,1383104015,GB
1383104016,1383104023,ES
1383104024,1383104255,GB
1383104256,1383104511,FR
1383104512,1383112703,JE
-1383112704,1383120895,GE
1383120896,1383129031,IT
1383129032,1383129039,ES
1383129040,1383129087,IT
@@ -33466,7 +38640,6 @@
1383440384,1383448575,RU
1383448576,1383456767,RS
1383456768,1383464959,UA
-1383464960,1383473151,US
1383473152,1383481343,DE
1383481344,1383481599,GB
1383481600,1383481615,US
@@ -33502,39 +38675,18 @@
1383563264,1383571455,RU
1383571456,1383579647,DE
1383579648,1383587839,IT
-1383587840,1383588415,SK
-1383588416,1383588423,CZ
-1383588424,1383588431,SK
-1383588432,1383588439,CZ
-1383588440,1383589375,SK
-1383589376,1383590143,CZ
-1383590144,1383590287,SK
-1383590288,1383590295,CZ
-1383590296,1383590367,SK
-1383590368,1383590375,CZ
-1383590376,1383590463,SK
-1383590464,1383590543,CZ
-1383590544,1383590591,SK
-1383590592,1383590655,CZ
-1383590656,1383590911,SK
-1383590912,1383591167,CZ
-1383591168,1383591935,SK
+1383587840,1383591935,SK
1383591936,1383596031,CZ
1383596032,1384120319,FR
1384120320,1384153087,NG
1384153088,1384185855,FI
-1384185856,1384187967,DE
-1384187968,1384188031,CH
-1384188032,1384189055,DE
-1384189056,1384189183,CH
+1384185856,1384189183,DE
1384189184,1384189439,AT
1384189440,1384190463,DE
1384190464,1384190719,NL
1384190720,1384190975,DE
1384190976,1384191231,DK
-1384191232,1384191359,DE
-1384191360,1384191423,AT
-1384191424,1384191999,DE
+1384191232,1384191999,DE
1384192000,1384192191,NL
1384192192,1384192255,DE
1384192256,1384192511,NL
@@ -33542,12 +38694,9 @@
1384192576,1384192639,SE
1384192640,1384192767,DE
1384192768,1384193023,BG
-1384193024,1384194047,NL
-1384194048,1384194191,DE
+1384193024,1384194191,DE
1384194192,1384194207,AT
-1384194208,1384194271,DE
-1384194272,1384194303,NL
-1384194304,1384194559,DE
+1384194208,1384194559,DE
1384194560,1384194815,NL
1384194816,1384195711,DE
1384195712,1384195743,NL
@@ -33608,15 +38757,9 @@
1384794880,1384795135,CH
1384795136,1384795279,FR
1384795280,1384795327,BE
-1384795328,1384796351,FR
-1384796352,1384796415,IT
-1384796416,1384799807,FR
+1384795328,1384799807,FR
1384799808,1384799871,CH
-1384799872,1384801023,FR
-1384801024,1384801087,SM
-1384801088,1384802495,FR
-1384802496,1384802559,IT
-1384802560,1384808447,FR
+1384799872,1384808447,FR
1384808448,1384808479,BE
1384808480,1384808735,EU
1384808736,1384808799,BE
@@ -33723,8 +38866,10 @@
1385259008,1385267199,IT
1385267200,1385275391,SE
1385275392,1385283583,IT
-1385287680,1385289727,IS
-1385289728,1385291775,NO
+1385283584,1385285631,DE
+1385285632,1385287679,GB
+1385287680,1385291648,IS
+1385291649,1385291775,NO
1385291776,1385299967,TR
1385299968,1385308159,BG
1385308160,1385309439,BE
@@ -33752,7 +38897,6 @@
1385480192,1385488383,NL
1385488384,1385496575,GB
1385496576,1385504767,SI
-1385504768,1385512959,GB
1385512960,1385521151,DE
1385521152,1385529343,AT
1385529344,1385537535,RU
@@ -33771,7 +38915,9 @@
1385559296,1385560831,DE
1385560832,1385561087,SK
1385561088,1385562111,DE
-1385562112,1385563135,ES
+1385562112,1385562367,ES
+1385562368,1385562623,EU
+1385562624,1385563135,ES
1385563136,1385563391,IE
1385563392,1385563647,EU
1385563648,1385563935,IE
@@ -33781,16 +38927,15 @@
1385564104,1385564111,IE
1385564112,1385564159,EU
1385564160,1385564231,HU
-1385564232,1385564383,EU
+1385564232,1385564235,AT
+1385564236,1385564383,EU
1385564384,1385564671,HU
1385564672,1385565183,EU
1385565184,1385565439,ES
1385565440,1385566207,EU
1385566208,1385566399,FR
1385566400,1385566431,EU
-1385566432,1385566447,FR
-1385566448,1385566455,EU
-1385566456,1385566847,FR
+1385566432,1385566847,FR
1385566848,1385566927,EU
1385566928,1385566935,FR
1385566936,1385566959,EU
@@ -33879,27 +39024,35 @@
1387790336,1388314623,IT
1388314624,1388322815,AT
1388322816,1388331007,SI
-1388331008,1388339199,NL
+1388331008,1388338176,NL
+1388338177,1388338178,FR
+1388338179,1388338180,GB
+1388338181,1388338182,DE
+1388338183,1388338186,NL
+1388338187,1388338188,IT
+1388338189,1388338190,NL
+1388338191,1388338192,PL
+1388338193,1388339199,NL
1388339200,1388347391,GB
1388347392,1388363775,DK
1388363776,1388371967,DE
1388371968,1388380159,CH
-1388380160,1388388895,IT
-1388388896,1388388927,NG
+1388380160,1388388911,IT
+1388388912,1388388927,NG
1388388928,1388388943,IT
-1388388944,1388388959,NG
-1388388960,1388388967,IT
-1388388968,1388388991,NG
-1388388992,1388389447,IT
-1388389448,1388389455,NG
-1388389456,1388389567,IT
+1388388944,1388388951,NG
+1388388952,1388388959,IT
+1388388960,1388388967,NG
+1388388968,1388389151,IT
+1388389152,1388389167,NG
+1388389168,1388389567,IT
1388389568,1388389631,NG
1388389632,1388389927,IT
1388389928,1388390015,NG
1388390016,1388390143,IT
1388390144,1388394495,NG
-1388394496,1388395519,IT
-1388395520,1388396287,NG
+1388394496,1388396031,IT
+1388396032,1388396287,NG
1388396288,1388396543,IT
1388396544,1388404735,LV
1388404736,1388412927,UA
@@ -33918,13 +39071,13 @@
1388519424,1388527615,NL
1388527616,1388535807,DE
1388535808,1388543999,GB
-1388544000,1388546191,IE
+1388544000,1388546159,IE
+1388546160,1388546167,GB
+1388546168,1388546191,IE
1388546192,1388546201,GB
1388546202,1388547583,IE
-1388547584,1388547775,GB
-1388547776,1388547871,IE
-1388547872,1388547903,GB
-1388547904,1388547935,IE
+1388547584,1388547839,GB
+1388547840,1388547935,IE
1388547936,1388547951,GB
1388547952,1388552191,IE
1388552192,1388560383,GB
@@ -33952,9 +39105,7 @@
1388587616,1388587631,EU
1388587632,1388588415,GB
1388588416,1388588543,EU
-1388588544,1388588575,US
-1388588576,1388588783,EU
-1388588784,1388588799,US
+1388588544,1388588799,US
1388588800,1388589823,GB
1388589824,1388590079,EU
1388590080,1388590127,FR
@@ -33986,8 +39137,7 @@
1388658688,1388666879,GB
1388666880,1388675071,FR
1388675072,1388675327,NL
-1388675328,1388675583,EU
-1388675584,1388676863,DE
+1388675328,1388676863,DE
1388676864,1388677119,EU
1388677120,1388677375,GB
1388677376,1388677631,EU
@@ -34007,16 +39157,22 @@
1388689648,1388691455,CH
1388691456,1388699647,NL
1388699648,1388707839,SE
-1388707840,1388708863,RU
-1388708864,1388709119,LT
-1388709120,1388712191,RU
+1388707840,1388708607,RU
+1388708608,1388709119,LT
+1388709120,1388709375,IQ
+1388709376,1388709887,RU
+1388709888,1388710143,LB
+1388710144,1388710399,RU
+1388710400,1388710911,LB
+1388710912,1388711167,IQ
+1388711168,1388711679,RU
+1388711680,1388711935,IQ
+1388711936,1388712191,RU
1388712192,1388712703,LT
1388712704,1388713215,LB
1388713216,1388713727,RU
1388713728,1388713983,LT
-1388713984,1388714239,LB
-1388714240,1388714495,LT
-1388714496,1388714751,RU
+1388713984,1388714751,RU
1388714752,1388715007,IQ
1388715008,1388715519,LT
1388715520,1388715775,LV
@@ -34050,7 +39206,11 @@
1388740736,1388741375,IE
1388741376,1388741443,GB
1388741444,1388741535,IE
-1388741536,1388741631,GB
+1388741536,1388741551,GB
+1388741552,1388741559,IE
+1388741560,1388741599,GB
+1388741600,1388741615,IE
+1388741616,1388741631,GB
1388741632,1388741659,IE
1388741660,1388741723,GB
1388741724,1388741745,IE
@@ -34075,11 +39235,25 @@
1388742656,1388742719,GB
1388742720,1388742731,IE
1388742732,1388742735,IR
-1388742736,1388743043,IE
-1388743044,1388743055,GB
-1388743056,1388743439,IE
-1388743440,1388743451,GB
-1388743452,1388743919,IE
+1388742736,1388742783,IE
+1388742784,1388742847,GB
+1388742848,1388743023,IE
+1388743024,1388743035,GB
+1388743036,1388743047,IE
+1388743048,1388743055,GB
+1388743056,1388743087,IE
+1388743088,1388743099,GB
+1388743100,1388743343,IE
+1388743344,1388743351,GB
+1388743352,1388743359,IE
+1388743360,1388743375,GB
+1388743376,1388743443,IE
+1388743444,1388743451,GB
+1388743452,1388743555,IE
+1388743556,1388743559,GB
+1388743560,1388743571,IE
+1388743572,1388743583,GB
+1388743584,1388743919,IE
1388743920,1388743935,GB
1388743936,1388744087,IE
1388744088,1388744095,GB
@@ -34091,9 +39265,7 @@
1388744912,1388744915,GB
1388744916,1388745155,IE
1388745156,1388745159,GB
-1388745160,1388745215,IE
-1388745216,1388745343,GB
-1388745344,1388745499,IE
+1388745160,1388745499,IE
1388745500,1388745503,GB
1388745504,1388745559,IE
1388745560,1388745563,GB
@@ -34104,8 +39276,8 @@
1388745728,1388745911,IE
1388745912,1388745919,GB
1388745920,1388745927,IE
-1388745928,1388745935,GB
-1388745936,1388746155,IE
+1388745928,1388745931,GB
+1388745932,1388746155,IE
1388746156,1388746159,GB
1388746160,1388746175,IE
1388746176,1388746239,GB
@@ -34121,11 +39293,11 @@
1388746960,1388746975,GB
1388746976,1388747083,IE
1388747084,1388747087,GB
-1388747088,1388747551,IE
-1388747552,1388747555,GB
+1388747088,1388747543,IE
+1388747544,1388747555,GB
1388747556,1388747575,IE
-1388747576,1388747583,GB
-1388747584,1388747671,IE
+1388747576,1388747647,GB
+1388747648,1388747671,IE
1388747672,1388747675,GB
1388747676,1388747783,IE
1388747784,1388747791,GB
@@ -34133,9 +39305,7 @@
1388747836,1388747839,GB
1388747840,1388747859,IE
1388747860,1388747875,GB
-1388747876,1388747891,IE
-1388747892,1388747895,GB
-1388747896,1388747983,IE
+1388747876,1388747983,IE
1388747984,1388747987,GB
1388747988,1388747999,IE
1388748000,1388748031,GB
@@ -34151,11 +39321,23 @@
1388765184,1388773375,GB
1388773376,1388781567,NO
1388781568,1388789759,ES
-1388789760,1388797951,NL
+1388789760,1388794943,NL
+1388794944,1388794959,GB
+1388794960,1388795343,NL
+1388795344,1388795359,GB
+1388795360,1388796559,NL
+1388796560,1388796575,GB
+1388796576,1388796679,NL
+1388796680,1388796687,GB
+1388796688,1388796783,NL
+1388796784,1388796799,GB
+1388796800,1388797951,NL
1388797952,1388806143,RU
1388806144,1388807679,DE
1388807680,1388807711,BZ
-1388807712,1388814335,DE
+1388807712,1388808255,DE
+1388808256,1388808283,BZ
+1388808284,1388814335,DE
1388814336,1388815103,AX
1388815104,1388815231,FI
1388815232,1388818687,AX
@@ -34179,67 +39361,54 @@
1389166592,1389199359,PS
1389199360,1389199615,A2
1389199616,1389199647,IR
-1389199648,1389203391,A2
-1389203392,1389203455,IR
-1389203456,1389203487,IQ
-1389203488,1389203519,A2
-1389203520,1389203551,IQ
+1389199648,1389200383,A2
+1389200384,1389200639,AE
+1389200640,1389203551,A2
1389203552,1389203567,LB
-1389203568,1389203583,A2
-1389203584,1389203615,IQ
-1389203616,1389203743,A2
+1389203568,1389203743,A2
1389203744,1389203775,IQ
1389203776,1389203967,A2
1389203968,1389203999,LY
1389204000,1389204223,A2
1389204224,1389204255,IQ
-1389204256,1389204287,A2
-1389204288,1389204303,SA
-1389204304,1389204799,A2
+1389204256,1389204799,A2
1389204800,1389204863,IQ
1389204864,1389204879,A2
1389204880,1389204895,IQ
-1389204896,1389205631,A2
-1389205632,1389205759,IR
+1389204896,1389205247,A2
+1389205248,1389205503,AF
+1389205504,1389205631,A2
+1389205632,1389205759,DE
1389205760,1389205791,A2
-1389205792,1389205935,IR
-1389205936,1389205999,A2
-1389206000,1389206015,IR
-1389206016,1389206047,IQ
-1389206048,1389206143,A2
+1389205792,1389205919,IR
+1389205920,1389206143,A2
1389206144,1389206175,LY
1389206176,1389206271,A2
1389206272,1389206656,IR
-1389206657,1389206719,A2
-1389206720,1389207039,IR
-1389207040,1389207295,LB
-1389207296,1389207359,A2
-1389207360,1389207391,SA
-1389207392,1389207487,IR
+1389206657,1389206783,A2
+1389206784,1389207039,DE
+1389207040,1389207391,A2
+1389207392,1389207423,IR
+1389207424,1389207487,DE
1389207488,1389207519,A2
1389207520,1389207551,IR
-1389207552,1389209087,A2
-1389209088,1389209343,IR
-1389209344,1389209887,A2
+1389207552,1389209887,A2
1389209888,1389209903,IQ
-1389209904,1389210127,A2
-1389210128,1389210207,IQ
-1389210208,1389210223,A2
-1389210224,1389210255,IR
-1389210256,1389210271,A2
+1389209904,1389210143,A2
+1389210144,1389210207,IQ
+1389210208,1389210271,A2
1389210272,1389210303,IQ
-1389210304,1389210335,IR
-1389210336,1389210623,A2
+1389210304,1389210623,A2
1389210624,1389210655,IQ
-1389210656,1389210687,IR
+1389210656,1389210687,A2
1389210688,1389210719,IQ
1389210720,1389210767,A2
1389210768,1389210783,IQ
1389210784,1389210815,A2
-1389210816,1389210879,IQ
-1389210880,1389211135,A2
-1389211136,1389211183,IQ
-1389211184,1389211199,A2
+1389210816,1389210863,IQ
+1389210864,1389211135,A2
+1389211136,1389211151,IQ
+1389211152,1389211199,A2
1389211200,1389211263,IQ
1389211264,1389211343,A2
1389211344,1389211359,LY
@@ -34251,108 +39420,46 @@
1389211520,1389211535,IQ
1389211536,1389211567,A2
1389211568,1389211647,IQ
-1389211648,1389211719,A2
-1389211720,1389211727,IR
-1389211728,1389212159,A2
+1389211648,1389212159,A2
1389212160,1389212415,KW
1389212416,1389212671,A2
1389212672,1389212767,IQ
1389212768,1389212927,A2
1389212928,1389212991,IR
-1389212992,1389213055,A2
-1389213056,1389213087,IR
+1389212992,1389213087,A2
1389213088,1389213119,IQ
-1389213120,1389213183,A2
-1389213184,1389213199,IQ
-1389213200,1389213207,A2
+1389213120,1389213207,A2
1389213208,1389213215,LY
1389213216,1389213311,A2
1389213312,1389213343,LY
1389213344,1389214719,A2
1389214720,1389215743,LY
1389215744,1389217791,AF
-1389217792,1389218303,A2
+1389217792,1389218047,A2
+1389218048,1389218303,AE
1389218304,1389219839,AF
-1389219840,1389220095,A2
-1389220096,1389220143,SA
-1389220144,1389220191,A2
+1389219840,1389220191,A2
1389220192,1389220207,IQ
-1389220208,1389220223,IR
-1389220224,1389220479,A2
-1389220480,1389220495,IQ
-1389220496,1389220575,A2
-1389220576,1389220591,IQ
-1389220592,1389220607,A2
-1389220608,1389220639,SA
-1389220640,1389220671,A2
-1389220672,1389220687,IQ
-1389220688,1389220703,SA
-1389220704,1389220735,A2
-1389220736,1389220751,IQ
-1389220752,1389220767,SA
-1389220768,1389220895,A2
-1389220896,1389220927,SA
-1389220928,1389220959,A2
-1389220960,1389220975,IQ
-1389220976,1389221119,A2
-1389221120,1389221631,LY
-1389221632,1389221887,A2
-1389221888,1389222399,SA
-1389222400,1389222495,A2
+1389220208,1389220911,A2
+1389220912,1389220927,SA
+1389220928,1389222495,A2
1389222496,1389222511,SA
1389222512,1389222543,A2
1389222544,1389222559,LY
1389222560,1389222591,SA
-1389222592,1389222607,IQ
-1389222608,1389222687,A2
-1389222688,1389222703,IR
-1389222704,1389222719,SA
-1389222720,1389222751,IQ
-1389222752,1389222799,A2
-1389222800,1389222815,SA
-1389222816,1389222847,A2
-1389222848,1389222879,SA
-1389222880,1389222911,A2
-1389222912,1389223167,SA
-1389223168,1389223175,LY
-1389223176,1389223183,A2
-1389223184,1389223215,SA
-1389223216,1389223231,A2
-1389223232,1389223263,SA
-1389223264,1389223327,IQ
-1389223328,1389223423,A2
-1389223424,1389223471,SA
-1389223472,1389223487,IQ
-1389223488,1389223519,LY
-1389223520,1389223679,A2
+1389222592,1389223679,A2
1389223680,1389224191,DE
-1389224192,1389224447,SA
-1389224448,1389224511,IR
-1389224512,1389224543,A2
-1389224544,1389224559,IR
-1389224560,1389224575,SA
-1389224576,1389225215,A2
-1389225216,1389225471,SA
-1389225472,1389225535,A2
-1389225536,1389225599,IQ
+1389224192,1389225583,A2
+1389225584,1389225599,IQ
1389225600,1389225983,A2
1389225984,1389226239,AE
1389226240,1389226495,A2
1389226496,1389227775,AE
1389227776,1389227791,IQ
-1389227792,1389227839,A2
-1389227840,1389227855,SA
-1389227856,1389228031,A2
-1389228032,1389228047,IQ
-1389228048,1389228063,A2
-1389228064,1389228079,IQ
-1389228080,1389228303,A2
-1389228304,1389228319,IQ
-1389228320,1389228351,A2
+1389227792,1389228351,A2
1389228352,1389228415,AE
1389228416,1389228479,LB
-1389228480,1389228799,A2
-1389228800,1389229055,LY
+1389228480,1389229055,A2
1389229056,1389231615,AE
1389231616,1389231871,A2
1389231872,1389232127,SA
@@ -34392,7 +39499,8 @@
1389265576,1389265591,SC
1389265592,1389265598,CG
1389265599,1389265599,A2
-1389265600,1389265663,SO
+1389265600,1389265639,US
+1389265640,1389265663,SO
1389265664,1389265791,ZA
1389265792,1389265807,A2
1389265808,1389265823,CA
@@ -34578,12 +39686,25 @@
1389559040,1389559103,CH
1389559104,1389559743,DE
1389559744,1389559807,CH
-1389559808,1389562879,DE
-1389562880,1389563135,IT
+1389559808,1389561343,DE
+1389561344,1389561407,IT
+1389561408,1389561471,DE
+1389561472,1389561599,IT
+1389561600,1389562367,DE
+1389562368,1389563135,IT
1389563136,1389563391,DE
1389563392,1389563647,IT
-1389563648,1389576191,DE
+1389563648,1389563903,US
+1389563904,1389564159,IT
+1389564160,1389564415,DE
+1389564416,1389564671,IT
+1389564672,1389565183,DE
+1389565184,1389565695,IT
+1389565696,1389566975,DE
+1389566976,1389567231,VN
+1389567232,1389576191,DE
1389576192,1389592575,GB
+1389592576,1389608959,GE
1389608960,1389625343,DK
1389625344,1389641727,DE
1389641728,1389658111,JO
@@ -34593,13 +39714,16 @@
1389707264,1389723647,IT
1389723648,1389756415,ES
1389756416,1389772799,SE
-1389772800,1389780991,SI
+1389772800,1389778431,SI
+1389778432,1389778943,CA
+1389778944,1389780991,RS
1389780992,1389782527,HR
1389782528,1389782543,SI
1389782544,1389782559,HR
1389782560,1389783039,SI
-1389783040,1389784063,BA
-1389784064,1389788671,SI
+1389783040,1389785087,BA
+1389785088,1389787135,MK
+1389787136,1389788671,SI
1389788672,1389789183,RS
1389789184,1389805567,PL
1389805568,1389821951,US
@@ -34660,7 +39784,6 @@
1398886400,1398888447,CH
1398888448,1398890495,GB
1398890496,1398892543,DK
-1398892544,1398894591,UA
1398894592,1398896639,DE
1398896640,1398898687,CH
1398898688,1398931455,ES
@@ -34712,14 +39835,12 @@
1399717888,1399848959,AE
1399848960,1400111103,FR
1400111104,1400373247,NL
-1400373248,1400635391,DE
-1400635392,1400700927,EU
-1400700928,1400705279,DE
-1400705280,1400706047,EU
-1400706048,1400707071,DE
-1400707072,1400709119,EU
-1400709120,1400710143,DE
-1400710144,1400710399,EU
+1400373248,1400705279,DE
+1400705280,1400705791,EU
+1400705792,1400708607,DE
+1400708608,1400709120,EU
+1400709121,1400710142,DE
+1400710143,1400710399,EU
1400710400,1400712191,DE
1400712192,1400712447,EU
1400712448,1400712703,DE
@@ -34750,7 +39871,9 @@
1401264128,1401264903,DE
1401264904,1401265151,EU
1401265152,1401265919,DE
-1401265920,1401266175,EU
+1401265920,1401265951,EU
+1401265952,1401265983,DE
+1401265984,1401266175,EU
1401266176,1401273599,DE
1401273600,1401273727,EU
1401273728,1401274367,DE
@@ -34852,50 +39975,109 @@
1401667584,1401683967,IT
1401683968,1401684067,SE
1401684068,1401684071,NO
-1401684072,1401684479,SE
+1401684072,1401684075,DE
+1401684076,1401684479,SE
1401684480,1401684511,DK
-1401684512,1401684543,SE
+1401684512,1401684515,DE
+1401684516,1401684543,SE
1401684544,1401684607,DK
1401684608,1401684671,SE
1401684672,1401684703,DK
1401684704,1401684731,SE
1401684732,1401684735,DK
1401684736,1401684755,NO
-1401684756,1401684767,SE
+1401684756,1401684759,SE
+1401684760,1401684763,DE
+1401684764,1401684767,SE
1401684768,1401684895,NO
-1401684896,1401686015,SE
+1401684896,1401684995,SE
+1401684996,1401684999,DE
+1401685000,1401686015,SE
1401686016,1401686059,GB
-1401686060,1401686063,SE
+1401686060,1401686063,DE
1401686064,1401686143,GB
1401686144,1401686223,SE
1401686224,1401686271,GB
1401686272,1401686287,NL
-1401686288,1401686335,SE
+1401686288,1401686291,DE
+1401686292,1401686335,SE
1401686336,1401686399,NL
1401686400,1401686911,SE
1401686912,1401686927,DE
-1401686928,1401691519,SE
+1401686928,1401686943,SE
+1401686944,1401686947,DE
+1401686948,1401691519,SE
1401691520,1401691535,DE
1401691536,1401695263,SE
1401695264,1401695267,GB
-1401695268,1401697815,SE
+1401695268,1401695271,SE
+1401695272,1401695275,GB
+1401695276,1401695279,DE
+1401695280,1401697815,SE
1401697816,1401697823,DE
1401697824,1401698223,SE
1401698224,1401698227,GB
-1401698228,1401708543,SE
+1401698228,1401698231,DE
+1401698232,1401703951,SE
+1401703952,1401703955,DE
+1401703956,1401704511,SE
+1401704512,1401704515,DE
+1401704516,1401705983,SE
+1401705984,1401705987,DE
+1401705988,1401708543,SE
1401708544,1401709055,FR
1401709056,1401709311,SE
1401709312,1401709567,GB
-1401709568,1401714047,SE
+1401709568,1401711615,SE
+1401711616,1401711647,GB
+1401711648,1401711679,DE
+1401711680,1401711711,NL
+1401711712,1401711743,ES
+1401711744,1401711775,DK
+1401711776,1401711807,IT
+1401711808,1401711839,US
+1401711840,1401711871,NL
+1401711872,1401711903,GB
+1401711904,1401711935,DE
+1401711936,1401711967,NL
+1401711968,1401711999,ES
+1401712000,1401712031,DK
+1401712032,1401712063,CH
+1401712064,1401712095,FR
+1401712096,1401712127,NL
+1401712128,1401712159,GB
+1401712160,1401712191,DE
+1401712192,1401712223,SE
+1401712224,1401712255,ES
+1401712256,1401712287,DK
+1401712288,1401712319,SE
+1401712320,1401712351,IT
+1401712352,1401712383,DE
+1401712384,1401712415,GB
+1401712416,1401712447,DE
+1401712448,1401712479,NL
+1401712480,1401712511,ES
+1401712512,1401712543,SE
+1401712544,1401712575,US
+1401712576,1401712607,GB
+1401712608,1401712639,NL
+1401712640,1401714047,SE
1401714048,1401714063,FR
-1401714064,1401715455,SE
+1401714064,1401715403,SE
+1401715404,1401715407,DE
+1401715408,1401715455,SE
1401715456,1401715459,US
1401715460,1401717759,SE
1401717760,1401718015,NL
1401718016,1401719935,SE
1401719936,1401719951,DK
1401719952,1401719955,GB
-1401719956,1401727743,SE
+1401719956,1401719959,SE
+1401719960,1401719963,GB
+1401719964,1401719967,DE
+1401719968,1401726783,SE
+1401726784,1401726787,DE
+1401726788,1401727743,SE
1401727744,1401727999,GB
1401728000,1401728335,SE
1401728336,1401728351,NL
@@ -34926,32 +40108,43 @@
1401745920,1401745935,IT
1401745936,1401745959,SE
1401745960,1401745967,US
-1401745968,1401745983,SE
+1401745968,1401745971,MY
+1401745972,1401745975,NL
+1401745976,1401745983,SE
1401745984,1401745999,NL
1401746000,1401746015,ES
1401746016,1401746019,GB
-1401746020,1401746175,SE
+1401746020,1401746023,SE
+1401746024,1401746027,DE
+1401746028,1401746175,SE
1401746176,1401746191,DK
1401746192,1401746215,SE
-1401746216,1401746223,GB
+1401746216,1401746223,BG
1401746224,1401746239,SE
1401746240,1401746255,NL
1401746256,1401746271,ES
1401746272,1401746279,GB
-1401746280,1401746431,SE
+1401746280,1401746283,SE
+1401746284,1401746287,US
+1401746288,1401746291,DE
+1401746292,1401746431,SE
1401746432,1401746447,NL
1401746448,1401746467,SE
1401746468,1401746471,NL
-1401746472,1401746487,GB
+1401746472,1401746479,US
+1401746480,1401746487,GB
1401746488,1401746495,SE
1401746496,1401746511,NL
1401746512,1401746527,ES
-1401746528,1401746623,SE
+1401746528,1401746531,DE
+1401746532,1401746623,SE
1401746624,1401746639,DE
1401746640,1401746655,SE
1401746656,1401746687,IE
1401746688,1401746703,NO
-1401746704,1401746751,SE
+1401746704,1401746719,SE
+1401746720,1401746723,DE
+1401746724,1401746751,SE
1401746752,1401746767,NL
1401746768,1401746783,ES
1401746784,1401746879,SE
@@ -34961,11 +40154,15 @@
1401746960,1401747007,SE
1401747008,1401747023,NL
1401747024,1401747039,ES
-1401747040,1401747135,SE
+1401747040,1401747043,DE
+1401747044,1401747135,SE
1401747136,1401747151,DE
1401747152,1401747199,SE
1401747200,1401747215,IT
-1401747216,1401747279,SE
+1401747216,1401747235,SE
+1401747236,1401747239,US
+1401747240,1401747243,DE
+1401747244,1401747279,SE
1401747280,1401747295,ES
1401747296,1401747391,SE
1401747392,1401747407,DE
@@ -34974,7 +40171,9 @@
1401747488,1401747495,DK
1401747496,1401747499,SE
1401747500,1401747503,GB
-1401747504,1401747647,SE
+1401747504,1401747583,SE
+1401747584,1401747587,DE
+1401747588,1401747647,SE
1401747648,1401747663,DE
1401747664,1401747711,SE
1401747712,1401747967,FR
@@ -34987,7 +40186,10 @@
1401759232,1401759487,GB
1401759488,1401760255,DE
1401760256,1401760767,SK
-1401760768,1401765887,DE
+1401760768,1401765247,DE
+1401765248,1401765375,NL
+1401765376,1401765759,DE
+1401765760,1401765887,NL
1401765888,1401782271,IE
1401782272,1401815039,FR
1401815040,1401817087,SE
@@ -35041,7 +40243,6 @@
1401927680,1401929727,NL
1401929728,1401931775,RU
1401931776,1401933823,UA
-1401933824,1401935871,PL
1401935872,1401937919,FI
1401937920,1401939967,GB
1401939968,1401942015,UA
@@ -35051,7 +40252,9 @@
1401962496,1401978879,PL
1401978880,1401995263,PT
1401995264,1402011647,CH
-1402011648,1402028031,SE
+1402011648,1402027823,SE
+1402027824,1402027831,GB
+1402027832,1402028031,SE
1402028032,1402044415,FR
1402044416,1402060799,PL
1402060800,1402068159,FI
@@ -35139,72 +40342,94 @@
1403518976,1403535359,CY
1403535360,1403551743,PL
1403551744,1403568127,SK
-1403568128,1403580159,SE
+1403568128,1403573247,SE
+1403573248,1403573503,ES
+1403573504,1403574783,SE
+1403574784,1403575039,IT
+1403575040,1403576063,SE
+1403576064,1403576319,DE
+1403576320,1403578879,SE
+1403578880,1403579135,DK
+1403579136,1403580159,SE
1403580160,1403580415,GB
-1403580416,1403584511,SE
+1403580416,1403581951,SE
+1403581952,1403582207,US
+1403582208,1403584511,SE
1403584512,1403600895,DE
1403600896,1403601519,FR
1403601520,1403601535,MC
1403601536,1403617279,FR
1403617280,1403633663,DE
1403633664,1403650047,RU
-1403650048,1403655935,DE
+1403650048,1403651647,A2
+1403651648,1403651663,DE
+1403651664,1403651727,A2
+1403651728,1403651743,DE
+1403651744,1403651807,A2
+1403651808,1403651831,DE
+1403651832,1403651839,A2
+1403651840,1403652095,DE
+1403652096,1403652319,A2
+1403652320,1403652351,DE
+1403652352,1403655935,A2
1403655936,1403655943,IR
-1403655944,1403656703,DE
+1403655944,1403656703,A2
1403656704,1403656959,IR
-1403656960,1403658495,DE
+1403656960,1403658495,A2
1403658496,1403658527,IR
1403658528,1403658559,KW
-1403658560,1403658847,DE
+1403658560,1403658847,A2
1403658848,1403658879,IR
-1403658880,1403658911,DE
+1403658880,1403658911,A2
1403658912,1403658975,IR
-1403658976,1403660735,DE
+1403658976,1403660735,A2
1403660736,1403660799,IR
-1403660800,1403661183,DE
+1403660800,1403661183,A2
1403661184,1403661215,IR
1403661216,1403661279,AE
1403661280,1403661310,IR
-1403661311,1403661631,DE
+1403661311,1403661631,A2
1403661632,1403661663,IR
-1403661664,1403661727,DE
+1403661664,1403661727,A2
1403661728,1403661759,IR
-1403661760,1403661887,DE
+1403661760,1403661887,A2
1403661888,1403661919,IR
-1403661920,1403661951,DE
+1403661920,1403661951,A2
1403661952,1403661983,IR
-1403661984,1403662015,DE
+1403661984,1403662015,A2
1403662016,1403662047,IR
-1403662048,1403662111,DE
+1403662048,1403662111,A2
1403662112,1403662143,IR
-1403662144,1403662175,DE
+1403662144,1403662175,A2
1403662176,1403662207,AE
-1403662208,1403662271,DE
+1403662208,1403662271,A2
1403662272,1403662303,AE
-1403662304,1403662495,DE
+1403662304,1403662495,A2
1403662496,1403662527,IR
-1403662528,1403662655,DE
+1403662528,1403662655,A2
1403662656,1403662687,IR
-1403662688,1403662815,DE
+1403662688,1403662815,A2
1403662816,1403662911,IR
-1403662912,1403662943,DE
+1403662912,1403662943,A2
1403662944,1403662975,AE
1403662976,1403663039,IR
-1403663040,1403663135,DE
+1403663040,1403663135,A2
1403663136,1403663199,AE
-1403663200,1403663359,DE
+1403663200,1403663359,A2
1403663360,1403663487,IR
-1403663488,1403663511,DE
+1403663488,1403663511,A2
1403663512,1403663519,IR
-1403663520,1403663527,DE
+1403663520,1403663527,A2
1403663528,1403663535,IQ
-1403663536,1403663567,DE
+1403663536,1403663567,A2
1403663568,1403663575,AE
-1403663576,1403663589,DE
+1403663576,1403663589,A2
1403663590,1403663590,IR
-1403663591,1403664919,DE
+1403663591,1403664919,A2
1403664920,1403664927,TZ
-1403664928,1403666431,DE
+1403664928,1403665151,A2
+1403665152,1403665183,DE
+1403665184,1403666431,A2
1403666432,1403682815,GB
1403682816,1403688959,A2
1403688960,1403692031,GB
@@ -35230,10 +40455,15 @@
1403994112,1404010495,AT
1404010496,1404026879,PL
1404026880,1404043263,ES
-1404043264,1404076031,SE
+1404043264,1404045311,EE
+1404045312,1404051455,SE
+1404051456,1404059647,KZ
+1404059648,1404076031,NO
1404076032,1404084223,DE
1404084224,1404092415,NO
-1404092416,1404184063,SE
+1404092416,1404116991,SE
+1404116992,1404125183,NO
+1404125184,1404184063,SE
1404184064,1404184575,NO
1404184576,1404186623,SE
1404186624,1404187647,NO
@@ -35270,28 +40500,40 @@
1404232704,1404233215,CH
1404233216,1404234239,SE
1404234240,1404235775,HR
-1404235776,1404305407,SE
+1404235776,1404256255,SE
+1404256256,1404305407,RU
1404305408,1404321791,NL
-1404321792,1404379135,SE
+1404321792,1404338175,RU
+1404338176,1404379135,SE
1404379136,1404383231,AT
1404383232,1404387327,SE
1404387328,1404395519,DE
1404395520,1404403711,SE
1404403712,1404411903,NL
-1404411904,1404645375,SE
+1404411904,1404420095,SE
+1404420096,1404436479,RU
+1404436480,1404575743,SE
+1404575744,1404583935,HR
+1404583936,1404600319,KZ
+1404600320,1404645375,SE
1404645376,1404645887,HR
1404645888,1404764159,SE
1404764160,1404768511,NL
1404768512,1404768767,SE
1404768768,1404769279,NL
1404769280,1404770303,SE
-1404770304,1404772351,NL
-1404772352,1404802047,SE
+1404770304,1404780543,NL
+1404780544,1404796927,SE
+1404796928,1404801023,EE
+1404801024,1404802047,SE
1404802048,1404803071,EE
1404803072,1404804095,LV
1404804096,1404805119,SE
1404805120,1404813311,AT
-1404813312,1404829695,SE
+1404813312,1404815871,EE
+1404815872,1404816383,LT
+1404816384,1404821503,NL
+1404821504,1404829695,SE
1404829696,1404870655,RU
1404870656,1404872703,LT
1404872704,1404874751,SE
@@ -35299,14 +40541,16 @@
1404875776,1404876799,LT
1404876800,1404895231,SE
1404895232,1404927999,DE
-1404928000,1404952575,SE
+1404928000,1404944383,SE
+1404944384,1404952575,DE
1404952576,1404960767,NL
1404960768,1405050879,SE
1405050880,1405059071,AT
1405059072,1405063167,SE
1405063168,1405067263,NO
1405067264,1405075455,DE
-1405075456,1405091839,SE
+1405075456,1405083647,NL
+1405083648,1405091839,SE
1405091840,1406140415,FR
1406140416,1406205951,CZ
1406205952,1406271487,SE
@@ -35339,7 +40583,9 @@
1406716928,1406717439,AT
1406717440,1406717695,NL
1406717696,1406717951,DE
-1406717952,1406719487,GB
+1406717952,1406718015,GB
+1406718016,1406718019,AT
+1406718020,1406719487,GB
1406719488,1406719743,AT
1406719744,1406719999,GB
1406720000,1406721023,AT
@@ -35380,6 +40626,7 @@
1406763008,1406771199,BE
1406771200,1406779391,GB
1406779392,1406787583,RU
+1406787584,1406795775,ES
1406795776,1406803967,GB
1406803968,1406812159,DE
1406812160,1406820351,SE
@@ -35401,15 +40648,14 @@
1406935040,1406951423,RU
1406951424,1406959615,PL
1406959616,1406964287,DE
-1406964288,1406964319,NL
-1406964320,1406964327,DE
-1406964328,1406964351,NL
+1406964288,1406964351,NL
1406964352,1406964735,DE
1406964736,1406964927,US
1406964928,1406967295,DE
1406967296,1406967327,GB
1406967328,1406967343,NL
-1406967344,1406967807,DE
+1406967344,1406967359,GB
+1406967360,1406967807,DE
1406967808,1406975999,RU
1406976000,1406984191,IE
1406984192,1407000575,RU
@@ -35425,9 +40671,7 @@
1407049728,1407057919,DE
1407057920,1407066111,RU
1407066112,1407074303,LU
-1407074304,1407082623,RU
-1407082624,1407082639,DE
-1407082640,1407089663,RU
+1407074304,1407089663,RU
1407089664,1407090687,US
1407090688,1407098879,CH
1407098880,1407107071,BG
@@ -35436,9 +40680,20 @@
1407123456,1407131647,SE
1407131648,1407139839,NL
1407139840,1407148031,DE
-1407148032,1407152903,GB
+1407148032,1407148295,GB
+1407148296,1407148303,SE
+1407148304,1407149695,GB
+1407149696,1407149759,CY
+1407149760,1407151615,GB
+1407151616,1407151871,SE
+1407151872,1407152259,GB
+1407152260,1407152263,IE
+1407152264,1407152287,US
+1407152288,1407152903,GB
1407152904,1407152927,NL
-1407152928,1407156223,GB
+1407152928,1407154711,GB
+1407154712,1407154719,SE
+1407154720,1407156223,GB
1407156224,1407164415,LV
1407164416,1407172607,PT
1407172608,1407180799,GB
@@ -35455,16 +40710,13 @@
1407516728,1407516735,NG
1407516736,1407516743,UG
1407516744,1407516751,LR
-1407516752,1407516759,SL
-1407516760,1407516767,A2
+1407516752,1407516767,A2
1407516768,1407516775,AO
1407516776,1407516783,A2
1407516784,1407516791,NG
1407516792,1407516807,A2
1407516808,1407516815,NG
-1407516816,1407516831,A2
-1407516832,1407516839,NG
-1407516840,1407516847,A2
+1407516816,1407516847,A2
1407516848,1407516855,NG
1407516856,1407516863,A2
1407516864,1407516871,NG
@@ -35472,12 +40724,28 @@
1407516880,1407516895,NG
1407516896,1407516911,A2
1407516912,1407516927,NG
-1407516928,1407517183,ZW
+1407516928,1407516935,A2
+1407516936,1407516951,NG
+1407516952,1407516959,A2
+1407516960,1407516967,NG
+1407516968,1407516975,A2
+1407516976,1407516983,GN
+1407516984,1407516991,KE
+1407516992,1407516999,CD
+1407517000,1407517023,A2
+1407517024,1407517031,GQ
+1407517032,1407517039,NG
+1407517040,1407517047,A2
+1407517048,1407517055,GQ
+1407517056,1407517151,A2
+1407517152,1407517159,CD
+1407517160,1407517167,ML
+1407517168,1407517175,A2
+1407517176,1407517183,NG
1407517184,1407517311,GB
1407517312,1407517383,A2
1407517384,1407517391,CD
-1407517392,1407517415,A2
-1407517416,1407517423,NG
+1407517392,1407517423,A2
1407517424,1407517431,ZW
1407517432,1407517439,NG
1407517440,1407517695,A2
@@ -35487,8 +40755,8 @@
1407517952,1407518015,SL
1407518016,1407518031,ZA
1407518032,1407518039,A2
-1407518040,1407518047,CD
-1407518048,1407518063,NG
+1407518040,1407518055,CD
+1407518056,1407518063,NG
1407518064,1407518079,A2
1407518080,1407518111,LR
1407518112,1407518127,NG
@@ -35499,13 +40767,11 @@
1407518160,1407518167,NG
1407518168,1407518175,CD
1407518176,1407518183,A2
-1407518184,1407518191,NG
-1407518192,1407518199,A2
+1407518184,1407518199,NG
1407518200,1407518207,AE
1407518208,1407518215,ZW
-1407518216,1407518239,A2
-1407518240,1407518247,NG
-1407518248,1407518255,A2
+1407518216,1407518231,A2
+1407518232,1407518255,NG
1407518256,1407518263,CD
1407518264,1407518269,GH
1407518270,1407518335,A2
@@ -35514,10 +40780,10 @@
1407518352,1407518359,A2
1407518360,1407518367,NG
1407518368,1407518375,ZA
-1407518376,1407518383,CD
-1407518384,1407518783,A2
-1407518784,1407518815,CD
-1407518816,1407518831,A2
+1407518376,1407518383,AO
+1407518384,1407518391,A2
+1407518392,1407518399,CD
+1407518400,1407518831,A2
1407518832,1407518847,NG
1407518848,1407518911,FR
1407518912,1407518943,NG
@@ -35544,7 +40810,7 @@
1407519160,1407519167,AO
1407519168,1407519175,A2
1407519176,1407519183,SL
-1407519184,1407519191,NG
+1407519184,1407519191,UG
1407519192,1407519199,CD
1407519200,1407519207,A2
1407519208,1407519215,TG
@@ -35552,53 +40818,58 @@
1407519224,1407519231,A2
1407519232,1407519615,NG
1407519616,1407519751,A2
-1407519752,1407519767,NG
+1407519752,1407519759,NG
+1407519760,1407519767,CD
1407519768,1407519775,GN
1407519776,1407519783,A2
-1407519784,1407519823,NG
+1407519784,1407519791,IQ
+1407519792,1407519799,NG
+1407519800,1407519815,A2
+1407519816,1407519823,NG
1407519824,1407519831,A2
1407519832,1407519839,SD
-1407519840,1407519855,NG
+1407519840,1407519847,ML
+1407519848,1407519855,NG
1407519856,1407519863,GN
1407519864,1407519871,NG
-1407519872,1407519879,A2
-1407519880,1407519895,NG
+1407519872,1407519879,IL
+1407519880,1407519887,NG
+1407519888,1407519895,CD
1407519896,1407519903,GN
1407519904,1407519911,NG
1407519912,1407519919,GN
1407519920,1407519943,A2
-1407519944,1407519951,NG
-1407519952,1407519959,A2
-1407519960,1407519983,NG
-1407519984,1407519991,A2
-1407519992,1407519999,NG
-1407520000,1407520007,CD
-1407520008,1407520023,NG
+1407519944,1407519959,CD
+1407519960,1407519967,GB
+1407519968,1407519983,NG
+1407519984,1407519991,SD
+1407519992,1407520023,NG
1407520024,1407520031,A2
1407520032,1407520039,GN
1407520040,1407520047,A2
-1407520048,1407520063,ZW
-1407520064,1407520071,A2
+1407520048,1407520055,GB
+1407520056,1407520071,A2
1407520072,1407520079,CM
1407520080,1407520087,NG
-1407520088,1407520103,GN
+1407520088,1407520103,A2
1407520104,1407520111,SD
-1407520112,1407520119,GN
+1407520112,1407520119,A2
1407520120,1407520127,NE
-1407520128,1407520151,GN
+1407520128,1407520135,GN
+1407520136,1407520143,CD
+1407520144,1407520151,GN
1407520152,1407520152,A2
1407520153,1407520159,GN
1407520160,1407520167,IL
1407520168,1407520175,GN
1407520176,1407520207,A2
1407520208,1407520215,NG
-1407520216,1407520223,NE
+1407520216,1407520223,CD
1407520224,1407520231,SD
-1407520232,1407520239,NG
-1407520240,1407520271,A2
+1407520232,1407520271,A2
1407520272,1407520279,NG
-1407520280,1407520303,A2
-1407520304,1407520327,NG
+1407520280,1407520311,A2
+1407520312,1407520327,NG
1407520328,1407520335,SL
1407520336,1407520351,A2
1407520352,1407520359,NG
@@ -35610,8 +40881,8 @@
1407520424,1407520439,A2
1407520440,1407520447,CD
1407520448,1407520463,NG
-1407520464,1407520519,A2
-1407520520,1407520527,CD
+1407520464,1407520511,A2
+1407520512,1407520527,CD
1407520528,1407520543,NG
1407520544,1407520551,A2
1407520552,1407520559,NG
@@ -35622,43 +40893,43 @@
1407520600,1407520607,A2
1407520608,1407520615,AO
1407520616,1407520623,A2
-1407520624,1407520631,NG
-1407520632,1407520639,A2
-1407520640,1407520655,NG
+1407520624,1407520655,NG
1407520656,1407520663,GA
-1407520664,1407520687,A2
+1407520664,1407520671,CD
+1407520672,1407520687,A2
1407520688,1407520695,NG
1407520696,1407520711,A2
1407520712,1407520719,NG
-1407520720,1407520735,A2
+1407520720,1407520727,A2
+1407520728,1407520735,AO
1407520736,1407520743,LR
1407520744,1407520751,NG
-1407520752,1407520759,A2
+1407520752,1407520759,BF
1407520760,1407520767,CD
-1407520768,1407520775,ZW
+1407520768,1407520775,TZ
1407520776,1407520783,CD
1407520784,1407520791,SD
-1407520792,1407520807,A2
-1407520808,1407520815,CI
-1407520816,1407520823,GQ
+1407520792,1407520799,ZA
+1407520800,1407520807,A2
+1407520808,1407520815,MU
+1407520816,1407520823,ZW
1407520824,1407520831,CI
-1407520832,1407520839,NG
+1407520832,1407520839,SO
1407520840,1407520847,A2
1407520848,1407520855,ZM
1407520856,1407520863,A2
1407520864,1407520871,TZ
-1407520872,1407520879,CD
-1407520880,1407520887,ZM
-1407520888,1407520895,CD
+1407520872,1407520887,CD
+1407520888,1407520895,TZ
1407520896,1407520903,AO
1407520904,1407520911,NG
1407520912,1407520919,ZW
1407520920,1407520927,IQ
1407520928,1407520935,A2
1407520936,1407520943,CD
-1407520944,1407520951,A2
+1407520944,1407520951,TZ
1407520952,1407520959,ZM
-1407520960,1407520967,TZ
+1407520960,1407520967,NG
1407520968,1407520975,A2
1407520976,1407520991,ZM
1407520992,1407520999,IQ
@@ -35667,8 +40938,8 @@
1407521032,1407521047,A2
1407521048,1407521055,NG
1407521056,1407521063,KE
-1407521064,1407521071,A2
-1407521072,1407521079,NG
+1407521064,1407521071,NG
+1407521072,1407521079,TZ
1407521080,1407521087,UG
1407521088,1407521095,NG
1407521096,1407521103,A2
@@ -35685,74 +40956,104 @@
1407521184,1407521199,CD
1407521200,1407521207,A2
1407521208,1407521215,IQ
-1407521216,1407521223,NG
+1407521216,1407521223,MU
1407521224,1407521231,TZ
1407521232,1407521239,LR
1407521240,1407521247,A2
1407521248,1407521279,GH
1407521280,1407521415,A2
1407521416,1407521423,LR
-1407521424,1407522319,A2
+1407521424,1407521535,A2
+1407521536,1407521709,NG
+1407521710,1407522319,A2
1407522320,1407522327,TG
-1407522328,1407522335,NG
+1407522328,1407522335,A2
1407522336,1407522351,SO
1407522352,1407522359,CD
-1407522360,1407522367,NG
-1407522368,1407522383,GQ
-1407522384,1407522391,A2
+1407522360,1407522367,FR
+1407522368,1407522375,GQ
+1407522376,1407522391,A2
1407522392,1407522407,NG
1407522408,1407522415,ZW
-1407522416,1407522423,NG
+1407522416,1407522423,SD
1407522424,1407522431,A2
-1407522432,1407522439,IQ
-1407522440,1407522440,NG
-1407522441,1407522447,A2
-1407522448,1407522455,UG
+1407522432,1407522439,ZM
+1407522440,1407522455,UG
1407522456,1407522463,ML
-1407522464,1407522479,NG
+1407522464,1407522471,A2
+1407522472,1407522479,LR
1407522480,1407522487,TZ
1407522488,1407522495,ZW
-1407522496,1407522503,NG
-1407522504,1407522527,A2
+1407522496,1407522503,LR
+1407522504,1407522511,ZW
+1407522512,1407522519,UG
+1407522520,1407522527,A2
1407522528,1407522535,ZM
-1407522536,1407522551,NG
-1407522552,1407522559,UG
+1407522536,1407522543,NG
+1407522544,1407522559,UG
1407522560,1407522567,MZ
1407522568,1407522575,NG
1407522576,1407522583,A2
-1407522584,1407522591,NG
-1407522592,1407522599,A2
+1407522584,1407522591,GL
+1407522592,1407522599,UG
1407522600,1407522607,ZM
-1407522608,1407522615,A2
-1407522616,1407522631,NG
+1407522608,1407522615,AO
+1407522616,1407522623,A2
+1407522624,1407522631,NG
1407522632,1407522639,MW
1407522640,1407522647,GQ
1407522648,1407522655,NG
1407522656,1407522663,CI
1407522664,1407522671,A2
1407522672,1407522679,ZM
-1407522680,1407522687,IQ
-1407522688,1407522711,NG
+1407522680,1407522687,SD
+1407522688,1407522695,A2
+1407522696,1407522703,GL
+1407522704,1407522711,NG
1407522712,1407522719,BJ
1407522720,1407522727,A2
1407522728,1407522735,ZW
-1407522736,1407522751,NG
+1407522736,1407522743,LR
+1407522744,1407522751,NG
1407522752,1407522767,ZM
1407522768,1407522775,A2
-1407522776,1407522791,NG
+1407522776,1407522783,TD
+1407522784,1407522791,ZW
1407522792,1407522799,A2
-1407522800,1407522807,ZM
-1407522808,1407522815,NG
-1407522816,1407522831,A2
-1407522832,1407522839,IQ
-1407522840,1407522871,A2
+1407522800,1407522807,NG
+1407522808,1407522815,A2
+1407522816,1407522823,CD
+1407522824,1407522831,NG
+1407522832,1407522839,MZ
+1407522840,1407522847,NG
+1407522848,1407522855,TZ
+1407522856,1407522863,ZW
+1407522864,1407522871,TZ
1407522872,1407522879,IQ
-1407522880,1407522991,A2
+1407522880,1407522887,MU
+1407522888,1407522895,A2
+1407522896,1407522903,UG
+1407522904,1407522911,KE
+1407522912,1407522919,CG
+1407522920,1407522927,A2
+1407522928,1407522935,GR
+1407522936,1407522943,A2
+1407522944,1407522951,CD
+1407522952,1407522967,ZW
+1407522968,1407522975,MU
+1407522976,1407522983,CD
+1407522984,1407522991,A2
1407522992,1407522999,CD
-1407523000,1407523071,A2
-1407523072,1407523088,NG
-1407523089,1407523095,A2
-1407523096,1407523103,NG
+1407523000,1407523007,A2
+1407523008,1407523015,NG
+1407523016,1407523023,KE
+1407523024,1407523031,MU
+1407523032,1407523055,A2
+1407523056,1407523063,MU
+1407523064,1407523071,A2
+1407523072,1407523079,CD
+1407523080,1407523088,NG
+1407523089,1407523103,A2
1407523104,1407523111,UG
1407523112,1407523119,ZW
1407523120,1407523127,CD
@@ -35760,13 +41061,21 @@
1407523136,1407523143,BJ
1407523144,1407523159,A2
1407523160,1407523167,LR
-1407523168,1407523183,UG
-1407523184,1407523215,NG
+1407523168,1407523175,A2
+1407523176,1407523183,UG
+1407523184,1407523191,NG
+1407523192,1407523199,A2
+1407523200,1407523207,NG
+1407523208,1407523215,SD
1407523216,1407523223,BI
1407523224,1407523247,AO
-1407523248,1407523279,NG
-1407523280,1407523287,MZ
-1407523288,1407523311,NG
+1407523248,1407523255,A2
+1407523256,1407523271,NG
+1407523272,1407523279,US
+1407523280,1407523287,ZW
+1407523288,1407523295,NG
+1407523296,1407523303,GR
+1407523304,1407523311,NG
1407523312,1407523327,BJ
1407523328,1407523335,MW
1407523336,1407523351,A2
@@ -35779,22 +41088,34 @@
1407523536,1407523551,NG
1407523552,1407523559,CM
1407523560,1407523567,KE
-1407523568,1407523839,A2
+1407523568,1407523583,A2
+1407523584,1407523591,IQ
+1407523592,1407523607,A2
+1407523608,1407523615,IQ
+1407523616,1407523623,A2
+1407523624,1407523655,IQ
+1407523656,1407523663,A2
+1407523664,1407523711,IQ
+1407523712,1407523839,A2
1407523840,1407524351,MW
1407524352,1407524607,GB
1407524608,1407524615,ZW
-1407524616,1407524623,CM
-1407524624,1407524631,A2
-1407524632,1407524647,NG
+1407524616,1407524623,CD
+1407524624,1407524631,ZA
+1407524632,1407524639,NG
+1407524640,1407524647,KE
1407524648,1407524655,CD
-1407524656,1407524671,NG
+1407524656,1407524663,ZW
+1407524664,1407524671,CD
1407524672,1407524679,A2
1407524680,1407524687,LR
1407524688,1407524703,MZ
1407524704,1407524711,A2
-1407524712,1407524719,CD
+1407524712,1407524719,ZW
1407524720,1407524727,A2
-1407524728,1407524751,NG
+1407524728,1407524735,NG
+1407524736,1407524743,A2
+1407524744,1407524751,ZW
1407524752,1407524759,A2
1407524760,1407524767,CM
1407524768,1407524775,BW
@@ -35806,34 +41127,39 @@
1407524848,1407524855,A2
1407524856,1407524863,CD
1407524864,1407524879,A2
-1407524880,1407524887,NG
-1407524888,1407524895,A2
+1407524880,1407524887,ZW
+1407524888,1407524895,TZ
1407524896,1407524903,LR
-1407524904,1407524927,NG
-1407524928,1407524935,A2
-1407524936,1407524951,NG
-1407524952,1407524959,CM
+1407524904,1407524911,A2
+1407524912,1407524919,ZW
+1407524920,1407524935,A2
+1407524936,1407524943,GR
+1407524944,1407524951,ZW
+1407524952,1407524959,UG
1407524960,1407524967,TZ
1407524968,1407524975,NG
-1407524976,1407524991,A2
+1407524976,1407524983,CD
+1407524984,1407524991,ZA
1407524992,1407524999,TZ
1407525000,1407525007,A2
1407525008,1407525015,TZ
-1407525016,1407525023,BI
+1407525016,1407525023,UG
1407525024,1407525031,NG
-1407525032,1407525039,A2
+1407525032,1407525039,IL
1407525040,1407525047,ZA
1407525048,1407525055,NG
-1407525056,1407525063,A2
-1407525064,1407525079,NG
+1407525056,1407525063,ZA
+1407525064,1407525071,SO
+1407525072,1407525079,NG
1407525080,1407525087,A2
1407525088,1407525095,MW
-1407525096,1407525111,NG
+1407525096,1407525103,ZW
+1407525104,1407525111,NG
1407525112,1407525119,ZA
-1407525120,1407525127,NG
+1407525120,1407525127,A2
1407525128,1407525135,SD
1407525136,1407525143,CD
-1407525144,1407525151,A2
+1407525144,1407525151,TZ
1407525152,1407525167,CD
1407525168,1407525175,A2
1407525176,1407525183,CD
@@ -35842,37 +41168,56 @@
1407525208,1407525215,CD
1407525216,1407525231,A2
1407525232,1407525255,CD
-1407525256,1407525263,NG
+1407525256,1407525263,A2
1407525264,1407525287,CD
1407525288,1407525303,A2
1407525304,1407525319,CD
1407525320,1407525327,A2
1407525328,1407525343,CD
-1407525344,1407525471,A2
+1407525344,1407525383,A2
+1407525384,1407525391,CD
+1407525392,1407525399,A2
+1407525400,1407525407,KE
+1407525408,1407525415,UG
+1407525416,1407525423,A2
+1407525424,1407525431,UG
+1407525432,1407525471,A2
1407525472,1407525479,UG
-1407525480,1407526711,A2
+1407525480,1407525487,CD
+1407525488,1407525503,A2
+1407525504,1407525511,UG
+1407525512,1407525543,A2
+1407525544,1407525551,KE
+1407525552,1407525575,A2
+1407525576,1407525583,LR
+1407525584,1407525607,A2
+1407525608,1407525615,CD
+1407525616,1407525623,A2
+1407525624,1407525631,SO
+1407525632,1407525639,A2
+1407525640,1407525679,IQ
+1407525680,1407525751,A2
+1407525752,1407525759,IQ
+1407525760,1407526711,A2
1407526712,1407526719,GN
1407526720,1407529023,A2
1407529024,1407529087,NG
-1407529088,1407529095,A2
-1407529096,1407529103,ZW
+1407529088,1407529103,A2
1407529104,1407529111,NG
-1407529112,1407529127,A2
-1407529128,1407529135,ZW
-1407529136,1407529143,A2
+1407529112,1407529143,A2
1407529144,1407529151,ZW
-1407529152,1407529183,A2
+1407529152,1407529175,A2
+1407529176,1407529183,SO
1407529184,1407529191,NG
-1407529192,1407529199,A2
-1407529200,1407529207,IQ
+1407529192,1407529207,A2
1407529208,1407529215,NG
1407529216,1407531007,A2
1407531008,1407531519,NG
1407531520,1407531551,CD
1407531552,1407531559,SD
-1407531560,1407531567,NG
+1407531560,1407531567,A2
1407531568,1407531575,CD
-1407531576,1407531583,UG
+1407531576,1407531583,A2
1407531584,1407531591,CD
1407531592,1407531599,A2
1407531600,1407531607,NG
@@ -35883,8 +41228,7 @@
1407531656,1407531663,CD
1407531664,1407531671,MZ
1407531672,1407531687,CD
-1407531688,1407531695,A2
-1407531696,1407531703,CD
+1407531688,1407531703,A2
1407531704,1407531711,IQ
1407531712,1407531719,A2
1407531720,1407531735,CD
@@ -35910,16 +41254,14 @@
1407533056,1407533311,NG
1407533312,1407533327,AO
1407533328,1407533343,A2
-1407533344,1407533359,NG
-1407533360,1407533375,A2
+1407533344,1407533375,NG
1407533376,1407533407,CD
1407533408,1407533423,A2
1407533424,1407533567,GH
1407533568,1407533583,NG
1407533584,1407533607,A2
1407533608,1407533631,NG
-1407533632,1407533663,IQ
-1407533664,1407533679,A2
+1407533632,1407533679,A2
1407533680,1407533695,NG
1407533696,1407533711,A2
1407533712,1407533719,ZW
@@ -35938,7 +41280,7 @@
1407534336,1407534343,CM
1407534344,1407534359,A2
1407534360,1407534383,NG
-1407534384,1407534391,A2
+1407534384,1407534391,GR
1407534392,1407534399,AO
1407534400,1407534407,NG
1407534408,1407534415,CI
@@ -35959,25 +41301,31 @@
1407534848,1407535103,CM
1407535104,1407535615,GA
1407535616,1407535623,CD
-1407535624,1407535631,IQ
+1407535624,1407535631,A2
1407535632,1407535639,SD
-1407535640,1407535647,A2
-1407535648,1407535663,NG
-1407535664,1407535671,A2
+1407535640,1407535647,CD
+1407535648,1407535655,NG
+1407535656,1407535671,A2
1407535672,1407535679,SD
1407535680,1407535687,GN
-1407535688,1407535711,A2
+1407535688,1407535695,A2
+1407535696,1407535703,GN
+1407535704,1407535711,CD
1407535712,1407535719,GB
1407535720,1407535735,A2
1407535736,1407535743,NG
-1407535744,1407535775,A2
+1407535744,1407535751,SD
+1407535752,1407535759,GB
+1407535760,1407535775,A2
1407535776,1407535783,GN
-1407535784,1407535815,A2
+1407535784,1407535799,A2
+1407535800,1407535807,NG
+1407535808,1407535815,A2
1407535816,1407535823,NG
-1407535824,1407535831,A2
-1407535832,1407535839,GB
-1407535840,1407535847,NG
-1407535848,1407536127,A2
+1407535824,1407535847,A2
+1407535848,1407535855,CD
+1407535856,1407535863,SD
+1407535864,1407536127,A2
1407536128,1407536639,GA
1407536640,1407536895,CD
1407536896,1407536903,A2
@@ -36000,43 +41348,40 @@
1407537112,1407537119,LR
1407537120,1407537135,A2
1407537136,1407537143,NG
-1407537144,1407537183,A2
+1407537144,1407537151,A2
+1407537152,1407537159,UG
+1407537160,1407537183,A2
1407537184,1407537191,NG
-1407537192,1407537199,A2
-1407537200,1407537207,NG
+1407537192,1407537207,A2
1407537208,1407537215,BE
-1407537216,1407537231,A2
-1407537232,1407537255,NG
-1407537256,1407537263,A2
-1407537264,1407537279,NG
-1407537280,1407537287,A2
-1407537288,1407537295,NG
-1407537296,1407537303,UG
-1407537304,1407537335,A2
-1407537336,1407537351,NG
+1407537216,1407537239,A2
+1407537240,1407537255,NG
+1407537256,1407537287,A2
+1407537288,1407537303,UG
+1407537304,1407537311,LR
+1407537312,1407537319,A2
+1407537320,1407537327,NG
+1407537328,1407537343,A2
+1407537344,1407537351,NG
1407537352,1407537367,A2
1407537368,1407537383,NG
1407537384,1407537399,A2
1407537400,1407537407,BF
-1407537408,1407537415,A2
-1407537416,1407537423,GH
-1407537424,1407537431,A2
-1407537432,1407537455,NG
+1407537408,1407537431,A2
+1407537432,1407537439,NG
+1407537440,1407537447,LR
+1407537448,1407537455,UG
1407537456,1407537463,AO
1407537464,1407537479,A2
1407537480,1407537487,CM
1407537488,1407537495,GH
-1407537496,1407537503,A2
-1407537504,1407537511,NG
+1407537496,1407537511,A2
1407537512,1407537519,LR
-1407537520,1407537535,A2
-1407537536,1407537543,LR
+1407537520,1407537543,A2
1407537544,1407537551,AO
-1407537552,1407537559,A2
-1407537560,1407537567,NG
-1407537568,1407537575,A2
-1407537576,1407537599,NG
-1407537600,1407537607,A2
+1407537552,1407537575,A2
+1407537576,1407537591,NG
+1407537592,1407537607,A2
1407537608,1407537615,CM
1407537616,1407537623,A2
1407537624,1407537639,NG
@@ -36069,30 +41414,25 @@
1407538040,1407538047,CD
1407538048,1407538055,NG
1407538056,1407538071,LU
-1407538072,1407538079,NG
+1407538072,1407538079,A2
1407538080,1407538087,LR
1407538088,1407538095,AO
-1407538096,1407538103,CD
-1407538104,1407538111,A2
+1407538096,1407538111,A2
1407538112,1407538119,LR
-1407538120,1407538135,NG
-1407538136,1407538143,A2
+1407538120,1407538127,NG
+1407538128,1407538143,A2
1407538144,1407538151,GN
1407538152,1407538167,A2
1407538168,1407538175,IQ
-1407538176,1407538183,A2
-1407538184,1407538191,NG
-1407538192,1407538199,A2
-1407538200,1407538207,NG
-1407538208,1407538208,A2
-1407538209,1407538271,NG
+1407538176,1407538199,A2
+1407538200,1407538271,NG
1407538272,1407538279,CO
1407538280,1407538287,A2
1407538288,1407538295,NG
1407538296,1407538303,AO
1407538304,1407538311,NG
1407538312,1407538319,CD
-1407538320,1407538327,NG
+1407538320,1407538327,A2
1407538328,1407538335,CD
1407538336,1407538343,A2
1407538344,1407538351,CD
@@ -36109,9 +41449,7 @@
1407538472,1407538479,NG
1407538480,1407538663,A2
1407538664,1407538679,NG
-1407538680,1407538751,A2
-1407538752,1407538783,NG
-1407538784,1407538863,A2
+1407538680,1407538863,A2
1407538864,1407538879,GE
1407538880,1407538887,A2
1407538888,1407538895,NG
@@ -36134,27 +41472,87 @@
1407539152,1407539167,A2
1407539168,1407539175,TD
1407539176,1407539183,GH
-1407539184,1407539199,NG
+1407539184,1407539191,A2
+1407539192,1407539199,NG
1407539200,1407539455,GE
-1407539456,1407539967,A2
+1407539456,1407539711,A2
+1407539712,1407539719,BE
+1407539720,1407539727,A2
+1407539728,1407539735,GR
+1407539736,1407539743,NG
+1407539744,1407539759,A2
+1407539760,1407539767,GH
+1407539768,1407539775,GR
+1407539776,1407539783,A2
+1407539784,1407539791,GR
+1407539792,1407539799,NG
+1407539800,1407539823,A2
+1407539824,1407539839,NG
+1407539840,1407539847,A2
+1407539848,1407539855,NG
+1407539856,1407539863,CD
+1407539864,1407539879,NG
+1407539880,1407539895,A2
+1407539896,1407539903,CD
+1407539904,1407539911,A2
+1407539912,1407539927,NG
+1407539928,1407539935,GN
+1407539936,1407539943,A2
+1407539944,1407539951,CD
+1407539952,1407539959,LR
+1407539960,1407539967,A2
1407539968,1407539975,CD
-1407539976,1407540007,A2
-1407540008,1407540015,NG
-1407540016,1407540055,A2
+1407539976,1407540055,A2
1407540056,1407540063,NG
1407540064,1407540071,A2
1407540072,1407540079,NG
1407540080,1407540111,A2
1407540112,1407540119,TG
-1407540120,1407540127,NG
-1407540128,1407540135,A2
+1407540120,1407540135,A2
1407540136,1407540143,NG
1407540144,1407540159,A2
1407540160,1407540167,CD
-1407540168,1407540183,A2
-1407540184,1407540199,NG
+1407540168,1407540199,A2
1407540200,1407540215,CD
-1407540216,1407541471,A2
+1407540216,1407540223,A2
+1407540224,1407540231,AO
+1407540232,1407540247,NG
+1407540248,1407540255,A2
+1407540256,1407540263,CD
+1407540264,1407540271,A2
+1407540272,1407540279,LR
+1407540280,1407540287,NG
+1407540288,1407540295,CD
+1407540296,1407540303,A2
+1407540304,1407540311,AO
+1407540312,1407540319,A2
+1407540320,1407540327,CD
+1407540328,1407540343,A2
+1407540344,1407540351,CF
+1407540352,1407540359,TD
+1407540360,1407540367,A2
+1407540368,1407540375,LR
+1407540376,1407540383,A2
+1407540384,1407540391,NG
+1407540392,1407540415,A2
+1407540416,1407540423,NG
+1407540424,1407540431,A2
+1407540432,1407540439,CI
+1407540440,1407540447,A2
+1407540448,1407540455,LR
+1407540456,1407540479,A2
+1407540480,1407540487,CM
+1407540488,1407540551,A2
+1407540552,1407540559,NG
+1407540560,1407540991,A2
+1407540992,1407540999,CD
+1407541000,1407541031,A2
+1407541032,1407541039,NG
+1407541040,1407541047,A2
+1407541048,1407541055,NG
+1407541056,1407541175,A2
+1407541176,1407541183,NG
+1407541184,1407541471,A2
1407541472,1407541495,NG
1407541496,1407541535,A2
1407541536,1407541543,CM
@@ -36173,8 +41571,7 @@
1407542544,1407542551,LR
1407542552,1407542575,A2
1407542576,1407542583,CD
-1407542584,1407542591,A2
-1407542592,1407542599,NG
+1407542584,1407542599,A2
1407542600,1407542607,TG
1407542608,1407542623,A2
1407542624,1407542631,BJ
@@ -36205,7 +41602,28 @@
1407543256,1407543263,NG
1407543264,1407543279,A2
1407543280,1407543287,NG
-1407543288,1407546367,A2
+1407543288,1407545855,A2
+1407545856,1407545863,CI
+1407545864,1407545871,A2
+1407545872,1407545879,CD
+1407545880,1407545895,A2
+1407545896,1407545903,CD
+1407545904,1407545911,A2
+1407545912,1407545927,NG
+1407545928,1407545935,A2
+1407545936,1407545943,ZA
+1407545944,1407545951,A2
+1407545952,1407545959,NG
+1407545960,1407545967,A2
+1407545968,1407545975,GQ
+1407545976,1407545983,A2
+1407545984,1407545991,MU
+1407545992,1407545999,GN
+1407546000,1407546023,A2
+1407546024,1407546047,NG
+1407546048,1407546063,A2
+1407546064,1407546071,ML
+1407546072,1407546367,A2
1407546368,1407546495,AE
1407546496,1407546799,A2
1407546800,1407546815,GH
@@ -36217,17 +41635,15 @@
1407547152,1407547167,A2
1407547168,1407547175,NG
1407547176,1407547183,GH
-1407547184,1407547199,NG
+1407547184,1407547191,UG
+1407547192,1407547199,NG
1407547200,1407547207,AO
1407547208,1407547215,TD
1407547216,1407547239,A2
1407547240,1407547255,SL
1407547256,1407547263,A2
1407547264,1407547271,SL
-1407547272,1407547279,NG
-1407547280,1407547287,A2
-1407547288,1407547295,NG
-1407547296,1407547303,A2
+1407547272,1407547303,A2
1407547304,1407547311,SL
1407547312,1407547327,NG
1407547328,1407547335,A2
@@ -36253,12 +41669,39 @@
1407548416,1407548543,GE
1407548544,1407548711,A2
1407548712,1407548719,CD
-1407548720,1407549183,A2
+1407548720,1407548927,A2
+1407548928,1407548943,NG
+1407548944,1407548951,A2
+1407548952,1407548959,NG
+1407548960,1407548967,A2
+1407548968,1407548975,CM
+1407548976,1407548983,NG
+1407548984,1407548991,CD
+1407548992,1407549039,A2
+1407549040,1407549047,NG
+1407549048,1407549055,A2
+1407549056,1407549063,NG
+1407549064,1407549071,GA
+1407549072,1407549079,NG
+1407549080,1407549087,A2
+1407549088,1407549095,LR
+1407549096,1407549127,A2
+1407549128,1407549135,NG
+1407549136,1407549143,A2
+1407549144,1407549159,LR
+1407549160,1407549167,A2
+1407549168,1407549183,NG
1407549184,1407549439,GE
1407549440,1407582207,RU
1407582208,1407614975,PL
1407614976,1407680511,ES
-1407680512,1407681535,GB
+1407680512,1407680679,FR
+1407680680,1407681023,GB
+1407681024,1407681087,ES
+1407681088,1407681279,GB
+1407681280,1407681291,ES
+1407681292,1407681295,GB
+1407681296,1407681535,ES
1407681536,1407681639,FR
1407681640,1407681983,GB
1407681984,1407681999,ES
@@ -36277,9 +41720,7 @@
1407702272,1407702783,GB
1407702784,1407702911,FR
1407702912,1407703039,GB
-1407703040,1407703407,FR
-1407703408,1407703415,GB
-1407703416,1407703455,FR
+1407703040,1407703455,FR
1407703456,1407703535,GB
1407703536,1407703871,FR
1407703872,1407703935,GB
@@ -36293,16 +41734,16 @@
1407704448,1407705207,GB
1407705208,1407705215,ES
1407705216,1407705247,GB
-1407705248,1407705295,ES
-1407705296,1407705599,GB
+1407705248,1407705279,ES
+1407705280,1407705599,GB
1407705600,1407705727,FR
1407705728,1407705759,GB
1407705760,1407705791,FR
1407705792,1407706367,GB
1407706368,1407706423,FR
1407706424,1407706431,GB
-1407706432,1407706463,FR
-1407706464,1407707703,GB
+1407706432,1407706479,FR
+1407706480,1407707703,GB
1407707704,1407707839,CH
1407707840,1407707903,GB
1407707904,1407707935,CH
@@ -36318,13 +41759,26 @@
1407712208,1407712223,FR
1407712224,1407712767,GB
1407712768,1407712831,DE
-1407712832,1407712887,GB
-1407712888,1407713279,DE
+1407712832,1407712895,GB
+1407712896,1407712911,DE
+1407712912,1407712919,GB
+1407712920,1407712927,DE
+1407712928,1407712975,GB
+1407712976,1407713239,DE
+1407713240,1407713247,GB
+1407713248,1407713263,DE
+1407713264,1407713279,GB
1407713280,1407778815,NL
1407778816,1407844351,SE
1407844352,1407909887,RU
1407909888,1407975423,GR
-1407975424,1408040959,DE
+1407975424,1408013647,DE
+1408013648,1408013655,A2
+1408013656,1408015312,DE
+1408015313,1408015313,A2
+1408015314,1408035046,DE
+1408035047,1408035047,A2
+1408035048,1408040959,DE
1408040960,1408106495,RU
1408106496,1408172031,PL
1408172032,1408237567,RU
@@ -36333,9 +41787,17 @@
1408303104,1408335871,LV
1408335872,1408336879,SE
1408336880,1408336887,FI
-1408336888,1408340047,SE
+1408336888,1408337695,SE
+1408337696,1408337703,DK
+1408337704,1408338807,SE
+1408338808,1408338815,DK
+1408338816,1408338959,SE
+1408338960,1408338967,NO
+1408338968,1408340047,SE
1408340048,1408340055,NO
-1408340056,1408360935,SE
+1408340056,1408353815,SE
+1408353816,1408353823,DK
+1408353824,1408360935,SE
1408360936,1408360943,DK
1408360944,1408368639,SE
1408368640,1408376831,NO
@@ -36390,36 +41852,39 @@
1409548288,1409810431,FR
1409810432,1409941503,GB
1409941504,1410007039,PL
-1410007040,1410007551,DE
+1410007040,1410007551,A2
1410007552,1410007807,IR
-1410007808,1410008575,DE
+1410007808,1410008575,A2
1410008576,1410008607,AE
-1410008608,1410008831,DE
+1410008608,1410008831,A2
1410008832,1410008911,US
-1410008912,1410009343,DE
+1410008912,1410009343,A2
1410009344,1410009479,US
-1410009480,1410009487,DE
+1410009480,1410009487,A2
1410009488,1410009535,GI
-1410009536,1410010367,DE
+1410009536,1410010367,A2
1410010368,1410010399,IR
1410010400,1410010431,LY
-1410010432,1410010543,DE
+1410010432,1410010543,A2
1410010544,1410010575,LY
-1410010576,1410010599,DE
+1410010576,1410010599,A2
1410010600,1410010607,IR
1410010608,1410010623,LY
-1410010624,1410010687,DE
+1410010624,1410010639,DE
+1410010640,1410010687,A2
1410010688,1410010703,IR
-1410010704,1410010719,DE
+1410010704,1410010719,A2
1410010720,1410010751,LY
-1410010752,1410010823,DE
+1410010752,1410010823,A2
1410010824,1410010831,IR
-1410010832,1410010879,DE
+1410010832,1410010879,A2
1410010880,1410011135,IR
-1410011136,1410012159,DE
+1410011136,1410011647,DE
+1410011648,1410012159,A2
1410012160,1410012415,IQ
1410012416,1410012447,AF
-1410012448,1410013183,DE
+1410012448,1410012671,A2
+1410012672,1410013183,DE
1410013184,1410013439,ES
1410013440,1410013471,IR
1410013472,1410013535,AE
@@ -36430,35 +41895,35 @@
1410013696,1410013727,KW
1410013728,1410013759,AE
1410013760,1410013791,IR
-1410013792,1410013823,DE
+1410013792,1410013823,A2
1410013824,1410013887,AF
-1410013888,1410013919,DE
+1410013888,1410013919,A2
1410013920,1410013951,KW
1410013952,1410013983,AE
1410013984,1410014015,IR
1410014016,1410014047,KW
1410014048,1410014079,AE
-1410014080,1410014207,DE
+1410014080,1410014207,A2
1410014208,1410014239,AE
1410014240,1410014335,IR
1410014336,1410014399,AE
1410014400,1410014463,ES
1410014464,1410014495,KW
1410014496,1410014591,IR
-1410014592,1410014885,DE
+1410014592,1410014885,A2
1410014886,1410014886,ES
-1410014887,1410014895,DE
+1410014887,1410014895,A2
1410014896,1410014927,IR
1410014928,1410014935,PA
1410014936,1410014943,IR
1410014944,1410014951,AE
-1410014952,1410014966,DE
+1410014952,1410014966,A2
1410014967,1410014967,IR
-1410014968,1410014968,DE
+1410014968,1410014968,A2
1410014969,1410014969,IR
-1410014970,1410014972,DE
+1410014970,1410014972,A2
1410014973,1410014974,AE
-1410014975,1410015007,DE
+1410014975,1410015007,A2
1410015008,1410015103,IR
1410015104,1410015135,ES
1410015136,1410015263,IR
@@ -36474,142 +41939,146 @@
1410016384,1410016415,IR
1410016416,1410016447,PA
1410016448,1410016543,IR
-1410016544,1410016575,DE
+1410016544,1410016575,A2
1410016576,1410016607,AE
1410016608,1410016639,PA
1410016640,1410016671,IR
1410016672,1410016703,PA
-1410016704,1410016767,DE
+1410016704,1410016767,A2
1410016768,1410016831,IR
1410016832,1410016863,AE
1410016864,1410016895,IR
1410016896,1410017023,AE
1410017024,1410017055,PA
1410017056,1410017119,IR
-1410017120,1410017279,DE
+1410017120,1410017279,A2
1410017280,1410017407,IR
-1410017408,1410017791,DE
+1410017408,1410017791,A2
1410017792,1410018047,IR
-1410018048,1410018303,DE
+1410018048,1410018303,A2
1410018304,1410018559,AE
-1410018560,1410018591,DE
+1410018560,1410018591,A2
1410018592,1410018607,IR
1410018608,1410018623,LY
-1410018624,1410020103,DE
+1410018624,1410018815,A2
+1410018816,1410018831,DE
+1410018832,1410018847,A2
+1410018848,1410018863,DE
+1410018864,1410020103,A2
1410020104,1410020111,US
-1410020112,1410020351,DE
+1410020112,1410020351,A2
1410020352,1410020863,US
-1410020864,1410021375,DE
+1410020864,1410021375,A2
1410021376,1410021407,IR
-1410021408,1410021631,DE
+1410021408,1410021631,A2
1410021632,1410021663,IR
-1410021664,1410021791,DE
+1410021664,1410021791,A2
1410021792,1410021823,IR
-1410021824,1410022527,DE
+1410021824,1410022527,A2
1410022528,1410022591,AE
1410022592,1410022655,IR
-1410022656,1410022911,DE
+1410022656,1410022911,A2
1410022912,1410023423,IR
-1410023424,1410024287,DE
+1410023424,1410024287,A2
1410024288,1410024319,IR
-1410024320,1410024447,DE
+1410024320,1410024447,A2
1410024448,1410025087,IR
-1410025088,1410025215,DE
+1410025088,1410025215,A2
1410025216,1410025247,ES
-1410025248,1410025279,DE
+1410025248,1410025279,A2
1410025280,1410025311,AE
1410025312,1410025343,ES
1410025344,1410025407,IR
1410025408,1410025439,AE
-1410025440,1410025503,DE
+1410025440,1410025503,A2
1410025504,1410025519,AE
1410025520,1410025535,IR
1410025536,1410025567,ES
-1410025568,1410025599,DE
+1410025568,1410025599,A2
1410025600,1410025727,IR
1410025728,1410025759,AE
-1410025760,1410025791,DE
+1410025760,1410025791,A2
1410025792,1410025823,AE
1410025824,1410025855,IR
-1410025856,1410025983,DE
+1410025856,1410025983,A2
1410025984,1410026015,IR
1410026016,1410026047,AE
1410026048,1410026111,ES
-1410026112,1410026143,DE
+1410026112,1410026143,A2
1410026144,1410026175,IR
1410026176,1410026207,AE
1410026208,1410026239,IR
1410026240,1410026367,AE
1410026368,1410026431,IR
-1410026432,1410026463,DE
+1410026432,1410026463,A2
1410026464,1410026751,IR
1410026752,1410026815,CA
-1410026816,1410026847,DE
+1410026816,1410026847,A2
1410026848,1410026911,IR
-1410026912,1410026943,DE
+1410026912,1410026943,A2
1410026944,1410027006,IR
-1410027007,1410027007,DE
+1410027007,1410027007,A2
1410027008,1410027263,KW
1410027264,1410027519,AF
-1410027520,1410027711,DE
+1410027520,1410027711,A2
1410027712,1410027775,IR
-1410027776,1410028799,DE
+1410027776,1410028799,A2
1410028800,1410028831,IR
-1410028832,1410035327,DE
+1410028832,1410035327,A2
1410035328,1410035343,IR
-1410035344,1410035983,DE
+1410035344,1410035983,A2
1410035984,1410035999,PA
-1410036000,1410036031,DE
+1410036000,1410036031,A2
1410036032,1410036063,PA
-1410036064,1410036111,DE
+1410036064,1410036111,A2
1410036112,1410036127,PA
-1410036128,1410036191,DE
+1410036128,1410036191,A2
1410036192,1410036207,PA
-1410036208,1410036735,DE
+1410036208,1410036735,A2
1410036736,1410036751,PA
-1410036752,1410036991,DE
+1410036752,1410036991,A2
1410036992,1410037247,LB
-1410037248,1410037759,DE
+1410037248,1410037759,A2
1410037760,1410038015,US
-1410038016,1410039807,DE
-1410039808,1410041855,AE
-1410041856,1410042815,DE
+1410038016,1410042815,A2
1410042816,1410042831,US
-1410042832,1410043903,DE
-1410043904,1410044415,JO
-1410044416,1410044927,DE
+1410042832,1410044927,A2
1410044928,1410045183,VG
-1410045184,1410045439,DE
+1410045184,1410045439,IQ
1410045440,1410045695,LB
-1410045696,1410072319,DE
+1410045696,1410071815,A2
+1410071816,1410071839,DE
+1410071840,1410072319,A2
1410072320,1410072575,AE
1410072576,1410203647,GB
1410203648,1410204439,FR
1410204440,1410204455,IT
1410204456,1410204479,FR
1410204480,1410204495,PT
-1410204496,1410206543,FR
-1410206544,1410206551,ES
-1410206552,1410212863,FR
+1410204496,1410212863,FR
1410212864,1410213119,GB
-1410213120,1410221663,FR
-1410221664,1410221671,GB
-1410221672,1410234839,FR
+1410213120,1410234839,FR
1410234840,1410234847,A2
-1410234848,1410250551,FR
-1410250552,1410250559,GB
-1410250560,1410261007,FR
+1410234848,1410258527,FR
+1410258528,1410258535,ES
+1410258536,1410261007,FR
1410261008,1410261015,GB
1410261016,1410261663,FR
1410261664,1410261671,GB
-1410261672,1410262799,FR
+1410261672,1410262023,FR
+1410262024,1410262031,BE
+1410262032,1410262799,FR
1410262800,1410262815,DE
-1410262816,1410267039,FR
+1410262816,1410266303,FR
+1410266304,1410266311,IE
+1410266312,1410267039,FR
1410267040,1410267055,ES
1410267056,1410267071,GB
1410267072,1410267087,IT
1410267088,1410269183,FR
-1410269184,1410318335,LT
+1410269184,1410278399,LT
+1410278400,1410278655,LV
+1410278656,1410318335,LT
1410318336,1410319359,LV
1410319360,1410334719,LT
1410334720,1410341887,ES
@@ -36653,9 +42122,7 @@
1410514944,1410523135,GB
1410523136,1410531327,PT
1410531328,1410539519,DE
-1410539520,1410542591,GB
-1410542592,1410543103,IE
-1410543104,1410544415,GB
+1410539520,1410544415,GB
1410544416,1410544431,DE
1410544432,1410544447,FR
1410544448,1410547711,GB
@@ -36670,10 +42137,12 @@
1410573696,1410573711,RU
1410573712,1410573759,DE
1410573760,1410573775,BA
-1410573776,1410573807,DE
-1410573808,1410573815,IT
+1410573776,1410573799,DE
+1410573800,1410573815,IT
1410573816,1410573823,RU
-1410573824,1410574527,DE
+1410573824,1410574511,DE
+1410574512,1410574519,CH
+1410574520,1410574527,DE
1410574528,1410574543,IT
1410574544,1410574559,DE
1410574560,1410574575,RU
@@ -36681,8 +42150,7 @@
1410574584,1410574591,RU
1410574592,1410574719,DE
1410574720,1410574727,RU
-1410574728,1410574847,DE
-1410574848,1410575103,GB
+1410574728,1410575103,DE
1410575104,1410575111,US
1410575112,1410575119,IT
1410575120,1410575135,DE
@@ -36703,9 +42171,7 @@
1410575840,1410575855,IT
1410575856,1410575871,DE
1410575872,1410575999,DK
-1410576000,1410576063,DE
-1410576064,1410576127,IT
-1410576128,1410576255,DE
+1410576000,1410576255,DE
1410576256,1410576383,IT
1410576384,1410588671,DE
1410588672,1410596863,GB
@@ -36715,7 +42181,9 @@
1410621440,1410629631,NO
1410629632,1410637823,FI
1410637824,1410646015,AT
-1410646016,1410654207,GB
+1410646016,1410647807,GB
+1410647808,1410648319,IE
+1410648320,1410654207,GB
1410654208,1410662399,SI
1410662400,1410670591,HU
1410670592,1410678783,DE
@@ -36740,14 +42208,20 @@
1410748416,1410752511,DE
1410752512,1410752703,AQ
1410752704,1410752763,DE
-1410752764,1410752785,AQ
-1410752786,1410752799,DE
+1410752764,1410752787,AQ
+1410752788,1410752799,DE
1410752800,1410752827,AQ
-1410752828,1410753023,DE
+1410752828,1410752831,DE
+1410752832,1410752835,AQ
+1410752836,1410753023,DE
1410753024,1410753031,AQ
1410753032,1410753055,BS
-1410753056,1410753151,AQ
-1410753152,1410753303,DE
+1410753056,1410753143,AQ
+1410753144,1410753151,SC
+1410753152,1410753155,AQ
+1410753156,1410753159,DE
+1410753160,1410753167,AQ
+1410753168,1410753303,DE
1410753304,1410753327,AQ
1410753328,1410753335,DE
1410753336,1410753343,AQ
@@ -36755,7 +42229,11 @@
1410753352,1410753367,AQ
1410753368,1410753391,DE
1410753392,1410753399,NL
-1410753400,1410754831,AQ
+1410753400,1410753791,AQ
+1410753792,1410754303,US
+1410754304,1410754559,AQ
+1410754560,1410754567,US
+1410754568,1410754831,AQ
1410754832,1410754855,DE
1410754856,1410754859,AQ
1410754860,1410754867,DE
@@ -36764,23 +42242,19 @@
1410755064,1410755067,AQ
1410755068,1410755071,DE
1410755072,1410755327,AQ
-1410755328,1410756607,DE
-1410756608,1410756735,AQ
-1410756736,1410756863,DE
+1410755328,1410755583,DE
+1410755584,1410756863,US
1410756864,1410757119,AQ
-1410757120,1410758655,DE
-1410758656,1410759423,AQ
-1410759424,1410759679,GB
-1410759680,1410760191,AQ
+1410757120,1410758143,US
+1410758144,1410758399,AQ
+1410758400,1410758655,US
+1410758656,1410759679,AQ
+1410759680,1410760191,US
1410760192,1410760455,DE
1410760456,1410760471,AQ
-1410760472,1410760479,SC
-1410760480,1410760487,DE
+1410760472,1410760487,DE
1410760488,1410760503,AQ
-1410760504,1410760683,DE
-1410760684,1410760687,AQ
-1410760688,1410760699,DE
-1410760700,1410760703,AQ
+1410760504,1410760703,DE
1410760704,1410768895,RU
1410768896,1410777087,GB
1410777088,1410785279,RU
@@ -36848,7 +42322,8 @@
1411837952,1411842047,BG
1411842048,1411907583,PT
1411907584,1411907839,EU
-1411907840,1411908351,GB
+1411907840,1411908095,GB
+1411908096,1411908351,DE
1411908352,1411908399,EU
1411908400,1411908479,GB
1411908480,1411908535,EU
@@ -36891,25 +42366,31 @@
1411919872,1411923967,DE
1411923968,1411940351,BG
1411940352,1411973119,PL
-1411973120,1411999743,SI
-1411999744,1411999759,BA
-1411999760,1411999767,SI
-1411999768,1411999783,BA
-1411999784,1411999791,SI
-1411999792,1411999799,BA
-1411999800,1411999807,SI
+1411973120,1411999751,SI
+1411999752,1411999791,BA
+1411999792,1411999807,SI
1411999808,1411999847,BA
1411999848,1411999871,SI
-1411999872,1412000767,BA
+1411999872,1411999895,BA
+1411999896,1411999903,SI
+1411999904,1411999911,BA
+1411999912,1411999919,SI
+1411999920,1411999927,BA
+1411999928,1411999951,SI
+1411999952,1411999959,BA
+1411999960,1411999983,SI
+1411999984,1412000767,BA
1412000768,1412000783,SI
1412000784,1412000791,BA
1412000792,1412000863,SI
1412000864,1412000879,BA
1412000880,1412000903,SI
1412000904,1412000911,BA
-1412000912,1412001023,SI
-1412001024,1412001279,BA
-1412001280,1412001311,SI
+1412000912,1412000943,SI
+1412000944,1412000991,BA
+1412000992,1412001007,SI
+1412001008,1412001015,BA
+1412001016,1412001311,SI
1412001312,1412001319,DE
1412001320,1412001807,SI
1412001808,1412001855,RO
@@ -36928,8 +42409,8 @@
1412003040,1412003055,SI
1412003056,1412003119,BA
1412003120,1412003135,SI
-1412003136,1412003143,BA
-1412003144,1412003199,SI
+1412003136,1412003151,BA
+1412003152,1412003199,SI
1412003200,1412003215,BA
1412003216,1412003223,SI
1412003224,1412003231,BA
@@ -36938,13 +42419,11 @@
1412003264,1412003271,SI
1412003272,1412003303,BA
1412003304,1412003327,SI
-1412003328,1412003343,BA
-1412003344,1412003359,SI
-1412003360,1412003375,BA
-1412003376,1412003391,SI
-1412003392,1412003407,BA
-1412003408,1412003423,SI
-1412003424,1412003527,BA
+1412003328,1412003351,BA
+1412003352,1412003375,SI
+1412003376,1412003383,BA
+1412003384,1412003391,SI
+1412003392,1412003527,BA
1412003528,1412003535,SI
1412003536,1412003551,BA
1412003552,1412003583,SI
@@ -36952,8 +42431,12 @@
1412003600,1412003623,SI
1412003624,1412003631,BA
1412003632,1412003639,SI
-1412003640,1412003839,BA
-1412003840,1412003855,SI
+1412003640,1412003647,BA
+1412003648,1412003727,SI
+1412003728,1412003783,BA
+1412003784,1412003791,SI
+1412003792,1412003823,BA
+1412003824,1412003855,SI
1412003856,1412003903,BG
1412003904,1412003935,SI
1412003936,1412004351,BG
@@ -36995,7 +42478,9 @@
1412686240,1412686335,BB
1412686336,1412686591,IE
1412686592,1412686847,GB
-1412686848,1412690191,IE
+1412686848,1412689315,IE
+1412689316,1412689343,GB
+1412689344,1412690191,IE
1412690192,1412690199,GB
1412690200,1412694015,IE
1412694016,1412710399,EE
@@ -37046,15 +42531,20 @@
1422400000,1422400255,IT
1422400256,1422400511,DE
1422400512,1422400767,BR
-1422400768,1422406399,DE
+1422400768,1422403839,DE
+1422403840,1422403903,IT
+1422403904,1422406399,DE
1422406400,1422406463,GB
-1422406464,1422462207,DE
-1422462208,1422462463,TR
-1422462464,1422468671,DE
+1422406464,1422468207,DE
+1422468208,1422468223,IT
+1422468224,1422468671,DE
1422468672,1422468735,IT
-1422468736,1422479615,DE
+1422468736,1422476863,DE
+1422476864,1422476895,GB
+1422476896,1422479615,DE
1422479616,1422479871,BE
1422479872,1422491647,DE
+1422491648,1422508031,RU
1422508032,1422512127,BG
1422512128,1422516223,PL
1422516224,1422520319,BY
@@ -37070,24 +42560,23 @@
1422761984,1422770175,PL
1422770176,1422786559,GR
1422786560,1422852095,HU
-1422852096,1422853119,FR
-1422853120,1422853631,EU
-1422853632,1422853919,FR
-1422853920,1422854143,EU
-1422854144,1422854151,FR
-1422854152,1422856319,EU
-1422856320,1422856447,FR
-1422856448,1422856511,EU
-1422856512,1422856575,FR
-1422856576,1422856703,EU
-1422856704,1422857855,FR
+1422852096,1422856383,EU
+1422856384,1422856447,FR
+1422856448,1422856703,EU
+1422856704,1422856959,FR
+1422856960,1422857087,EU
+1422857088,1422857151,FR
+1422857152,1422857183,EU
+1422857184,1422857855,FR
1422857856,1422857919,EU
1422857920,1422858143,FR
1422858144,1422858239,EU
1422858240,1422858623,FR
1422858624,1422909439,EU
1422909440,1422909695,NL
-1422909696,1422917375,EU
+1422909696,1422911231,EU
+1422911232,1422911487,NL
+1422911488,1422917375,EU
1422917376,1422917631,GB
1422917632,1423441919,NO
1423441920,1423704063,SE
@@ -37101,7 +42590,10 @@
1424556032,1424588799,EG
1424588800,1424588839,DE
1424588840,1424588847,GB
-1424588848,1424588959,DE
+1424588848,1424588863,DE
+1424588864,1424588927,GB
+1424588928,1424588951,DE
+1424588952,1424588959,GB
1424588960,1424588963,IT
1424588964,1424589311,DE
1424589312,1424589567,FR
@@ -37118,9 +42610,7 @@
1424591464,1424591471,GB
1424591472,1424591551,SE
1424591552,1424591615,CZ
-1424591616,1424591839,GB
-1424591840,1424591871,ZA
-1424591872,1424592639,GB
+1424591616,1424592639,GB
1424592640,1424593151,FR
1424593152,1424593407,NL
1424593408,1424593663,DE
@@ -37139,16 +42629,12 @@
1424594520,1424595455,GB
1424595456,1424595527,IT
1424595528,1424595535,GB
-1424595536,1424595551,IT
-1424595552,1424595559,GB
-1424595560,1424595575,IT
-1424595576,1424595583,ES
-1424595584,1424595807,IT
-1424595808,1424595839,GB
-1424595840,1424596479,IT
-1424596480,1424596563,FR
-1424596564,1424596567,GB
-1424596568,1424596991,FR
+1424595536,1424595575,IT
+1424595576,1424595583,GB
+1424595584,1424595819,IT
+1424595820,1424595823,GB
+1424595824,1424596479,IT
+1424596480,1424596991,FR
1424596992,1424597255,CZ
1424597256,1424597263,GB
1424597264,1424597311,CZ
@@ -37156,22 +42642,24 @@
1424597344,1424597351,CH
1424597352,1424597375,GB
1424597376,1424597391,CZ
-1424597392,1424597503,GB
+1424597392,1424597407,GB
+1424597408,1424597423,CZ
+1424597424,1424597503,GB
1424597504,1424597759,FR
1424597760,1424598015,IT
1424598016,1424599039,GB
1424599040,1424599279,DK
1424599280,1424599295,GB
1424599296,1424599551,DK
-1424599552,1424599839,HU
-1424599840,1424599847,GB
-1424599848,1424599855,HU
+1424599552,1424599855,HU
1424599856,1424599871,GB
1424599872,1424599875,HU
1424599876,1424599879,GB
1424599880,1424599887,HU
1424599888,1424599903,GB
-1424599904,1424599951,HU
+1424599904,1424599935,HU
+1424599936,1424599943,GB
+1424599944,1424599951,HU
1424599952,1424599999,GB
1424600000,1424600031,HU
1424600032,1424600063,GB
@@ -37184,32 +42672,34 @@
1424601600,1424601855,CH
1424601856,1424602111,GB
1424602112,1424602623,DE
-1424602624,1424602879,GB
+1424602624,1424602735,GB
+1424602736,1424602743,IT
+1424602744,1424602879,GB
1424602880,1424602911,US
1424602912,1424602927,FR
1424602928,1424603007,US
-1424603008,1424603023,GB
-1424603024,1424603055,US
-1424603056,1424603063,NL
-1424603064,1424603087,US
+1424603008,1424603039,GB
+1424603040,1424603087,US
1424603088,1424603095,GB
1424603096,1424603135,US
1424603136,1424603391,SK
1424603392,1424603647,DE
1424603648,1424603903,GB
-1424603904,1424604067,ES
-1424604068,1424604071,GB
-1424604072,1424604159,ES
+1424603904,1424604031,ES
+1424604032,1424604047,GB
+1424604048,1424604159,ES
1424604160,1424604543,NL
1424604544,1424604671,GB
1424604672,1424604799,NL
1424604800,1424604927,GB
-1424604928,1424605119,NL
+1424604928,1424604959,NL
+1424604960,1424604967,GB
+1424604968,1424605119,NL
1424605120,1424605135,GB
1424605136,1424605183,NL
1424605184,1424605439,GB
1424605440,1424605567,BG
-1424605568,1424605583,GB
+1424605568,1424605583,GR
1424605584,1424605599,BE
1424605600,1424605607,GB
1424605608,1424605623,BG
@@ -37217,21 +42707,20 @@
1424605632,1424605695,BG
1424605696,1424605951,NL
1424605952,1424605959,CH
-1424605960,1424606023,AT
-1424606024,1424606199,GB
-1424606200,1424606207,AT
-1424606208,1424606455,GB
-1424606456,1424606463,AT
-1424606464,1424606711,GB
-1424606712,1424606719,AT
-1424606720,1424606967,GB
-1424606968,1424606975,AT
+1424605960,1424605967,AT
+1424605968,1424605983,GB
+1424605984,1424606023,AT
+1424606024,1424606207,GB
+1424606208,1424606719,IT
+1424606720,1424606975,NL
1424606976,1424607167,GB
1424607168,1424607199,SK
1424607200,1424607215,GB
1424607216,1424607223,SK
1424607224,1424607487,GB
-1424607488,1424607871,DE
+1424607488,1424607743,DE
+1424607744,1424607775,GB
+1424607776,1424607871,DE
1424607872,1424608031,GB
1424608032,1424608083,FR
1424608084,1424608087,GB
@@ -37240,9 +42729,11 @@
1424608280,1424608383,FR
1424608384,1424608399,ES
1424608400,1424608511,FR
-1424608512,1424608687,ES
-1424608688,1424608695,GB
-1424608696,1424609023,ES
+1424608512,1424608543,ES
+1424608544,1424608559,GB
+1424608560,1424608687,ES
+1424608688,1424608691,GB
+1424608692,1424609023,ES
1424609024,1424609259,DE
1424609260,1424609271,GB
1424609272,1424609279,DE
@@ -37253,9 +42744,7 @@
1424610304,1424610559,TZ
1424610560,1424610815,PL
1424610816,1424611071,FR
-1424611072,1424611095,BE
-1424611096,1424611103,GB
-1424611104,1424611135,BE
+1424611072,1424611135,BE
1424611136,1424611151,GB
1424611152,1424611327,BE
1424611328,1424611583,PL
@@ -37269,14 +42758,16 @@
1424612864,1424613119,FR
1424613120,1424613375,GB
1424613376,1424613631,ES
-1424613632,1424614127,IT
+1424613632,1424614087,IT
+1424614088,1424614095,GB
+1424614096,1424614127,IT
1424614128,1424614135,GB
1424614136,1424614143,IT
1424614144,1424614399,GB
1424614400,1424614415,FR
-1424614416,1424614559,IT
-1424614560,1424614591,GB
-1424614592,1424614655,IT
+1424614416,1424614431,IT
+1424614432,1424614439,GB
+1424614440,1424614655,IT
1424614656,1424614911,FR
1424614912,1424615167,RO
1424615168,1424615679,GB
@@ -37287,8 +42778,9 @@
1424616192,1424616447,IT
1424616448,1424616483,ES
1424616484,1424616487,GB
-1424616488,1424616607,ES
-1424616608,1424616615,PT
+1424616488,1424616503,ES
+1424616504,1424616511,GB
+1424616512,1424616615,ES
1424616616,1424616623,GB
1424616624,1424616655,ES
1424616656,1424616659,GB
@@ -37296,7 +42788,8 @@
1424616696,1424616703,GB
1424616704,1424616959,US
1424616960,1424617215,FR
-1424617216,1424617351,IT
+1424617216,1424617239,GB
+1424617240,1424617351,IT
1424617352,1424617391,GB
1424617392,1424617395,IT
1424617396,1424617399,GB
@@ -37304,25 +42797,25 @@
1424617408,1424617423,ES
1424617424,1424617431,GB
1424617432,1424617439,ES
-1424617440,1424617463,IT
+1424617440,1424617447,IT
+1424617448,1424617455,GB
+1424617456,1424617463,IT
1424617464,1424617471,GB
1424617472,1424617727,US
-1424617728,1424617983,IT
-1424617984,1424618015,GB
-1424618016,1424618239,IT
+1424617728,1424618039,IT
+1424618040,1424618047,GB
+1424618048,1424618239,IT
1424618240,1424618495,NL
1424618496,1424618751,GB
-1424618752,1424619007,FR
+1424618752,1424618927,FR
+1424618928,1424618943,IT
+1424618944,1424619007,FR
1424619008,1424619775,IT
1424619776,1424619807,BE
-1424619808,1424619815,GB
-1424619816,1424619823,BE
-1424619824,1424619839,GB
+1424619808,1424619839,GB
1424619840,1424619915,BE
1424619916,1424619919,GB
-1424619920,1424619951,BE
-1424619952,1424619967,GB
-1424619968,1424620031,BE
+1424619920,1424620031,BE
1424620032,1424621055,GB
1424621056,1424621567,IT
1424621568,1424625663,PL
@@ -37331,6 +42824,7 @@
1424633856,1424637951,MD
1424637952,1424642047,FI
1424642048,1424646143,DK
+1424646144,1424650239,UA
1424650240,1424654335,PL
1424654336,1424687103,NO
1424687104,1424711679,SA
@@ -37394,7 +42888,6 @@
1424850944,1424883711,LV
1424883712,1424916479,DK
1424916480,1424949247,BG
-1424949248,1424982015,GB
1424982016,1425014783,FI
1425014784,1425031167,LT
1425031168,1425047551,FI
@@ -37417,7 +42910,9 @@
1425326080,1425342463,SE
1425342464,1425358847,NL
1425358848,1425375231,SK
-1425375232,1425391615,DE
+1425375232,1425377339,DE
+1425377340,1425377340,A2
+1425377341,1425391615,DE
1425391616,1425407999,LV
1425408000,1425424383,NL
1425424384,1425424543,A2
@@ -37439,7 +42934,9 @@
1425436672,1425438719,GB
1425438720,1425439271,DE
1425439272,1425439279,CZ
-1425439280,1425439535,DE
+1425439280,1425439399,DE
+1425439400,1425439407,CZ
+1425439408,1425439535,DE
1425439536,1425439543,CZ
1425439544,1425439711,DE
1425439712,1425439727,CZ
@@ -37455,9 +42952,7 @@
1425448960,1425451007,CZ
1425451008,1425457855,GB
1425457856,1425457919,US
-1425457920,1425458271,GB
-1425458272,1425458303,US
-1425458304,1425459199,GB
+1425457920,1425459199,GB
1425459200,1425460735,IM
1425460736,1425460767,GB
1425460768,1425460863,IM
@@ -37470,8 +42965,33 @@
1425467136,1425467391,ES
1425467392,1425469439,CH
1425469440,1425471487,DK
-1425471488,1425473535,DE
-1425473536,1425506303,RO
+1425471488,1425471791,DE
+1425471792,1425471799,CH
+1425471800,1425471815,DE
+1425471816,1425471823,CH
+1425471824,1425471831,GB
+1425471832,1425471863,DE
+1425471864,1425471871,GB
+1425471872,1425471887,IT
+1425471888,1425471895,GB
+1425471896,1425471919,DE
+1425471920,1425471943,GB
+1425471944,1425471967,DE
+1425471968,1425471975,CH
+1425471976,1425472007,DE
+1425472008,1425472011,GB
+1425472012,1425472015,ES
+1425472016,1425472035,DE
+1425472036,1425472039,GB
+1425472040,1425473535,DE
+1425473536,1425474047,GB
+1425474048,1425474559,RO
+1425474560,1425475583,GB
+1425475584,1425478143,RO
+1425478144,1425478655,GB
+1425478656,1425484799,RO
+1425484800,1425485311,GB
+1425485312,1425506303,RO
1425506304,1425522687,NO
1425522688,1425539071,IT
1425539072,1425801215,FI
@@ -37736,7 +43256,11 @@
1426731008,1426735103,HR
1426735104,1426751487,BE
1426751488,1426767871,FR
-1426767872,1426784255,DE
+1426767872,1426778991,DE
+1426778992,1426778999,IT
+1426779000,1426781655,DE
+1426781656,1426781663,IT
+1426781664,1426784255,DE
1426784256,1426800639,SE
1426800640,1426817023,PL
1426817024,1426833407,BG
@@ -37774,7 +43298,9 @@
1426915328,1426931711,AT
1426931712,1426948095,CZ
1426948096,1426964479,DE
-1426964480,1426967455,GB
+1426964480,1426967287,GB
+1426967288,1426967295,ES
+1426967296,1426967455,GB
1426967456,1426967463,ES
1426967464,1426967567,GB
1426967568,1426967575,ES
@@ -37814,11 +43340,7 @@
1427032736,1427032743,AT
1427032744,1427032959,DE
1427032960,1427032967,NL
-1427032968,1427033247,DE
-1427033248,1427033263,MZ
-1427033264,1427033287,DE
-1427033288,1427033295,SE
-1427033296,1427035391,DE
+1427032968,1427035391,DE
1427035392,1427035519,GB
1427035520,1427046399,DE
1427046400,1427062783,IR
@@ -37848,32 +43370,47 @@
1427668992,1427701759,SE
1427701760,1427723391,DE
1427723392,1427723519,LI
-1427723520,1427728479,DE
+1427723520,1427728383,DE
+1427728384,1427728415,BR
+1427728416,1427728479,DE
1427728480,1427728511,CY
1427728512,1427728543,BR
-1427728544,1427728671,DE
+1427728544,1427728575,DE
+1427728576,1427728607,BR
+1427728608,1427728639,TW
+1427728640,1427728671,DE
1427728672,1427728703,TR
-1427728704,1427728799,DE
+1427728704,1427728735,RU
+1427728736,1427728799,DE
1427728800,1427728831,RU
1427728832,1427728895,CY
-1427728896,1427728927,DE
+1427728896,1427728927,RU
1427728928,1427728959,IL
1427728960,1427728991,RU
1427728992,1427729055,DE
1427729056,1427729087,CA
-1427729088,1427729119,DE
-1427729120,1427729151,RO
-1427729152,1427729311,DE
+1427729088,1427729119,TR
+1427729120,1427729311,DE
1427729312,1427729343,GR
1427729344,1427742719,DE
1427742720,1427742751,IO
-1427742752,1427743231,DE
+1427742752,1427742975,DE
+1427742976,1427743007,RU
+1427743008,1427743039,US
+1427743040,1427743071,DE
+1427743072,1427743103,CY
+1427743104,1427743135,BR
+1427743136,1427743199,DE
+1427743200,1427743231,TR
1427743232,1427743263,GR
1427743264,1427743327,DE
1427743328,1427743359,NL
-1427743360,1427743455,DE
+1427743360,1427743391,DE
+1427743392,1427743423,BR
+1427743424,1427743455,DE
1427743456,1427743487,CY
-1427743488,1427743615,DE
+1427743488,1427743583,DE
+1427743584,1427743615,LV
1427743616,1427743647,DK
1427743648,1427743775,DE
1427743776,1427743807,ZA
@@ -37881,27 +43418,38 @@
1427743840,1427743871,RU
1427743872,1427743935,DE
1427743936,1427743967,RU
-1427743968,1427744159,DE
+1427743968,1427743999,DE
+1427744000,1427744031,TW
+1427744032,1427744127,DE
+1427744128,1427744159,PL
1427744160,1427744191,RU
1427744192,1427744255,DE
1427744256,1427744287,US
1427744288,1427744319,TR
1427744320,1427744351,DE
1427744352,1427744383,UA
-1427744384,1427744639,DE
+1427744384,1427744415,PL
+1427744416,1427744447,UA
+1427744448,1427744479,US
+1427744480,1427744607,DE
+1427744608,1427744639,US
1427744640,1427744671,TR
-1427744672,1427744703,DE
-1427744704,1427744735,CA
+1427744672,1427744735,DE
1427744736,1427744767,DK
1427744768,1427744863,DE
1427744864,1427744927,TR
-1427744928,1427744991,DE
+1427744928,1427744959,HU
+1427744960,1427744991,DE
1427744992,1427745023,DK
-1427745024,1427745151,DE
+1427745024,1427745055,BM
+1427745056,1427745151,DE
1427745152,1427745183,RO
-1427745184,1427745247,DE
-1427745248,1427745279,TR
-1427745280,1427745503,DE
+1427745184,1427745215,CH
+1427745216,1427745375,DE
+1427745376,1427745407,TW
+1427745408,1427745439,DE
+1427745440,1427745471,US
+1427745472,1427745503,RO
1427745504,1427745535,RU
1427745536,1427745567,CN
1427745568,1427745599,RU
@@ -37909,71 +43457,94 @@
1427745632,1427745663,BM
1427745664,1427745695,CY
1427745696,1427745727,US
-1427745728,1427745791,DE
+1427745728,1427745759,DE
+1427745760,1427745791,LT
1427745792,1427745823,GB
1427745824,1427745855,US
-1427745856,1427746079,DE
+1427745856,1427745887,BR
+1427745888,1427746047,DE
+1427746048,1427746079,SE
1427746080,1427746111,GB
-1427746112,1427746239,DE
-1427746240,1427746271,NL
-1427746272,1427746367,DE
-1427746368,1427746399,SE
-1427746400,1427747839,DE
+1427746112,1427746143,DE
+1427746144,1427746175,GR
+1427746176,1427746239,DE
+1427746240,1427746271,US
+1427746272,1427747839,DE
1427747840,1427747871,FI
-1427747872,1427748063,DE
-1427748064,1427748095,NL
-1427748096,1427748479,DE
-1427748480,1427748511,TR
-1427748512,1427748543,DE
+1427747872,1427747935,DE
+1427747936,1427747967,US
+1427747968,1427748063,DE
+1427748064,1427748095,US
+1427748096,1427748255,DE
+1427748256,1427748287,US
+1427748288,1427748447,DE
+1427748448,1427748479,RU
+1427748480,1427748511,DE
+1427748512,1427748543,US
1427748544,1427748575,MX
-1427748576,1427749503,DE
-1427749504,1427749535,UA
-1427749536,1427749567,DE
+1427748576,1427748703,DE
+1427748704,1427748735,US
+1427748736,1427749567,DE
1427749568,1427749599,CY
-1427749600,1427749631,DE
-1427749632,1427749663,US
-1427749664,1427749951,DE
+1427749600,1427749695,DE
+1427749696,1427749727,BR
+1427749728,1427749855,DE
+1427749856,1427749887,RU
+1427749888,1427749919,BR
+1427749920,1427749951,DE
1427749952,1427749983,RU
-1427749984,1427750239,DE
-1427750240,1427750271,NL
-1427750272,1427750303,DE
+1427749984,1427750079,DE
+1427750080,1427750111,BG
+1427750112,1427750175,DE
+1427750176,1427750207,TR
+1427750208,1427750239,DE
+1427750240,1427750271,US
+1427750272,1427750303,GR
1427750304,1427750335,GB
-1427750336,1427751167,DE
+1427750336,1427750367,US
+1427750368,1427751167,DE
1427751168,1427751423,NL
1427751424,1427759935,DE
1427759936,1427759967,HR
-1427759968,1427760191,DE
-1427760192,1427760223,TR
-1427760224,1427760255,US
+1427759968,1427760031,DE
+1427760032,1427760063,US
+1427760064,1427760095,DE
+1427760096,1427760127,US
+1427760128,1427760191,DE
+1427760192,1427760255,US
1427760256,1427760319,BR
-1427760320,1427760351,DE
+1427760320,1427760351,TR
1427760352,1427760383,RU
1427760384,1427760415,TR
-1427760416,1427760799,DE
-1427760800,1427760831,NL
+1427760416,1427760447,US
+1427760448,1427760575,DE
+1427760576,1427760607,CH
+1427760608,1427760639,US
+1427760640,1427760799,DE
+1427760800,1427760831,US
1427760832,1427760959,DE
1427760960,1427760991,CZ
-1427760992,1427761023,DE
+1427760992,1427761023,BG
1427761024,1427761055,HR
-1427761056,1427761087,DE
+1427761056,1427761087,CL
1427761088,1427761119,CH
-1427761120,1427761183,DE
-1427761184,1427761215,IT
-1427761216,1427761247,DE
-1427761248,1427761279,BR
-1427761280,1427761375,DE
+1427761120,1427761151,TR
+1427761152,1427761215,DE
+1427761216,1427761247,TR
+1427761248,1427761279,DE
+1427761280,1427761311,RU
+1427761312,1427761343,DE
+1427761344,1427761375,CY
1427761376,1427761407,TW
1427761408,1427761503,DE
1427761504,1427761535,PL
1427761536,1427761567,US
1427761568,1427761599,RU
1427761600,1427761631,EG
-1427761632,1427767295,DE
+1427761632,1427761663,TR
+1427761664,1427767295,DE
1427767296,1427800063,BE
-1427800064,1427823615,RU
-1427823616,1427824639,KG
-1427824640,1427831807,RU
-1427831808,1427832831,MD
+1427800064,1427832831,RU
1427832832,1427865599,BE
1427865600,1427898367,DK
1427898368,1427914751,RU
@@ -37988,14 +43559,12 @@
1428045824,1428062207,MK
1428062208,1428078591,SE
1428078592,1428094975,RU
-1428094976,1428096031,AT
-1428096032,1428096039,CH
-1428096040,1428103167,AT
+1428094976,1428103167,AT
1428103168,1428111359,GB
1428111360,1428119551,A2
1428119552,1428121599,LV
1428121600,1428123647,FR
-1428125696,1428126975,RU
+1428123648,1428126975,RU
1428126976,1428127231,TR
1428127232,1428127743,RU
1428127744,1428129791,ES
@@ -38008,19 +43577,25 @@
1428142080,1428143263,DE
1428143264,1428143279,CH
1428143280,1428144127,DE
-1428144128,1428147111,FR
-1428147112,1428147119,GB
-1428147120,1428147595,FR
-1428147596,1428147711,GB
+1428144128,1428147343,FR
+1428147344,1428147351,GB
+1428147352,1428147595,FR
+1428147596,1428147615,GB
+1428147616,1428147639,FR
+1428147640,1428147711,GB
1428147712,1428147855,FR
1428147856,1428147871,US
-1428147872,1428148039,FR
-1428148040,1428148047,GB
-1428148048,1428148175,FR
+1428147872,1428148175,FR
1428148176,1428148191,CH
-1428148192,1428150735,FR
+1428148192,1428150487,FR
+1428150488,1428150495,GB
+1428150496,1428150663,FR
+1428150664,1428150687,GB
+1428150688,1428150735,FR
1428150736,1428150751,GB
-1428150752,1428151007,FR
+1428150752,1428150863,FR
+1428150864,1428150911,GB
+1428150912,1428151007,FR
1428151008,1428151039,GB
1428151040,1428151231,FR
1428151232,1428151295,CH
@@ -38047,9 +43622,11 @@
1431839040,1431846911,BE
1431846912,1431855103,NO
1431855104,1431863295,NL
-1431863296,1431864263,PT
-1431864264,1431864271,ES
-1431864272,1431864935,PT
+1431863296,1431864391,PT
+1431864392,1431864399,ES
+1431864400,1431864879,PT
+1431864880,1431864887,ES
+1431864888,1431864935,PT
1431864936,1431864943,ES
1431864944,1431865335,PT
1431865336,1431865343,ES
@@ -38057,9 +43634,7 @@
1431865632,1431865647,ES
1431865648,1431865663,PT
1431865664,1431865679,ES
-1431865680,1431865711,PT
-1431865712,1431865719,ES
-1431865720,1431866447,PT
+1431865680,1431866447,PT
1431866448,1431866455,NL
1431866456,1431866479,PT
1431866480,1431866495,ES
@@ -38081,7 +43656,11 @@
1431979480,1431979487,GB
1431979488,1431980151,NL
1431980152,1431980159,US
-1431980160,1431986175,NL
+1431980160,1431980687,NL
+1431980688,1431980695,DE
+1431980696,1431980719,NL
+1431980720,1431980727,SA
+1431980728,1431986175,NL
1431986176,1431994367,RU
1431994368,1432002559,AT
1432002560,1432010751,HU
@@ -38101,13 +43680,58 @@
1432100864,1432109055,CZ
1432109056,1432117247,GB
1432117248,1432125439,CY
-1432125440,1432131583,NL
-1432131584,1432133631,PH
+1432125440,1432131607,NL
+1432131608,1432131615,PH
+1432131616,1432131679,NL
+1432131680,1432131695,PH
+1432131696,1432131711,NL
+1432131712,1432131727,PH
+1432131728,1432131743,NL
+1432131744,1432131759,PH
+1432131760,1432131775,NL
+1432131776,1432131783,PH
+1432131784,1432131887,NL
+1432131888,1432131903,PH
+1432131904,1432131919,NL
+1432131920,1432131935,PH
+1432131936,1432131951,NL
+1432131952,1432131967,PH
+1432131968,1432131999,NL
+1432132000,1432132031,PH
+1432132032,1432132271,NL
+1432132272,1432132287,PH
+1432132288,1432132303,NL
+1432132304,1432132319,PH
+1432132320,1432132351,NL
+1432132352,1432132495,PH
+1432132496,1432132511,NL
+1432132512,1432132559,PH
+1432132560,1432132639,NL
+1432132640,1432132655,PH
+1432132656,1432132671,NL
+1432132672,1432132687,PH
+1432132688,1432132815,NL
+1432132816,1432132831,PH
+1432132832,1432132895,NL
+1432132896,1432132911,PH
+1432132912,1432132927,NL
+1432132928,1432132943,PH
+1432132944,1432133039,NL
+1432133040,1432133055,PH
+1432133056,1432133151,NL
+1432133152,1432133167,PH
+1432133168,1432133199,NL
+1432133200,1432133215,PH
+1432133216,1432133327,NL
+1432133328,1432133343,PH
+1432133344,1432133455,NL
+1432133456,1432133503,PH
+1432133504,1432133543,NL
+1432133544,1432133551,PH
+1432133552,1432133631,NL
1432133632,1432150015,GB
1432150016,1432158207,BA
-1432158208,1432159042,DE
-1432159043,1432159046,US
-1432159047,1432159311,DE
+1432158208,1432159311,DE
1432159312,1432159321,US
1432159322,1432159743,DE
1432159744,1432159871,PL
@@ -38137,9 +43761,7 @@
1432322048,1432338431,RU
1432338432,1432346623,FR
1432346624,1433403391,TR
-1433403392,1433406239,ES
-1433406240,1433406271,US
-1433406272,1433406431,ES
+1433403392,1433406431,ES
1433406432,1433406447,US
1433406448,1433407487,ES
1433407488,1433410047,NL
@@ -38149,7 +43771,9 @@
1433411328,1433411343,ES
1433411344,1433411375,TR
1433411376,1433411407,US
-1433411408,1433411455,TR
+1433411408,1433411423,TR
+1433411424,1433411439,ES
+1433411440,1433411455,TR
1433411456,1433411519,US
1433411520,1433411583,ES
1433411584,1433419775,RU
@@ -38205,10 +43829,17 @@
1433739264,1433747455,GE
1433747456,1433755647,RU
1433755648,1433763839,EE
+1433763840,1433772031,FR
1433772032,1433788415,SE
1433788416,1433796607,UZ
1433796608,1433804799,GB
-1433804800,1433812991,FR
+1433804800,1433806591,FR
+1433806592,1433806623,GB
+1433806624,1433806655,BE
+1433806656,1433806687,IT
+1433806688,1433806719,NL
+1433806720,1433806751,DE
+1433806752,1433812991,FR
1433812992,1433821183,BG
1433821184,1433829375,GE
1433829376,1433833471,RU
@@ -38231,15 +43862,23 @@
1433856000,1433858047,GB
1433858048,1433860095,ES
1433860096,1433862143,DE
-1433862144,1433862751,CH
+1433862144,1433862559,CH
+1433862560,1433862575,GB
+1433862576,1433862751,CH
1433862752,1433862783,MC
1433862784,1433862975,CH
1433862976,1433862991,GB
-1433862992,1433863423,CH
+1433862992,1433863055,CH
+1433863056,1433863071,GB
+1433863072,1433863095,CH
+1433863096,1433863103,US
+1433863104,1433863423,CH
1433863424,1433863487,US
1433863488,1433864191,CH
1433864192,1433866239,HU
-1433866240,1433867263,NL
+1433866240,1433866751,NL
+1433866752,1433867007,GB
+1433867008,1433867263,NL
1433867264,1433867295,GB
1433867296,1433867519,NL
1433867520,1433867647,GB
@@ -38290,37 +43929,43 @@
1434583040,1434615807,BG
1434615808,1434648575,IL
1434648576,1434681343,FI
-1434681344,1434681855,DE
-1434681856,1434682111,MY
+1434681344,1434681983,DE
+1434681984,1434682015,CY
+1434682016,1434682111,NL
1434682112,1434682303,DE
-1434682304,1434682367,NL
+1434682304,1434682319,CY
+1434682320,1434682367,NL
1434682368,1434683119,DE
1434683120,1434683135,NL
1434683136,1434683327,DE
1434683328,1434683391,MY
-1434683392,1434685439,DE
-1434685440,1434687231,NL
+1434683392,1434685759,DE
+1434685760,1434685951,NL
+1434685952,1434686719,DE
+1434686720,1434687231,NL
1434687232,1434687359,DE
1434687360,1434687487,NL
-1434687488,1434688207,DE
+1434687488,1434687647,DE
+1434687648,1434687679,NL
+1434687680,1434688031,DE
+1434688032,1434688063,NL
+1434688064,1434688207,DE
1434688208,1434688223,NL
1434688224,1434689887,DE
1434689888,1434689919,NL
1434689920,1434692607,DE
1434692608,1434692671,NL
-1434692672,1434694655,DE
+1434692672,1434693119,DE
+1434693120,1434693375,NL
+1434693376,1434694655,DE
1434694656,1434694719,NL
1434694720,1434702463,DE
1434702464,1434702591,NL
1434702592,1434702655,DE
1434702656,1434702671,NL
-1434702672,1434705663,DE
-1434705664,1434705679,NL
-1434705680,1434705695,DE
-1434705696,1434705919,NL
-1434705920,1434710591,DE
-1434710592,1434710783,NL
-1434710784,1434712063,DE
+1434702672,1434705727,DE
+1434705728,1434705919,NL
+1434705920,1434712063,DE
1434712064,1434712319,NL
1434712320,1434712959,DE
1434712960,1434712975,NL
@@ -38381,6 +44026,7 @@
1436473344,1436475391,RO
1436475392,1436477439,AT
1436477440,1436479487,CH
+1436479488,1436481535,RU
1436481536,1436483583,NL
1436483584,1436485631,UA
1436485632,1436487471,DE
@@ -38495,7 +44141,7 @@
1438876416,1438876927,RU
1438876928,1438877183,IQ
1438877184,1438877439,LT
-1438877440,1438877695,LB
+1438877440,1438877695,RU
1438877696,1438877951,LT
1438877952,1438878975,LB
1438878976,1438879231,IQ
@@ -38513,12 +44159,9 @@
1438890240,1438890495,RU
1438890496,1438890751,IQ
1438890752,1438892031,RU
-1438892032,1438892287,US
-1438892288,1438900223,IS
-1438900224,1438900479,AQ
-1438900480,1438904319,IS
-1438904320,1438904575,CH
-1438904576,1438908415,IS
+1438892032,1438895359,CH
+1438895360,1438900223,IS
+1438900224,1438908415,AQ
1438908416,1438924799,GR
1438924800,1438941183,NO
1438941184,1438957567,BG
@@ -38534,24 +44177,30 @@
1438995040,1438995047,GB
1438995048,1438995067,DE
1438995068,1438995071,SE
-1438995072,1438998781,DE
+1438995072,1438995647,DE
+1438995648,1438995711,GB
+1438995712,1438998697,DE
+1438998698,1438998730,NL
+1438998731,1438998781,DE
1438998782,1438998783,CH
1438998784,1438999098,DE
1438999099,1438999103,CH
-1438999104,1438999261,DE
-1438999262,1438999295,NL
+1438999104,1438999167,DE
+1438999168,1438999248,NL
+1438999249,1438999252,DE
+1438999253,1438999295,NL
1438999296,1438999475,DE
1438999476,1438999487,PT
1438999488,1438999517,DE
1438999518,1438999518,CH
1438999519,1438999533,DE
1438999534,1438999534,CH
-1438999535,1438999791,DE
-1438999792,1438999807,GB
+1438999535,1438999551,DE
+1438999552,1438999807,GB
1438999808,1439000575,DE
1439000576,1439000831,NL
-1439000832,1439000839,DE
-1439000840,1439002623,NL
+1439000832,1439002367,DE
+1439002368,1439002623,NL
1439002624,1439006567,DE
1439006568,1439006575,AT
1439006576,1439006671,DE
@@ -38568,7 +44217,7 @@
1439154176,1439170559,GB
1439170560,1439236095,NO
1439236096,1439301631,BE
-1439301632,1439305727,RU
+1439301632,1439305727,CZ
1439305728,1439309823,DK
1439309824,1439318015,PL
1439318016,1439322111,DK
@@ -38584,42 +44233,52 @@
1439367168,1439375359,NL
1439375360,1439383551,DE
1439383552,1439432703,NL
-1439432704,1439498239,RO
+1439432704,1439440383,RO
+1439440384,1439440895,GB
+1439440896,1439446527,RO
+1439446528,1439447039,GB
+1439447040,1439449087,RO
+1439449088,1439449855,GB
+1439449856,1439451135,RO
+1439451136,1439451647,GB
+1439451648,1439457279,RO
+1439457280,1439457791,GB
+1439457792,1439462911,RO
+1439462912,1439463167,GB
+1439463168,1439463423,RO
+1439463424,1439463935,GB
+1439463936,1439464447,RO
+1439464448,1439464703,GB
+1439464704,1439466495,RO
+1439466496,1439467007,GB
+1439467008,1439482367,RO
+1439482368,1439482879,GB
+1439482880,1439498239,RO
1439498240,1439503103,DE
-1439503104,1439504127,GB
-1439504128,1439504383,DE
-1439504384,1439514623,GB
+1439503104,1439503359,PT
+1439503360,1439514111,DE
+1439514112,1439514367,GB
+1439514368,1439514623,DE
1439514624,1439516671,IT
-1439516672,1439517439,DE
-1439517440,1439517695,GB
-1439517696,1439518207,DE
+1439516672,1439518207,DE
1439518208,1439518719,IT
-1439518720,1439520767,GB
-1439520768,1439522815,DE
-1439522816,1439528959,GB
-1439528960,1439529215,DE
-1439529216,1439529471,GB
-1439529472,1439529599,DE
-1439529600,1439529983,GB
+1439518720,1439529599,DE
+1439529600,1439529727,GB
+1439529728,1439529983,DE
1439529984,1439530239,EG
1439530240,1439535103,DE
1439535104,1439538175,IT
-1439538176,1439538687,GB
+1439538176,1439538687,DE
1439538688,1439539199,IT
1439539200,1439549439,DE
1439549440,1439551487,IT
-1439551488,1439555839,DE
-1439555840,1439556095,GB
+1439551488,1439556095,DE
1439556096,1439556607,IT
-1439556608,1439557119,DE
-1439557120,1439557375,GB
-1439557376,1439557887,DE
-1439557888,1439558143,GB
+1439556608,1439558143,DE
1439558144,1439558911,IT
-1439558912,1439559423,GB
-1439559424,1439560191,DE
+1439558912,1439560191,DE
1439560192,1439560447,IT
-1439560448,1439560703,GB
+1439560448,1439560703,DE
1439560704,1439561215,IT
1439561216,1439561727,DE
1439561728,1439562239,GB
@@ -38631,7 +44290,9 @@
1439629312,1439694847,CZ
1439694848,1439825919,SA
1439825920,1439956991,GB
-1439956992,1440251903,DE
+1439956992,1440204799,DE
+1440204800,1440215039,EU
+1440215040,1440251903,DE
1440251904,1440284671,SK
1440284672,1440317439,FI
1440317440,1440350207,BG
@@ -38654,9 +44315,9 @@
1441300480,1441308671,LT
1441308672,1441316863,SE
1441316864,1441325055,MT
-1441325056,1441327519,PL
-1441327520,1441327551,SE
-1441327552,1441333247,PL
+1441325056,1441325759,PL
+1441325760,1441325775,US
+1441325776,1441333247,PL
1441333248,1441349631,DE
1441349632,1441357823,RU
1441357824,1441366015,AT
@@ -38666,9 +44327,7 @@
1441384512,1441384543,US
1441384544,1441384591,FR
1441384592,1441384599,AU
-1441384600,1441384607,FR
-1441384608,1441384639,CN
-1441384640,1441386111,FR
+1441384600,1441386111,FR
1441386112,1441386239,IL
1441386240,1441388671,FR
1441388672,1441388799,CA
@@ -38678,7 +44337,9 @@
1441389224,1441389231,LU
1441389232,1441389567,FR
1441389568,1441389599,LU
-1441389600,1441390591,FR
+1441389600,1441389967,FR
+1441389968,1441389983,CA
+1441389984,1441390591,FR
1441390592,1441398783,DK
1441398784,1441415167,RU
1441415168,1441423359,GB
@@ -38723,7 +44384,9 @@
1441570816,1441579007,RU
1441579008,1441582975,DE
1441582976,1441583103,US
-1441583104,1441587199,DE
+1441583104,1441586431,DE
+1441586432,1441586687,US
+1441586688,1441587199,DE
1441587200,1441594879,AT
1441594880,1441595135,DE
1441595136,1441603583,AT
@@ -38790,7 +44453,6 @@
1442807808,1442811903,BG
1442811904,1442815999,AT
1442816000,1442820095,BG
-1442820096,1442824191,PL
1442824192,1442828287,BE
1442828288,1442832383,NL
1442832384,1442836479,GB
@@ -38863,13 +44525,20 @@
1446576128,1446608895,IR
1446608896,1446641663,BY
1446641664,1446674431,SI
-1446674432,1446707175,DK
+1446674432,1446694543,DK
+1446694544,1446694559,SE
+1446694560,1446694591,DK
+1446694592,1446694607,NO
+1446694608,1446694623,GB
+1446694624,1446694639,TH
+1446694640,1446694655,BR
+1446694656,1446707175,DK
1446707176,1446707179,NO
1446707180,1446707183,FI
1446707184,1446707199,DK
-1446707200,1446710687,AT
-1446710688,1446710703,ES
-1446710704,1446736503,AT
+1446707200,1446712783,AT
+1446712784,1446712791,DE
+1446712792,1446736503,AT
1446736504,1446736511,US
1446736512,1446739967,AT
1446739968,1446772735,RU
@@ -38881,751 +44550,563 @@
1446871040,1446903807,CZ
1446903808,1446904063,A2
1446904064,1446904071,CY
-1446904072,1446904079,IQ
-1446904080,1446904095,BH
+1446904072,1446904079,LY
+1446904080,1446904095,A2
1446904096,1446904103,SD
-1446904104,1446904111,SA
-1446904112,1446904119,LY
-1446904120,1446904127,SD
-1446904128,1446904135,SA
-1446904136,1446904143,IQ
+1446904104,1446904111,IQ
+1446904112,1446904143,A2
1446904144,1446904151,ER
-1446904152,1446904159,IR
-1446904160,1446904167,ES
-1446904168,1446904175,IQ
-1446904176,1446904183,A2
-1446904184,1446904191,IQ
-1446904192,1446904215,A2
-1446904216,1446904223,IQ
-1446904224,1446904231,LY
-1446904232,1446904247,A2
+1446904152,1446904231,A2
+1446904232,1446904239,IQ
+1446904240,1446904247,A2
1446904248,1446904255,AF
1446904256,1446904263,CY
-1446904264,1446904279,A2
-1446904280,1446904287,IQ
-1446904288,1446904295,AF
-1446904296,1446904303,IQ
-1446904304,1446904311,A2
-1446904312,1446904319,AF
+1446904264,1446904319,A2
1446904320,1446904335,AE
1446904336,1446904351,A2
1446904352,1446904367,AE
-1446904368,1446904527,A2
-1446904528,1446904543,ZM
-1446904544,1446904575,A2
+1446904368,1446904383,IQ
+1446904384,1446904399,A2
+1446904400,1446904415,IQ
+1446904416,1446904575,A2
1446904576,1446904591,SD
-1446904592,1446904599,NG
-1446904600,1446904607,A2
+1446904592,1446904607,A2
1446904608,1446904623,SD
-1446904624,1446904631,IQ
-1446904632,1446904751,A2
+1446904624,1446904639,A2
+1446904640,1446904679,IQ
+1446904680,1446904751,A2
1446904752,1446904759,NG
1446904760,1446904799,A2
1446904800,1446904807,SD
-1446904808,1446904815,A2
-1446904816,1446904823,ZM
-1446904824,1446904831,A2
-1446904832,1446904839,IQ
-1446904840,1446904843,A2
+1446904808,1446904831,A2
+1446904832,1446904835,LY
+1446904836,1446904843,IQ
1446904844,1446904847,CG
-1446904848,1446904851,A2
-1446904852,1446904859,IQ
-1446904860,1446904871,A2
-1446904872,1446904875,IQ
-1446904876,1446904879,ZM
-1446904880,1446904887,IQ
-1446904888,1446904895,A2
-1446904896,1446904907,IQ
-1446904908,1446904915,A2
-1446904916,1446904919,ZM
-1446904920,1446904927,IQ
-1446904928,1446904931,A2
-1446904932,1446904935,ZM
-1446904936,1446904939,LY
+1446904848,1446904851,AF
+1446904852,1446904855,LY
+1446904856,1446904859,IQ
+1446904860,1446904867,LY
+1446904868,1446904871,IQ
+1446904872,1446904879,A2
+1446904880,1446904883,IQ
+1446904884,1446904887,AF
+1446904888,1446904891,A2
+1446904892,1446904895,IQ
+1446904896,1446904899,LY
+1446904900,1446904903,A2
+1446904904,1446904907,AF
+1446904908,1446904911,IQ
+1446904912,1446904919,A2
+1446904920,1446904923,LY
+1446904924,1446904927,AF
+1446904928,1446904935,A2
+1446904936,1446904939,AO
1446904940,1446904947,IQ
-1446904948,1446904951,A2
+1446904948,1446904951,LY
1446904952,1446904955,AF
1446904956,1446904959,A2
1446904960,1446904963,IQ
-1446904964,1446904975,A2
+1446904964,1446904967,TD
+1446904968,1446904971,A2
+1446904972,1446904975,LY
1446904976,1446904979,CG
-1446904980,1446904987,IQ
+1446904980,1446904983,A2
+1446904984,1446904987,LY
1446904988,1446904991,A2
-1446904992,1446905007,IQ
+1446904992,1446904995,IQ
+1446904996,1446905007,A2
1446905008,1446905011,CG
1446905012,1446905015,A2
1446905016,1446905019,NG
-1446905020,1446905023,LY
-1446905024,1446905031,IQ
+1446905020,1446905027,A2
+1446905028,1446905031,IQ
1446905032,1446905035,A2
1446905036,1446905039,IQ
1446905040,1446905043,AF
-1446905044,1446905051,IQ
-1446905052,1446905055,LY
-1446905056,1446905063,IQ
+1446905044,1446905047,IQ
+1446905048,1446905051,LY
+1446905052,1446905063,A2
1446905064,1446905067,NG
-1446905068,1446905071,IQ
-1446905072,1446905083,A2
+1446905068,1446905083,A2
1446905084,1446905095,AF
-1446905096,1446905103,BJ
-1446905104,1446905107,IQ
-1446905108,1446905111,A2
-1446905112,1446905115,BJ
-1446905116,1446905119,A2
-1446905120,1446905123,GN
+1446905096,1446905107,A2
+1446905108,1446905111,LY
+1446905112,1446905115,A2
+1446905116,1446905119,SD
+1446905120,1446905123,A2
1446905124,1446905127,AF
-1446905128,1446905135,A2
-1446905136,1446905143,IQ
-1446905144,1446905147,A2
-1446905148,1446905151,LY
-1446905152,1446905155,AF
-1446905156,1446905167,IQ
-1446905168,1446905171,A2
-1446905172,1446905175,IQ
+1446905128,1446905131,IQ
+1446905132,1446905139,LY
+1446905140,1446905143,IQ
+1446905144,1446905167,A2
+1446905168,1446905171,LY
+1446905172,1446905175,A2
1446905176,1446905179,AF
-1446905180,1446905191,LY
-1446905192,1446905195,A2
+1446905180,1446905183,LY
+1446905184,1446905195,A2
1446905196,1446905199,AF
1446905200,1446905203,NG
1446905204,1446905207,AF
1446905208,1446905211,ER
-1446905212,1446905215,IQ
-1446905216,1446905223,A2
-1446905224,1446905227,IQ
+1446905212,1446905215,A2
+1446905216,1446905219,LY
+1446905220,1446905227,A2
1446905228,1446905235,NG
-1446905236,1446905251,A2
-1446905252,1446905255,IQ
-1446905256,1446905259,A2
-1446905260,1446905263,IQ
+1446905236,1446905243,A2
+1446905244,1446905247,AF
+1446905248,1446905251,A2
+1446905252,1446905255,LY
+1446905256,1446905263,A2
1446905264,1446905267,LY
-1446905268,1446905271,NG
-1446905272,1446905275,IQ
-1446905276,1446905279,A2
-1446905280,1446905283,IQ
+1446905268,1446905271,A2
+1446905272,1446905283,IQ
1446905284,1446905287,A2
-1446905288,1446905295,IQ
-1446905296,1446905303,ZM
+1446905288,1446905295,LY
+1446905296,1446905303,A2
1446905304,1446905307,CF
-1446905308,1446905315,A2
+1446905308,1446905311,IQ
+1446905312,1446905315,A2
1446905316,1446905319,NG
-1446905320,1446905323,A2
-1446905324,1446905327,IQ
-1446905328,1446905331,A2
-1446905332,1446905339,IQ
-1446905340,1446905343,A2
-1446905344,1446905351,LY
-1446905352,1446905367,A2
-1446905368,1446905375,LY
-1446905376,1446905383,A2
+1446905320,1446905331,IQ
+1446905332,1446905335,A2
+1446905336,1446905343,IQ
+1446905344,1446905383,A2
1446905384,1446905391,SD
1446905392,1446905583,A2
1446905584,1446905591,AF
-1446905592,1446905599,A2
-1446905600,1446905603,ZM
-1446905604,1446905615,IQ
-1446905616,1446905619,A2
-1446905620,1446905623,ZM
-1446905624,1446905627,A2
-1446905628,1446905631,AF
-1446905632,1446905635,LY
+1446905592,1446905619,A2
+1446905620,1446905623,TD
+1446905624,1446905635,A2
1446905636,1446905639,IQ
1446905640,1446905643,A2
-1446905644,1446905655,IQ
+1446905644,1446905647,IQ
+1446905648,1446905651,A2
+1446905652,1446905655,IQ
1446905656,1446905659,AF
1446905660,1446905663,ER
-1446905664,1446905667,LY
-1446905668,1446905671,A2
-1446905672,1446905675,AF
-1446905676,1446905679,LY
-1446905680,1446905683,ZM
-1446905684,1446905691,A2
-1446905692,1446905695,ZM
-1446905696,1446905699,LY
-1446905700,1446905703,ZM
-1446905704,1446905719,A2
+1446905664,1446905667,A2
+1446905668,1446905675,AF
+1446905676,1446905703,A2
+1446905704,1446905707,IQ
+1446905708,1446905715,A2
+1446905716,1446905719,IQ
1446905720,1446905723,AF
1446905724,1446905727,A2
1446905728,1446905731,IQ
1446905732,1446905735,AF
-1446905736,1446905743,A2
+1446905736,1446905739,IQ
+1446905740,1446905743,A2
1446905744,1446905747,LY
-1446905748,1446905751,A2
-1446905752,1446905755,IQ
-1446905756,1446905759,A2
+1446905748,1446905759,A2
1446905760,1446905763,ML
-1446905764,1446905767,LY
-1446905768,1446905779,A2
-1446905780,1446905783,LY
-1446905784,1446905787,A2
-1446905788,1446905791,LY
+1446905764,1446905767,A2
+1446905768,1446905775,IQ
+1446905776,1446905791,A2
1446905792,1446905795,TD
-1446905796,1446905803,A2
-1446905804,1446905807,IQ
-1446905808,1446905815,A2
-1446905816,1446905823,LY
-1446905824,1446905827,A2
-1446905828,1446905831,LY
+1446905796,1446905799,A2
+1446905800,1446905803,IQ
+1446905804,1446905815,A2
+1446905816,1446905819,LY
+1446905820,1446905823,IQ
+1446905824,1446905831,A2
1446905832,1446905835,NG
-1446905836,1446905839,A2
-1446905840,1446905843,IQ
-1446905844,1446905847,A2
-1446905848,1446905851,IQ
+1446905836,1446905839,IQ
+1446905840,1446905851,A2
1446905852,1446905855,AF
-1446905856,1446905856,A2
-1446905857,1446905863,LY
+1446905856,1446905863,LY
1446905864,1446905871,SD
1446905872,1446905911,A2
-1446905912,1446905943,SD
-1446905944,1446906023,A2
+1446905912,1446905927,SD
+1446905928,1446905935,A2
+1446905936,1446905943,SD
+1446905944,1446905959,A2
+1446905960,1446905967,AF
+1446905968,1446906023,A2
1446906024,1446906031,SD
-1446906032,1446906039,A2
-1446906040,1446906047,SD
-1446906048,1446906071,A2
+1446906032,1446906071,A2
1446906072,1446906079,CY
-1446906080,1446906115,A2
-1446906116,1446906119,ZM
-1446906120,1446906123,SD
+1446906080,1446906111,A2
+1446906112,1446906119,IQ
+1446906120,1446906123,BG
1446906124,1446906131,IQ
-1446906132,1446906135,LY
-1446906136,1446906139,IQ
-1446906140,1446906143,A2
-1446906144,1446906151,ZM
-1446906152,1446906167,AF
-1446906168,1446906171,A2
+1446906132,1446906151,A2
+1446906152,1446906159,AF
+1446906160,1446906167,A2
+1446906168,1446906171,IQ
1446906172,1446906179,AF
-1446906180,1446906187,A2
-1446906188,1446906191,AF
-1446906192,1446906195,A2
-1446906196,1446906203,IQ
-1446906204,1446906211,A2
+1446906180,1446906211,A2
1446906212,1446906215,AF
-1446906216,1446906219,A2
+1446906216,1446906219,IQ
1446906220,1446906223,BG
-1446906224,1446906231,IQ
+1446906224,1446906227,IQ
+1446906228,1446906231,A2
1446906232,1446906239,AF
1446906240,1446906243,IQ
-1446906244,1446906247,A2
-1446906248,1446906259,IQ
+1446906244,1446906251,A2
+1446906252,1446906255,IQ
+1446906256,1446906259,A2
1446906260,1446906263,AF
-1446906264,1446906283,A2
-1446906284,1446906303,IQ
-1446906304,1446906307,ZM
-1446906308,1446906311,A2
-1446906312,1446906327,IQ
-1446906328,1446906331,A2
-1446906332,1446906335,IQ
-1446906336,1446906339,ZM
-1446906340,1446906343,A2
+1446906264,1446906287,A2
+1446906288,1446906295,IQ
+1446906296,1446906299,A2
+1446906300,1446906303,LY
+1446906304,1446906327,A2
+1446906328,1446906331,IQ
+1446906332,1446906343,A2
1446906344,1446906347,NG
-1446906348,1446906351,ZM
-1446906352,1446906359,A2
+1446906348,1446906359,A2
1446906360,1446906363,SD
-1446906364,1446906367,IQ
-1446906368,1446906391,A2
+1446906364,1446906391,A2
1446906392,1446906399,CY
-1446906400,1446906567,A2
-1446906568,1446906591,KW
-1446906592,1446906599,IQ
-1446906600,1446906615,KW
-1446906616,1446906623,A2
-1446906624,1446906631,LY
-1446906632,1446906639,A2
-1446906640,1446906655,LY
-1446906656,1446906663,NG
-1446906664,1446906863,A2
-1446906864,1446906871,ZM
-1446906872,1446906879,A2
-1446906880,1446906883,IQ
+1446906400,1446906883,A2
1446906884,1446906887,AF
-1446906888,1446906891,IQ
-1446906892,1446906895,A2
-1446906896,1446906899,IQ
-1446906900,1446906907,A2
-1446906908,1446906919,IQ
+1446906888,1446906895,A2
+1446906896,1446906899,GN
+1446906900,1446906915,A2
+1446906916,1446906919,AF
1446906920,1446906923,A2
1446906924,1446906927,IQ
1446906928,1446906931,SA
-1446906932,1446906935,IQ
-1446906936,1446906943,LY
+1446906932,1446906939,A2
+1446906940,1446906943,LY
1446906944,1446906947,IQ
-1446906948,1446906951,A2
-1446906952,1446906955,IQ
-1446906956,1446906963,A2
-1446906964,1446906967,AF
-1446906968,1446906971,A2
-1446906972,1446906983,IQ
+1446906948,1446906967,A2
+1446906968,1446906971,LY
+1446906972,1446906975,A2
+1446906976,1446906979,IQ
+1446906980,1446906983,LY
1446906984,1446906987,NG
-1446906988,1446906995,IQ
+1446906988,1446906991,A2
+1446906992,1446906995,IQ
1446906996,1446906999,AF
-1446907000,1446907007,A2
+1446907000,1446907003,LY
+1446907004,1446907007,A2
1446907008,1446907011,AF
-1446907012,1446907015,IQ
-1446907016,1446907019,ZM
-1446907020,1446907023,AF
-1446907024,1446907027,IQ
-1446907028,1446907031,ZM
-1446907032,1446907039,A2
-1446907040,1446907043,ZM
+1446907012,1446907019,A2
+1446907020,1446907023,LY
+1446907024,1446907031,A2
+1446907032,1446907035,LY
+1446907036,1446907039,IQ
+1446907040,1446907043,A2
1446907044,1446907047,CG
-1446907048,1446907055,IQ
-1446907056,1446907067,A2
+1446907048,1446907051,IQ
+1446907052,1446907067,A2
1446907068,1446907071,AF
-1446907072,1446907075,A2
-1446907076,1446907079,IQ
+1446907072,1446907075,IQ
+1446907076,1446907079,A2
1446907080,1446907083,AF
-1446907084,1446907087,IQ
-1446907088,1446907091,LY
-1446907092,1446907095,IQ
+1446907084,1446907095,A2
1446907096,1446907099,NG
-1446907100,1446907103,IQ
-1446907104,1446907123,A2
-1446907124,1446907131,IQ
+1446907100,1446907103,A2
+1446907104,1446907107,LY
+1446907108,1446907111,A2
+1446907112,1446907115,IQ
+1446907116,1446907119,LY
+1446907120,1446907131,A2
1446907132,1446907135,AF
-1446907136,1446907147,A2
+1446907136,1446907143,A2
+1446907144,1446907147,AF
1446907148,1446907151,IQ
1446907152,1446907155,A2
1446907156,1446907159,LY
-1446907160,1446907163,AF
-1446907164,1446907167,IQ
-1446907168,1446907171,LY
+1446907160,1446907163,IQ
+1446907164,1446907171,A2
1446907172,1446907175,IQ
-1446907176,1446907187,LY
+1446907176,1446907187,A2
1446907188,1446907191,CG
-1446907192,1446907199,IQ
-1446907200,1446907203,A2
-1446907204,1446907207,IQ
-1446907208,1446907211,A2
+1446907192,1446907195,A2
+1446907196,1446907199,LY
+1446907200,1446907211,A2
1446907212,1446907215,IQ
-1446907216,1446907223,A2
-1446907224,1446907227,ZM
-1446907228,1446907231,A2
+1446907216,1446907219,A2
+1446907220,1446907223,BJ
+1446907224,1446907231,A2
1446907232,1446907243,IQ
-1446907244,1446907247,NG
-1446907248,1446907255,A2
-1446907256,1446907259,GA
-1446907260,1446907279,IQ
+1446907244,1446907251,A2
+1446907252,1446907259,IQ
+1446907260,1446907263,A2
+1446907264,1446907271,IQ
+1446907272,1446907279,A2
1446907280,1446907283,GA
1446907284,1446907287,A2
1446907288,1446907291,AF
-1446907292,1446907303,A2
-1446907304,1446907307,IQ
+1446907292,1446907307,A2
1446907308,1446907311,AF
1446907312,1446907315,A2
1446907316,1446907319,IQ
1446907320,1446907323,AF
-1446907324,1446907327,A2
-1446907328,1446907331,IQ
-1446907332,1446907335,A2
-1446907336,1446907339,IQ
-1446907340,1446907347,LY
-1446907348,1446907355,ZM
-1446907356,1446907371,A2
+1446907324,1446907355,A2
+1446907356,1446907359,IQ
+1446907360,1446907367,A2
+1446907368,1446907368,IQ
+1446907369,1446907371,A2
1446907372,1446907375,AF
-1446907376,1446907379,ZM
-1446907380,1446907383,IQ
+1446907376,1446907383,A2
1446907384,1446907387,CI
-1446907388,1446907391,A2
-1446907392,1446907395,AF
+1446907388,1446907395,A2
1446907396,1446907399,IQ
1446907400,1446907403,A2
1446907404,1446907407,IQ
-1446907408,1446907411,A2
-1446907412,1446907419,IQ
-1446907420,1446907423,A2
-1446907424,1446907427,ZM
-1446907428,1446907439,A2
+1446907408,1446907415,A2
+1446907416,1446907423,IQ
+1446907424,1446907431,A2
+1446907432,1446907435,IQ
+1446907436,1446907439,A2
1446907440,1446907443,AF
-1446907444,1446907451,A2
-1446907452,1446907463,IQ
-1446907464,1446907475,A2
-1446907476,1446907479,LY
-1446907480,1446907483,A2
-1446907484,1446907487,IQ
-1446907488,1446907491,A2
+1446907444,1446907447,IQ
+1446907448,1446907487,A2
+1446907488,1446907491,IQ
1446907492,1446907495,TD
-1446907496,1446907503,IQ
-1446907504,1446907507,LY
-1446907508,1446907511,IQ
-1446907512,1446907523,A2
-1446907524,1446907527,LY
-1446907528,1446907531,A2
-1446907532,1446907539,IQ
-1446907540,1446907543,LY
-1446907544,1446907547,IQ
+1446907496,1446907499,IQ
+1446907500,1446907519,A2
+1446907520,1446907523,LY
+1446907524,1446907531,A2
+1446907532,1446907535,CI
+1446907536,1446907543,A2
+1446907544,1446907547,LY
1446907548,1446907551,A2
-1446907552,1446907559,IQ
-1446907560,1446907571,A2
+1446907552,1446907555,LY
+1446907556,1446907559,A2
+1446907560,1446907563,AF
+1446907564,1446907571,A2
1446907572,1446907575,AF
-1446907576,1446907579,A2
-1446907580,1446907583,GH
-1446907584,1446907615,A2
+1446907576,1446907579,IQ
+1446907580,1446907583,A2
+1446907584,1446907587,IQ
+1446907588,1446907595,A2
+1446907596,1446907599,IQ
+1446907600,1446907611,A2
+1446907612,1446907615,IQ
1446907616,1446907619,TD
-1446907620,1446907631,A2
-1446907632,1446907635,LY
-1446907636,1446907647,IQ
-1446907648,1446907659,A2
-1446907660,1446907663,ZM
+1446907620,1446907635,A2
+1446907636,1446907639,IQ
+1446907640,1446907663,A2
1446907664,1446907667,NG
-1446907668,1446907671,A2
-1446907672,1446907675,IQ
-1446907676,1446907679,LY
-1446907680,1446907691,A2
+1446907668,1446907671,IQ
+1446907672,1446907679,A2
+1446907680,1446907683,LY
+1446907684,1446907687,IQ
+1446907688,1446907691,A2
1446907692,1446907695,IQ
-1446907696,1446907699,LY
-1446907700,1446907703,IQ
-1446907704,1446907715,A2
+1446907696,1446907711,A2
+1446907712,1446907715,IQ
1446907716,1446907719,AF
-1446907720,1446907723,A2
-1446907724,1446907731,IQ
-1446907732,1446907735,LY
-1446907736,1446907739,A2
-1446907740,1446907743,IQ
-1446907744,1446907747,A2
-1446907748,1446907755,AF
-1446907756,1446907759,A2
-1446907760,1446907763,IQ
-1446907764,1446907767,A2
-1446907768,1446907771,IQ
-1446907772,1446907775,A2
-1446907776,1446907779,LY
-1446907780,1446907783,IQ
-1446907784,1446907787,A2
+1446907720,1446907735,A2
+1446907736,1446907739,IQ
+1446907740,1446907743,A2
+1446907744,1446907747,IQ
+1446907748,1446907751,A2
+1446907752,1446907755,AF
+1446907756,1446907767,A2
+1446907768,1446907775,IQ
+1446907776,1446907787,A2
1446907788,1446907791,IQ
-1446907792,1446907799,A2
-1446907800,1446907803,ZM
-1446907804,1446907807,IQ
-1446907808,1446907823,A2
-1446907824,1446907827,LY
-1446907828,1446907831,A2
-1446907832,1446907839,LY
-1446907840,1446907855,A2
+1446907792,1446907811,A2
+1446907812,1446907819,IQ
+1446907820,1446907823,AF
+1446907824,1446907827,A2
+1446907828,1446907831,TD
+1446907832,1446907855,A2
1446907856,1446907859,AF
-1446907860,1446907863,A2
-1446907864,1446907871,LY
-1446907872,1446907875,A2
-1446907876,1446907883,IQ
-1446907884,1446907887,A2
-1446907888,1446907891,SD
+1446907860,1446907871,A2
+1446907872,1446907875,IQ
+1446907876,1446907891,A2
1446907892,1446907895,AF
-1446907896,1446907899,IQ
-1446907900,1446907903,LY
-1446907904,1446907911,IQ
-1446907912,1446907919,A2
-1446907920,1446907927,LY
-1446907928,1446908103,A2
-1446908104,1446908111,NG
-1446908112,1446908143,A2
+1446907896,1446907899,A2
+1446907900,1446907903,EG
+1446907904,1446907911,A2
+1446907912,1446907919,SD
+1446907920,1446908143,A2
1446908144,1446908151,AE
1446908152,1446908159,SD
1446908160,1446908163,AF
-1446908164,1446908167,A2
-1446908168,1446908175,IQ
-1446908176,1446908187,A2
+1446908164,1446908187,A2
1446908188,1446908191,GH
-1446908192,1446908235,A2
-1446908236,1446908243,IQ
-1446908244,1446908247,A2
+1446908192,1446908195,A2
+1446908196,1446908199,IQ
+1446908200,1446908211,A2
+1446908212,1446908215,SD
+1446908216,1446908231,A2
+1446908232,1446908235,LY
+1446908236,1446908247,A2
1446908248,1446908251,AF
-1446908252,1446908255,A2
-1446908256,1446908259,SZ
-1446908260,1446908267,A2
+1446908252,1446908259,A2
+1446908260,1446908263,IQ
+1446908264,1446908267,A2
1446908268,1446908271,AF
-1446908272,1446908275,LY
-1446908276,1446908279,A2
-1446908280,1446908283,IQ
+1446908272,1446908283,A2
1446908284,1446908287,AF
1446908288,1446908299,A2
1446908300,1446908303,IQ
-1446908304,1446908307,AF
-1446908308,1446908311,A2
-1446908312,1446908315,LY
-1446908316,1446908323,A2
-1446908324,1446908327,ZM
-1446908328,1446908331,A2
+1446908304,1446908331,A2
1446908332,1446908335,NG
-1446908336,1446908359,A2
+1446908336,1446908343,A2
+1446908344,1446908347,IQ
+1446908348,1446908351,TD
+1446908352,1446908355,IQ
+1446908356,1446908359,A2
1446908360,1446908363,LY
-1446908364,1446908367,A2
-1446908368,1446908371,IQ
-1446908372,1446908383,A2
-1446908384,1446908391,IQ
-1446908392,1446908419,A2
-1446908420,1446908423,IQ
-1446908424,1446908427,A2
-1446908428,1446908431,IQ
-1446908432,1446908435,A2
+1446908364,1446908379,A2
+1446908380,1446908383,IQ
+1446908384,1446908387,A2
+1446908388,1446908391,IQ
+1446908392,1446908423,A2
+1446908424,1446908427,AF
+1446908428,1446908435,A2
1446908436,1446908443,AF
-1446908444,1446908447,A2
-1446908448,1446908451,ZM
-1446908452,1446908455,A2
+1446908444,1446908455,A2
1446908456,1446908459,LB
1446908460,1446908479,A2
1446908480,1446908483,IQ
-1446908484,1446908487,A2
-1446908488,1446908491,IQ
-1446908492,1446908515,A2
-1446908516,1446908519,IQ
-1446908520,1446908531,A2
-1446908532,1446908535,IQ
-1446908536,1446908539,A2
+1446908484,1446908539,A2
1446908540,1446908543,ZM
-1446908544,1446908591,A2
-1446908592,1446908595,IQ
-1446908596,1446908599,A2
-1446908600,1446908603,ZM
+1446908544,1446908603,A2
1446908604,1446908607,CG
1446908608,1446908631,A2
1446908632,1446908635,IQ
-1446908636,1446908651,A2
-1446908652,1446908663,IQ
-1446908664,1446908683,A2
+1446908636,1446908655,A2
+1446908656,1446908667,IQ
+1446908668,1446908683,A2
1446908684,1446908687,SD
1446908688,1446908691,IQ
-1446908692,1446908707,A2
-1446908708,1446908711,IQ
-1446908712,1446908715,A2
-1446908716,1446908719,CM
-1446908720,1446908727,A2
-1446908728,1446908731,AF
-1446908732,1446908735,A2
-1446908736,1446908739,IQ
-1446908740,1446908743,A2
-1446908744,1446908747,GN
-1446908748,1446908751,A2
-1446908752,1446908759,IQ
-1446908760,1446908775,A2
-1446908776,1446908779,IQ
-1446908780,1446908787,A2
+1446908692,1446908755,A2
+1446908756,1446908759,IQ
+1446908760,1446908787,A2
1446908788,1446908791,NG
-1446908792,1446908811,A2
-1446908812,1446908815,IQ
-1446908816,1446908835,A2
-1446908836,1446908843,IQ
-1446908844,1446908855,A2
-1446908856,1446908859,ZM
-1446908860,1446908863,A2
+1446908792,1446908863,A2
1446908864,1446908871,AF
1446908872,1446908875,A2
1446908876,1446908879,AF
-1446908880,1446908907,A2
-1446908908,1446908911,IQ
-1446908912,1446908919,A2
+1446908880,1446908919,A2
1446908920,1446908923,IQ
1446908924,1446908927,A2
1446908928,1446908931,IQ
1446908932,1446908935,ZM
-1446908936,1446908951,A2
-1446908952,1446908955,IQ
-1446908956,1446908959,LY
-1446908960,1446908971,A2
+1446908936,1446908947,A2
+1446908948,1446908951,LY
+1446908952,1446908971,A2
1446908972,1446908975,AF
1446908976,1446908979,GA
1446908980,1446908983,AF
-1446908984,1446908987,LY
-1446908988,1446908999,A2
-1446909000,1446909003,IQ
-1446909004,1446909007,LY
-1446909008,1446909019,IQ
-1446909020,1446909083,A2
+1446908984,1446908991,A2
+1446908992,1446908995,IQ
+1446908996,1446909007,A2
+1446909008,1446909011,IQ
+1446909012,1446909083,A2
1446909084,1446909087,CG
-1446909088,1446909091,IQ
-1446909092,1446909095,A2
+1446909088,1446909095,A2
1446909096,1446909099,TD
1446909100,1446909111,A2
1446909112,1446909115,IQ
1446909116,1446909163,A2
1446909164,1446909167,IQ
-1446909168,1446909171,A2
-1446909172,1446909173,IQ
-1446909174,1446909195,A2
-1446909196,1446909199,IQ
-1446909200,1446909203,A2
+1446909168,1446909187,A2
+1446909188,1446909191,IQ
+1446909192,1446909203,A2
1446909204,1446909207,IQ
-1446909208,1446909211,LY
-1446909212,1446909215,A2
-1446909216,1446909219,LY
-1446909220,1446909223,IQ
-1446909224,1446909271,A2
-1446909272,1446909275,IQ
-1446909276,1446909295,A2
+1446909208,1446909239,A2
+1446909240,1446909243,LY
+1446909244,1446909295,A2
1446909296,1446909299,IQ
-1446909300,1446909303,A2
-1446909304,1446909319,IQ
-1446909320,1446909327,A2
-1446909328,1446909331,IQ
-1446909332,1446909335,A2
-1446909336,1446909339,GH
-1446909340,1446909351,A2
-1446909352,1446909359,IQ
-1446909360,1446909363,A2
+1446909300,1446909363,A2
1446909364,1446909367,IQ
-1446909368,1446909391,A2
-1446909392,1446909395,ZM
-1446909396,1446909401,NG
-1446909402,1446909423,A2
+1446909368,1446909399,A2
+1446909400,1446909403,AF
+1446909404,1446909423,A2
1446909424,1446909435,AF
-1446909436,1446909443,A2
+1446909436,1446909443,IQ
1446909444,1446909447,NG
-1446909448,1446909471,A2
-1446909472,1446909475,IQ
-1446909476,1446909491,A2
-1446909492,1446909495,IQ
-1446909496,1446909499,A2
-1446909500,1446909507,IQ
-1446909508,1446909519,A2
+1446909448,1446909499,A2
+1446909500,1446909503,IQ
+1446909504,1446909507,LY
+1446909508,1446909511,IQ
+1446909512,1446909519,A2
1446909520,1446909523,CG
-1446909524,1446909539,A2
-1446909540,1446909543,IQ
-1446909544,1446909555,A2
-1446909556,1446909559,IQ
-1446909560,1446909563,A2
-1446909564,1446909567,NG
-1446909568,1446909575,A2
+1446909524,1446909527,A2
+1446909528,1446909531,EG
+1446909532,1446909535,A2
+1446909536,1446909539,AF
+1446909540,1446909547,IQ
+1446909548,1446909575,A2
1446909576,1446909579,AF
1446909580,1446909599,A2
1446909600,1446909603,AF
-1446909604,1446909615,A2
-1446909616,1446909623,IQ
-1446909624,1446909647,A2
-1446909648,1446909651,NG
-1446909652,1446909655,A2
-1446909656,1446909659,AF
-1446909660,1446909667,A2
-1446909668,1446909671,IQ
-1446909672,1446909683,A2
-1446909684,1446909687,IQ
+1446909604,1446909639,A2
+1446909640,1446909643,NG
+1446909644,1446909687,A2
1446909688,1446909691,AF
-1446909692,1446909699,A2
-1446909700,1446909703,IQ
-1446909704,1446909731,A2
-1446909732,1446909735,IQ
-1446909736,1446909739,ZM
+1446909692,1446909739,A2
1446909740,1446909743,AF
-1446909744,1446909755,A2
-1446909756,1446909763,ZM
-1446909764,1446909787,A2
-1446909788,1446909791,IQ
-1446909792,1446909803,A2
+1446909744,1446909803,A2
1446909804,1446909807,AF
1446909808,1446909815,A2
1446909816,1446909819,AF
1446909820,1446909827,IQ
-1446909828,1446909851,A2
-1446909852,1446909855,LY
-1446909856,1446909859,A2
-1446909860,1446909863,IQ
-1446909864,1446909867,A2
-1446909868,1446909871,LY
-1446909872,1446909879,A2
-1446909880,1446909883,LY
-1446909884,1446909887,A2
-1446909888,1446909891,LY
-1446909892,1446909907,A2
-1446909908,1446909911,IQ
-1446909912,1446909955,A2
-1446909956,1446909959,IQ
-1446909960,1446909967,A2
-1446909968,1446909971,LY
-1446909972,1446909975,A2
-1446909976,1446909991,LY
-1446909992,1446909999,IQ
+1446909828,1446909903,A2
+1446909904,1446909907,IQ
+1446909908,1446909999,A2
1446910000,1446910003,AF
-1446910004,1446910011,A2
-1446910012,1446910015,IQ
-1446910016,1446910019,A2
-1446910020,1446910027,IQ
-1446910028,1446910031,A2
-1446910032,1446910035,LY
-1446910036,1446910039,A2
-1446910040,1446910043,IQ
-1446910044,1446910055,A2
+1446910004,1446910019,A2
+1446910020,1446910023,IQ
+1446910024,1446910035,A2
+1446910036,1446910039,NG
+1446910040,1446910055,A2
1446910056,1446910059,ZM
-1446910060,1446910063,IQ
-1446910064,1446910071,A2
-1446910072,1446910075,IQ
-1446910076,1446910083,A2
-1446910084,1446910095,IQ
-1446910096,1446910103,A2
-1446910104,1446910107,IQ
-1446910108,1446910111,A2
-1446910112,1446910115,IQ
-1446910116,1446910119,A2
-1446910120,1446910123,IQ
-1446910124,1446910159,A2
-1446910160,1446910163,ZM
+1446910060,1446910111,A2
+1446910112,1446910115,NG
+1446910116,1446910139,A2
+1446910140,1446910143,NG
+1446910144,1446910163,A2
1446910164,1446910167,NG
-1446910168,1446910175,A2
-1446910176,1446910179,ZM
-1446910180,1446910191,IQ
+1446910168,1446910187,A2
+1446910188,1446910191,IQ
1446910192,1446910195,A2
1446910196,1446910199,AF
-1446910200,1446910203,A2
-1446910204,1446910207,ZM
-1446910208,1446910211,A2
-1446910212,1446910220,IQ
-1446910221,1446910223,A2
+1446910200,1446910215,A2
+1446910216,1446910219,IQ
+1446910220,1446910223,A2
1446910224,1446910227,IQ
-1446910228,1446910231,A2
-1446910232,1446910239,IQ
-1446910240,1446910247,A2
-1446910248,1446910251,LY
+1446910228,1446910251,A2
1446910252,1446910255,IQ
-1446910256,1446910263,A2
-1446910264,1446910267,IQ
-1446910268,1446910271,AF
-1446910272,1446910275,A2
+1446910256,1446910275,A2
1446910276,1446910279,IQ
1446910280,1446910283,A2
-1446910284,1446910291,IQ
-1446910292,1446910295,A2
-1446910296,1446910307,IQ
+1446910284,1446910287,IQ
+1446910288,1446910303,A2
+1446910304,1446910307,IQ
1446910308,1446910311,AF
-1446910312,1446910323,A2
-1446910324,1446910327,IQ
-1446910328,1446910331,A2
-1446910332,1446910335,IQ
+1446910312,1446910335,A2
1446910336,1446910339,AF
-1446910340,1446910343,IQ
-1446910344,1446910347,LY
+1446910340,1446910347,A2
1446910348,1446910351,GA
-1446910352,1446910355,A2
-1446910356,1446910359,IQ
-1446910360,1446910363,AF
-1446910364,1446910371,A2
-1446910372,1446910379,AF
-1446910380,1446910427,A2
-1446910428,1446910431,IQ
-1446910432,1446910439,A2
-1446910440,1446910443,IQ
-1446910444,1446910455,A2
-1446910456,1446910459,IQ
-1446910460,1446910463,A2
-1446910464,1446910479,LY
-1446910480,1446910495,A2
+1446910352,1446910359,A2
+1446910360,1446910363,IQ
+1446910364,1446910375,A2
+1446910376,1446910379,AF
+1446910380,1446910459,A2
+1446910460,1446910463,LY
+1446910464,1446910471,A2
+1446910472,1446910479,LY
+1446910480,1446910487,EG
+1446910488,1446910495,A2
1446910496,1446910503,NG
-1446910504,1446910527,A2
-1446910528,1446910535,AF
-1446910536,1446910599,A2
-1446910600,1446910615,NG
-1446910616,1446910623,A2
+1446910504,1446910599,A2
+1446910600,1446910607,NG
+1446910608,1446910623,A2
1446910624,1446910631,AF
1446910632,1446910695,A2
1446910696,1446910711,SD
-1446910712,1446910719,AE
-1446910720,1446910723,A2
-1446910724,1446910727,IQ
+1446910712,1446910727,A2
1446910728,1446910731,AF
1446910732,1446910739,A2
1446910740,1446910747,AF
-1446910748,1446910751,A2
-1446910752,1446910755,LY
-1446910756,1446910767,IQ
-1446910768,1446910771,A2
+1446910748,1446910755,A2
+1446910756,1446910759,IQ
+1446910760,1446910771,A2
1446910772,1446910775,AF
-1446910776,1446910779,IQ
-1446910780,1446910787,A2
-1446910788,1446910791,IQ
-1446910792,1446910799,A2
+1446910776,1446910791,A2
+1446910792,1446910795,LY
+1446910796,1446910799,A2
1446910800,1446910807,IQ
1446910808,1446910815,A2
1446910816,1446910819,IQ
@@ -39634,253 +45115,193 @@
1446910836,1446910839,AF
1446910840,1446910843,A2
1446910844,1446910847,NG
-1446910848,1446910855,IQ
-1446910856,1446910883,A2
-1446910884,1446910887,IQ
-1446910888,1446910899,A2
-1446910900,1446910903,IQ
-1446910904,1446910907,A2
-1446910908,1446910911,IQ
-1446910912,1446910927,A2
-1446910928,1446910931,NG
-1446910932,1446910935,A2
-1446910936,1446910943,IQ
-1446910944,1446910947,A2
-1446910948,1446910955,IQ
+1446910848,1446910851,IQ
+1446910852,1446910887,A2
+1446910888,1446910891,LY
+1446910892,1446910911,A2
+1446910912,1446910915,IQ
+1446910916,1446910919,A2
+1446910920,1446910923,AF
+1446910924,1446910931,A2
+1446910932,1446910939,IQ
+1446910940,1446910951,A2
+1446910952,1446910955,IQ
1446910956,1446910963,A2
1446910964,1446910967,AF
-1446910968,1446910971,IQ
+1446910968,1446910971,A2
1446910972,1446910975,AF
1446910976,1446910979,IQ
-1446910980,1446910991,AF
-1446910992,1446910999,IQ
+1446910980,1446910983,A2
+1446910984,1446910991,AF
+1446910992,1446910995,A2
+1446910996,1446910999,IQ
1446911000,1446911003,A2
1446911004,1446911007,IQ
-1446911008,1446911011,LY
-1446911012,1446911015,A2
+1446911008,1446911015,A2
1446911016,1446911023,IQ
1446911024,1446911027,LY
-1446911028,1446911035,AF
-1446911036,1446911039,LY
-1446911040,1446911043,A2
-1446911044,1446911047,IQ
-1446911048,1446911051,LY
-1446911052,1446911055,AF
-1446911056,1446911059,A2
-1446911060,1446911067,IQ
-1446911068,1446911075,A2
-1446911076,1446911079,IQ
-1446911080,1446911087,LY
-1446911088,1446911091,A2
-1446911092,1446911095,IQ
+1446911028,1446911031,AF
+1446911032,1446911083,A2
+1446911084,1446911087,LY
+1446911088,1446911095,A2
1446911096,1446911099,NG
-1446911100,1446911103,IQ
-1446911104,1446911111,SD
-1446911112,1446911115,A2
-1446911116,1446911135,SD
-1446911136,1446911143,A2
+1446911100,1446911111,A2
+1446911112,1446911115,SD
+1446911116,1446911123,A2
+1446911124,1446911143,LY
1446911144,1446911147,TD
1446911148,1446911163,A2
1446911164,1446911171,IQ
-1446911172,1446911175,A2
-1446911176,1446911179,IQ
-1446911180,1446911191,A2
-1446911192,1446911203,IQ
-1446911204,1446911207,A2
-1446911208,1446911219,IQ
-1446911220,1446911223,A2
+1446911172,1446911183,A2
+1446911184,1446911187,AF
+1446911188,1446911195,A2
+1446911196,1446911199,IQ
+1446911200,1446911207,A2
+1446911208,1446911215,IQ
+1446911216,1446911223,A2
1446911224,1446911227,AF
-1446911228,1446911231,LY
-1446911232,1446911239,IQ
-1446911240,1446911243,A2
-1446911244,1446911247,LY
-1446911248,1446911251,A2
-1446911252,1446911255,IQ
-1446911256,1446911259,A2
+1446911228,1446911235,A2
+1446911236,1446911239,IQ
+1446911240,1446911255,A2
+1446911256,1446911259,LY
1446911260,1446911263,AF
1446911264,1446911267,IQ
1446911268,1446911271,AF
-1446911272,1446911283,A2
-1446911284,1446911287,IQ
-1446911288,1446911291,LY
-1446911292,1446911295,IQ
+1446911272,1446911295,A2
1446911296,1446911299,GH
-1446911300,1446911303,IQ
-1446911304,1446911311,A2
-1446911312,1446911315,LY
-1446911316,1446911319,IQ
-1446911320,1446911323,A2
-1446911324,1446911327,IQ
-1446911328,1446911331,NG
-1446911332,1446911335,ZM
-1446911336,1446911339,IQ
-1446911340,1446911343,AF
-1446911344,1446911347,A2
+1446911300,1446911303,A2
+1446911304,1446911307,IQ
+1446911308,1446911319,A2
+1446911320,1446911323,AF
+1446911324,1446911343,A2
+1446911344,1446911347,IQ
1446911348,1446911351,LY
-1446911352,1446911355,IQ
-1446911356,1446911359,A2
-1446911360,1446911363,IQ
-1446911364,1446911367,A2
-1446911368,1446911371,LY
-1446911372,1446911375,A2
-1446911376,1446911379,LY
-1446911380,1446911387,A2
-1446911388,1446911395,LY
-1446911396,1446911399,A2
-1446911400,1446911403,LY
+1446911352,1446911363,A2
+1446911364,1446911367,LY
+1446911368,1446911395,A2
+1446911396,1446911399,AF
+1446911400,1446911403,A2
1446911404,1446911407,AF
-1446911408,1446911415,A2
-1446911416,1446911423,IQ
+1446911408,1446911411,LY
+1446911412,1446911423,A2
1446911424,1446911427,AF
1446911428,1446911435,A2
1446911436,1446911439,SD
-1446911440,1446911447,A2
-1446911448,1446911459,IQ
-1446911460,1446911463,A2
-1446911464,1446911467,IQ
-1446911468,1446911475,A2
+1446911440,1446911443,A2
+1446911444,1446911447,IQ
+1446911448,1446911459,A2
+1446911460,1446911463,LY
+1446911464,1446911475,A2
1446911476,1446911479,ER
1446911480,1446911483,CG
-1446911484,1446911503,A2
-1446911504,1446911507,IQ
-1446911508,1446911515,A2
-1446911516,1446911523,IQ
-1446911524,1446911527,A2
-1446911528,1446911531,IQ
-1446911532,1446911539,A2
-1446911540,1446911543,IQ
+1446911484,1446911487,A2
+1446911488,1446911491,LY
+1446911492,1446911507,A2
+1446911508,1446911511,AF
+1446911512,1446911515,EG
+1446911516,1446911535,A2
+1446911536,1446911539,SD
+1446911540,1446911543,LY
1446911544,1446911547,AF
-1446911548,1446911551,LY
-1446911552,1446911559,AF
-1446911560,1446911567,A2
+1446911548,1446911559,A2
+1446911560,1446911563,LY
+1446911564,1446911567,A2
1446911568,1446911571,IQ
-1446911572,1446911575,LY
-1446911576,1446911579,IQ
-1446911580,1446911587,A2
-1446911588,1446911591,IQ
-1446911592,1446911595,A2
-1446911596,1446911597,LY
-1446911598,1446911615,A2
+1446911572,1446911579,A2
+1446911580,1446911583,CG
+1446911584,1446911587,A2
+1446911588,1446911591,LY
+1446911592,1446911595,AF
+1446911596,1446911599,A2
+1446911600,1446911603,LY
+1446911604,1446911615,A2
1446911616,1446911619,LY
-1446911620,1446911623,GH
+1446911620,1446911623,A2
1446911624,1446911627,IQ
1446911628,1446911631,AF
-1446911632,1446911635,A2
-1446911636,1446911639,IQ
-1446911640,1446911647,A2
-1446911648,1446911651,ZM
-1446911652,1446911655,A2
-1446911656,1446911659,IQ
-1446911660,1446911671,A2
-1446911672,1446911675,LY
-1446911676,1446911679,IQ
+1446911632,1446911635,IQ
+1446911636,1446911643,A2
+1446911644,1446911647,AF
+1446911648,1446911679,A2
1446911680,1446911683,SD
-1446911684,1446911687,A2
-1446911688,1446911691,LY
-1446911692,1446911695,AF
-1446911696,1446911699,A2
-1446911700,1446911707,LY
-1446911708,1446911711,IQ
-1446911712,1446911715,LY
-1446911716,1446911719,IQ
-1446911720,1446911723,LY
-1446911724,1446911727,IQ
-1446911728,1446911739,LY
-1446911740,1446911747,A2
-1446911748,1446911751,IQ
-1446911752,1446911759,LY
-1446911760,1446911763,IQ
-1446911764,1446911767,A2
-1446911768,1446911771,AF
-1446911772,1446911779,IQ
+1446911684,1446911691,A2
+1446911692,1446911701,LY
+1446911702,1446911739,A2
+1446911740,1446911743,LY
+1446911744,1446911751,IQ
+1446911752,1446911763,A2
+1446911764,1446911767,LY
+1446911768,1446911771,A2
+1446911772,1446911775,AF
+1446911776,1446911779,A2
1446911780,1446911783,AF
-1446911784,1446911787,LY
+1446911784,1446911787,A2
1446911788,1446911791,AF
-1446911792,1446911795,LY
-1446911796,1446911803,A2
-1446911804,1446911811,LY
-1446911812,1446911815,IQ
-1446911816,1446911819,LY
-1446911820,1446911827,IQ
-1446911828,1446911835,A2
+1446911792,1446911795,A2
+1446911796,1446911799,IQ
+1446911800,1446911803,NG
+1446911804,1446911819,A2
+1446911820,1446911823,IQ
+1446911824,1446911827,A2
+1446911828,1446911831,IQ
+1446911832,1446911835,A2
1446911836,1446911843,IQ
1446911844,1446911847,A2
-1446911848,1446911851,IQ
-1446911852,1446911855,A2
+1446911848,1446911855,IQ
1446911856,1446911859,AF
-1446911860,1446911863,A2
-1446911864,1446911867,IQ
+1446911860,1446911867,A2
1446911868,1446911871,LY
-1446911872,1446911879,A2
-1446911880,1446911883,IQ
-1446911884,1446911887,NG
-1446911888,1446911891,IQ
-1446911892,1446911895,A2
-1446911896,1446911899,IQ
-1446911900,1446911903,A2
+1446911872,1446911875,AF
+1446911876,1446911903,A2
1446911904,1446911907,AF
-1446911908,1446911911,IQ
-1446911912,1446911923,A2
-1446911924,1446911927,IQ
-1446911928,1446911935,A2
-1446911936,1446911939,IQ
-1446911940,1446911943,A2
-1446911944,1446911955,IQ
-1446911956,1446911959,A2
-1446911960,1446911967,IQ
-1446911968,1446911975,A2
-1446911976,1446911987,IQ
-1446911988,1446911991,AF
-1446911992,1446911995,A2
-1446911996,1446911999,IQ
-1446912000,1446912003,BJ
+1446911908,1446911947,A2
+1446911948,1446911951,IQ
+1446911952,1446911955,A2
+1446911956,1446911959,IQ
+1446911960,1446911963,A2
+1446911964,1446911967,IQ
+1446911968,1446911987,A2
+1446911988,1446911995,AF
+1446911996,1446912003,A2
1446912004,1446912007,AF
-1446912008,1446912011,IQ
-1446912012,1446912015,A2
-1446912016,1446912019,BJ
-1446912020,1446912023,ZM
-1446912024,1446912027,A2
+1446912008,1446912011,A2
+1446912012,1446912015,IQ
+1446912016,1446912027,A2
1446912028,1446912031,AF
-1446912032,1446912035,IQ
+1446912032,1446912035,A2
1446912036,1446912039,AF
-1446912040,1446912047,A2
-1446912048,1446912051,IQ
+1446912040,1446912043,IQ
+1446912044,1446912047,CG
+1446912048,1446912051,AF
1446912052,1446912055,ER
1446912056,1446912059,A2
1446912060,1446912063,NG
1446912064,1446912067,AF
-1446912068,1446912071,IQ
+1446912068,1446912071,A2
1446912072,1446912075,AE
1446912076,1446912079,A2
1446912080,1446912083,IQ
-1446912084,1446912087,A2
-1446912088,1446912091,IQ
-1446912092,1446912095,LY
-1446912096,1446912099,AF
-1446912100,1446912107,IQ
-1446912108,1446912111,A2
-1446912112,1446912115,IQ
+1446912084,1446912087,AF
+1446912088,1446912095,A2
+1446912096,1446912103,AF
+1446912104,1446912107,IQ
+1446912108,1446912115,A2
1446912116,1446912119,LY
-1446912120,1446912123,A2
-1446912124,1446912127,LY
-1446912128,1446912139,A2
-1446912140,1446912143,IQ
-1446912144,1446912147,AF
-1446912148,1446912151,IQ
-1446912152,1446912163,A2
+1446912120,1446912151,A2
+1446912152,1446912155,CF
+1446912156,1446912163,A2
1446912164,1446912167,IQ
-1446912168,1446912179,A2
-1446912180,1446912183,ZM
+1446912168,1446912183,A2
1446912184,1446912187,AF
-1446912188,1446912195,IQ
-1446912196,1446912211,A2
-1446912212,1446912219,IQ
-1446912220,1446912223,LY
-1446912224,1446912235,IQ
-1446912236,1446912243,A2
-1446912244,1446912247,IQ
+1446912188,1446912191,IQ
+1446912192,1446912195,A2
+1446912196,1446912203,IQ
+1446912204,1446912215,A2
+1446912216,1446912219,IQ
+1446912220,1446912239,A2
+1446912240,1446912247,IQ
1446912248,1446912251,AF
-1446912252,1446912255,A2
+1446912252,1446912255,IQ
1446912256,1446912263,AF
1446912264,1446912295,IQ
1446912296,1446912303,AF
@@ -39910,11 +45331,83 @@
1449459712,1449525247,HU
1449525248,1449590783,RU
1449590784,1449656319,DE
-1449656320,1449808639,RO
+1449656320,1449657087,GB
+1449657088,1449658623,RO
+1449658624,1449659135,GB
+1449659136,1449685759,RO
+1449685760,1449686271,GB
+1449686272,1449686527,RO
+1449686528,1449687039,GB
+1449687040,1449687295,RO
+1449687296,1449688063,GB
+1449688064,1449690111,RO
+1449690112,1449690623,GB
+1449690624,1449705471,RO
+1449705472,1449705727,GB
+1449705728,1449706239,RO
+1449706240,1449706495,GB
+1449706496,1449710591,RO
+1449710592,1449711103,GB
+1449711104,1449711359,RO
+1449711360,1449711615,GB
+1449711616,1449717759,RO
+1449717760,1449718783,GB
+1449718784,1449719039,RO
+1449719040,1449719807,GB
+1449719808,1449756671,RO
+1449756672,1449758719,GB
+1449758720,1449767423,RO
+1449767424,1449767679,GB
+1449767680,1449771775,RO
+1449771776,1449772031,GB
+1449772032,1449773055,RO
+1449773056,1449774079,GB
+1449774080,1449776383,RO
+1449776384,1449776639,GB
+1449776640,1449779967,RO
+1449779968,1449780223,GB
+1449780224,1449780735,RO
+1449780736,1449780991,GB
+1449780992,1449783807,RO
+1449783808,1449784319,GB
+1449784320,1449785343,RO
+1449785344,1449786367,GB
+1449786368,1449787391,RO
+1449787392,1449791487,GB
+1449791488,1449795327,RO
+1449795328,1449795583,GB
+1449795584,1449808639,RO
1449808640,1449808895,UA
-1449808896,1449840639,RO
+1449808896,1449823231,RO
+1449823232,1449826303,GB
+1449826304,1449827839,RO
+1449827840,1449828095,GB
+1449828096,1449830655,RO
+1449830656,1449830911,GB
+1449830912,1449840639,RO
1449840640,1449852927,MD
-1449852928,1449918463,RO
+1449852928,1449854975,GB
+1449854976,1449859071,RO
+1449859072,1449859583,GB
+1449859584,1449859839,RO
+1449859840,1449860095,GB
+1449860096,1449869311,RO
+1449869312,1449870335,GB
+1449870336,1449870847,RO
+1449870848,1449871615,GB
+1449871616,1449879551,RO
+1449879552,1449881599,GB
+1449881600,1449895935,RO
+1449895936,1449896191,GB
+1449896192,1449896703,RO
+1449896704,1449896959,GB
+1449896960,1449899007,RO
+1449899008,1449899263,GB
+1449899264,1449899519,RO
+1449899520,1449899775,GB
+1449899776,1449908223,RO
+1449908224,1449910271,GB
+1449910272,1449918463,RO
1449918464,1449951231,JO
1449951232,1449983999,TR
1449984000,1449992191,NL
@@ -39938,7 +45431,6 @@
1450123264,1450131455,AT
1450131456,1450139647,UA
1450139648,1450147839,PL
-1450147840,1450156031,RU
1450156032,1450164223,GB
1450164224,1450166271,SA
1450166272,1450168319,PL
@@ -39963,7 +45455,10 @@
1464074240,1464336383,IL
1464336384,1464467455,DK
1464467456,1464598527,GB
-1464598528,1464860671,DE
+1464598528,1464602623,RU
+1464606720,1464614911,KZ
+1464614912,1464631295,UA
+1464664064,1464860671,DE
1464860672,1465384959,GB
1465384960,1465647103,FR
1465647104,1465909247,FI
@@ -40007,12 +45502,16 @@
1466590208,1466592255,GB
1466592256,1466592511,FR
1466592512,1466592767,GB
-1466592768,1466593279,FR
+1466592768,1466592895,FR
+1466592896,1466593023,DE
+1466593024,1466593279,GB
1466593280,1466604799,DE
1466604800,1466605055,ES
1466605056,1466606847,DE
1466606848,1466607103,FR
-1466607104,1466613759,DE
+1466607104,1466608895,DE
+1466608896,1466609151,ES
+1466609152,1466613759,DE
1466613760,1466615807,ES
1466615808,1466616575,GB
1466616576,1466617343,ES
@@ -40039,9 +45538,7 @@
1467340960,1467340991,TR
1467340992,1467344639,GB
1467344640,1467344895,ZA
-1467344896,1467347903,GB
-1467347904,1467347935,SE
-1467347936,1467351039,GB
+1467344896,1467351039,GB
1467351040,1467367423,NO
1467367424,1467367615,DE
1467367616,1467367647,SE
@@ -40059,14 +45556,15 @@
1467369520,1467369535,RU
1467369536,1467369599,DE
1467369600,1467369663,IT
-1467369664,1467369727,AT
-1467369728,1467369759,DE
+1467369664,1467369759,DE
1467369760,1467369791,HR
1467369792,1467369855,SE
1467369856,1467369871,RU
1467369872,1467369887,DE
1467369888,1467369903,RU
-1467369904,1467383807,DE
+1467369904,1467369919,DE
+1467369920,1467369951,SG
+1467369952,1467383807,DE
1467383808,1467400191,BG
1467400192,1467416575,RU
1467416576,1467432959,PL
@@ -40079,26 +45577,21 @@
1467465800,1467465807,AT
1467465808,1467465823,NL
1467465824,1467465855,AT
-1467465856,1467466015,NL
+1467465856,1467465983,DE
+1467465984,1467466015,NL
1467466016,1467466023,DE
1467466024,1467466031,AT
1467466032,1467466111,NL
1467466112,1467466143,DE
1467466144,1467466175,NL
-1467466176,1467466191,DE
-1467466192,1467466207,NL
-1467466208,1467466215,DE
+1467466176,1467466215,DE
1467466216,1467466223,VG
1467466224,1467466239,NL
1467466240,1467466271,DE
1467466272,1467466495,NL
1467466496,1467467071,DE
1467467072,1467467103,CH
-1467467104,1467467903,DE
-1467467904,1467468031,CH
-1467468032,1467468111,DE
-1467468112,1467468119,BR
-1467468120,1467473919,DE
+1467467104,1467473919,DE
1467473920,1467482111,RU
1467482112,1467613183,BG
1467613184,1467744255,DE
@@ -40115,7 +45608,13 @@
1472259256,1472264799,IE
1472264800,1472264807,GB
1472264808,1472266239,IE
-1472266240,1472331775,DE
+1472266240,1472304610,DE
+1472304611,1472304611,A2
+1472304612,1472314335,DE
+1472314336,1472314343,A2
+1472314344,1472330699,DE
+1472330700,1472330700,A2
+1472330701,1472331775,DE
1472331776,1472397311,GB
1472397312,1472462847,NL
1472462848,1472528383,PT
@@ -40149,7 +45648,11 @@
1474944536,1474953215,NL
1474953216,1474966473,DE
1474966474,1474966474,A2
-1474966475,1475018751,DE
+1474966475,1474968895,DE
+1474968896,1474968903,A2
+1474968904,1475009582,DE
+1475009583,1475009583,A2
+1475009584,1475018751,DE
1475018752,1475084287,ES
1475084288,1475086335,NL
1475086336,1475092479,RU
@@ -40168,9 +45671,7 @@
1475115008,1475117055,KW
1475117056,1475119103,GB
1475119104,1475121151,BH
-1475121152,1475121919,GB
-1475121920,1475122175,US
-1475122176,1475123199,GB
+1475121152,1475123199,GB
1475123200,1475125247,FI
1475125248,1475127295,IT
1475127296,1475129343,FI
@@ -40178,8 +45679,7 @@
1475131392,1475133439,RU
1475133440,1475135487,CZ
1475135488,1475137535,CH
-1475137536,1475139583,SE
-1475139584,1475141631,BE
+1475139584,1475141631,ES
1475141632,1475143679,FI
1475143680,1475145727,JO
1475145728,1475147775,ES
@@ -40204,10 +45704,13 @@
1475181456,1475181471,SC
1475181472,1475181519,DE
1475181520,1475181535,GB
-1475181536,1475181551,ES
-1475181552,1475184639,DE
+1475181536,1475181551,NL
+1475181552,1475181855,DE
+1475181856,1475181887,LU
+1475181888,1475182079,DE
+1475182080,1475182335,RO
+1475182336,1475184639,DE
1475184640,1475186687,RU
-1475186688,1475188735,ES
1475188736,1475190783,SE
1475190784,1475192831,GB
1475192832,1475194879,CH
@@ -40249,13 +45752,21 @@
1475208192,1475209215,AE
1475209216,1475211263,UZ
1475211264,1475213311,DE
-1475213312,1475215359,FR
+1475213312,1475214335,FR
+1475214336,1475214399,GB
+1475214400,1475214847,FR
+1475214848,1475214975,GB
+1475214976,1475215103,FR
+1475215104,1475215167,GB
+1475215168,1475215359,FR
1475215360,1475223551,IT
1475223552,1475229695,NO
1475229696,1475229759,SE
1475229760,1475229951,NO
-1475229952,1475230071,SE
-1475230072,1475233791,NO
+1475229952,1475230175,SE
+1475230176,1475230191,NO
+1475230192,1475230207,SE
+1475230208,1475233791,NO
1475233792,1475234303,GB
1475234304,1475234559,IE
1475234560,1475235839,GB
@@ -40268,9 +45779,7 @@
1475244032,1475245055,DE
1475245056,1475245183,IE
1475245184,1475245311,SD
-1475245312,1475245567,DE
-1475245568,1475246078,SA
-1475246079,1475246079,DE
+1475245312,1475246079,DE
1475246080,1475248127,CH
1475248128,1475250175,JO
1475250176,1475252223,DE
@@ -40315,7 +45824,7 @@
1475287040,1475291135,RU
1475291136,1475293183,PL
1475293184,1475295231,GB
-1475295232,1475299327,DK
+1475297280,1475299327,DK
1475299328,1475301375,PL
1475301376,1475303423,LT
1475303424,1475305471,PL
@@ -40323,7 +45832,8 @@
1475307520,1475309567,RU
1475309568,1475311615,LT
1475311616,1475313663,FI
-1475313664,1475317759,DE
+1475313664,1475315711,DE
+1475315712,1475317759,US
1475317760,1475319807,RU
1475319808,1475321855,BG
1475321856,1475323903,RO
@@ -40341,9 +45851,9 @@
1475362816,1475379199,FR
1475379200,1475395583,RU
1475395584,1475411967,LU
-1475411968,1475412471,IT
-1475412472,1475412479,ES
-1475412480,1475417975,IT
+1475411968,1475412383,IT
+1475412384,1475412391,ES
+1475412392,1475417975,IT
1475417976,1475417983,A2
1475417984,1475428351,IT
1475428352,1475444735,SE
@@ -40353,7 +45863,11 @@
1475493888,1475510271,RU
1475510272,1475543039,GB
1475543040,1475559423,RO
-1475559424,1475575807,GR
+1475559424,1475562751,GR
+1475562752,1475563007,BG
+1475563008,1475571711,GR
+1475571712,1475572735,BG
+1475572736,1475575807,GR
1475575808,1475592191,AT
1475592192,1475608575,GB
1475608576,1475624959,RU
@@ -40378,7 +45892,9 @@
1475636400,1475636415,JE
1475636416,1475636431,GB
1475636432,1475636447,JE
-1475636448,1475637479,GB
+1475636448,1475636479,GB
+1475636480,1475636735,JE
+1475636736,1475637479,GB
1475637480,1475637487,JE
1475637488,1475637503,GB
1475637504,1475638783,JE
@@ -40399,22 +45915,18 @@
1475639528,1475639543,JE
1475639544,1475639595,GB
1475639596,1475639599,JE
-1475639600,1475639727,GB
-1475639728,1475639735,JE
-1475639736,1475639775,GB
-1475639776,1475639783,JE
-1475639784,1475639807,GB
+1475639600,1475639807,GB
1475639808,1475641343,JE
1475641344,1475657727,UA
-1475657728,1475664263,SK
-1475664264,1475664271,UA
-1475664272,1475674111,SK
+1475657728,1475674111,SK
1475674112,1475690495,DE
1475690496,1475706879,CH
1475706880,1475723263,RU
1475723264,1475725311,CY
1475725312,1475725951,RU
-1475725952,1475726591,GB
+1475725952,1475726463,GB
+1475726464,1475726527,RU
+1475726528,1475726591,GB
1475726592,1475726719,RU
1475726720,1475727103,GB
1475727104,1475727167,RU
@@ -40433,7 +45945,7 @@
1475837952,1475846143,GB
1475846144,1475854335,IR
1475854336,1475862527,AT
-1475862528,1475866623,IT
+1475864576,1475866623,IT
1475866624,1475868671,GB
1475868672,1475870719,BG
1475870720,1475878911,NO
@@ -40529,7 +46041,8 @@
1476304896,1476313087,BG
1476313088,1476315135,FI
1476315136,1476316159,US
-1476316160,1476321279,FI
+1476316160,1476316671,SG
+1476316672,1476321279,FI
1476321280,1476329471,MC
1476329472,1476337663,RU
1476337664,1476345855,NL
@@ -40598,7 +46111,9 @@
1481984512,1481984639,CY
1481984640,1481985023,NL
1481985024,1481985279,MT
-1481985280,1481987967,NL
+1481985280,1481987327,NL
+1481987328,1481987583,GB
+1481987584,1481987967,NL
1481987968,1481988031,PA
1481988032,1481988095,NL
1481988096,1481988159,GI
@@ -40717,7 +46232,6 @@
1486323448,1486323455,GB
1486323456,1486323711,EU
1486323712,1486325759,GB
-1486325760,1486327807,SA
1486327808,1486329855,CH
1486329856,1486331903,FR
1486331904,1486333951,NO
@@ -40746,7 +46260,13 @@
1489338368,1489371135,BE
1489371136,1489402239,DE
1489402240,1489402367,TR
-1489402368,1489436671,DE
+1489402368,1489404767,DE
+1489404768,1489404775,IT
+1489404776,1489404839,DE
+1489404840,1489404847,ES
+1489404848,1489404855,DE
+1489404856,1489404863,ES
+1489404864,1489436671,DE
1489436672,1489502207,PL
1489502208,1489534975,SI
1489534976,1489567743,RU
@@ -40777,8 +46297,122 @@
1489650688,1489651199,A2
1489651200,1489653759,IT
1489653760,1489657855,A2
-1489657856,1489661951,IT
-1489661952,1489662719,A2
+1489657856,1489659919,IT
+1489659920,1489659935,FR
+1489659936,1489659951,DE
+1489659952,1489659967,CY
+1489659968,1489659983,FI
+1489659984,1489659999,GR
+1489660000,1489660015,IE
+1489660016,1489660031,ES
+1489660032,1489660047,PL
+1489660048,1489660063,GB
+1489660064,1489660079,AD
+1489660080,1489660095,AE
+1489660096,1489660111,AL
+1489660112,1489660127,AM
+1489660128,1489660143,AT
+1489660144,1489660159,BA
+1489660160,1489660175,BE
+1489660176,1489660191,BG
+1489660192,1489660207,BH
+1489660208,1489660223,BY
+1489660224,1489660239,CH
+1489660240,1489660255,CZ
+1489660256,1489660271,DK
+1489660272,1489660287,DZ
+1489660288,1489660303,EE
+1489660304,1489660319,EG
+1489660320,1489660335,HR
+1489660336,1489660351,HU
+1489660352,1489660367,KW
+1489660368,1489660383,LI
+1489660384,1489660399,LT
+1489660400,1489660415,LU
+1489660416,1489660431,LV
+1489660432,1489660447,LY
+1489660448,1489660463,MA
+1489660464,1489660479,MC
+1489660480,1489660495,MD
+1489660496,1489660511,ME
+1489660512,1489660527,MK
+1489660528,1489660543,MT
+1489660544,1489660559,NL
+1489660560,1489660575,NO
+1489660576,1489660591,OM
+1489660592,1489660607,PT
+1489660608,1489660623,QA
+1489660624,1489660639,RO
+1489660640,1489660655,RS
+1489660656,1489660671,RU
+1489660672,1489660687,SA
+1489660688,1489660703,SE
+1489660704,1489660719,SI
+1489660720,1489660735,SK
+1489660736,1489660751,SM
+1489660752,1489660767,TN
+1489660768,1489660783,TR
+1489660784,1489660799,UA
+1489660800,1489660815,VA
+1489660816,1489660927,A2
+1489660928,1489660943,IT
+1489660944,1489660959,FR
+1489660960,1489660975,DE
+1489660976,1489660991,CY
+1489660992,1489661007,FI
+1489661008,1489661023,GR
+1489661024,1489661039,IE
+1489661040,1489661055,ES
+1489661056,1489661071,PL
+1489661072,1489661087,GB
+1489661088,1489661103,AD
+1489661104,1489661119,AE
+1489661120,1489661135,AL
+1489661136,1489661151,AM
+1489661152,1489661167,AT
+1489661168,1489661183,BA
+1489661184,1489661199,BE
+1489661200,1489661215,BG
+1489661216,1489661231,BH
+1489661232,1489661247,BY
+1489661248,1489661263,CH
+1489661264,1489661279,CZ
+1489661280,1489661295,DK
+1489661296,1489661311,DZ
+1489661312,1489661327,EE
+1489661328,1489661343,EG
+1489661344,1489661359,HR
+1489661360,1489661375,HU
+1489661376,1489661391,KW
+1489661392,1489661407,LI
+1489661408,1489661423,LT
+1489661424,1489661439,LU
+1489661440,1489661455,LV
+1489661456,1489661471,LY
+1489661472,1489661487,MA
+1489661488,1489661503,MC
+1489661504,1489661519,MD
+1489661520,1489661535,ME
+1489661536,1489661551,MK
+1489661552,1489661567,MT
+1489661568,1489661583,NL
+1489661584,1489661599,NO
+1489661600,1489661615,OM
+1489661616,1489661631,PT
+1489661632,1489661647,QA
+1489661648,1489661663,RO
+1489661664,1489661679,RS
+1489661680,1489661695,RU
+1489661696,1489661711,SA
+1489661712,1489661727,SE
+1489661728,1489661743,SI
+1489661744,1489661759,SK
+1489661760,1489661775,SM
+1489661776,1489661791,TN
+1489661792,1489661807,TR
+1489661808,1489661823,UA
+1489661824,1489661839,VA
+1489661840,1489662719,A2
1489662720,1489662975,ZA
1489662976,1489663487,FR
1489663488,1489663999,ES
@@ -40791,16 +46425,24 @@
1489731584,1489764351,BG
1489764352,1489797119,RU
1489797120,1489829887,KZ
-1489829888,1489862655,DE
-1489862656,1489928191,RU
+1489829888,1489855503,DE
+1489855504,1489855519,RU
+1489855520,1489855535,PL
+1489855536,1489855543,DE
+1489855544,1489855551,PL
+1489855552,1489855999,DE
+1489856000,1489856031,PL
+1489856032,1489856063,RU
+1489856064,1489862655,DE
+1489862656,1489895423,RU
1489928192,1489960959,SE
1489960960,1489993727,HR
1489993728,1490026495,LU
1490026496,1490028543,US
1490028544,1490029055,UA
-1490029056,1490040839,NL
-1490040840,1490041855,UA
-1490041856,1490042879,NL
+1490029056,1490040847,NL
+1490040848,1490041599,UA
+1490041600,1490042879,NL
1490042880,1490049879,CZ
1490049880,1490049887,AT
1490049888,1490049919,CZ
@@ -40832,9 +46474,7 @@
1490196960,1490197247,IE
1490197248,1490206719,GB
1490206720,1490223103,GE
-1490223104,1490230719,GB
-1490230720,1490230751,FR
-1490230752,1490255871,GB
+1490223104,1490255871,GB
1490255872,1490272255,NL
1490272256,1490288639,GB
1490288640,1490305023,SK
@@ -40852,15 +46492,19 @@
1490472704,1490473983,GB
1490473984,1490474239,US
1490474240,1490478591,GB
-1490478592,1490478847,RU
-1490478848,1490484223,GB
+1490478592,1490479103,RU
+1490479104,1490484223,GB
1490484224,1490484479,US
1490484480,1490501631,GB
1490501632,1490518015,DE
1490518016,1490534399,RU
1490534400,1490550783,DE
1490550784,1490616319,LT
-1490616320,1490681855,DE
+1490616320,1490680643,DE
+1490680644,1490680647,A2
+1490680648,1490680663,DE
+1490680664,1490680667,A2
+1490680668,1490681855,DE
1490681856,1490747391,GR
1490747392,1490812927,FR
1490812928,1490878463,PL
@@ -40899,12 +46543,13 @@
1494253568,1494261759,DE
1494261760,1494269951,GB
1494269952,1494278143,AT
-1494278144,1494286335,GB
+1494278144,1494282751,GB
+1494282752,1494283007,FR
+1494283008,1494286335,GB
1494286336,1494294527,HR
1494294528,1494302719,RU
1494302720,1494310911,FI
1494310912,1494319103,LB
-1494319104,1494327295,MT
1494327296,1494335487,IT
1494335488,1494343679,ES
1494343680,1494351871,PL
@@ -40937,7 +46582,9 @@
1494548480,1494556671,GB
1494556672,1494564863,DE
1494564864,1494573055,UA
-1494573056,1494581247,RO
+1494573056,1494580479,RO
+1494580480,1494580735,HU
+1494580736,1494581247,RO
1494581248,1494589439,RU
1494589440,1494594559,NL
1494594560,1494595071,US
@@ -40994,8 +46641,12 @@
1495146496,1495150591,FR
1495150592,1495151103,GB
1495151104,1495151359,NL
-1495151360,1495154687,FR
-1495154688,1495161599,EU
+1495151360,1495153919,FR
+1495153920,1495154175,TR
+1495154176,1495154687,FR
+1495154688,1495160063,EU
+1495160064,1495160095,NL
+1495160096,1495161599,EU
1495161600,1495161855,FR
1495161856,1495162367,EU
1495162368,1495162879,US
@@ -41022,8 +46673,8 @@
1495170160,1495170175,FR
1495170176,1495170303,EU
1495170304,1495170335,FR
-1495170336,1495170559,EU
-1495170560,1495170815,FR
+1495170336,1495170431,EU
+1495170432,1495170815,FR
1495170816,1495171071,GB
1495171072,1495174399,NL
1495174400,1495174655,US
@@ -41034,7 +46685,6 @@
1495209984,1495212031,KZ
1495212032,1495214079,RU
1495214080,1495216127,CZ
-1495216128,1495218175,GB
1495218176,1495220223,IT
1495220224,1495222271,PL
1495222272,1495224319,IT
@@ -41063,7 +46713,15 @@
1495240704,1495240751,FR
1495240752,1495240759,BE
1495240760,1495240767,CH
-1495240768,1495242751,FR
+1495240768,1495242111,FR
+1495242112,1495242119,NL
+1495242120,1495242127,LU
+1495242128,1495242135,DE
+1495242136,1495242143,AT
+1495242144,1495242151,ES
+1495242152,1495242159,IT
+1495242160,1495242167,PL
+1495242168,1495242751,FR
1495242752,1495244799,MK
1495244800,1495246847,CZ
1495246848,1495248895,IE
@@ -41084,13 +46742,18 @@
1495334912,1495335935,MD
1495335936,1495339007,RO
1495339008,1495343103,MD
-1495343104,1495399935,RO
+1495343104,1495346175,GB
+1495346176,1495347199,RO
+1495347200,1495349247,GB
+1495349248,1495399935,RO
1495399936,1495400191,MD
-1495400192,1495623679,RO
+1495400192,1495429119,RO
+1495429120,1495431167,GB
+1495431168,1495513087,RO
+1495513088,1495515135,GB
+1495515136,1495623679,RO
1495623680,1495623935,MD
-1495623936,1495647743,RO
-1495647744,1495648255,MD
-1495648256,1495752703,RO
+1495623936,1495752703,RO
1495752704,1495754751,ES
1495754752,1495801855,RO
1495801856,1495802879,GB
@@ -41100,9 +46763,13 @@
1495927296,1495927551,AE
1495927552,1495937023,RO
1495937024,1495937535,ES
-1495937536,1496078335,RO
+1495937536,1495990271,RO
+1495990272,1495994367,GB
+1495994368,1496078335,RO
1496078336,1496079359,MD
-1496079360,1496121343,RO
+1496079360,1496086527,RO
+1496086528,1496088575,GB
+1496088576,1496121343,RO
1496121344,1496122367,MD
1496122368,1496178943,RO
1496178944,1496179199,AE
@@ -41138,7 +46805,15 @@
1500107776,1500107903,DE
1500107904,1500107943,NL
1500107944,1500107951,DE
-1500107952,1500110847,NL
+1500107952,1500107999,NL
+1500108000,1500108007,BE
+1500108008,1500108095,NL
+1500108096,1500108287,DE
+1500108288,1500108319,NL
+1500108320,1500108351,DE
+1500108352,1500108367,NL
+1500108368,1500108375,DE
+1500108376,1500110847,NL
1500110848,1500119039,UA
1500119040,1500127231,TR
1500127232,1500135423,FI
@@ -41165,9 +46840,7 @@
1500174336,1500176383,DE
1500176384,1500178431,GB
1500178432,1500180479,KZ
-1500180480,1500180619,NL
-1500180620,1500181503,BE
-1500181504,1500182527,NL
+1500180480,1500182527,BE
1500182528,1500184575,RU
1500184576,1500184831,GB
1500184832,1500184895,IM
@@ -41264,15 +46937,23 @@
1502478336,1502605311,SI
1502605312,1502606335,HR
1502606336,1502609407,SI
-1502609408,1502625791,DE
+1502609408,1502624030,DE
+1502624031,1502624047,IR
+1502624048,1502624063,DE
+1502624064,1502624127,IR
+1502624128,1502625791,DE
1502625792,1502642175,SA
1502642176,1502658559,IR
1502658560,1502674943,AT
1502674944,1502691327,DE
-1502691328,1502692415,GB
-1502692416,1502692479,ES
-1502692480,1502707711,GB
-1502707712,1502724095,RU
+1502691328,1502691679,GB
+1502691680,1502691711,SE
+1502691712,1502702835,GB
+1502702836,1502702839,IE
+1502702840,1502706623,GB
+1502706624,1502706687,CY
+1502706688,1502707711,GB
+1502717952,1502719999,RU
1502724096,1502740479,GB
1502740480,1502756863,NL
1502756864,1502773247,UZ
@@ -41302,8 +46983,8 @@
1502975264,1502975311,FR
1502975312,1502975319,IE
1502975320,1502975327,FR
-1502975328,1502975375,IE
-1502975376,1502975383,FR
+1502975328,1502975367,IE
+1502975368,1502975383,FR
1502975384,1502975391,ES
1502975392,1502975423,FR
1502975424,1502975455,GB
@@ -41330,8 +47011,8 @@
1502981120,1502981887,US
1502981888,1502982143,NL
1502982144,1502982911,DE
-1502982912,1502983679,FR
-1502983680,1502986255,DE
+1502982912,1502983423,FR
+1502983424,1502986255,DE
1502986256,1502986495,TR
1502986496,1502986511,DE
1502986512,1502986751,PL
@@ -41351,7 +47032,9 @@
1502996736,1502997247,PL
1502997248,1502997503,LT
1502997504,1502997759,HK
-1502997760,1503000063,DE
+1502997760,1502999855,DE
+1502999856,1502999871,MK
+1502999872,1503000063,DE
1503000064,1503000319,PL
1503000320,1503000831,DE
1503000832,1503001343,PL
@@ -41373,13 +47056,20 @@
1503789056,1503821823,NO
1503821824,1503854591,UA
1503854592,1503887359,RU
-1503887360,1503895631,DE
+1503887360,1503895599,DE
+1503895600,1503895607,BE
+1503895608,1503895631,DE
1503895632,1503895639,AT
1503895640,1503895647,GR
-1503895648,1503895671,DE
+1503895648,1503895663,DE
+1503895664,1503895671,FR
1503895672,1503895679,PL
1503895680,1503895687,IT
-1503895688,1503895767,DE
+1503895688,1503895695,DE
+1503895696,1503895703,GB
+1503895704,1503895751,DE
+1503895752,1503895759,IT
+1503895760,1503895767,DE
1503895768,1503895783,IT
1503895784,1503895799,DE
1503895800,1503895807,CA
@@ -41396,7 +47086,9 @@
1503896544,1503896551,FR
1503896552,1503897303,DE
1503897304,1503897311,BE
-1503897312,1503897367,DE
+1503897312,1503897335,DE
+1503897336,1503897343,PT
+1503897344,1503897367,DE
1503897368,1503897375,BE
1503897376,1503897383,GR
1503897384,1503897407,DE
@@ -41406,8 +47098,10 @@
1503897440,1503897463,DE
1503897464,1503897471,GR
1503897472,1503897479,AT
-1503897480,1503897575,DE
-1503897576,1503897591,GB
+1503897480,1503897519,DE
+1503897520,1503897527,IT
+1503897528,1503897583,DE
+1503897584,1503897591,GB
1503897592,1503898119,DE
1503898120,1503898135,TH
1503898136,1503898167,DE
@@ -41417,22 +47111,60 @@
1503898192,1503898199,GR
1503898200,1503898207,US
1503898208,1503898215,BE
-1503898216,1503898223,DE
-1503898224,1503898231,CH
-1503898232,1503898239,GR
+1503898216,1503898239,DE
1503898240,1503898303,IT
1503898304,1503898311,BE
-1503898312,1503898327,DE
-1503898328,1503898335,AT
-1503898336,1503898343,CH
-1503898344,1503898351,DE
+1503898312,1503898351,DE
1503898352,1503898359,CH
1503898360,1503898415,DE
1503898416,1503898423,BE
1503898424,1503898431,CH
-1503898432,1503898567,DE
+1503898432,1503898503,DE
+1503898504,1503898511,GR
+1503898512,1503898567,DE
1503898568,1503898575,NL
-1503898576,1503908351,DE
+1503898576,1503898599,DE
+1503898600,1503898607,IT
+1503898608,1503898615,GR
+1503898616,1503898631,DE
+1503898632,1503898647,GR
+1503898648,1503898679,DE
+1503898680,1503898687,IT
+1503898688,1503898791,DE
+1503898792,1503898799,US
+1503898800,1503898815,DE
+1503898816,1503898831,GB
+1503898832,1503898847,DE
+1503898848,1503898855,MX
+1503898856,1503898887,DE
+1503898888,1503898895,IT
+1503898896,1503898935,DE
+1503898936,1503898943,IT
+1503898944,1503898959,DE
+1503898960,1503898967,IT
+1503898968,1503898991,DE
+1503898992,1503898999,GB
+1503899000,1503899007,AT
+1503899008,1503899015,CH
+1503899016,1503899063,DE
+1503899064,1503899079,AT
+1503899080,1503899119,DE
+1503899120,1503899127,NL
+1503899128,1503899143,DE
+1503899144,1503899151,IT
+1503899152,1503899159,DE
+1503899160,1503899167,GB
+1503899168,1503899183,DE
+1503899184,1503899191,GR
+1503899192,1503899199,CH
+1503899200,1503899263,DE
+1503899264,1503899271,AT
+1503899272,1503899287,BE
+1503899288,1503899295,CH
+1503899296,1503899303,GR
+1503899304,1503899311,NL
+1503899312,1503899319,RU
+1503899320,1503908351,DE
1503908352,1503909375,IT
1503909376,1503920127,DE
1503920128,1503985663,HR
@@ -41445,9 +47177,7 @@
1504152128,1504152191,IE
1504152192,1504152415,GB
1504152416,1504152431,IE
-1504152432,1504152447,GB
-1504152448,1504152575,IE
-1504152576,1504154623,GB
+1504152432,1504154623,GB
1504154624,1504155647,IE
1504155648,1504156927,GB
1504156928,1504157183,IE
@@ -41489,11 +47219,7 @@
1505271808,1505273087,NL
1505273088,1505273095,NZ
1505273096,1505279999,NL
-1505280000,1505280007,IR
-1505280008,1505284095,AE
-1505284096,1505284607,IR
-1505284608,1505284863,AE
-1505284864,1505288191,IR
+1505280000,1505288191,IR
1505288192,1505296383,RU
1505296384,1505304575,UA
1505304576,1505305351,FR
@@ -41506,14 +47232,7 @@
1505305400,1505305407,PT
1505305408,1505305415,US
1505305416,1505305423,CH
-1505305424,1505305878,FR
-1505305879,1505305879,US
-1505305880,1505305880,ES
-1505305881,1505305899,FR
-1505305900,1505305900,GB
-1505305901,1505305901,DE
-1505305902,1505305902,IT
-1505305903,1505305908,FR
+1505305424,1505305908,FR
1505305909,1505305909,LU
1505305910,1505306303,FR
1505306304,1505306319,ES
@@ -41522,12 +47241,12 @@
1505306352,1505306367,IT
1505306368,1505312767,FR
1505312768,1505320959,RU
-1505320960,1505321151,AT
-1505321152,1505321183,DE
-1505321184,1505321343,AT
-1505321344,1505321471,DE
-1505321472,1505321631,AT
-1505321632,1505321823,DE
+1505320960,1505321103,AT
+1505321104,1505321135,DE
+1505321136,1505321423,AT
+1505321424,1505321439,DE
+1505321440,1505321663,AT
+1505321664,1505321823,DE
1505321824,1505321831,AT
1505321832,1505321983,DE
1505321984,1505322287,AT
@@ -41544,7 +47263,9 @@
1505329376,1505329407,GB
1505329408,1505332991,IE
1505332992,1505332999,GB
-1505333000,1505333623,IE
+1505333000,1505333471,IE
+1505333472,1505333487,GB
+1505333488,1505333623,IE
1505333624,1505333631,GB
1505333632,1505333887,IE
1505333888,1505333951,GB
@@ -41552,12 +47273,16 @@
1505336064,1505336071,GB
1505336072,1505336576,IE
1505336577,1505336639,GB
-1505336640,1505336831,IE
-1505336832,1505336863,GB
+1505336640,1505336823,IE
+1505336824,1505336863,GB
1505336864,1505336864,IE
1505336865,1505336879,GB
-1505336880,1505337087,IE
-1505337088,1505337215,GB
+1505336880,1505336959,IE
+1505336960,1505336975,GB
+1505336976,1505337023,IE
+1505337024,1505337055,GB
+1505337056,1505337071,IE
+1505337072,1505337215,GB
1505337216,1505337343,IE
1505337344,1505345535,FR
1505345536,1505353727,MK
@@ -41578,9 +47303,16 @@
1505419264,1505427455,RU
1505427456,1505435647,UA
1505435648,1505443839,MD
-1505443840,1505452327,GB
+1505443840,1505452103,GB
+1505452104,1505452111,US
+1505452112,1505452327,GB
1505452328,1505452335,NO
-1505452336,1505454367,GB
+1505452336,1505453167,GB
+1505453168,1505453175,SE
+1505453176,1505453183,US
+1505453184,1505453439,GB
+1505453440,1505453567,US
+1505453568,1505454367,GB
1505454368,1505454375,US
1505454376,1505454383,GB
1505454384,1505454391,US
@@ -41597,7 +47329,20 @@
1505454976,1505455103,US
1505455104,1505455503,GB
1505455504,1505455519,NL
-1505455520,1505456127,GB
+1505455520,1505455683,GB
+1505455684,1505455687,US
+1505455688,1505455695,GB
+1505455696,1505455699,NZ
+1505455700,1505455711,US
+1505455712,1505455719,GB
+1505455720,1505455727,US
+1505455728,1505455759,GB
+1505455760,1505455767,DE
+1505455768,1505455791,GB
+1505455792,1505455799,US
+1505455800,1505455999,GB
+1505456000,1505456079,US
+1505456080,1505456127,GB
1505456128,1505456255,US
1505456256,1505456639,GB
1505456640,1505456895,US
@@ -41606,13 +47351,18 @@
1505456936,1505456983,GB
1505456984,1505456987,IL
1505456988,1505456991,US
-1505456992,1505458175,GB
+1505456992,1505457011,GB
+1505457012,1505457015,US
+1505457016,1505458175,GB
1505458176,1505458431,US
-1505458432,1505458463,GB
-1505458464,1505458495,US
-1505458496,1505460223,GB
+1505458432,1505458451,GB
+1505458452,1505458495,US
+1505458496,1505458519,GB
+1505458520,1505458527,US
+1505458528,1505458543,GB
+1505458544,1505458559,US
+1505458560,1505460223,GB
1505460224,1505476607,CZ
-1505476608,1505484799,RU
1505484800,1505492991,PL
1505492992,1505501183,NL
1505501184,1505509375,ME
@@ -41628,7 +47378,9 @@
1505607680,1505615871,SE
1505615872,1505624063,SA
1505624064,1505632255,FI
-1505632256,1505648639,CZ
+1505632256,1505646847,CZ
+1505646848,1505647103,PL
+1505647104,1505648639,CZ
1505648640,1505656831,LT
1505656832,1505665023,BH
1505665024,1505668263,IT
@@ -41647,7 +47399,9 @@
1505709056,1505714175,DE
1505714176,1505722367,LV
1505722368,1505738751,PL
-1505738752,1505745839,GB
+1505738752,1505745135,GB
+1505745136,1505745151,ES
+1505745152,1505745839,GB
1505745840,1505745855,IL
1505745856,1505746943,GB
1505746944,1505755135,RU
@@ -41670,31 +47424,38 @@
1506377728,1506410495,HR
1506410496,1506418687,DE
1506418688,1506418695,CY
-1506418696,1506418703,DE
+1506418696,1506418703,GB
1506418704,1506418719,CA
-1506418720,1506422655,DE
+1506418720,1506418975,DE
+1506418976,1506418983,CA
+1506418984,1506422655,DE
1506422656,1506422687,CY
1506422688,1506422703,CA
-1506422704,1506427663,DE
+1506422704,1506422711,GB
+1506422712,1506422719,DE
+1506422720,1506422751,US
+1506422752,1506427663,DE
1506427664,1506427679,GB
1506427680,1506428223,DE
1506428224,1506428239,US
-1506428240,1506437375,DE
-1506437376,1506437503,US
-1506437504,1506437631,DE
+1506428240,1506437119,DE
+1506437120,1506437503,US
+1506437504,1506437551,DE
+1506437552,1506437567,BG
+1506437568,1506437631,DE
1506437632,1506437887,MU
1506437888,1506437903,CA
-1506437904,1506437951,US
+1506437904,1506437919,US
+1506437920,1506437951,IN
1506437952,1506437983,DE
1506437984,1506437991,US
1506437992,1506437999,DE
1506438000,1506438015,CA
-1506438016,1506438019,US
-1506438020,1506438143,DE
+1506438016,1506438143,DE
1506438144,1506438271,HK
1506438272,1506438367,GB
-1506438368,1506438384,IL
-1506438385,1506438399,DE
+1506438368,1506438383,IL
+1506438384,1506438399,GB
1506438400,1506438527,US
1506438528,1506438783,DE
1506438784,1506438799,KR
@@ -41703,7 +47464,8 @@
1506438864,1506438871,DE
1506438872,1506438879,FR
1506438880,1506438883,US
-1506438884,1506438895,DE
+1506438884,1506438887,DE
+1506438888,1506438895,NL
1506438896,1506438911,CH
1506438912,1506439039,US
1506439040,1506439463,DE
@@ -41789,20 +47551,20 @@
1506445768,1506445815,FR
1506445816,1506445823,GB
1506445824,1506446335,FR
-1506446336,1506447359,NL
+1506446336,1506446719,NL
+1506446720,1506446735,GB
+1506446736,1506447359,NL
1506447360,1506447423,IT
1506447424,1506447455,GB
1506447456,1506448255,IT
-1506448256,1506448287,GB
-1506448288,1506448383,IT
+1506448256,1506448319,GB
+1506448320,1506448383,IT
1506448384,1506448639,AT
1506448640,1506448647,GB
1506448648,1506448663,AT
1506448664,1506448671,GB
1506448672,1506448703,AT
-1506448704,1506448727,GB
-1506448728,1506448735,AT
-1506448736,1506448895,GB
+1506448704,1506448895,GB
1506448896,1506449159,BE
1506449160,1506449171,GB
1506449172,1506449407,BE
@@ -41810,21 +47572,35 @@
1506449664,1506449919,SK
1506449920,1506449927,CH
1506449928,1506449935,GB
-1506449936,1506450431,CH
+1506449936,1506449999,CH
+1506450000,1506450015,GB
+1506450016,1506450431,CH
1506450432,1506450767,CZ
1506450768,1506450847,GB
1506450848,1506450863,CZ
1506450864,1506450879,GB
1506450880,1506450943,CZ
-1506450944,1506451023,DK
-1506451024,1506451199,GB
-1506451200,1506451895,ES
+1506450944,1506450958,DK
+1506450959,1506450959,GB
+1506450960,1506450967,DK
+1506450968,1506451007,GB
+1506451008,1506451023,DK
+1506451024,1506451031,FI
+1506451032,1506451039,DK
+1506451040,1506451055,NO
+1506451056,1506451059,DK
+1506451060,1506451199,GB
+1506451200,1506451791,ES
+1506451792,1506451799,GB
+1506451800,1506451895,ES
1506451896,1506451903,GB
-1506451904,1506452223,ES
+1506451904,1506452143,ES
+1506452144,1506452159,GB
+1506452160,1506452223,ES
1506452224,1506452479,GB
1506452480,1506452735,US
-1506452736,1506452743,RO
-1506452744,1506452991,GB
+1506452736,1506452751,RO
+1506452752,1506452991,GB
1506452992,1506453247,AT
1506453248,1506453391,SE
1506453392,1506453399,ES
@@ -41853,7 +47629,9 @@
1506456960,1506456991,GB
1506456992,1506457087,IT
1506457088,1506458239,GB
-1506458240,1506458623,CH
+1506458240,1506458287,CH
+1506458288,1506458303,GB
+1506458304,1506458623,CH
1506458624,1506459135,GB
1506459136,1506459647,BE
1506459648,1506460047,FR
@@ -41862,7 +47640,9 @@
1506460064,1506460079,GB
1506460080,1506460126,FR
1506460127,1506460127,GB
-1506460128,1506460335,FR
+1506460128,1506460315,FR
+1506460316,1506460319,GB
+1506460320,1506460335,FR
1506460336,1506460343,GB
1506460344,1506460671,FR
1506460672,1506460927,AT
@@ -41870,26 +47650,35 @@
1506461312,1506461315,GB
1506461316,1506461319,IT
1506461320,1506461327,GB
-1506461328,1506461351,IT
+1506461328,1506461343,IT
+1506461344,1506461351,GB
1506461352,1506461359,FR
1506461360,1506461695,IT
1506461696,1506461863,FR
1506461864,1506461887,GB
1506461888,1506462207,FR
1506462208,1506462463,ES
-1506462464,1506462607,FR
+1506462464,1506462527,FR
+1506462528,1506462583,GB
+1506462584,1506462599,FR
+1506462600,1506462607,GB
1506462608,1506462623,A2
1506462624,1506462719,FR
1506462720,1506463231,IT
1506463232,1506463487,SE
-1506463488,1506463999,DE
+1506463488,1506463671,DE
+1506463672,1506463679,GB
+1506463680,1506463999,DE
1506464000,1506464767,GB
1506464768,1506465279,NL
1506465280,1506465791,GB
1506465792,1506466047,DE
1506466048,1506466303,BE
-1506466304,1506466559,DE
-1506466560,1506467071,GB
+1506466304,1506466319,GB
+1506466320,1506466559,DE
+1506466560,1506466627,GB
+1506466628,1506466631,NL
+1506466632,1506467071,GB
1506467072,1506467327,DE
1506467328,1506467583,GB
1506467584,1506468351,IT
@@ -41904,22 +47693,21 @@
1506471976,1506471979,GB
1506471980,1506471999,NL
1506472000,1506472031,BE
-1506472032,1506472191,NL
+1506472032,1506472159,NL
+1506472160,1506472175,GB
+1506472176,1506472191,NL
1506472192,1506472447,IT
1506472448,1506472703,GB
1506472704,1506473215,IT
1506473216,1506473471,GB
-1506473472,1506473783,IT
-1506473784,1506473791,GB
-1506473792,1506474271,IT
-1506474272,1506474303,SE
-1506474304,1506474495,IT
+1506473472,1506474247,IT
+1506474248,1506474255,GB
+1506474256,1506474495,IT
1506474496,1506474751,FR
-1506474752,1506474887,IT
-1506474888,1506474911,GB
-1506474912,1506475519,IT
-1506475520,1506475527,AT
-1506475528,1506476031,GB
+1506474752,1506475519,IT
+1506475520,1506475559,AT
+1506475560,1506475775,GB
+1506475776,1506476031,DE
1506476032,1506508799,KW
1506508800,1506541567,CZ
1506541568,1506574335,RU
@@ -41945,10 +47733,25 @@
1506758656,1506760703,IT
1506760704,1506764799,RU
1506764800,1506766847,IT
-1506766848,1506766903,NO
-1506766904,1506768895,GE
+1506766848,1506767103,NO
+1506767104,1506767615,GE
+1506767616,1506767679,NO
+1506767680,1506768895,GE
1506768896,1506770943,AT
-1506770944,1506772991,NL
+1506770944,1506772017,NL
+1506772018,1506772018,US
+1506772019,1506772143,NL
+1506772144,1506772145,TR
+1506772146,1506772147,NL
+1506772148,1506772176,TR
+1506772177,1506772323,NL
+1506772324,1506772325,IR
+1506772326,1506772327,RO
+1506772328,1506772361,NL
+1506772362,1506772364,IR
+1506772365,1506772938,NL
+1506772939,1506772939,IR
+1506772940,1506772991,NL
1506772992,1506775039,GB
1506775040,1506777087,AT
1506777088,1506781695,GB
@@ -41968,7 +47771,9 @@
1506799616,1506801663,LV
1506801664,1506802767,DE
1506802768,1506802775,DK
-1506802776,1506803135,DE
+1506802776,1506802831,DE
+1506802832,1506802839,CH
+1506802840,1506803135,DE
1506803136,1506803151,CH
1506803152,1506803711,DE
1506803712,1506869247,RU
@@ -41994,7 +47799,9 @@
1507664768,1507664895,US
1507664896,1507665407,GR
1507665408,1507665663,IT
-1507665664,1507666431,US
+1507665664,1507665791,TZ
+1507665792,1507665919,IT
+1507665920,1507666431,US
1507666432,1507666559,GR
1507666560,1507666591,FR
1507666592,1507666639,GR
@@ -42059,11 +47866,13 @@
1508646912,1508646927,DK
1508646928,1508646935,SE
1508646936,1508647039,DK
-1508647040,1508648447,SE
+1508647040,1508647679,SE
+1508647680,1508647807,DK
+1508647808,1508648447,SE
1508648448,1508648703,DK
1508648704,1508650751,SE
-1508650752,1508650823,DK
-1508650824,1508650879,SE
+1508650752,1508650855,DK
+1508650856,1508650879,SE
1508650880,1508651263,DK
1508651264,1508652543,SE
1508652544,1508654079,DK
@@ -42080,7 +47889,9 @@
1508787200,1508787455,ES
1508787456,1508788031,DE
1508788032,1508788063,BE
-1508788064,1508802559,DE
+1508788064,1508792063,DE
+1508792064,1508792318,GB
+1508792319,1508802559,DE
1508802560,1508804783,GB
1508804784,1508804791,DE
1508804792,1508805119,GB
@@ -42119,7 +47930,9 @@
1509467520,1509467583,BE
1509467584,1509467839,NL
1509467840,1509467871,PL
-1509467872,1509469439,NL
+1509467872,1509469055,NL
+1509469056,1509469183,PL
+1509469184,1509469439,NL
1509469440,1509469567,SE
1509469568,1509469887,NL
1509469888,1509469919,MY
@@ -42142,9 +47955,7 @@
1509507072,1509511167,GB
1509511168,1509515263,LT
1509515264,1509519359,HR
-1509519360,1509531647,RU
-1509531648,1509535743,GB
-1509535744,1509539839,RU
+1509519360,1509539839,RU
1509539840,1509543935,AM
1509543936,1509543975,LB
1509543976,1509543983,DE
@@ -42226,7 +48037,11 @@
1518503936,1518508799,LT
1518508800,1518510079,SE
1518510080,1518516479,LV
-1518516480,1518665727,SE
+1518516480,1518517247,SE
+1518517248,1518518271,LV
+1518518272,1518551039,SE
+1518551040,1518565375,NL
+1518565376,1518665727,SE
1518665728,1518727167,RU
1518727168,1518731263,SE
1518731264,1518927871,DE
@@ -42238,8 +48053,8 @@
1518962688,1518964735,NO
1518964736,1518966783,HR
1518966784,1518967807,SE
-1518967808,1518970367,HR
-1518970368,1518993407,SE
+1518967808,1518977023,HR
+1518977024,1518993407,SE
1518993408,1519190015,RU
1519190016,1519321087,SE
1519321088,1519386623,RU
@@ -42466,17 +48281,10 @@
1533413376,1533415423,DE
1533415424,1533417471,SA
1533417472,1533419519,NO
-1533419520,1533419775,KW
-1533419776,1533420031,SA
-1533420032,1533420287,KW
-1533420288,1533420543,AE
-1533420544,1533421567,KW
+1533419520,1533421567,KW
1533421568,1533423615,NL
1533423616,1533425663,IT
-1533425664,1533428479,GB
-1533428480,1533428735,US
-1533428736,1533429759,GB
-1533429760,1533431807,IT
+1533425664,1533429759,GB
1533431808,1533433855,IE
1533433856,1533435903,DK
1533435904,1533437951,CZ
@@ -42526,9 +48334,10 @@
1533505536,1533507583,DE
1533507584,1533509631,UA
1533509632,1533511679,GB
-1533511680,1533512383,FR
-1533512384,1533512447,DE
-1533512448,1533513215,FR
+1533511680,1533511935,IT
+1533511936,1533513023,FR
+1533513024,1533513087,ES
+1533513088,1533513215,FR
1533513216,1533513471,GB
1533513472,1533513727,DE
1533513728,1533515775,KW
@@ -42546,7 +48355,9 @@
1534129152,1534129407,A2
1534129408,1534328831,AT
1534328832,1534459903,ES
-1534459904,1534590975,AT
+1534459904,1534482091,AT
+1534482092,1534482095,GB
+1534482096,1534590975,AT
1534590976,1534656511,HU
1534656512,1534711807,FR
1534711808,1534712831,BE
@@ -42574,9 +48385,10 @@
1534714064,1534714079,ES
1534714080,1534714095,FR
1534714096,1534714111,BE
-1534714112,1534714119,GB
-1534714120,1534714123,BE
-1534714124,1534714127,NL
+1534714112,1534714115,ES
+1534714116,1534714119,DE
+1534714120,1534714123,FI
+1534714124,1534714127,ES
1534714128,1534714143,BE
1534714144,1534714159,GB
1534714160,1534714259,FR
@@ -42590,12 +48402,14 @@
1534714328,1534714331,FR
1534714332,1534714335,PL
1534714336,1534714351,FR
-1534714352,1534714367,CH
+1534714352,1534714359,DE
+1534714360,1534714367,NL
1534714368,1534714383,GB
1534714384,1534714399,FR
1534714400,1534714403,GB
1534714404,1534714407,PL
-1534714408,1534714431,GB
+1534714408,1534714415,DE
+1534714416,1534714431,GB
1534714432,1534714463,FR
1534714464,1534714495,GB
1534714496,1534714511,FR
@@ -42603,7 +48417,8 @@
1534714528,1534714531,FR
1534714532,1534714535,PL
1534714536,1534714539,GB
-1534714540,1534714547,FR
+1534714540,1534714543,PL
+1534714544,1534714547,FR
1534714548,1534714551,ES
1534714552,1534714559,GB
1534714560,1534714575,NL
@@ -42613,7 +48428,9 @@
1534714752,1534714767,DE
1534714768,1534714783,FR
1534714784,1534714799,PL
-1534714800,1534714831,FR
+1534714800,1534714815,FR
+1534714816,1534714819,BE
+1534714820,1534714831,FR
1534714832,1534714847,BE
1534714848,1534714855,GB
1534714856,1534714863,CH
@@ -42633,12 +48450,14 @@
1534715144,1534715167,FR
1534715168,1534715183,NL
1534715184,1534715199,FR
-1534715200,1534715203,GB
+1534715200,1534715203,IT
1534715204,1534715207,FR
1534715208,1534715215,BE
1534715216,1534715263,FR
1534715264,1534715279,ES
-1534715280,1534715295,FR
+1534715280,1534715283,PL
+1534715284,1534715287,FR
+1534715288,1534715295,PL
1534715296,1534715299,ES
1534715300,1534715303,FR
1534715304,1534715307,ES
@@ -42649,23 +48468,27 @@
1534715328,1534715359,FR
1534715360,1534715367,PL
1534715368,1534715371,FR
-1534715372,1534715375,GB
+1534715372,1534715375,CH
1534715376,1534715391,ES
1534715392,1534715407,PL
-1534715408,1534715423,DE
+1534715408,1534715419,DE
+1534715420,1534715423,IT
1534715424,1534715439,PL
1534715440,1534715447,ES
1534715448,1534715451,FR
1534715452,1534715487,PL
-1534715488,1534715495,IT
-1534715496,1534715503,CZ
+1534715488,1534715503,FR
1534715504,1534715519,CH
1534715520,1534715551,FR
1534715552,1534715583,ES
1534715584,1534715599,GB
-1534715600,1534715615,BE
+1534715600,1534715603,PL
+1534715604,1534715607,GB
+1534715608,1534715611,CH
+1534715612,1534715615,FI
1534715616,1534715639,FR
-1534715640,1534715647,DE
+1534715640,1534715643,PL
+1534715644,1534715647,DE
1534715648,1534715663,PL
1534715664,1534715667,FR
1534715668,1534715675,PL
@@ -42679,9 +48502,9 @@
1534715776,1534715783,PL
1534715784,1534715791,BE
1534715792,1534715807,ES
-1534715808,1534715871,FR
-1534715872,1534715879,FI
-1534715880,1534715883,CH
+1534715808,1534715875,FR
+1534715876,1534715879,NL
+1534715880,1534715883,PT
1534715884,1534715887,PL
1534715888,1534715919,FR
1534715920,1534715935,ES
@@ -42722,7 +48545,7 @@
1534716704,1534716735,ES
1534716736,1534716751,FR
1534716752,1534716759,PL
-1534716760,1534716763,FR
+1534716760,1534716763,DE
1534716764,1534716767,ES
1534716768,1534716823,FR
1534716824,1534716831,GB
@@ -42744,7 +48567,10 @@
1534717140,1534717143,BE
1534717144,1534717147,FR
1534717148,1534717151,IT
-1534717152,1534717263,FR
+1534717152,1534717247,FR
+1534717248,1534717251,CZ
+1534717252,1534717255,NL
+1534717256,1534717263,FR
1534717264,1534717267,PL
1534717268,1534717315,FR
1534717316,1534717319,IE
@@ -42752,17 +48578,27 @@
1534717324,1534717343,FR
1534717344,1534717359,GB
1534717360,1534717375,PL
-1534717376,1534717503,FR
-1534717504,1534717535,DE
+1534717376,1534717411,FR
+1534717412,1534717415,CH
+1534717416,1534717419,CZ
+1534717420,1534717431,PL
+1534717432,1534717435,GB
+1534717436,1534717439,NL
+1534717440,1534717503,FR
+1534717504,1534717519,BE
+1534717520,1534717535,DE
1534717536,1534717551,PL
1534717552,1534717567,CZ
-1534717568,1534717583,PL
-1534717584,1534717647,FR
-1534717648,1534717655,BE
-1534717656,1534717659,ES
+1534717568,1534717583,IE
+1534717584,1534717587,CZ
+1534717588,1534717591,NL
+1534717592,1534717599,IT
+1534717600,1534717647,FR
+1534717648,1534717659,PL
1534717660,1534717663,FR
1534717664,1534717679,GB
-1534717680,1534717711,ES
+1534717680,1534717695,ES
+1534717696,1534717711,IE
1534717712,1534717727,FR
1534717728,1534717731,GB
1534717732,1534717735,FR
@@ -42770,7 +48606,10 @@
1534717740,1534717743,DE
1534717744,1534717751,FR
1534717752,1534717759,BE
-1534717760,1534717823,ES
+1534717760,1534717783,FR
+1534717784,1534717787,GB
+1534717788,1534717791,DE
+1534717792,1534717823,FR
1534717824,1534717855,BE
1534717856,1534717871,NL
1534717872,1534717903,FR
@@ -42793,7 +48632,7 @@
1534718088,1534718091,DE
1534718092,1534718095,ES
1534718096,1534718111,PL
-1534718112,1534718127,IT
+1534718112,1534718127,GB
1534718128,1534718143,ES
1534718144,1534718159,FR
1534718160,1534718175,DE
@@ -42801,11 +48640,16 @@
1534718208,1534718271,ES
1534718272,1534718399,FR
1534718400,1534718415,DE
-1534718416,1534718431,FR
+1534718416,1534718423,CZ
+1534718424,1534718431,ES
1534718432,1534718447,PL
1534718448,1534718463,FR
-1534718464,1534718479,DE
-1534718480,1534718531,FR
+1534718464,1534718467,DE
+1534718468,1534718471,PT
+1534718472,1534718479,FR
+1534718480,1534718487,PL
+1534718488,1534718495,DE
+1534718496,1534718531,FR
1534718532,1534718535,PL
1534718536,1534718539,DE
1534718540,1534718543,ES
@@ -42814,7 +48658,8 @@
1534718576,1534718687,FR
1534718688,1534718703,PL
1534718704,1534718711,FR
-1534718712,1534718735,GB
+1534718712,1534718719,ES
+1534718720,1534718735,GB
1534718736,1534718751,FR
1534718752,1534718767,PL
1534718768,1534718799,FR
@@ -42827,7 +48672,8 @@
1534718960,1534718975,ES
1534718976,1534719039,FR
1534719040,1534719167,BE
-1534719168,1534719215,PL
+1534719168,1534719199,FR
+1534719200,1534719215,PL
1534719216,1534719295,FR
1534719296,1534719311,DE
1534719312,1534719335,FR
@@ -42840,15 +48686,16 @@
1534719400,1534719403,IT
1534719404,1534719423,FR
1534719424,1534719439,DE
-1534719440,1534719455,PL
-1534719456,1534719471,FR
+1534719440,1534719459,PL
+1534719460,1534719463,FR
+1534719464,1534719471,PL
1534719472,1534719487,IE
1534719488,1534719631,FR
1534719632,1534719639,ES
-1534719640,1534719643,GB
-1534719644,1534719647,FR
+1534719640,1534719647,FR
1534719648,1534719655,ES
-1534719656,1534719679,FR
+1534719656,1534719663,FR
+1534719664,1534719679,IE
1534719680,1534719695,GB
1534719696,1534719699,IT
1534719700,1534719703,DE
@@ -42858,8 +48705,13 @@
1534719776,1534719799,FR
1534719800,1534719803,ES
1534719804,1534719807,GB
-1534719808,1534719823,FR
-1534719824,1534719839,CH
+1534719808,1534719811,PL
+1534719812,1534719815,FR
+1534719816,1534719819,CH
+1534719820,1534719823,CZ
+1534719824,1534719827,PT
+1534719828,1534719831,FR
+1534719832,1534719839,PL
1534719840,1534719871,FR
1534719872,1534719887,PL
1534719888,1534719951,FR
@@ -42868,8 +48720,10 @@
1534719984,1534720003,FR
1534720004,1534720007,ES
1534720008,1534720015,PL
-1534720016,1534720031,GB
-1534720032,1534720047,DE
+1534720016,1534720023,ES
+1534720024,1534720027,PL
+1534720028,1534720031,ES
+1534720032,1534720047,FR
1534720048,1534720063,ES
1534720064,1534720079,IT
1534720080,1534720095,GB
@@ -42877,11 +48731,16 @@
1534720112,1534720127,ES
1534720128,1534720211,FR
1534720212,1534720215,PL
-1534720216,1534720223,FR
+1534720216,1534720219,FR
+1534720220,1534720223,GB
1534720224,1534720239,DE
1534720240,1534720255,BE
-1534720256,1534720287,PL
-1534720288,1534720351,FR
+1534720256,1534720271,FR
+1534720272,1534720287,PL
+1534720288,1534720291,IT
+1534720292,1534720295,PL
+1534720296,1534720299,GB
+1534720300,1534720351,FR
1534720352,1534720367,ES
1534720368,1534720383,PL
1534720384,1534720431,FR
@@ -42897,22 +48756,23 @@
1534720472,1534720479,DE
1534720480,1534720495,GB
1534720496,1534720511,PL
-1534720512,1534720527,DE
-1534720528,1534720535,FR
+1534720512,1534720535,FR
1534720536,1534720539,PL
1534720540,1534720543,FI
1534720544,1534720559,FR
1534720560,1534720583,IT
1534720584,1534720591,BE
-1534720592,1534720607,FR
-1534720608,1534720623,GB
+1534720592,1534720611,FR
+1534720612,1534720615,BE
+1534720616,1534720619,DE
+1534720620,1534720623,PT
1534720624,1534720639,FR
-1534720640,1534720671,PL
+1534720640,1534720655,PL
+1534720656,1534720671,ES
1534720672,1534720739,FR
1534720740,1534720743,PL
1534720744,1534720747,NL
-1534720748,1534720751,FR
-1534720752,1534720767,GB
+1534720748,1534720767,FR
1534720768,1534720783,ES
1534720784,1534720791,PL
1534720792,1534720795,IT
@@ -42923,8 +48783,10 @@
1534720864,1534720879,ES
1534720880,1534720895,FR
1534720896,1534720899,ES
-1534720900,1534720903,GB
-1534720904,1534720959,FR
+1534720900,1534720903,LT
+1534720904,1534720943,FR
+1534720944,1534720951,ES
+1534720952,1534720959,PL
1534720960,1534720967,IT
1534720968,1534720971,DE
1534720972,1534720975,FR
@@ -42944,7 +48806,7 @@
1534721116,1534721119,BE
1534721120,1534721135,IT
1534721136,1534721159,FR
-1534721160,1534721163,GB
+1534721160,1534721163,ES
1534721164,1534721183,FR
1534721184,1534721191,LT
1534721192,1534721195,FR
@@ -42962,7 +48824,7 @@
1534721320,1534721327,PT
1534721328,1534721343,NL
1534721344,1534721359,PL
-1534721360,1534721375,FR
+1534721360,1534721375,GB
1534721376,1534721391,ES
1534721392,1534721407,PL
1534721408,1534721439,DE
@@ -42972,31 +48834,30 @@
1534721496,1534721519,PL
1534721520,1534721527,FR
1534721528,1534721531,ES
-1534721532,1534721535,FR
-1534721536,1534721583,GB
+1534721532,1534721567,FR
+1534721568,1534721583,GB
1534721584,1534721599,FR
1534721600,1534721619,ES
1534721620,1534721627,PL
1534721628,1534721631,NL
1534721632,1534721663,FR
1534721664,1534721679,ES
-1534721680,1534721711,FR
-1534721712,1534721727,ES
-1534721728,1534721743,FR
+1534721680,1534721743,FR
1534721744,1534721747,PL
1534721748,1534721751,GB
1534721752,1534721755,DE
1534721756,1534721823,FR
1534721824,1534721827,PL
1534721828,1534721831,FR
-1534721832,1534721835,PL
+1534721832,1534721835,DE
1534721836,1534721839,BE
1534721840,1534721855,PL
1534721856,1534721887,ES
1534721888,1534721903,FR
1534721904,1534721919,DE
1534721920,1534721935,FR
-1534721936,1534721951,PL
+1534721936,1534721943,IT
+1534721944,1534721951,IE
1534721952,1534721955,FR
1534721956,1534721959,PL
1534721960,1534721963,IE
@@ -43004,8 +48865,7 @@
1534721968,1534721971,DE
1534721972,1534721975,PL
1534721976,1534721979,ES
-1534721980,1534721983,GB
-1534721984,1534722007,PL
+1534721980,1534722007,PL
1534722008,1534722011,PT
1534722012,1534722015,ES
1534722016,1534722039,FR
@@ -43028,7 +48888,9 @@
1534849024,1534853119,NL
1534853120,1534918655,UA
1534918656,1534984191,GB
-1534984192,1534989855,SE
+1534984192,1534984703,SE
+1534984704,1534985215,ES
+1534985216,1534989855,SE
1534989856,1534990063,ES
1534990064,1534990079,SE
1534990080,1534990335,ES
@@ -43064,7 +48926,15 @@
1535635456,1535639551,AZ
1535639552,1535672319,GB
1535672320,1535705087,DE
-1535705088,1535721471,CH
+1535705088,1535720447,CH
+1535720448,1535720575,DE
+1535720576,1535720703,CH
+1535720704,1535720831,DE
+1535720832,1535720959,CH
+1535720960,1535721087,DE
+1535721088,1535721215,CH
+1535721216,1535721343,DE
+1535721344,1535721471,CH
1535721472,1535721726,DE
1535721727,1535737855,CH
1535737856,1535769855,HU
@@ -43146,7 +49016,7 @@
1536245760,1536262143,FI
1536262144,1536278527,PL
1536278528,1536294911,UA
-1536294912,1536327679,RU
+1536294912,1536311295,RU
1536327680,1536344063,HU
1536344064,1536360447,PL
1536360448,1536376831,RU
@@ -43177,44 +49047,40 @@
1536647436,1536651263,ES
1536651264,1536655359,FR
1536655360,1536659455,GE
-1536659456,1536659759,DE
-1536659760,1536659775,BI
-1536659776,1536659791,DE
+1536659456,1536659775,DE
+1536659776,1536659791,AO
1536659792,1536659823,SD
-1536659824,1536659943,DE
-1536659944,1536659951,SD
-1536659952,1536659991,DE
+1536659824,1536659991,DE
1536659992,1536659999,EG
-1536660000,1536660003,DE
-1536660004,1536660007,SO
-1536660008,1536660031,DE
-1536660032,1536660039,DJ
-1536660040,1536660735,DE
-1536660736,1536660991,SA
-1536660992,1536661247,DE
+1536660000,1536660007,SO
+1536660008,1536660015,DE
+1536660016,1536660019,CG
+1536660020,1536660023,DE
+1536660024,1536660031,CG
+1536660032,1536660063,DE
+1536660064,1536660079,SO
+1536660080,1536661247,DE
1536661248,1536661759,GQ
-1536661760,1536662015,BJ
-1536662016,1536662271,DE
+1536661760,1536662271,DE
1536662272,1536662303,SO
-1536662304,1536662319,DE
-1536662320,1536662335,LB
-1536662336,1536662351,DE
-1536662352,1536662359,TD
-1536662360,1536662415,DE
+1536662304,1536662335,LB
+1536662336,1536662367,DE
+1536662368,1536662399,SO
+1536662400,1536662407,DE
+1536662408,1536662415,SO
1536662416,1536662431,GN
1536662432,1536662463,IQ
-1536662464,1536662783,DE
-1536662784,1536663039,SA
-1536663040,1536663295,DE
+1536662464,1536662527,SO
+1536662528,1536663295,DE
1536663296,1536663311,LB
1536663312,1536663319,DE
1536663320,1536663327,LB
1536663328,1536663343,DE
-1536663344,1536663391,IQ
-1536663392,1536663423,DE
+1536663344,1536663359,IQ
+1536663360,1536663423,DE
1536663424,1536663551,KW
1536663552,1536667647,SA
-1536667648,1536675839,RU
+1536671744,1536675839,RU
1536675840,1536679935,GB
1536679936,1536684031,LB
1536684032,1536688127,GB
@@ -43222,10 +49088,8 @@
1537212416,1538260991,FR
1538260992,1538785279,BE
1538785280,1538793471,NL
-1538793472,1538797567,DE
-1538797568,1538799551,NL
-1538799552,1538799615,DE
-1538799616,1538801663,NL
+1538793472,1538797055,DE
+1538797056,1538801663,NL
1538801664,1538809855,IR
1538809856,1538818047,GE
1538818048,1538826239,NO
@@ -43236,7 +49100,17 @@
1538859008,1538875391,RU
1538875392,1538883583,RS
1538883584,1538891775,BE
-1538891776,1538898175,DE
+1538891776,1538897671,DE
+1538897672,1538897679,IT
+1538897680,1538897687,ES
+1538897688,1538897695,RU
+1538897696,1538897703,PL
+1538897704,1538897711,GR
+1538897712,1538897719,PT
+1538897720,1538897727,GB
+1538897728,1538897735,NL
+1538897736,1538897919,FR
+1538897920,1538898175,DE
1538898176,1538899967,FR
1538899968,1538904031,SI
1538904032,1538904039,BH
@@ -43259,11 +49133,7 @@
1538981888,1538990079,BY
1538990080,1538998271,CZ
1538998272,1539006463,AD
-1539006464,1539006719,AL
-1539006720,1539006735,RS
-1539006736,1539008511,AL
-1539008512,1539009023,RS
-1539009024,1539014655,AL
+1539006464,1539014655,AL
1539014656,1539022847,RS
1539022848,1539031039,LT
1539031040,1539039231,IT
@@ -43292,13 +49162,13 @@
1539049216,1539049223,LY
1539049224,1539049255,IT
1539049256,1539049263,LY
-1539049264,1539049279,IT
-1539049280,1539049287,LY
-1539049288,1539049311,IT
+1539049264,1539049311,IT
1539049312,1539049327,LY
1539049328,1539049335,IT
1539049336,1539049343,LY
-1539049344,1539050367,IT
+1539049344,1539050263,IT
+1539050264,1539050271,TR
+1539050272,1539050367,IT
1539050368,1539050375,FR
1539050376,1539050383,IT
1539050384,1539050399,FR
@@ -43308,9 +49178,7 @@
1539055472,1539055487,FR
1539055488,1539055511,IT
1539055512,1539055519,DE
-1539055520,1539055567,IT
-1539055568,1539055575,FR
-1539055576,1539055615,IT
+1539055520,1539055615,IT
1539055616,1539063807,LV
1539063808,1539071999,FR
1539072000,1539080191,PL
@@ -43350,33 +49218,30 @@
1539194880,1539203071,RU
1539203072,1539207167,NL
1539207168,1539211263,RU
-1539211264,1539211527,CZ
-1539211528,1539211531,GB
-1539211532,1539211775,CZ
+1539211264,1539211775,CZ
1539211776,1539212031,DE
1539212032,1539212287,CZ
1539212288,1539212543,DE
1539212544,1539213311,CZ
1539213312,1539215359,SE
1539215360,1539219455,DE
-1539219456,1539221503,GG
+1539219456,1539219711,GB
+1539219712,1539221503,GG
1539221504,1539222527,FR
1539222528,1539222783,HK
-1539222784,1539223551,FR
+1539222784,1539223039,CN
+1539223040,1539223551,FR
1539223552,1539225599,DE
1539225600,1539227647,HU
1539227648,1539229695,FI
1539229696,1539231743,DE
1539231744,1539233791,BE
-1539233792,1539235839,GR
1539235840,1539237887,DE
1539237888,1539239935,RU
1539239936,1539244031,DE
1539244032,1539260415,BA
1539260416,1539276799,SK
-1539276800,1539280135,SE
-1539280136,1539280143,FI
-1539280144,1539280895,SE
+1539276800,1539280895,SE
1539280896,1539284991,FR
1539284992,1539287039,DE
1539287040,1539289087,TR
@@ -43392,7 +49257,6 @@
1539314688,1539315711,RU
1539315712,1539316735,UA
1539316736,1539317759,SE
-1539317760,1539318783,RU
1539318784,1539319807,NL
1539319808,1539320831,DE
1539320832,1539321855,UA
@@ -43447,7 +49311,6 @@
1539379200,1539380223,EU
1539380224,1539381247,CH
1539381248,1539382271,RS
-1539382272,1539383295,PL
1539383296,1539384319,UA
1539384320,1539385343,RU
1539385344,1539385855,PL
@@ -43575,7 +49438,6 @@
1539482112,1539482623,UA
1539482624,1539483135,RU
1539483136,1539483647,ES
-1539483648,1539484159,NL
1539484160,1539484671,GB
1539484672,1539485695,RU
1539485696,1539486207,RO
@@ -43671,7 +49533,8 @@
1539536384,1539536895,NL
1539536896,1539537407,UA
1539537408,1539537919,GB
-1539537920,1539540479,RU
+1539537920,1539539455,RU
+1539539968,1539540479,RU
1539540480,1539540991,PL
1539540992,1539541503,RU
1539541504,1539542015,TR
@@ -43747,11 +49610,8 @@
1539589120,1539590143,GB
1539590144,1539591167,RU
1539591168,1539592191,UZ
-1539592192,1539593215,UA
-1539593216,1539594239,IL
-1539594240,1539598335,UA
+1539592192,1539598335,UA
1539598336,1539599359,NL
-1539599360,1539600383,PL
1539600384,1539601407,HU
1539601408,1539602431,GB
1539602432,1539603455,UA
@@ -43821,7 +49681,7 @@
1539680256,1539681279,UA
1539681280,1539684351,RU
1539684352,1539685375,UA
-1539686400,1539688447,RU
+1539685376,1539688447,RU
1539688448,1539689471,SA
1539689472,1539690495,RU
1539690496,1539691519,FI
@@ -43861,7 +49721,7 @@
1539709184,1539709439,AT
1539709440,1539709695,BE
1539709696,1539709951,NL
-1539709952,1539710207,DE
+1539709952,1539710207,TR
1539710208,1539710463,GB
1539710464,1539710719,FR
1539710720,1539710975,UA
@@ -43898,8 +49758,7 @@
1539718912,1539719167,KZ
1539719168,1539719423,IE
1539719424,1539719679,PL
-1539719680,1539719935,IE
-1539719936,1539720191,DE
+1539719680,1539720191,DE
1539720192,1539720703,RU
1539720704,1539720959,IL
1539720960,1539721215,RU
@@ -44013,7 +49872,6 @@
1539750400,1539750655,PL
1539750656,1539750911,DE
1539750912,1539751167,UA
-1539751168,1539751423,TR
1539751424,1539751679,SI
1539751680,1539751935,FR
1539751936,1539752191,DE
@@ -44068,7 +49926,6 @@
1539764992,1539765247,BE
1539765248,1539765503,GB
1539765504,1539766015,PL
-1539766016,1539766271,AM
1539766272,1539766527,PL
1539766528,1539766783,UA
1539766784,1539767039,DE
@@ -44127,7 +49984,6 @@
1539780608,1539780863,PL
1539780864,1539781119,RO
1539781120,1539781375,NL
-1539781376,1539781631,DE
1539781632,1539781887,HU
1539781888,1539782143,IL
1539782144,1539782399,UA
@@ -44150,7 +50006,6 @@
1539786752,1539787007,HU
1539787008,1539787263,TR
1539787264,1539787519,IE
-1539787520,1539787775,UA
1539787776,1539788031,CH
1539788032,1539788287,HR
1539788288,1539788543,GB
@@ -44292,7 +50147,7 @@
1539826176,1539826431,AM
1539826432,1539826687,BE
1539826688,1539826943,CH
-1539827200,1539827455,RU
+1539826944,1539827455,RU
1539827456,1539827711,MK
1539827712,1539827967,RU
1539827968,1539828479,FR
@@ -44339,6 +50194,7 @@
1539860480,1539861503,UA
1539861504,1539862527,DE
1539862528,1539863551,UA
+1539863552,1539864575,ES
1539864576,1539865599,RO
1539865600,1539866623,UA
1539866624,1539867647,IT
@@ -44355,6 +50211,7 @@
1539879936,1539880959,UA
1539880960,1539881983,PL
1539881984,1539883007,UA
+1539883008,1539884031,RS
1539884032,1539885055,MT
1539885056,1539886079,UA
1539886080,1539887103,FR
@@ -44412,6 +50269,7 @@
1539948544,1539949567,RO
1539949568,1539950591,MD
1539950592,1539951103,KZ
+1539951104,1539951615,UA
1539951616,1539953663,RU
1539953664,1539954687,UA
1539954688,1539956735,RO
@@ -44428,7 +50286,7 @@
1539975168,1539976191,DE
1539976192,1539977215,RU
1539977216,1539978239,DE
-1539978240,1539980287,UA
+1539979264,1539980287,UA
1539980288,1539981311,VG
1539981312,1539982335,SI
1539982336,1539983359,RU
@@ -44469,7 +50327,6 @@
1540026368,1540028415,UA
1540028416,1540029439,ES
1540029440,1540030463,RU
-1540030464,1540031487,DE
1540031488,1540032511,UA
1540032512,1540033535,RU
1540033536,1540034559,UA
@@ -44524,7 +50381,6 @@
1540085760,1540087807,PL
1540087808,1540092927,RU
1540092928,1540094975,PL
-1540094976,1540095999,EU
1540096000,1540097023,SE
1540097024,1540099071,DE
1540099072,1540100095,UA
@@ -44541,7 +50397,6 @@
1540118528,1540119551,PL
1540119552,1540120575,UA
1540120576,1540124671,RU
-1540124672,1540125695,NO
1540125696,1540126719,FR
1540126720,1540127743,UA
1540127744,1540128767,GB
@@ -44616,7 +50471,6 @@
1540206592,1540208639,RU
1540208640,1540209663,NO
1540209664,1540211711,RU
-1540211712,1540212735,DE
1540212736,1540213759,RU
1540213760,1540214783,UA
1540214784,1540215807,RU
@@ -44783,6 +50637,7 @@
1540318720,1540319231,RO
1540319232,1540320255,UA
1540320256,1540320767,RU
+1540320768,1540321279,GB
1540321280,1540321791,SE
1540321792,1540322303,RU
1540322304,1540322815,UA
@@ -45154,6 +51009,7 @@
1540442624,1540442879,IE
1540442880,1540443135,AT
1540443136,1540443647,RU
+1540443648,1540443903,FR
1540443904,1540444159,GB
1540444160,1540444415,RU
1540444416,1540444671,DE
@@ -45294,7 +51150,6 @@
1540483840,1540484095,UA
1540484096,1540484351,DK
1540484352,1540484607,SI
-1540484608,1540484863,EU
1540484864,1540485119,UA
1540485120,1540485375,SE
1540485376,1540485631,RO
@@ -45312,7 +51167,7 @@
1540488704,1540488959,DE
1540488960,1540489215,RO
1540489216,1540491263,RU
-1540491264,1540493311,UA
+1540491264,1540492287,UA
1540493312,1540494335,CZ
1540494336,1540495359,UA
1540495360,1540496383,RU
@@ -45323,14 +51178,13 @@
1540502528,1540503551,RU
1540503552,1540504575,NL
1540504576,1540505599,SE
-1540505600,1540506623,RU
1540506624,1540507647,GB
1540507648,1540508671,RU
1540508672,1540509695,UA
1540509696,1540510719,RO
1540510720,1540511743,RU
1540511744,1540512767,BG
-1540512768,1540514815,UA
+1540513792,1540514815,UA
1540514816,1540515839,GB
1540515840,1540516863,RU
1540516864,1540517887,UA
@@ -45388,7 +51242,7 @@
1540589568,1540593663,RU
1540593664,1540594687,GB
1540594688,1540595711,IT
-1540595712,1540596735,KZ
+1540595712,1540596735,UZ
1540596736,1540597759,FR
1540597760,1540598783,SE
1540598784,1540600831,UA
@@ -45418,7 +51272,6 @@
1540621824,1540622335,RU
1540622336,1540622591,KW
1540622592,1540622847,PL
-1540622848,1540623103,LV
1540623104,1540623359,SE
1540623360,1540623615,GB
1540623616,1540623871,BG
@@ -45527,7 +51380,6 @@
1540651520,1540651775,MK
1540651776,1540652031,RU
1540652032,1540652543,UA
-1540652544,1540652799,TR
1540652800,1540653055,EU
1540653056,1540653311,FR
1540653312,1540653567,DK
@@ -45673,6 +51525,7 @@
1540693504,1540693759,ES
1540693760,1540694015,UZ
1540694016,1540694271,CH
+1540694272,1540694527,UA
1540694528,1540695039,RO
1540695040,1540695295,DE
1540695296,1540695551,NL
@@ -45703,6 +51556,7 @@
1540701952,1540702207,GB
1540702208,1540702463,PL
1540702464,1540702719,PT
+1540702720,1540702975,DK
1540702976,1540703231,RU
1540703232,1540703487,MH
1540703488,1540703743,NL
@@ -45754,8 +51608,8 @@
1540716800,1540717055,UA
1540717056,1540717311,CZ
1540717312,1540717823,PL
-1540717824,1540718335,UA
-1540718336,1540718591,DE
+1540717824,1540718079,UA
+1540718080,1540718335,RU
1540718592,1540718847,CH
1540718848,1540719103,IT
1540719104,1540719359,RU
@@ -45844,6 +51698,7 @@
1540742912,1540743167,RU
1540743168,1540743423,NO
1540743424,1540743679,RU
+1540743680,1540743935,PL
1540743936,1540744191,CH
1540744192,1540744447,GR
1540744448,1540744703,UA
@@ -45925,7 +51780,6 @@
1540818944,1540819967,UA
1540819968,1540820991,CZ
1540820992,1540822015,RU
-1540822016,1540823039,FR
1540823040,1540824063,UA
1540824064,1540825087,RU
1540825088,1540826111,PL
@@ -46017,7 +51871,6 @@
1540893952,1540894207,DE
1540894208,1540894463,RU
1540894464,1540894719,RO
-1540894720,1540894975,RS
1540894976,1540895487,RU
1540895488,1540895743,PL
1540895744,1540895999,RO
@@ -46040,7 +51893,7 @@
1540900352,1540900607,HU
1540900608,1540900863,BG
1540900864,1540901119,RU
-1540901120,1540901375,EU
+1540901120,1540901375,LV
1540901376,1540901631,DE
1540901632,1540901887,RO
1540901888,1540902143,GR
@@ -46078,7 +51931,7 @@
1540910848,1540911103,SE
1540911104,1540911359,GB
1540911360,1540911615,NL
-1540911616,1540912127,RU
+1540911616,1540911871,RU
1540912128,1540912383,GB
1540912384,1540912639,PT
1540912640,1540912895,DK
@@ -46148,7 +52001,6 @@
1540930816,1540931071,KZ
1540931072,1540931327,EU
1540931328,1540931583,PL
-1540931584,1540931839,RU
1540931840,1540932095,GB
1540932096,1540932351,PL
1540932352,1540932607,FR
@@ -46171,6 +52023,7 @@
1540936960,1540937471,PL
1540937472,1540937727,RU
1540937728,1540937983,DE
+1540937984,1540938239,RU
1540938240,1540938751,ES
1540938752,1540939007,KZ
1540939008,1540939263,FR
@@ -46232,11 +52085,12 @@
1540960256,1540960767,PL
1540960768,1540961279,RU
1540961280,1540961791,CZ
+1540961792,1540962303,AT
1540962304,1540962815,NL
1540962816,1540963839,UA
1540963840,1540964351,RU
1540964352,1540964863,IR
-1540964864,1540965375,UA
+1540964864,1540965887,UA
1540965888,1540966399,RU
1540966400,1540966911,GB
1540966912,1540967935,RU
@@ -46299,7 +52153,7 @@
1540989696,1540989951,PL
1540989952,1540990207,FR
1540990208,1540990463,DE
-1540990720,1540990975,UA
+1540990464,1540990975,UA
1540990976,1540991231,FR
1540991232,1540991487,HU
1540991488,1540991743,CH
@@ -46362,6 +52216,7 @@
1541007616,1541007871,RU
1541007872,1541008127,FR
1541008128,1541008383,NL
+1541008384,1541008639,RU
1541008640,1541008895,GB
1541008896,1541009151,TR
1541009152,1541009407,RU
@@ -46392,7 +52247,6 @@
1541027840,1541028863,RU
1541028864,1541029887,PL
1541029888,1541030911,UA
-1541030912,1541031935,DE
1541031936,1541032959,UA
1541032960,1541033983,PL
1541033984,1541035007,BG
@@ -46412,6 +52266,7 @@
1541052416,1541053439,RO
1541053440,1541054463,PL
1541054464,1541055487,RU
+1541055488,1541056511,PL
1541056512,1541057535,TJ
1541057536,1541058559,RS
1541058560,1541059583,RU
@@ -46463,11 +52318,12 @@
1541110784,1541111807,RU
1541111808,1541112831,PL
1541112832,1541113855,SK
-1541113856,1541115903,RU
-1541115904,1541116927,UA
+1541113856,1541114879,RU
+1541114880,1541116927,UA
1541116928,1541117951,RU
1541117952,1541118975,DK
1541118976,1541122047,RU
+1541122048,1541123071,UA
1541123072,1541124095,FI
1541124096,1541126143,RU
1541126144,1541127167,PL
@@ -46496,8 +52352,7 @@
1541146880,1541147135,IL
1541147136,1541147391,PL
1541147392,1541147903,RU
-1541147904,1541148159,EU
-1541148160,1541148415,RO
+1541147904,1541148415,RO
1541148416,1541148671,GB
1541148672,1541148927,RU
1541148928,1541149439,PL
@@ -46572,14 +52427,14 @@
1541167360,1541167615,AT
1541167616,1541167871,RU
1541167872,1541168127,UA
-1541168128,1541168383,RU
+1541168128,1541168639,RU
1541168640,1541168895,MD
1541168896,1541169151,MK
1541169152,1541169407,RO
1541169408,1541169663,PL
1541169664,1541169919,SE
1541169920,1541170431,CH
-1541170432,1541170687,UA
+1541170432,1541170687,NL
1541170688,1541170943,BE
1541170944,1541171199,PL
1541171200,1541171455,UA
@@ -46652,7 +52507,7 @@
1541188864,1541189119,RU
1541189120,1541189375,UA
1541189376,1541189631,GB
-1541189632,1541189887,BG
+1541189632,1541189887,SC
1541189888,1541190143,PL
1541190144,1541190399,GB
1541190400,1541190655,AT
@@ -46661,10 +52516,75 @@
1541191168,1541191423,TR
1541191424,1541191679,RO
1541191680,1541192191,NL
+1541192192,1541192447,RU
+1541192448,1541192703,ME
+1541192704,1541192959,RU
+1541192960,1541193215,BG
+1541193216,1541193471,UA
+1541193472,1541193727,BE
+1541193728,1541193983,SE
+1541193984,1541194239,IL
+1541194240,1541194495,SI
+1541194496,1541194751,JO
+1541194752,1541195007,NO
+1541195008,1541195263,FR
+1541195264,1541195519,UA
+1541195520,1541195775,GB
+1541195776,1541196031,FR
+1541196032,1541196287,NL
+1541196288,1541196543,RU
+1541196544,1541197055,UA
+1541197056,1541197311,PL
+1541197312,1541197567,RU
+1541197568,1541197823,MD
+1541197824,1541198079,GR
+1541198080,1541198335,LT
+1541198336,1541198591,AT
+1541198592,1541198847,RU
+1541198848,1541199103,GB
+1541199104,1541199359,SI
+1541199360,1541199615,GB
+1541199616,1541199871,RU
+1541199872,1541200127,GB
+1541200128,1541200383,NO
+1541200384,1541201151,RU
+1541201152,1541201407,SI
+1541201408,1541201663,PL
+1541201664,1541201919,RU
+1541201920,1541202175,IE
+1541202176,1541202431,PL
+1541202432,1541202687,ES
+1541202688,1541202943,SE
+1541202944,1541203199,DE
+1541203200,1541203455,ES
+1541203456,1541203711,UA
+1541203712,1541203967,GB
+1541203968,1541204223,RO
+1541204224,1541204479,RU
+1541204480,1541204735,GB
+1541204736,1541204991,UA
+1541204992,1541205247,GR
+1541205248,1541205503,SK
+1541205504,1541205759,PL
+1541205760,1541206015,AT
+1541206016,1541206271,SI
+1541206272,1541206527,FI
+1541206528,1541206783,TR
+1541206784,1541207039,NO
+1541207040,1541207295,DE
+1541207296,1541207807,FR
+1541207808,1541208063,HU
+1541208064,1541208319,FR
+1541208320,1541208575,NL
+1541208576,1541208831,BY
+1541208832,1541209087,HU
+1541209088,1541209599,UA
+1541209600,1541209855,SE
+1541209856,1541210111,UA
1541210112,1541210623,RU
1541210624,1541211135,CZ
1541211136,1541211647,SK
-1541211648,1541212159,RU
+1541211648,1541212159,UA
1541212160,1541212671,DE
1541212672,1541213183,MT
1541213184,1541213695,DE
@@ -46711,7 +52631,6 @@
1541236736,1541237247,DE
1541237248,1541237759,RU
1541237760,1541238271,CZ
-1541238272,1541238783,ES
1541238784,1541239295,SK
1541239296,1541239807,PL
1541239808,1541240319,RU
@@ -46724,9 +52643,64 @@
1541243392,1541243903,NO
1541243904,1541244415,UA
1541244416,1541244927,RS
+1541244928,1541245439,UA
+1541245440,1541245951,AT
+1541245952,1541246463,RU
+1541246464,1541246975,DK
+1541246976,1541247487,PL
+1541247488,1541247999,FR
+1541248000,1541248511,CZ
+1541248512,1541249023,NL
+1541249024,1541249535,GB
+1541249536,1541250047,UA
+1541250048,1541250559,RU
+1541250560,1541251071,PL
+1541251072,1541251583,NL
+1541251584,1541252607,RU
+1541252608,1541253119,UA
+1541253120,1541253631,GB
+1541253632,1541254143,SI
+1541254144,1541254655,PL
+1541254656,1541255679,RU
+1541255680,1541256191,UA
+1541256192,1541256703,RU
+1541256704,1541257215,DE
+1541257216,1541257727,SA
+1541257728,1541258239,EE
+1541258240,1541258751,RU
+1541258752,1541259263,UA
+1541259264,1541259775,CH
+1541259776,1541260287,RU
+1541260288,1541260799,DK
+1541260800,1541261823,RU
+1541261824,1541262335,SA
+1541262336,1541262847,DE
+1541262848,1541263359,DK
+1541263360,1541263871,NL
+1541263872,1541264383,UA
+1541264384,1541264895,CZ
+1541264896,1541265407,PL
+1541265408,1541265919,RS
+1541265920,1541266431,UA
+1541266432,1541266943,KW
+1541266944,1541267455,US
+1541267456,1541267967,FR
+1541267968,1541268479,DE
+1541268480,1541268991,AM
+1541268992,1541269503,NL
+1541269504,1541270015,RU
+1541270016,1541270527,UA
+1541270528,1541271039,IT
+1541271040,1541271551,FI
+1541271552,1541272063,RO
+1541272064,1541272575,RU
+1541272576,1541273087,FR
+1541273088,1541274111,RU
+1541274112,1541274623,DE
+1541274624,1541275135,UA
+1541275136,1541275647,FR
1541275648,1541276671,UA
1541276672,1541277695,RS
-1541277696,1541278719,ES
1541278720,1541280767,UA
1541280768,1541281791,BG
1541281792,1541282815,PL
@@ -46734,8 +52708,918 @@
1541283840,1541286911,UA
1541286912,1541287935,DE
1541287936,1541288959,UA
+1541288960,1541289983,CZ
+1541289984,1541291007,PL
+1541291008,1541293055,UA
+1541293056,1541295103,PL
+1541295104,1541297151,UA
+1541297152,1541298175,CH
+1541298176,1541299199,KZ
+1541299200,1541300223,RO
+1541300224,1541301247,DE
+1541301248,1541302271,PL
+1541302272,1541303295,SK
+1541303296,1541304319,PL
+1541304320,1541305343,UA
+1541305344,1541306367,PL
+1541306368,1541307391,RU
+1541307392,1541308415,PL
+1541308416,1541309439,RU
+1541309440,1541310463,CH
+1541310464,1541311487,UA
+1541311488,1541314559,PL
+1541314560,1541315583,UA
+1541315584,1541316607,RU
+1541316608,1541317631,PL
+1541317632,1541318655,RU
+1541318656,1541320703,UA
+1541320704,1541321727,DE
+1541321728,1541322751,UA
+1541322752,1541323775,PL
+1541323776,1541324799,FI
+1541324800,1541325823,PL
+1541325824,1541326847,IR
+1541326848,1541327871,SA
+1541327872,1541328895,CZ
+1541328896,1541329919,RU
+1541329920,1541330943,PL
+1541330944,1541331967,RU
+1541331968,1541332991,UA
+1541332992,1541334015,PL
+1541334016,1541335039,RU
+1541335040,1541336063,DE
+1541336064,1541338111,RU
+1541338112,1541341183,UA
+1541341184,1541341439,TR
+1541341440,1541341695,RU
+1541341696,1541341951,DE
+1541341952,1541342463,PL
+1541342464,1541342719,FR
+1541342720,1541342975,PL
+1541342976,1541343231,RU
+1541343232,1541343487,TR
+1541343488,1541343743,IE
+1541343744,1541343999,GB
+1541344000,1541344255,IL
+1541344256,1541344511,IT
+1541344512,1541345023,PL
+1541345024,1541345279,RU
+1541345280,1541345535,GB
+1541345536,1541345791,CH
+1541345792,1541346047,DE
+1541346048,1541346303,UA
+1541346304,1541346559,DE
+1541346560,1541346815,BE
+1541346816,1541347071,FR
+1541347072,1541347327,PL
+1541347328,1541347583,HR
+1541347584,1541347839,RU
+1541347840,1541348095,SI
+1541348096,1541348351,UA
+1541348352,1541348607,RU
+1541348608,1541348863,HR
+1541348864,1541349119,UA
+1541349120,1541349375,PL
+1541349376,1541349631,ES
+1541349632,1541349887,PL
+1541349888,1541350143,RU
+1541350144,1541350399,FR
+1541350400,1541350655,NO
+1541350656,1541350911,RU
+1541350912,1541351167,AT
+1541351168,1541351423,SI
+1541351424,1541351679,FR
+1541351680,1541351935,DE
+1541351936,1541352191,GR
+1541352192,1541352447,SI
+1541352448,1541352703,RU
+1541352704,1541352959,RO
+1541352960,1541353215,GB
+1541353216,1541353471,SE
+1541353472,1541353727,UA
+1541353728,1541353983,SI
+1541353984,1541354239,RO
+1541354240,1541354495,SE
+1541354496,1541354751,PL
+1541354752,1541355007,UA
+1541355008,1541355263,IL
+1541355264,1541355519,PL
+1541355520,1541355775,NL
+1541355776,1541356031,PL
+1541356032,1541356287,GB
+1541356288,1541356543,UA
+1541356544,1541356799,RU
+1541356800,1541357055,ES
+1541357056,1541357311,FR
+1541357312,1541357567,RU
+1541357568,1541357823,PL
+1541357824,1541358079,HR
+1541358080,1541358335,BG
+1541358336,1541358591,GB
+1541358592,1541358847,PL
+1541358848,1541359103,SK
+1541359104,1541359359,LV
+1541359360,1541359615,FR
+1541359616,1541359871,PL
+1541359872,1541360127,FR
+1541360128,1541360383,CZ
+1541360384,1541360639,RU
+1541360640,1541360895,FR
+1541360896,1541361151,UA
+1541361152,1541361407,PL
+1541361408,1541361663,CH
+1541361664,1541361919,SI
+1541361920,1541362175,PL
+1541362176,1541362431,NL
+1541362432,1541362687,PL
+1541362688,1541362943,FR
+1541362944,1541363199,DK
+1541363200,1541363455,UA
+1541363456,1541363711,IE
+1541363712,1541364223,UA
+1541364224,1541364479,RU
+1541364480,1541364735,AT
+1541364736,1541364991,SE
+1541364992,1541365247,RU
+1541365248,1541365503,GB
+1541365504,1541365759,NL
+1541365760,1541366015,DE
+1541366016,1541366271,UA
+1541366272,1541366527,RU
+1541366528,1541366783,RO
+1541366784,1541367039,NO
+1541367040,1541367295,AT
+1541367296,1541367807,UA
+1541367808,1541368063,GR
+1541368064,1541368319,RU
+1541368320,1541368575,IL
+1541368576,1541368831,FI
+1541368832,1541369343,RU
+1541369344,1541369599,UA
+1541369600,1541369855,GB
+1541369856,1541370111,UA
+1541370112,1541370367,SI
+1541370368,1541370623,DE
+1541370624,1541370879,SI
+1541370880,1541371135,FI
+1541371136,1541371391,RO
+1541371392,1541371647,RU
+1541371648,1541371903,GB
+1541371904,1541372159,RU
+1541372160,1541372415,CH
+1541372416,1541372671,UA
+1541372672,1541372927,ES
+1541372928,1541373183,NL
+1541373184,1541373439,FR
+1541373440,1541373695,GB
+1541373696,1541373951,UA
+1541373952,1541374207,RU
+1541374208,1541374463,DE
+1541374464,1541374719,PL
+1541374720,1541374975,NL
+1541374976,1541375231,GR
+1541375232,1541375487,UA
+1541375488,1541375999,PL
+1541376000,1541376255,UA
+1541376256,1541376767,RU
+1541376768,1541377023,FR
+1541377024,1541377279,NL
+1541377280,1541377535,DE
+1541377536,1541377791,PL
+1541377792,1541378047,ES
+1541378048,1541378303,RU
+1541378304,1541378559,DE
+1541378560,1541378815,GB
+1541378816,1541379071,AT
+1541379072,1541379327,RO
+1541379328,1541379583,UA
+1541379584,1541379839,FR
+1541379840,1541380095,DE
+1541380096,1541380351,UA
+1541380352,1541380607,RU
+1541380608,1541380863,CH
+1541380864,1541381119,IT
+1541381120,1541381375,RO
+1541381376,1541381631,TR
+1541381632,1541381887,RO
+1541381888,1541382143,FR
+1541382144,1541382399,PL
+1541382400,1541382655,IM
+1541382656,1541382911,RS
+1541382912,1541383167,RO
+1541383168,1541383423,CY
+1541383424,1541383679,LV
+1541383680,1541383935,SI
+1541383936,1541384447,PL
+1541384448,1541384703,LV
+1541384704,1541384959,RU
+1541384960,1541385215,PL
+1541385216,1541385471,NL
+1541385472,1541385727,RU
+1541385728,1541385983,SI
+1541385984,1541386239,PL
+1541386240,1541386495,RU
+1541386496,1541386751,UA
+1541386752,1541387007,RU
+1541387008,1541387263,CH
+1541387264,1541387519,UA
+1541387520,1541387775,RU
+1541387776,1541388031,SI
+1541388032,1541388287,RO
+1541388288,1541388543,PL
+1541388544,1541388799,RO
+1541388800,1541389055,CH
+1541389056,1541389311,NL
+1541389312,1541389567,RU
+1541389568,1541389823,SI
+1541389824,1541390079,RO
+1541390080,1541390335,US
+1541390336,1541390591,DK
+1541390592,1541390847,SI
+1541390848,1541391103,RU
+1541391104,1541391359,BE
+1541391360,1541391615,PL
+1541391616,1541391871,SI
+1541391872,1541392127,DE
+1541392128,1541392383,RU
+1541392384,1541392639,RO
+1541392640,1541392895,TR
+1541392896,1541393151,DE
+1541393152,1541393407,GB
+1541393408,1541393663,DE
+1541393664,1541393919,UA
+1541393920,1541394175,ES
+1541394176,1541394431,FR
+1541394432,1541394687,CY
+1541394688,1541394943,SK
+1541394944,1541395199,SA
+1541395200,1541395455,DE
+1541395456,1541395711,PL
+1541395712,1541395967,NO
+1541395968,1541396223,UA
+1541396224,1541396479,LB
+1541396480,1541396735,UA
+1541396736,1541396991,RU
+1541396992,1541397247,GB
+1541397248,1541397503,FR
+1541397504,1541397759,NL
+1541397760,1541398015,PL
+1541398016,1541398271,HU
+1541398272,1541398527,UA
+1541398528,1541398783,RU
+1541398784,1541399039,PL
+1541399040,1541399295,RU
+1541399296,1541399551,UA
+1541399552,1541399807,DE
+1541399808,1541400063,RU
+1541400064,1541400319,SI
+1541400320,1541400831,SE
+1541400832,1541401087,NL
+1541401088,1541401343,UA
+1541401344,1541401599,DK
+1541401600,1541401855,LV
+1541401856,1541402111,HR
+1541402112,1541402367,SI
+1541402368,1541402623,RU
+1541402624,1541402879,FR
+1541402880,1541403135,PL
+1541403136,1541403391,RU
+1541403392,1541403647,EE
+1541403648,1541403903,RU
+1541403904,1541404159,GE
+1541404160,1541404415,RU
+1541404416,1541404671,DE
+1541404672,1541404927,AT
+1541404928,1541405183,HR
+1541405184,1541405439,PL
+1541405440,1541405951,RU
+1541405952,1541406207,FR
+1541406208,1541406463,RU
+1541406464,1541406719,AT
+1541406720,1541407231,LV
+1541407232,1541407743,UA
+1541407744,1541408255,FI
+1541408256,1541408767,FR
+1541408768,1541409791,UA
+1541409792,1541410303,LV
+1541410304,1541410815,RU
+1541410816,1541411327,UA
+1541411328,1541412863,RU
+1541412864,1541413375,UA
+1541413376,1541413887,GB
+1541413888,1541414399,PL
+1541414400,1541414911,UA
+1541414912,1541415935,RU
+1541415936,1541416447,SE
+1541416448,1541416959,PL
+1541416960,1541417471,RO
+1541417472,1541417983,SK
+1541417984,1541418495,UA
+1541418496,1541419007,PL
+1541419008,1541419519,CZ
+1541419520,1541420031,RO
+1541420032,1541420543,RU
+1541420544,1541421055,NL
+1541421056,1541421567,PL
+1541421568,1541422079,GB
+1541422080,1541422591,PL
+1541422592,1541423103,RU
+1541423104,1541423615,UA
+1541423616,1541424127,AT
+1541424128,1541424639,UA
+1541424640,1541425151,AT
+1541425152,1541425663,IT
+1541425664,1541426175,UA
+1541426176,1541426687,RU
+1541426688,1541427199,UA
+1541427200,1541428223,RU
+1541428224,1541429247,UA
+1541429248,1541429759,FI
+1541429760,1541430271,CZ
+1541430272,1541430783,LT
+1541430784,1541431295,CH
+1541431296,1541431807,UA
+1541431808,1541432319,RU
+1541432320,1541432831,RO
+1541432832,1541433343,RU
+1541433344,1541433855,PL
+1541433856,1541434367,RU
+1541434368,1541434879,GB
+1541434880,1541435391,IR
+1541435392,1541435903,UA
+1541435904,1541436415,RU
+1541436416,1541437951,PL
+1541437952,1541438463,NL
+1541438464,1541439487,RU
+1541439488,1541439999,PL
+1541440000,1541441023,RU
+1541441024,1541441535,LT
+1541441536,1541442559,RU
+1541442560,1541443071,NL
+1541443072,1541444607,PL
+1541444608,1541445119,FR
+1541445120,1541445631,ES
+1541445632,1541446143,GB
+1541446144,1541446655,RU
+1541446656,1541447167,UA
+1541447168,1541447679,RU
+1541447680,1541448191,NL
+1541448192,1541448703,FR
+1541448704,1541449215,NL
+1541449216,1541449727,RU
+1541449728,1541450239,UA
+1541450240,1541450751,RU
+1541450752,1541451263,SI
+1541451264,1541451775,DK
+1541451776,1541452287,IR
+1541452288,1541452799,UA
+1541452800,1541453311,PL
+1541453312,1541453823,RU
+1541453824,1541454335,PL
+1541454336,1541454847,GB
+1541454848,1541455359,EE
+1541455360,1541455871,GB
+1541455872,1541456383,PL
+1541456384,1541456895,RU
+1541456896,1541457919,PL
+1541457920,1541458943,UA
+1541458944,1541459455,RO
+1541459456,1541460479,RU
+1541460480,1541460991,DK
+1541460992,1541461503,RO
+1541461504,1541462527,PL
+1541462528,1541463039,RU
+1541463040,1541463551,PL
+1541463552,1541464063,UA
+1541464064,1541464575,PL
+1541464576,1541465087,DE
+1541465088,1541465599,RU
+1541465600,1541466111,FR
+1541466112,1541467135,RU
+1541467136,1541467647,PL
+1541467648,1541468159,SI
+1541468160,1541468671,ES
+1541469184,1541469695,SE
+1541469696,1541470207,LV
+1541470208,1541470719,NL
+1541470720,1541471231,RS
+1541471232,1541472255,UA
+1541472256,1541473279,GB
+1541473280,1541474303,UA
+1541474304,1541475327,PL
+1541475328,1541476351,RO
+1541476352,1541477375,GB
+1541477376,1541479423,RU
+1541479424,1541480447,PL
+1541480448,1541481471,RO
+1541481472,1541485567,UA
+1541485568,1541486591,IR
+1541486592,1541487615,UA
+1541487616,1541488639,NO
+1541488640,1541489663,PL
+1541489664,1541490687,FI
+1541490688,1541491711,UA
+1541491712,1541492735,RU
+1541492736,1541493759,UA
+1541493760,1541494783,CZ
+1541494784,1541496831,UA
+1541496832,1541497855,SI
+1541497856,1541498879,RU
+1541498880,1541499903,LT
+1541499904,1541500927,UA
+1541500928,1541501951,RU
+1541501952,1541503999,UA
+1541504000,1541506047,RU
+1541506048,1541507071,PL
+1541507072,1541510143,UA
+1541510144,1541511167,RU
+1541511168,1541512191,UA
+1541512192,1541513215,PL
+1541513216,1541517311,UA
+1541517312,1541518335,PL
+1541518336,1541519359,IT
+1541519360,1541521407,PL
+1541521408,1541522431,RU
+1541522432,1541524479,UA
+1541524480,1541525503,RO
+1541525504,1541528575,RU
+1541528576,1541532671,UA
+1541532672,1541533695,RU
+1541533696,1541534719,PL
+1541534720,1541535743,IT
+1541535744,1541536767,US
+1541536768,1541537791,RU
+1541537792,1541538303,GB
+1541538304,1541538815,RO
+1541538816,1541539327,UA
+1541539328,1541539839,PL
+1541539840,1541540351,HR
+1541540352,1541541375,RU
+1541541376,1541541887,UA
+1541541888,1541542399,PL
+1541542400,1541542911,FR
+1541542912,1541543423,MK
+1541543424,1541543935,PL
+1541543936,1541544447,GB
+1541544448,1541544959,PL
+1541544960,1541545471,FR
+1541545472,1541545983,NL
+1541545984,1541546495,LV
+1541546496,1541547007,UA
+1541547008,1541547519,SE
+1541547520,1541548543,PL
+1541548544,1541549567,UA
+1541549568,1541550079,DE
+1541550592,1541551103,PL
+1541551104,1541552127,RO
+1541552128,1541553151,UA
+1541553152,1541555199,RU
+1541555200,1541556223,PL
+1541556224,1541556479,UA
+1541556480,1541556735,RU
+1541556736,1541557247,IT
+1541557248,1541557503,RU
+1541557504,1541557759,SI
+1541557760,1541558015,RU
+1541558016,1541558271,HU
+1541558272,1541559295,RU
+1541559296,1541560319,RO
+1541560320,1541561343,DE
+1541561344,1541562879,RU
+1541562880,1541563135,FR
+1541563136,1541563391,NL
+1541563392,1541564415,PL
+1541564416,1541565439,RU
+1541565440,1541565951,IT
+1541565952,1541566463,PL
+1541566464,1541567487,SK
+1541567488,1541567743,RU
+1541567744,1541567999,PL
+1541568000,1541568511,SE
+1541568512,1541569535,RU
+1541569536,1541570559,CZ
+1541570560,1541571583,RU
+1541571584,1541572607,UA
+1541572608,1541574655,RU
+1541574656,1541575167,DK
+1541575168,1541575423,PL
+1541575424,1541575679,IT
+1541575680,1541577727,RU
+1541577728,1541578751,AT
+1541578752,1541579007,GB
+1541579008,1541579263,RU
+1541579264,1541579775,DE
+1541579776,1541580799,RU
+1541580800,1541581311,KZ
+1541581312,1541581567,HR
+1541581568,1541582847,RU
+1541582848,1541583359,ES
+1541583360,1541583615,RU
+1541583616,1541583871,GE
+1541583872,1541584127,SE
+1541584384,1541584895,BE
+1541584896,1541585151,DE
+1541585152,1541585663,RU
+1541585664,1541585919,UA
+1541585920,1541586431,RU
+1541586432,1541587199,UA
+1541587200,1541587455,FR
+1541587456,1541588991,PL
+1541588992,1541589247,RU
+1541589248,1541589503,UA
+1541589504,1541590015,CH
+1541590016,1541590527,RU
+1541590784,1541591039,UA
+1541591040,1541592063,RU
+1541592064,1541592575,UA
+1541592576,1541593087,FR
+1541593088,1541594111,CZ
+1541594112,1541594367,EU
+1541594368,1541595135,RU
+1541595136,1541595647,IR
+1541595648,1541596159,BG
+1541596160,1541597695,PL
+1541597696,1541597951,RU
+1541598208,1541599231,PL
+1541599232,1541600255,RS
+1541600256,1541600511,HR
+1541600512,1541600767,IL
+1541600768,1541601023,SI
+1541601024,1541601279,RU
+1541601280,1541601791,DE
+1541601792,1541602047,RU
+1541602048,1541602303,PL
+1541602304,1541603327,UA
+1541603328,1541604351,PL
+1541604352,1541605119,TR
+1541605120,1541605375,CZ
+1541605376,1541606911,RU
+1541606912,1541607423,UZ
+1541607424,1541608447,RU
+1541608448,1541608703,DE
+1541608704,1541608959,PL
+1541608960,1541609215,SA
+1541609216,1541609471,RU
+1541609472,1541609983,SA
+1541609984,1541610239,GB
+1541610240,1541610495,NL
+1541610496,1541611775,RU
+1541611776,1541612031,RO
+1541612032,1541612543,RU
+1541612544,1541614079,PL
+1541614080,1541614335,UA
+1541614336,1541614591,SI
+1541614592,1541615615,RU
+1541615616,1541615871,CH
+1541615872,1541616127,SE
+1541616128,1541617663,RU
+1541617664,1541619199,PL
+1541619200,1541619455,GB
+1541619456,1541620735,PL
+1541620736,1541620991,RU
+1541620992,1541621247,UA
+1541621248,1541621759,IL
+1541621760,1541622271,RO
+1541622272,1541622527,RU
+1541622528,1541622783,NL
+1541622784,1541623295,PL
+1541623296,1541623551,GB
+1541623552,1541623679,RU
+1541623808,1541624831,PL
+1541624832,1541625855,RU
+1541625856,1541626367,PL
+1541626368,1541626623,RO
+1541626624,1541627903,RU
+1541627904,1541628415,CZ
+1541628416,1541628927,DE
+1541628928,1541629183,PT
+1541629184,1541629439,LV
+1541629440,1541630975,PL
+1541630976,1541631231,GR
+1541631232,1541631487,IT
+1541631488,1541631999,SI
+1541632000,1541632511,RU
+1541632512,1541632767,NL
+1541632768,1541633023,SK
+1541633024,1541634303,PL
+1541634304,1541634559,MD
+1541634560,1541635071,PL
+1541636096,1541636863,AT
+1541636864,1541637119,RO
+1541637120,1541637631,PL
+1541637632,1541638143,CZ
+1541638144,1541638399,RU
+1541638400,1541638655,FR
+1541638656,1541639167,HU
+1541639168,1541640191,RU
+1541640192,1541641215,KZ
+1541641216,1541641727,RU
+1541641728,1541642239,UA
+1541642240,1541643263,RU
+1541643264,1541644287,PL
+1541644288,1541645311,RU
+1541645312,1541645823,IL
+1541646080,1541646335,PL
+1541646336,1541646847,RU
+1541646848,1541647359,NO
+1541647360,1541648383,RU
+1541648384,1541648639,PL
+1541648640,1541648895,DK
+1541648896,1541649151,GB
+1541649152,1541649407,NL
+1541649408,1541650431,UA
+1541650432,1541650687,RU
+1541650688,1541650943,MD
+1541650944,1541651199,SE
+1541651200,1541651455,FI
+1541651456,1541652479,RU
+1541652480,1541652991,FI
+1541652992,1541653247,FR
+1541653248,1541653503,CZ
+1541653504,1541654015,PL
+1541654016,1541654271,RU
+1541654272,1541655551,PL
+1541655552,1541656063,AT
+1541656064,1541656575,UA
+1541656576,1541656831,SE
+1541656832,1541657087,BE
+1541657088,1541657599,RU
+1541657600,1541659647,PL
+1541659648,1541660671,GB
+1541660672,1541661695,SK
+1541661696,1541661951,RU
+1541661952,1541662207,NL
+1541662208,1541662719,RO
+1541662720,1541663743,CZ
+1541663744,1541664767,RO
+1541664768,1541666047,RU
+1541666048,1541666815,GB
+1541666816,1541667839,NO
+1541667840,1541668095,CH
+1541668096,1541668351,GB
+1541668352,1541668607,UA
+1541668608,1541668863,GE
+1541668864,1541669887,GB
+1541669888,1541670911,LV
+1541670912,1541671423,PL
+1541671424,1541671679,RU
+1541671680,1541671935,PL
+1541671936,1541672959,UA
+1541672960,1541674495,RS
+1541674496,1541675007,KG
+1541675008,1541675519,IE
+1541675520,1541676031,RU
+1541676288,1541676543,RO
+1541676544,1541677055,RU
+1541677056,1541678079,PL
+1541678080,1541678591,RO
+1541678592,1541678847,BG
+1541678848,1541679615,RU
+1541679616,1541680127,PL
+1541680128,1541681151,CZ
+1541681152,1541682175,RU
+1541682176,1541682687,DE
+1541682688,1541683199,RU
+1541683200,1541683455,PL
+1541683456,1541683711,RU
+1541683712,1541684223,UA
+1541684224,1541684735,CH
+1541684736,1541686271,RU
+1541686272,1541687295,UA
+1541687296,1541688319,GB
+1541688320,1541688831,RU
+1541688832,1541689343,GB
+1541689344,1541690367,PL
+1541690368,1541691391,LT
+1541691392,1541691903,PL
+1541691904,1541692159,SE
+1541692160,1541692415,ES
+1541692416,1541693439,PL
+1541693440,1541694463,RU
+1541694464,1541694719,CZ
+1541694720,1541694975,CH
+1541694976,1541695487,RU
+1541695488,1541696511,DE
+1541696512,1541697535,MD
+1541697536,1541698047,PL
+1541698048,1541698303,DK
+1541698304,1541698559,GB
+1541698560,1541699327,RU
+1541699328,1541699583,RO
+1541699584,1541700095,RU
+1541700096,1541700607,UA
+1541700608,1541700863,RU
+1541700864,1541701119,PL
+1541701120,1541701631,IL
+1541701632,1541702655,RO
+1541702656,1541703679,RU
+1541703680,1541704703,PL
+1541704704,1541706239,RO
+1541706240,1541706751,UA
+1541706752,1541707263,RU
+1541707520,1541707775,NL
+1541707776,1541708799,RU
+1541708800,1541709823,PL
+1541709824,1541710335,RU
+1541710336,1541710847,IL
+1541710848,1541711871,SK
+1541711872,1541712127,FR
+1541712128,1541712383,TR
+1541712384,1541712895,DE
+1541712896,1541713919,RU
+1541713920,1541714175,NL
+1541714176,1541716223,RU
+1541716224,1541716479,PL
+1541716480,1541716991,UA
+1541716992,1541717247,FR
+1541717248,1541717503,IR
+1541717504,1541718015,DE
+1541718016,1541718271,KZ
+1541718272,1541719039,NO
+1541719040,1541720063,PL
+1541720064,1541721087,RU
+1541721088,1541721343,PL
+1541721344,1541721599,RU
+1541721600,1541721855,GB
+1541721856,1541722111,SI
+1541722112,1541723135,RU
+1541723136,1541723647,HU
+1541723648,1541723903,NO
+1541723904,1541724159,BE
+1541724160,1541725183,CZ
+1541725184,1541727231,RU
+1541727232,1541727743,UA
+1541727744,1541727999,RU
+1541728000,1541728255,UA
+1541728256,1541729023,GB
+1541729024,1541729279,DE
+1541729536,1541729791,PL
+1541729792,1541730303,RU
+1541730304,1541730815,ES
+1541731072,1541731327,DE
+1541731328,1541731839,SK
+1541731840,1541732351,RU
+1541732352,1541732607,IL
+1541732608,1541732863,RO
+1541732864,1541733119,RU
+1541733120,1541733375,GB
+1541733376,1541734143,RS
+1541734144,1541734399,TR
+1541734400,1541734911,RO
+1541734912,1541735167,RU
+1541735168,1541735423,DE
+1541735424,1541735679,GB
+1541735680,1541735935,RU
+1541735936,1541736447,RO
+1541736448,1541737471,RU
+1541737472,1541739519,RO
+1541739520,1541739775,FR
+1541739776,1541740031,NO
+1541740032,1541740287,PL
+1541740288,1541740543,NL
+1541740544,1541740799,SK
+1541740800,1541741055,RU
+1541741056,1541741567,PL
+1541741568,1541742079,SK
+1541742080,1541742591,RO
+1541742592,1541743103,SA
+1541743104,1541743615,TR
+1541743616,1541744639,SK
+1541744640,1541745663,PL
+1541745664,1541746175,TR
+1541746176,1541746687,UA
+1541746688,1541746943,RU
+1541746944,1541747199,NL
+1541747200,1541747711,RU
+1541747712,1541748735,UA
+1541748736,1541748991,RU
+1541748992,1541749247,AT
+1541749248,1541749503,ES
+1541749504,1541749759,RU
+1541749760,1541750783,NL
+1541750784,1541751295,AE
+1541751296,1541751807,UA
+1541751808,1541752831,PL
+1541752832,1541753087,SI
+1541753088,1541753343,GB
+1541753344,1541753855,RU
+1541753856,1541754879,UA
+1541754880,1541755391,IT
+1541755392,1541757439,PL
+1541757440,1541757951,UA
+1541757952,1541758207,GB
+1541758208,1541758463,HU
+1541758464,1541758719,RU
+1541758720,1541758975,FR
+1541758976,1541760255,RU
+1541760256,1541760511,UA
+1541760512,1541761023,CH
+1541761024,1541761535,KG
+1541761536,1541762047,PL
+1541762048,1541763583,RU
+1541763584,1541763839,SE
+1541763840,1541764095,UA
+1541764096,1541765119,RU
+1541765120,1541766143,UA
+1541766144,1541767167,GB
+1541767168,1541767679,UA
+1541767680,1541768191,FR
+1541768192,1541769215,RO
+1541769216,1541769471,FR
+1541769472,1541770239,FI
+1541770240,1541770495,CH
+1541770496,1541770751,SE
+1541770752,1541771263,NO
+1541771264,1541771775,NL
+1541771776,1541772031,RU
+1541772032,1541772287,RO
+1541772288,1541773311,KZ
+1541773312,1541773823,NL
+1541773824,1541774079,RU
+1541774080,1541774335,TR
+1541774336,1541775359,RO
+1541775360,1541776895,UZ
+1541776896,1541777151,GB
+1541777152,1541777407,UA
+1541777408,1541778431,DE
+1541778432,1541778687,FR
+1541778688,1541779455,GB
+1541779456,1541779967,RU
+1541779968,1541780479,DE
+1541780480,1541780735,ES
+1541780736,1541780991,GB
+1541780992,1541781247,RO
+1541781504,1541781759,TR
+1541781760,1541782015,RU
+1541782016,1541782271,RO
+1541782272,1541782527,GB
+1541782528,1541783551,RU
+1541783552,1541783807,IE
+1541783808,1541784063,PL
+1541784064,1541784575,DE
+1541784576,1541785855,RU
+1541785856,1541786111,GB
+1541786112,1541786623,RU
+1541786624,1541787647,UA
+1541787648,1541788159,RU
+1541788160,1541788415,UA
+1541788416,1541788671,RU
+1541789184,1541789695,IR
+1541789696,1541790719,UA
+1541790720,1541790975,SA
+1541790976,1541791231,RU
+1541791232,1541791743,GB
+1541791744,1541792255,KG
+1541792256,1541792511,UA
+1541792512,1541792767,FR
+1541792768,1541793023,RO
+1541793024,1541793279,HR
+1541793280,1541793791,FR
+1541793792,1541794047,NL
+1541794048,1541794815,RU
+1541794816,1541795071,CH
+1541795072,1541795327,RU
+1541795328,1541795583,PL
+1541795584,1541795839,ES
+1541795840,1541796863,UA
+1541796864,1541797375,RU
+1541797376,1541797887,GB
+1541797888,1541798143,UA
+1541798400,1541798911,RO
+1541798912,1541799935,CZ
+1541799936,1541800447,FR
+1541800448,1541800959,AT
+1541800960,1541801471,FI
+1541801472,1541801983,BG
+1541801984,1541802495,PL
+1541803008,1541804031,LT
+1541804032,1541804287,GB
+1541804288,1541804543,PL
+1541804544,1541805567,RU
+1541805568,1541805823,DE
+1541805824,1541806079,RU
+1541806080,1541806335,PL
+1541806336,1541806591,UA
+1541806592,1541807103,RU
+1541807104,1541808127,UA
+1541808128,1541808383,IR
+1541808384,1541809151,NL
+1541809152,1541809663,PL
+1541809664,1541810175,GB
+1541810176,1541810431,PT
+1541810432,1541810687,AE
+1541810688,1541811199,PL
+1541811200,1541811711,SK
+1541811712,1541811967,NL
+1541811968,1541813247,RU
1543503872,1545601023,GB
-1545601024,1545863167,SE
+1545601024,1545673167,SE
+1545673168,1545673175,FI
+1545673176,1545673183,SE
+1545673184,1545673215,FI
+1545673216,1545674495,SE
+1545674496,1545674751,FI
+1545674752,1545863167,SE
1545863168,1545895935,RU
1545895936,1545928703,BA
1545928704,1545961471,SI
@@ -46817,15 +53701,12 @@
1546313728,1546315775,DE
1546315776,1546317823,NL
1546317824,1546319871,CH
-1546319872,1546320383,RS
-1546320384,1546320387,SR
-1546320388,1546321919,RS
+1546319872,1546321919,RS
1546321920,1546323967,RU
-1546323968,1546324479,GE
-1546324480,1546326015,NO
-1546326016,1546327295,ES
-1546327296,1546327551,FR
-1546327552,1546328063,ES
+1546323968,1546325503,GE
+1546325504,1546325759,SE
+1546325760,1546326015,NO
+1546326016,1546328063,ES
1546328064,1546330111,CZ
1546330112,1546332159,SE
1546332160,1546334207,GB
@@ -46855,21 +53736,17 @@
1546379264,1546381311,ES
1546381312,1546383359,DK
1546383360,1546385407,IT
-1546385408,1546387455,FR
-1546387456,1546518527,TR
+1546385408,1546385535,FR
+1546385536,1546385599,US
+1546385600,1546387455,FR
+1546387456,1546460960,TR
+1546460961,1546460967,NL
+1546460968,1546518527,TR
1546518528,1546649599,KZ
1546649600,1546665983,SA
1546665984,1546673823,GB
1546673824,1546673839,RS
-1546673840,1546677535,GB
-1546677536,1546677551,IN
-1546677552,1546677555,GB
-1546677556,1546677557,IN
-1546677558,1546677559,GB
-1546677560,1546677561,IN
-1546677562,1546677679,GB
-1546677680,1546677695,IN
-1546677696,1546678863,GB
+1546673840,1546678863,GB
1546678864,1546678871,RS
1546678872,1546680831,GB
1546680832,1546680895,RS
@@ -46921,7 +53798,8 @@
1547485184,1547489279,IE
1547489280,1547493375,DE
1547493376,1547497471,RS
-1547497472,1547501567,GB
+1547497472,1547498495,NL
+1547498496,1547501567,GB
1547501568,1547505663,TR
1547505664,1547509759,RU
1547509760,1547513855,LT
@@ -46966,8 +53844,8 @@
1547620352,1547620359,A2
1547620360,1547620367,NG
1547620368,1547620375,A2
-1547620376,1547620383,NG
-1547620384,1547620399,A2
+1547620376,1547620391,NG
+1547620392,1547620399,A2
1547620400,1547620407,NG
1547620408,1547620415,A2
1547620416,1547620423,NG
@@ -46988,17 +53866,15 @@
1547620936,1547620951,A2
1547620952,1547620959,NG
1547620960,1547620967,A2
-1547620968,1547620983,NG
-1547620984,1547620999,A2
+1547620968,1547620991,NG
+1547620992,1547620999,A2
1547621000,1547621031,NG
1547621032,1547621039,A2
1547621040,1547621063,NG
1547621064,1547621071,A2
1547621072,1547621087,NG
1547621088,1547621095,A2
-1547621096,1547621119,NG
-1547621120,1547621127,A2
-1547621128,1547621135,NG
+1547621096,1547621135,NG
1547621136,1547621143,A2
1547621144,1547621151,NG
1547621152,1547621167,A2
@@ -47015,9 +53891,77 @@
1547621304,1547621335,NG
1547621336,1547621351,A2
1547621352,1547621375,NG
-1547621376,1547622463,A2
-1547622464,1547622471,NG
-1547622472,1547624447,A2
+1547621376,1547621447,A2
+1547621448,1547621455,NG
+1547621456,1547621463,A2
+1547621464,1547621471,NG
+1547621472,1547621575,A2
+1547621576,1547621583,NG
+1547621584,1547621615,A2
+1547621616,1547621623,NG
+1547621624,1547621687,A2
+1547621688,1547621711,NG
+1547621712,1547622407,A2
+1547622408,1547622415,NG
+1547622416,1547622455,A2
+1547622456,1547622471,NG
+1547622472,1547622511,A2
+1547622512,1547622527,NG
+1547622528,1547622559,A2
+1547622560,1547622575,NG
+1547622576,1547622583,A2
+1547622584,1547622615,NG
+1547622616,1547622623,A2
+1547622624,1547622631,NG
+1547622632,1547622911,A2
+1547622912,1547622935,NG
+1547622936,1547622951,A2
+1547622952,1547622959,NG
+1547622960,1547622967,A2
+1547622968,1547622983,NG
+1547622984,1547622991,A2
+1547622992,1547623015,NG
+1547623016,1547623031,A2
+1547623032,1547623039,NG
+1547623040,1547623047,A2
+1547623048,1547623071,NG
+1547623072,1547623103,A2
+1547623104,1547623159,NG
+1547623160,1547623167,A2
+1547623168,1547623175,NG
+1547623176,1547623183,A2
+1547623184,1547623191,NG
+1547623192,1547623199,A2
+1547623200,1547623207,NG
+1547623208,1547623215,A2
+1547623216,1547623247,NG
+1547623248,1547623255,A2
+1547623256,1547623263,NG
+1547623264,1547623287,A2
+1547623288,1547623295,NG
+1547623296,1547623319,A2
+1547623320,1547623327,NG
+1547623328,1547623335,A2
+1547623336,1547623343,NG
+1547623344,1547623359,A2
+1547623360,1547623367,NG
+1547623368,1547623383,A2
+1547623384,1547623391,NG
+1547623392,1547623399,A2
+1547623400,1547623415,NG
+1547623416,1547623455,A2
+1547623456,1547623463,NG
+1547623464,1547623479,A2
+1547623480,1547623487,NG
+1547623488,1547623495,A2
+1547623496,1547623519,NG
+1547623520,1547623527,A2
+1547623528,1547623559,NG
+1547623560,1547623567,A2
+1547623568,1547623615,NG
+1547623616,1547623727,A2
+1547623728,1547623735,NG
+1547623736,1547624447,A2
1547624448,1547628543,CZ
1547628544,1547632639,BG
1547632640,1547636735,TR
@@ -47059,7 +54003,33 @@
1551007744,1551106047,MD
1551106048,1551237119,DE
1551237120,1551368191,GR
-1551368192,1551499263,NL
+1551368192,1551385151,NL
+1551385152,1551385215,TR
+1551385216,1551385343,DE
+1551385344,1551385471,CH
+1551385472,1551390719,NL
+1551390720,1551392767,DE
+1551392768,1551396863,NL
+1551396864,1551397375,GB
+1551397376,1551397887,NL
+1551397888,1551398271,GB
+1551398272,1551398399,NL
+1551398400,1551398911,IL
+1551398912,1551399935,NL
+1551399936,1551400959,IN
+1551400960,1551401983,NL
+1551401984,1551403007,SG
+1551403008,1551413247,NL
+1551413248,1551417343,CN
+1551417344,1551417855,NL
+1551417856,1551418879,CN
+1551418880,1551419391,NL
+1551419392,1551421439,CN
+1551421440,1551425535,PH
+1551425536,1551427583,TH
+1551427584,1551429631,HK
+1551429632,1551433727,TH
+1551433728,1551499263,NL
1551499264,1551503359,EU
1551503360,1551504383,GB
1551504384,1551505407,FR
@@ -47077,17 +54047,28 @@
1551548416,1551551487,DE
1551551488,1551556607,EU
1551556608,1551558655,FR
-1551558656,1551564799,EU
+1551558656,1551560703,EU
+1551560704,1551561727,DE
+1551561728,1551562751,FR
+1551562752,1551564799,EU
1551564800,1551572991,FR
1551572992,1551576063,NL
1551576064,1551577087,EU
1551577088,1551580159,NL
-1551580160,1551630335,EU
+1551580160,1551604479,EU
+1551604480,1551604735,SE
+1551604736,1551630335,EU
1551630336,1551892479,RU
1551892480,1556086783,FR
-1556086784,1556486729,DE
-1556486730,1556486730,A2
-1556486731,1558708223,DE
+1556086784,1556486924,DE
+1556486925,1556486925,A2
+1556486926,1556490839,DE
+1556490840,1556490847,A2
+1556490848,1556493903,DE
+1556493904,1556493911,A2
+1556493912,1556497655,DE
+1556497656,1556497663,A2
+1556497664,1558708223,DE
1558708224,1559232511,GB
1559232512,1559240703,IL
1559240704,1559248895,BA
@@ -47102,7 +54083,9 @@
1559314432,1559322623,GE
1559322624,1559330815,RU
1559330816,1559339007,BA
-1559339008,1559339743,RU
+1559339008,1559339647,RU
+1559339648,1559339679,MY
+1559339680,1559339743,RU
1559339744,1559339775,MH
1559339776,1559341695,RU
1559341696,1559341703,ES
@@ -47156,7 +54139,9 @@
1560018944,1560051711,DE
1560051712,1560084479,RU
1560084480,1560117247,JO
-1560117248,1560150015,CZ
+1560117248,1560119295,CZ
+1560119296,1560121343,UA
+1560121344,1560150015,CZ
1560150016,1560182783,NL
1560182784,1560215551,SE
1560215552,1560281087,RU
@@ -47178,7 +54163,7 @@
1566081024,1566085119,RU
1566085120,1566089215,NL
1566089216,1566097407,RU
-1566097408,1566101503,GB
+1566097408,1566101503,HU
1566101504,1566105599,RU
1566105600,1566109695,DE
1566109696,1566111231,CH
@@ -47239,7 +54224,7 @@
1566314496,1566316543,BE
1566316544,1566318591,NO
1566318592,1566320639,RU
-1566320640,1566321151,GB
+1566320640,1566321151,DE
1566321152,1566321407,NL
1566321408,1566321663,UA
1566321664,1566321919,BZ
@@ -47266,6 +54251,7 @@
1566363648,1566365695,GB
1566365696,1566367743,RU
1566367744,1566371839,ES
+1566371840,1566373887,IT
1566373888,1566375935,RS
1566375936,1566377983,DE
1566377984,1566380031,BG
@@ -47273,7 +54259,8 @@
1566382080,1566384127,TR
1566384128,1566386175,RU
1566386176,1566388223,FR
-1566388224,1566388991,HU
+1566388224,1566388479,HK
+1566388480,1566388991,HU
1566388992,1566389247,SC
1566389248,1566389503,HU
1566389504,1566389759,SC
@@ -47289,8 +54276,7 @@
1566400640,1566400671,NO
1566400672,1566400703,DE
1566400704,1566400735,NL
-1566400736,1566400767,DE
-1566400768,1566400832,NO
+1566400736,1566400832,NO
1566400833,1566400895,GB
1566400896,1566401023,NO
1566401024,1566401055,US
@@ -47307,7 +54293,6 @@
1566401920,1566401983,NO
1566401984,1566402047,AU
1566402048,1566402559,NO
-1566402560,1566404607,IT
1566404608,1566406655,ES
1566406656,1566408703,NL
1566408704,1566410751,GB
@@ -47347,17 +54332,23 @@
1566470344,1566470351,IE
1566470352,1566470367,GB
1566470368,1566470511,IE
-1566470512,1566470655,GB
+1566470512,1566470527,GB
+1566470528,1566470559,IE
+1566470560,1566470563,GB
+1566470564,1566470623,IE
+1566470624,1566470655,GB
1566470656,1566470719,IE
1566470720,1566470727,GB
1566470728,1566470739,IE
1566470740,1566470743,GB
1566470744,1566470847,IE
1566470848,1566470879,GB
-1566470880,1566470895,IR
+1566470880,1566470895,IE
1566470896,1566470911,GB
-1566470912,1566472191,IE
-1566472192,1566474239,GB
+1566470912,1566471051,IE
+1566471052,1566471191,GB
+1566471192,1566471229,IE
+1566471230,1566474239,GB
1566474240,1566476287,DE
1566476288,1566478335,BG
1566478336,1566482431,RU
@@ -47403,7 +54394,9 @@
1566568448,1566570495,KZ
1566570496,1566570943,NL
1566570944,1566570951,DE
-1566570952,1566572543,NL
+1566570952,1566571479,NL
+1566571480,1566571483,DE
+1566571484,1566572543,NL
1566572544,1566703615,GB
1566703616,1566769151,SA
1566769152,1566773759,CZ
@@ -47429,7 +54422,9 @@
1567696384,1567696895,MD
1567696896,1567705087,RO
1567705088,1567707135,MD
-1567707136,1567715327,RO
+1567707136,1567712767,RO
+1567712768,1567713279,DE
+1567713280,1567715327,RO
1567715328,1567717375,MD
1567717376,1567752191,RO
1567752192,1567756287,MD
@@ -47439,7 +54434,9 @@
1567830016,1567831039,MD
1567831040,1567883263,RO
1567883264,1567948799,MD
-1567948800,1568083967,RO
+1567948800,1568026623,RO
+1568026624,1568030719,MD
+1568030720,1568083967,RO
1568083968,1568086015,MD
1568086016,1568178175,RO
1568178176,1568243711,RU
@@ -47460,7 +54457,9 @@
1568309248,1568342015,RO
1568342016,1568374783,BG
1568374784,1568440319,RU
-1568440320,1568473087,NO
+1568440320,1568443919,NO
+1568443920,1568443927,SE
+1568443928,1568473087,NO
1568473088,1568505855,BY
1568505856,1568538623,NL
1568538624,1568555007,IR
@@ -47475,12 +54474,14 @@
1570242560,1570275327,GB
1570275328,1570308095,BG
1570308096,1570340863,CZ
-1570340864,1570406399,RU
+1570340864,1570373631,RU
1570406400,1570439167,PL
1570439168,1570471935,TR
1570471936,1570480895,BG
1570480896,1570481151,MK
-1570481152,1570504703,BG
+1570481152,1570492159,BG
+1570492160,1570492415,ES
+1570492416,1570504703,BG
1570504704,1570570239,ES
1570570240,1570572287,NL
1570572288,1570574335,UA
@@ -47505,10 +54506,18 @@
1570621440,1570625535,RU
1570625536,1570627583,GB
1570627584,1570635775,RU
-1570635776,1570644991,FR
-1570644992,1570645039,GB
-1570645040,1570652159,FR
-1570652160,1570652543,SE
+1570635776,1570644767,FR
+1570644768,1570644775,GB
+1570644776,1570644991,FR
+1570644992,1570645055,GB
+1570645056,1570645231,FR
+1570645232,1570645247,GB
+1570645248,1570652159,FR
+1570652160,1570652287,SE
+1570652288,1570652291,MY
+1570652292,1570652295,GB
+1570652296,1570652299,DE
+1570652300,1570652543,SE
1570652544,1570652551,FR
1570652552,1570652891,SE
1570652892,1570652895,DE
@@ -47523,7 +54532,9 @@
1570660360,1570660367,SE
1570660368,1570660383,FR
1570660384,1570660387,RU
-1570660388,1570660543,SE
+1570660388,1570660407,SE
+1570660408,1570660411,DE
+1570660412,1570660543,SE
1570660544,1570660575,FI
1570660576,1570660591,GB
1570660592,1570660595,RU
@@ -47533,14 +54544,14 @@
1570660616,1570660619,RU
1570660620,1570660623,SE
1570660624,1570660639,FR
-1570660640,1570660863,SE
+1570660640,1570660675,DE
+1570660676,1570660863,SE
1570660864,1570661375,NO
1570661376,1570661631,GB
1570661632,1570662143,SE
1570662144,1570662399,DE
1570662400,1570663423,SE
-1570663424,1570663679,US
-1570663680,1570663935,GB
+1570663424,1570663935,GB
1570663936,1570665343,SE
1570665344,1570665351,GB
1570665352,1570665407,SE
@@ -47552,7 +54563,9 @@
1570665920,1570665935,GB
1570665936,1570665951,IT
1570665952,1570665967,FR
-1570665968,1570666175,SE
+1570665968,1570666143,SE
+1570666144,1570666147,DE
+1570666148,1570666175,SE
1570666176,1570666191,GB
1570666192,1570666223,FR
1570666224,1570666227,SE
@@ -47561,7 +54574,9 @@
1570666368,1570666383,FR
1570666384,1570666387,SE
1570666388,1570666391,NL
-1570666392,1570666431,SE
+1570666392,1570666395,SE
+1570666396,1570666399,DE
+1570666400,1570666431,SE
1570666432,1570666447,GB
1570666448,1570666463,DE
1570666464,1570666495,SE
@@ -47576,16 +54591,20 @@
1570666752,1570666755,ES
1570666756,1570666759,SE
1570666760,1570666767,GB
-1570666768,1570666943,SE
+1570666768,1570666887,SE
+1570666888,1570666891,DE
+1570666892,1570666943,SE
1570666944,1570666959,FR
1570666960,1570666975,SE
1570666976,1570666991,FR
1570666992,1570667007,SE
1570667008,1570667011,ES
1570667012,1570667015,SE
-1570667016,1570667023,GB
+1570667016,1570667023,FI
1570667024,1570667039,ES
-1570667040,1570667199,SE
+1570667040,1570667167,SE
+1570667168,1570667171,DE
+1570667172,1570667199,SE
1570667200,1570667215,FR
1570667216,1570667231,SE
1570667232,1570667247,FR
@@ -47594,7 +54613,11 @@
1570667268,1570667279,SE
1570667280,1570667295,ES
1570667296,1570667327,GB
-1570667328,1570667455,SE
+1570667328,1570667335,SE
+1570667336,1570667339,GB
+1570667340,1570667343,NL
+1570667344,1570667347,DE
+1570667348,1570667455,SE
1570667456,1570667471,FR
1570667472,1570667487,SE
1570667488,1570667503,FR
@@ -47603,10 +54626,12 @@
1570667520,1570667523,NL
1570667524,1570667527,IT
1570667528,1570667531,NO
-1570667532,1570667535,GB
+1570667532,1570667535,IT
1570667536,1570667587,SE
1570667588,1570667591,US
-1570667592,1570667711,SE
+1570667592,1570667599,SE
+1570667600,1570667603,DE
+1570667604,1570667711,SE
1570667712,1570667727,FR
1570667728,1570667743,NL
1570667744,1570667775,SE
@@ -47617,11 +54642,17 @@
1570667840,1570667903,FR
1570667904,1570667907,SE
1570667908,1570667911,RU
-1570667912,1570667967,SE
+1570667912,1570667915,US
+1570667916,1570667919,SE
+1570667920,1570667923,DE
+1570667924,1570667967,SE
1570667968,1570667983,FR
1570667984,1570668031,SE
1570668032,1570668035,NL
-1570668036,1570668287,SE
+1570668036,1570668047,SE
+1570668048,1570668055,ES
+1570668056,1570668063,NL
+1570668064,1570668287,SE
1570668288,1570668291,NL
1570668292,1570668351,SE
1570668352,1570668415,NO
@@ -47641,11 +54672,26 @@
1571422208,1571426303,RU
1571426304,1571428351,CZ
1571428352,1571428863,UA
-1571428864,1571430399,CZ
-1571430400,1571435519,UA
-1571435520,1571446783,CZ
-1571446784,1571448831,KZ
-1571448832,1571553279,CZ
+1571428864,1571429119,KZ
+1571429120,1571429375,RU
+1571429376,1571432447,UA
+1571432448,1571434495,CZ
+1571434496,1571435519,UA
+1571435520,1571436031,NL
+1571436032,1571438591,RU
+1571438592,1571441663,UA
+1571441664,1571442175,KZ
+1571442176,1571442687,NL
+1571442688,1571446783,CZ
+1571446784,1571447807,KZ
+1571447808,1571448831,CZ
+1571448832,1571450879,US
+1571450880,1571451903,UA
+1571451904,1571453951,CZ
+1571453952,1571454975,GB
+1571454976,1571487743,CZ
+1571487744,1571495935,SK
+1571495936,1571553279,CZ
1571553280,1571684351,IL
1571684352,1571686399,ES
1571686400,1571688447,GB
@@ -47731,7 +54777,9 @@
1572225024,1572241407,TR
1572241408,1572257791,SE
1572257792,1572274175,FR
-1572274176,1572282111,SG
+1572274176,1572276223,SG
+1572276224,1572277247,US
+1572277248,1572282111,SG
1572282112,1572282367,PT
1572282368,1572290559,SG
1572290560,1572306943,RU
@@ -47783,7 +54831,9 @@
1572504576,1572504703,RO
1572504704,1572504831,TR
1572504832,1572505087,SG
-1572505088,1572507199,IT
+1572505088,1572505983,IT
+1572505984,1572506111,GR
+1572506112,1572507199,IT
1572507200,1572507207,GB
1572507208,1572507647,IT
1572507648,1572511743,GB
@@ -47795,9 +54845,15 @@
1572524032,1572528127,GE
1572528128,1572532223,RU
1572532224,1572536319,IT
-1572536320,1572538367,GB
+1572536320,1572536831,JE
+1572536832,1572537087,GB
+1572537088,1572538111,JE
+1572538112,1572538175,GB
+1572538176,1572538367,JE
1572538368,1572540415,NL
-1572540416,1572541439,GB
+1572540416,1572540511,GB
+1572540512,1572540519,DE
+1572540520,1572541439,GB
1572541440,1572541447,FR
1572541448,1572541455,GB
1572541456,1572541463,FR
@@ -47806,21 +54862,25 @@
1572541536,1572541951,GB
1572541952,1572541983,DE
1572541984,1572541999,ES
-1572542000,1572542207,GB
+1572542000,1572542015,GB
+1572542016,1572542031,HU
+1572542032,1572542207,GB
1572542208,1572542463,FR
1572542464,1572544511,IT
+1572544512,1572546559,IQ
1572546560,1572548607,FR
-1572548608,1572550655,GB
+1572548608,1572550655,NL
1572550656,1572552703,DE
1572552704,1572554751,TR
-1572554752,1572556799,CH
1572556800,1572558847,NO
1572558848,1572560895,IT
1572560896,1572562943,RU
1572562944,1572564991,CZ
1572564992,1572567039,DE
1572567040,1572569087,RU
-1572569088,1572571135,NL
+1572569088,1572569343,NL
+1572569344,1572569599,GB
+1572569600,1572571135,NL
1572571136,1572573183,RO
1572573184,1572574975,GG
1572574976,1572575167,GB
@@ -47845,7 +54905,6 @@
1572612096,1572614143,RU
1572614144,1572616191,ES
1572616192,1572618239,CH
-1572618240,1572620287,RS
1572620288,1572620415,CH
1572620416,1572620431,CZ
1572620432,1572620559,CH
@@ -47853,6 +54912,7 @@
1572620568,1572622335,CH
1572622336,1572624383,RU
1572624384,1572626431,NO
+1572626432,1572628479,IT
1572628480,1572630527,DE
1572630528,1572632575,IT
1572632576,1572634623,RU
@@ -47871,13 +54931,21 @@
1572661248,1572663295,NO
1572663296,1572665343,DE
1572665344,1572667391,NL
-1572667392,1572668303,GB
+1572667392,1572667903,GB
+1572667904,1572667927,SA
+1572667928,1572668303,GB
1572668304,1572668311,SA
1572668312,1572668415,GB
1572668416,1572668431,SA
1572668432,1572668463,GB
1572668464,1572668471,SA
-1572668472,1572669439,GB
+1572668472,1572668639,GB
+1572668640,1572668647,SA
+1572668648,1572668655,GB
+1572668656,1572668671,CY
+1572668672,1572668703,GB
+1572668704,1572668711,CY
+1572668712,1572669439,GB
1572669440,1572673535,RU
1572673536,1572675583,AT
1572675584,1572677631,ES
@@ -47910,7 +54978,9 @@
1572720640,1572722687,IT
1572722688,1572726783,RU
1572726784,1572728831,CH
-1572728832,1572730879,SE
+1572728832,1572730239,SE
+1572730240,1572730303,MY
+1572730304,1572730879,SE
1572730880,1572732927,RU
1572732928,1572734975,HU
1572734976,1572739071,RU
@@ -47918,7 +54988,9 @@
1572741120,1572743167,FI
1572743168,1572745215,UA
1572745216,1572749311,CZ
-1572749312,1572751359,DE
+1572749312,1572751111,DE
+1572751112,1572751119,GB
+1572751120,1572751359,DE
1572751360,1572753407,CH
1572753408,1572755455,NO
1572755456,1572757503,DE
@@ -47950,7 +55022,9 @@
1572800512,1572804607,RU
1572804608,1572808703,GB
1572808704,1572810751,FR
-1572810752,1572812799,DE
+1572810752,1572812031,DE
+1572812032,1572812543,RO
+1572812544,1572812799,DE
1572812800,1572814847,RU
1572814848,1572816895,KW
1572816896,1572818943,RU
@@ -47975,11 +55049,29 @@
1572847616,1572849663,GI
1572849664,1572851711,GB
1572851712,1572853759,DE
-1572853760,1572854015,BE
+1572853760,1572853760,EU
+1572853761,1572853767,BE
+1572853768,1572853769,EU
+1572853770,1572853770,DK
+1572853771,1572853775,EU
+1572853776,1572854015,BE
1572854016,1572854271,LU
-1572854272,1572854527,BE
-1572854528,1572855551,EU
-1572855552,1572855807,BE
+1572854272,1572854272,EU
+1572854273,1572854284,BE
+1572854285,1572854285,NL
+1572854286,1572854286,CH
+1572854287,1572854287,LU
+1572854288,1572854527,BE
+1572854528,1572855039,EU
+1572855040,1572855071,BE
+1572855072,1572855295,EU
+1572855296,1572855551,CH
+1572855552,1572855552,EU
+1572855553,1572855558,BE
+1572855559,1572855561,EU
+1572855562,1572855562,DK
+1572855563,1572855567,EU
+1572855568,1572855807,BE
1572855808,1572857855,KZ
1572857856,1572859903,SE
1572859904,1572861951,IT
@@ -47998,7 +55090,10 @@
1578584576,1578586111,PT
1578586112,1578588159,ES
1578588160,1578590207,PL
-1578590208,1578590271,FR
+1578590208,1578590223,FR
+1578590224,1578590231,ES
+1578590232,1578590239,IT
+1578590240,1578590271,FR
1578590272,1578590275,NL
1578590276,1578590279,PT
1578590280,1578590283,PL
@@ -48016,12 +55111,15 @@
1578590472,1578590479,DE
1578590480,1578590495,IT
1578590496,1578590527,PL
-1578590528,1578590543,FR
+1578590528,1578590535,ES
+1578590536,1578590543,FR
1578590544,1578590559,GB
1578590560,1578590575,ES
-1578590576,1578590603,FR
+1578590576,1578590599,FR
+1578590600,1578590603,LT
1578590604,1578590607,PL
-1578590608,1578590619,FR
+1578590608,1578590615,FR
+1578590616,1578590619,DE
1578590620,1578590623,IT
1578590624,1578590639,FR
1578590640,1578590647,CZ
@@ -48029,19 +55127,23 @@
1578590656,1578590659,FR
1578590660,1578590663,CZ
1578590664,1578590667,FR
-1578590668,1578590687,PL
-1578590688,1578590699,FR
-1578590700,1578590719,PL
-1578590720,1578590799,FR
-1578590800,1578590831,GB
-1578590832,1578590847,ES
+1578590668,1578590671,NL
+1578590672,1578590687,PL
+1578590688,1578590691,GB
+1578590692,1578590695,DE
+1578590696,1578590699,FR
+1578590700,1578590735,PL
+1578590736,1578590799,FR
+1578590800,1578590815,ES
+1578590816,1578590831,GB
+1578590832,1578590839,FR
+1578590840,1578590847,PL
1578590848,1578590879,FR
1578590880,1578590911,PL
1578590912,1578590927,GB
1578590928,1578590935,DE
1578590936,1578590943,ES
-1578590944,1578590959,CH
-1578590960,1578590975,FR
+1578590944,1578590975,FR
1578590976,1578590991,GB
1578590992,1578590999,IT
1578591000,1578591007,FR
@@ -48056,8 +55158,9 @@
1578591136,1578591143,FR
1578591144,1578591151,GB
1578591152,1578591183,FR
-1578591184,1578591199,ES
-1578591200,1578591247,FR
+1578591184,1578591187,CH
+1578591188,1578591195,GB
+1578591196,1578591247,FR
1578591248,1578591263,PL
1578591264,1578591279,FR
1578591280,1578591287,ES
@@ -48066,13 +55169,16 @@
1578591296,1578591327,FR
1578591328,1578591343,PL
1578591344,1578591391,FR
-1578591392,1578591407,CH
+1578591392,1578591395,IT
+1578591396,1578591407,PL
1578591408,1578591411,ES
1578591412,1578591415,FR
1578591416,1578591423,ES
1578591424,1578591431,PL
1578591432,1578591439,ES
-1578591440,1578591463,FR
+1578591440,1578591455,FR
+1578591456,1578591459,GB
+1578591460,1578591463,FR
1578591464,1578591487,PL
1578591488,1578591503,FR
1578591504,1578591519,CH
@@ -48084,20 +55190,20 @@
1578591576,1578591579,DE
1578591580,1578591583,ES
1578591584,1578591599,IT
-1578591600,1578591663,FR
-1578591664,1578591695,PL
+1578591600,1578591679,FR
+1578591680,1578591695,PL
1578591696,1578591699,DE
-1578591700,1578591707,FR
-1578591708,1578591711,CZ
+1578591700,1578591703,FR
+1578591704,1578591707,DE
+1578591708,1578591711,FR
1578591712,1578591743,PL
1578591744,1578591759,ES
1578591760,1578591791,FR
1578591792,1578591807,PL
-1578591808,1578591823,DE
-1578591824,1578591887,FR
+1578591808,1578591887,FR
1578591888,1578591891,DE
1578591892,1578591899,FR
-1578591900,1578591903,GB
+1578591900,1578591903,NL
1578591904,1578591919,PL
1578591920,1578591939,ES
1578591940,1578591951,FR
@@ -48121,17 +55227,18 @@
1578592200,1578592207,CH
1578592208,1578592223,FR
1578592224,1578592239,ES
-1578592240,1578592275,FR
-1578592276,1578592279,FI
+1578592240,1578592271,FR
+1578592272,1578592279,PL
1578592280,1578592283,BE
1578592284,1578592287,NL
-1578592288,1578592303,DE
+1578592288,1578592295,PL
+1578592296,1578592303,PT
1578592304,1578592319,FR
1578592320,1578592335,ES
1578592336,1578592351,FR
1578592352,1578592367,PL
-1578592368,1578592383,FR
-1578592384,1578592399,IE
+1578592368,1578592395,FR
+1578592396,1578592399,ES
1578592400,1578592415,GB
1578592416,1578592423,IT
1578592424,1578592431,IE
@@ -48142,7 +55249,8 @@
1578592516,1578592519,PL
1578592520,1578592531,FR
1578592532,1578592535,GB
-1578592536,1578592543,NL
+1578592536,1578592539,PL
+1578592540,1578592543,ES
1578592544,1578592559,FR
1578592560,1578592575,NL
1578592576,1578592591,GB
@@ -48150,16 +55258,20 @@
1578592688,1578592695,DE
1578592696,1578592719,ES
1578592720,1578592735,CH
-1578592736,1578592751,FR
-1578592752,1578592783,DE
+1578592736,1578592743,PL
+1578592744,1578592747,PT
+1578592748,1578592751,DE
+1578592752,1578592767,IE
+1578592768,1578592783,DE
1578592784,1578592799,FR
-1578592800,1578592815,GB
-1578592816,1578592823,PL
-1578592824,1578592831,FR
+1578592800,1578592807,GB
+1578592808,1578592811,FR
+1578592812,1578592815,PL
+1578592816,1578592831,FR
1578592832,1578592847,PL
1578592848,1578592851,BE
1578592852,1578592855,DE
-1578592856,1578592859,FR
+1578592856,1578592859,CH
1578592860,1578592879,PL
1578592880,1578592883,FR
1578592884,1578592891,GB
@@ -48174,16 +55286,28 @@
1578593308,1578593327,FR
1578593328,1578593343,IT
1578593344,1578593359,FR
-1578593360,1578593407,GB
-1578593408,1578593415,FR
+1578593360,1578593375,PL
+1578593376,1578593407,GB
+1578593408,1578593411,IT
+1578593412,1578593415,FR
1578593416,1578593423,PL
1578593424,1578593439,FR
1578593440,1578593455,PL
-1578593456,1578593487,FR
+1578593456,1578593471,FR
+1578593472,1578593479,GB
+1578593480,1578593483,PL
+1578593484,1578593487,FR
1578593488,1578593495,ES
1578593496,1578593503,FR
-1578593504,1578593535,PL
-1578593536,1578593599,GB
+1578593504,1578593519,PL
+1578593520,1578593543,FR
+1578593544,1578593547,ES
+1578593548,1578593551,FI
+1578593552,1578593559,PL
+1578593560,1578593567,FR
+1578593568,1578593583,CZ
+1578593584,1578593587,FR
+1578593588,1578593599,DE
1578593600,1578593631,FR
1578593632,1578593647,NL
1578593648,1578593659,PL
@@ -48202,9 +55326,14 @@
1578593872,1578593875,ES
1578593876,1578593879,FR
1578593880,1578593887,DE
-1578593888,1578593919,FR
-1578593920,1578593951,PL
-1578593952,1578593955,FR
+1578593888,1578593895,ES
+1578593896,1578593899,GB
+1578593900,1578593903,DE
+1578593904,1578593919,FR
+1578593920,1578593935,PL
+1578593936,1578593943,FR
+1578593944,1578593947,IT
+1578593948,1578593955,FR
1578593956,1578593967,PL
1578593968,1578593983,FR
1578593984,1578593999,PL
@@ -48212,20 +55341,26 @@
1578594016,1578594031,BE
1578594032,1578594039,ES
1578594040,1578594047,IT
-1578594048,1578594063,FR
+1578594048,1578594055,FR
+1578594056,1578594059,ES
+1578594060,1578594063,FR
1578594064,1578594079,PL
1578594080,1578594087,CH
1578594088,1578594095,CZ
1578594096,1578594111,FR
1578594112,1578594127,PL
-1578594128,1578594159,FR
-1578594160,1578594175,DE
-1578594176,1578594191,FR
+1578594128,1578594143,FR
+1578594144,1578594147,PL
+1578594148,1578594151,ES
+1578594152,1578594159,IT
+1578594160,1578594163,PT
+1578594164,1578594167,ES
+1578594168,1578594171,DE
+1578594172,1578594191,FR
1578594192,1578594207,IT
1578594208,1578594211,DE
1578594212,1578594223,PL
-1578594224,1578594239,ES
-1578594240,1578594255,FR
+1578594224,1578594255,FR
1578594256,1578594271,GB
1578594272,1578594303,PL
1578594304,1578594307,GB
@@ -48249,7 +55384,10 @@
1578594512,1578594515,PL
1578594516,1578594519,FR
1578594520,1578594523,PL
-1578594524,1578594543,FR
+1578594524,1578594527,FR
+1578594528,1578594535,GB
+1578594536,1578594539,DE
+1578594540,1578594543,FR
1578594544,1578594551,ES
1578594552,1578594555,PL
1578594556,1578594559,LT
@@ -48268,7 +55406,11 @@
1578594776,1578594783,ES
1578594784,1578594799,FR
1578594800,1578594815,DE
-1578594816,1578595039,FR
+1578594816,1578594847,FR
+1578594848,1578594863,IT
+1578594864,1578594867,PL
+1578594868,1578594871,BE
+1578594872,1578595039,FR
1578595040,1578595055,GB
1578595056,1578595103,FR
1578595104,1578595119,GB
@@ -48292,24 +55434,31 @@
1578595328,1578595343,IT
1578595344,1578595363,FR
1578595364,1578595367,DE
-1578595368,1578595371,FR
-1578595372,1578595375,BE
-1578595376,1578595379,FR
+1578595368,1578595379,FR
1578595380,1578595383,CH
1578595384,1578595387,ES
-1578595388,1578595391,PL
-1578595392,1578595423,CH
-1578595424,1578595455,LT
+1578595388,1578595407,PL
+1578595408,1578595411,IE
+1578595412,1578595419,PL
+1578595420,1578595423,FR
+1578595424,1578595439,PL
+1578595440,1578595447,FR
+1578595448,1578595455,ES
1578595456,1578595459,DE
-1578595460,1578595487,FR
+1578595460,1578595463,PL
+1578595464,1578595487,FR
1578595488,1578595503,DE
1578595504,1578595519,PL
-1578595520,1578595607,FR
+1578595520,1578595535,FR
+1578595536,1578595539,BE
+1578595540,1578595543,CH
+1578595544,1578595547,GB
+1578595548,1578595607,FR
1578595608,1578595611,GB
1578595612,1578595615,ES
1578595616,1578595647,PL
1578595648,1578595679,FR
-1578595680,1578595695,BE
+1578595680,1578595695,PL
1578595696,1578595711,FR
1578595712,1578595743,GB
1578595744,1578595747,IT
@@ -48318,7 +55467,13 @@
1578595760,1578595763,FR
1578595764,1578595775,ES
1578595776,1578595807,CH
-1578595808,1578595983,FR
+1578595808,1578595855,FR
+1578595856,1578595871,GB
+1578595872,1578595907,PL
+1578595908,1578595911,BE
+1578595912,1578595935,FR
+1578595936,1578595967,DE
+1578595968,1578595983,IE
1578595984,1578595991,NL
1578595992,1578595995,IT
1578595996,1578596095,FR
@@ -48326,7 +55481,8 @@
1578596100,1578596103,GB
1578596104,1578596111,FR
1578596112,1578596115,DE
-1578596116,1578596123,PT
+1578596116,1578596119,FR
+1578596120,1578596123,PT
1578596124,1578596127,ES
1578596128,1578596143,PL
1578596144,1578596147,DE
@@ -48352,7 +55508,25 @@
1578604544,1578606591,GB
1578606592,1578608639,DE
1578608640,1578610687,CZ
-1578610688,1578610943,FR
+1578610688,1578610767,FR
+1578610768,1578610771,CH
+1578610772,1578610775,GB
+1578610776,1578610779,DE
+1578610780,1578610783,FR
+1578610784,1578610799,DE
+1578610800,1578610803,PL
+1578610804,1578610807,GB
+1578610808,1578610815,FR
+1578610816,1578610831,LT
+1578610832,1578610847,CH
+1578610848,1578610851,GB
+1578610852,1578610855,IE
+1578610856,1578610859,IT
+1578610860,1578610863,PL
+1578610864,1578610867,BE
+1578610868,1578610871,FR
+1578610872,1578610879,PL
+1578610880,1578610943,FR
1578610944,1578610975,ES
1578610976,1578611039,PL
1578611040,1578611043,ES
@@ -48368,59 +55542,85 @@
1578611136,1578611151,CH
1578611152,1578611167,DE
1578611168,1578611183,ES
-1578611184,1578611199,FR
+1578611184,1578611191,BE
+1578611192,1578611195,FR
+1578611196,1578611199,ES
1578611200,1578611215,NL
-1578611216,1578611231,PL
+1578611216,1578611219,GB
+1578611220,1578611223,DE
+1578611224,1578611227,ES
+1578611228,1578611231,PL
1578611232,1578611247,FR
1578611248,1578611251,ES
1578611252,1578611255,IT
1578611256,1578611263,PL
1578611264,1578611279,IT
-1578611280,1578611295,FR
+1578611280,1578611287,FR
+1578611288,1578611291,PL
+1578611292,1578611295,DE
1578611296,1578611303,GB
1578611304,1578611327,PL
1578611328,1578611343,BE
1578611344,1578611359,FR
1578611360,1578611375,CH
-1578611376,1578611399,FR
-1578611400,1578611403,BE
-1578611404,1578611407,ES
+1578611376,1578611391,FR
+1578611392,1578611399,GB
+1578611400,1578611407,ES
1578611408,1578611423,IT
1578611424,1578611439,GB
-1578611440,1578611455,IT
+1578611440,1578611443,ES
+1578611444,1578611447,NL
+1578611448,1578611455,ES
1578611456,1578611711,FR
1578611712,1578611775,CH
1578611776,1578611783,DE
1578611784,1578611807,FR
1578611808,1578611839,CH
-1578611840,1578611919,FR
+1578611840,1578611855,BE
+1578611856,1578611919,FR
1578611920,1578611935,BE
1578611936,1578611943,PL
1578611944,1578611947,FR
1578611948,1578611951,GB
1578611952,1578611967,FR
-1578611968,1578612159,GB
-1578612160,1578612223,PL
-1578612224,1578612239,GB
+1578611968,1578612031,GB
+1578612032,1578612039,DE
+1578612040,1578612047,CH
+1578612048,1578612051,NL
+1578612052,1578612055,DE
+1578612056,1578612059,PL
+1578612060,1578612063,ES
+1578612064,1578612115,FR
+1578612116,1578612119,PL
+1578612120,1578612123,IE
+1578612124,1578612127,DE
+1578612128,1578612135,ES
+1578612136,1578612139,IE
+1578612140,1578612143,ES
+1578612144,1578612223,PL
+1578612224,1578612239,IT
1578612240,1578612255,FR
1578612256,1578612259,PL
1578612260,1578612263,IT
-1578612264,1578612287,FR
-1578612288,1578612303,BE
+1578612264,1578612303,FR
1578612304,1578612319,DE
1578612320,1578612383,FR
1578612384,1578612415,PL
1578612416,1578612623,FR
1578612624,1578612639,CH
1578612640,1578612671,PL
-1578612672,1578612687,FR
+1578612672,1578612687,ES
1578612688,1578612703,DE
1578612704,1578612863,FR
1578612864,1578612895,NL
-1578612896,1578612911,PL
+1578612896,1578612899,FR
+1578612900,1578612903,PL
+1578612904,1578612907,DE
+1578612908,1578612911,FR
1578612912,1578612959,ES
-1578612960,1578612975,GB
-1578612976,1578612991,FR
+1578612960,1578612975,DE
+1578612976,1578612983,IT
+1578612984,1578612991,FR
1578612992,1578613247,DE
1578613248,1578613503,FR
1578613504,1578613567,DE
@@ -48432,17 +55632,25 @@
1578613712,1578613719,BE
1578613720,1578613723,ES
1578613724,1578613727,IT
-1578613728,1578613743,CZ
+1578613728,1578613743,FR
1578613744,1578613751,ES
1578613752,1578613759,NL
-1578613760,1578613791,DE
+1578613760,1578613775,DE
+1578613776,1578613779,FR
+1578613780,1578613783,PL
+1578613784,1578613787,BE
+1578613788,1578613791,PL
1578613792,1578613823,ES
1578613824,1578613887,IT
1578613888,1578613951,ES
-1578613952,1578614015,IE
+1578613952,1578613983,FR
+1578613984,1578613999,PL
+1578614000,1578614007,IT
+1578614008,1578614015,DE
1578614016,1578614031,FR
1578614032,1578614047,BE
-1578614048,1578614071,FR
+1578614048,1578614055,FI
+1578614056,1578614071,FR
1578614072,1578614079,ES
1578614080,1578614175,FR
1578614176,1578614191,ES
@@ -48450,7 +55658,14 @@
1578614196,1578614207,GB
1578614208,1578614271,PL
1578614272,1578614527,ES
-1578614528,1578631167,FR
+1578614528,1578614543,GB
+1578614544,1578614559,PL
+1578614560,1578614575,FR
+1578614576,1578614583,DE
+1578614584,1578614591,GB
+1578614592,1578614623,CZ
+1578614624,1578614655,BE
+1578614656,1578631167,FR
1578631168,1578663935,RO
1578663936,1578762239,RU
1578762240,1578795007,BG
@@ -48461,10 +55676,9 @@
1578991616,1579024383,KW
1579024384,1579057151,GB
1579057152,1579089919,LV
-1579089920,1579090575,NL
-1579090576,1579090687,GB
-1579090688,1579090943,NL
-1579090944,1579091759,GB
+1579089920,1579090431,GB
+1579090432,1579090463,NL
+1579090464,1579091759,GB
1579091760,1579091775,IL
1579091776,1579091839,GB
1579091840,1579091855,US
@@ -48472,13 +55686,16 @@
1579091968,1579092223,DE
1579092224,1579093759,GB
1579093760,1579094015,NL
-1579094016,1579104511,GB
-1579104512,1579104767,NL
-1579104768,1579105023,GB
-1579105024,1579105151,NL
-1579105152,1579105279,GB
-1579105280,1579105343,NL
-1579105344,1579105535,GB
+1579094016,1579094271,GB
+1579094272,1579094527,NL
+1579094528,1579094783,GB
+1579094784,1579095039,NL
+1579095040,1579098367,GB
+1579098368,1579098623,NL
+1579098624,1579105023,GB
+1579105024,1579105087,NL
+1579105088,1579105119,DE
+1579105120,1579105535,GB
1579105536,1579105599,NL
1579105600,1579106303,GB
1579106304,1579122687,DE
@@ -48493,9 +55710,9 @@
1580015616,1580048383,UA
1580048384,1580064767,RU
1580064768,1580072959,DE
-1580072960,1580085247,PT
-1580085248,1580089343,MZ
-1580089344,1580134399,PT
+1580072960,1580104959,PT
+1580104960,1580105215,CH
+1580105216,1580134399,PT
1580134400,1580136447,ES
1580136448,1580138495,PT
1580138496,1580204031,IT
@@ -48512,7 +55729,9 @@
1581826048,1581842431,GB
1581842432,1581858815,BG
1581858816,1581875199,IT
-1581875200,1581891583,TR
+1581875200,1581881343,TR
+1581881344,1581881599,GB
+1581881600,1581891583,TR
1581891584,1581907967,RU
1581907968,1581924351,IT
1581924352,1581940735,UA
@@ -48522,7 +55741,6 @@
1581989888,1582006271,PL
1582006272,1582022655,RU
1582022656,1582039039,NL
-1582039040,1582055423,RU
1582055424,1582071807,UA
1582071808,1582088191,ES
1582088192,1582104575,GB
@@ -48556,14 +55774,14 @@
1583669248,1583673343,GE
1583673344,1583673991,DE
1583673992,1583673999,GB
-1583674000,1583674031,DE
-1583674032,1583674039,NL
-1583674040,1583677439,DE
+1583674000,1583677439,DE
1583677440,1583681535,FI
1583681536,1583685631,PL
1583685632,1583689727,DE
1583689728,1583693823,IT
-1583693824,1583697919,RU
+1583693824,1583693871,RU
+1583693872,1583693879,A2
+1583693880,1583697919,RU
1583697920,1583702015,TR
1583702016,1583706111,RU
1583706112,1583710207,GI
@@ -48589,7 +55807,9 @@
1583742976,1583747071,TR
1583747072,1583751167,RU
1583751168,1583755263,NO
-1583755264,1583759359,NL
+1583755264,1583755414,NL
+1583755415,1583755424,RU
+1583755425,1583759359,NL
1583759360,1583763455,TR
1583763456,1583767551,RU
1583767552,1583771647,AT
@@ -48603,7 +55823,14 @@
1583800320,1583804415,ME
1583804416,1583808511,GB
1583808512,1583812607,MD
-1583812608,1583813663,NL
+1583812608,1583813139,NL
+1583813140,1583813143,DE
+1583813144,1583813171,NL
+1583813172,1583813183,US
+1583813184,1583813199,NL
+1583813200,1583813215,RU
+1583813216,1583813231,US
+1583813232,1583813663,NL
1583813664,1583813671,US
1583813672,1583813679,NL
1583813680,1583813683,GB
@@ -48613,10 +55840,20 @@
1583813736,1583813743,DE
1583813744,1583813808,NL
1583813809,1583813815,US
-1583813816,1583815167,NL
-1583815168,1583815199,US
-1583815200,1583816703,NL
-1583816704,1583820799,TR
+1583813816,1583814655,NL
+1583814656,1583814783,US
+1583814784,1583815167,NL
+1583815168,1583815215,US
+1583815216,1583815343,NL
+1583815344,1583815351,US
+1583815352,1583815679,NL
+1583815680,1583815711,DE
+1583815712,1583815807,NL
+1583815808,1583815935,US
+1583815936,1583816703,NL
+1583816704,1583819007,TR
+1583819008,1583819136,GB
+1583819137,1583820799,TR
1583820800,1583824895,LV
1583824896,1583828991,SI
1583828992,1583833087,RU
@@ -48665,13 +55902,13 @@
1585214464,1585217535,NL
1585217536,1585219583,FR
1585219584,1585221631,NL
-1585221632,1585221759,SK
-1585221760,1585223679,CZ
+1585221632,1585223679,SK
1585223680,1585225727,FR
1585225728,1585227775,UA
-1585227776,1585231871,RU
+1585227776,1585231359,RU
+1585231360,1585231615,NL
+1585231616,1585231871,RU
1585231872,1585233919,CZ
-1585233920,1585235967,LB
1585235968,1585238015,RU
1585238016,1585240063,DE
1585240064,1585241087,FR
@@ -48693,7 +55930,8 @@
1585265776,1585265919,FR
1585265920,1585265935,IM
1585265936,1585266111,FR
-1585266112,1585266687,IM
+1585266112,1585266175,IM
+1585266176,1585266687,MT
1585266688,1585270783,DE
1585270784,1585272831,IT
1585272832,1585274879,RU
@@ -48751,8 +55989,8 @@
1585375232,1585377279,GB
1585377280,1585379327,ES
1585379328,1585381375,CH
-1585381376,1585381887,RS
-1585381888,1585383423,GB
+1585381376,1585382399,RS
+1585382400,1585383423,GB
1585383424,1585385471,FR
1585385472,1585387519,DE
1585387520,1585389567,SI
@@ -48764,7 +56002,11 @@
1585399808,1585400063,NL
1585400064,1585400319,IL
1585400320,1585400575,GB
-1585400576,1585401855,US
+1585400576,1585400831,FR
+1585400832,1585401087,DE
+1585401088,1585401343,NL
+1585401344,1585401599,DE
+1585401600,1585401855,GB
1585401856,1585403903,IT
1585403904,1585405951,RU
1585405952,1585407999,GB
@@ -48800,17 +56042,22 @@
1585991168,1585991171,US
1585991172,1585991683,SE
1585991684,1585991687,US
-1585991688,1585991935,SE
+1585991688,1585991727,SE
+1585991728,1585991731,RU
+1585991732,1585991935,SE
1585991936,1585991939,US
-1585991940,1585994499,SE
-1585994500,1585994503,RU
-1585994504,1585995775,SE
+1585991940,1585994543,SE
+1585994544,1585994547,MY
+1585994548,1585995647,SE
+1585995648,1585995651,US
+1585995652,1585995775,SE
1585995776,1586003967,AT
1586003968,1586012159,SK
1586012160,1586020351,DE
1586020352,1586028543,RU
1586028544,1586036735,GB
-1586036736,1586069503,RU
+1586036736,1586061311,RU
+1586061312,1586069503,SE
1586069504,1586077695,DE
1586077696,1586085887,GE
1586085888,1586110463,RU
@@ -48832,7 +56079,9 @@
1586216960,1586225151,BG
1586225152,1586233343,RU
1586233344,1586241535,FR
-1586241536,1586249727,SE
+1586241536,1586243779,SE
+1586243780,1586243787,NO
+1586243788,1586249727,SE
1586249728,1586257919,SI
1586257920,1586266111,EU
1586266112,1586274303,RU
@@ -48901,7 +56150,16 @@
1586493440,1586495487,GB
1586495488,1587019775,DK
1587019776,1587085311,PL
-1587085312,1587183615,UA
+1587085312,1587150847,UA
+1587150848,1587154943,RU
+1587154944,1587159039,PL
+1587159040,1587163135,UA
+1587163136,1587165183,DE
+1587165184,1587167231,PL
+1587167232,1587175423,RU
+1587175424,1587177471,PL
+1587177472,1587179519,RS
+1587179520,1587183615,UA
1587183616,1587199999,RU
1587200000,1587216383,UA
1587216384,1587347455,BG
@@ -48924,11 +56182,12 @@
1588621312,1588625407,MD
1588625408,1588670463,RO
1588670464,1588674559,MD
-1588674560,1588723711,RO
+1588674560,1588689407,RO
+1588689408,1588689919,DE
+1588689920,1588723711,RO
1588723712,1588854783,UA
1588854784,1588985855,RU
1588985856,1589182463,IR
-1589182464,1589215231,RU
1589215232,1589247999,GB
1589248000,1589280767,NO
1589280768,1589313535,DE
@@ -48999,7 +56258,6 @@
1590132992,1590134783,GB
1590134784,1590136831,ES
1590136832,1590138879,GB
-1590138880,1590140927,CZ
1590140928,1590142975,UA
1590142976,1590145023,AT
1590145024,1590147071,HU
@@ -49007,8 +56265,10 @@
1590149120,1590151167,CZ
1590151168,1590153215,TR
1590153216,1590157311,RU
-1590157312,1590159359,IE
-1590159360,1590161407,GB
+1590157312,1590157471,IE
+1590157472,1590157823,GB
+1590157824,1590157951,IE
+1590157952,1590161407,GB
1590161408,1590163455,DE
1590163456,1590165503,NL
1590165504,1590176831,AE
@@ -49034,33 +56294,37 @@
1592054272,1592054527,AE
1592054528,1592054783,NL
1592054784,1592055295,AE
-1592055296,1592055935,NL
-1592055936,1592055999,SG
-1592056000,1592056959,NL
-1592056960,1592057023,SG
-1592057024,1592057855,NL
+1592055296,1592057855,NL
1592057856,1592061951,RS
1592061952,1592066047,RU
1592066048,1592067583,US
1592067584,1592067711,NO
-1592067712,1592069375,CY
+1592067712,1592067839,CY
+1592067840,1592068095,NL
+1592068096,1592069119,CY
+1592069120,1592069135,RU
+1592069136,1592069247,CY
+1592069248,1592069375,RU
1592069376,1592069407,US
1592069408,1592069631,CY
-1592069632,1592069695,NL
-1592069696,1592069855,CY
-1592069856,1592069887,NL
+1592069632,1592069711,NL
+1592069712,1592069727,CY
+1592069728,1592069759,NL
+1592069760,1592069839,CY
+1592069840,1592069887,NL
1592069888,1592074239,RU
1592074240,1592078335,SK
1592078336,1592082431,NL
-1592082432,1592085023,GB
-1592085024,1592085039,ES
-1592085040,1592086527,GB
-1592086528,1592087295,CZ
-1592087296,1592088063,PL
-1592088064,1592090623,CZ
+1592082432,1592086527,GB
+1592086528,1592087079,CZ
+1592087080,1592087087,PL
+1592087088,1592087295,CZ
+1592087296,1592088191,PL
+1592088192,1592090623,CZ
1592090624,1592094719,RU
1592094720,1592098815,RS
1592098816,1592102911,GB
+1592102912,1592107007,DE
1592107008,1592111103,GB
1592111104,1592115199,DE
1592115200,1592119295,ES
@@ -49098,7 +56362,6 @@
1592281088,1592283135,UA
1592283136,1592285183,GR
1592285184,1592287231,RU
-1592287232,1592289279,RO
1592289280,1592291327,RU
1592291328,1592293375,NL
1592293376,1592295423,LT
@@ -49118,11 +56381,12 @@
1592326144,1592328191,UA
1592328192,1592393727,RU
1592393728,1592459263,SE
-1592459264,1592524799,GE
1592524800,1592540415,GB
1592540416,1592540423,A2
1592540424,1592557567,GB
-1592557568,1592590335,BG
+1592557568,1592584447,BG
+1592584448,1592584703,GB
+1592584704,1592590335,BG
1592590336,1592623103,FI
1592623104,1592655871,RU
1592655872,1592786943,FR
@@ -49156,7 +56420,9 @@
1593202688,1593202815,NO
1593202816,1593203455,SE
1593203456,1593203487,NO
-1593203488,1593204159,SE
+1593203488,1593204087,SE
+1593204088,1593204095,FI
+1593204096,1593204159,SE
1593204160,1593204223,DK
1593204224,1593205567,SE
1593205568,1593205631,DK
@@ -49164,7 +56430,9 @@
1593206084,1593206095,DK
1593206096,1593206103,FI
1593206104,1593206111,GB
-1593206112,1593209151,SE
+1593206112,1593206223,SE
+1593206224,1593206231,FI
+1593206232,1593209151,SE
1593209152,1593209155,GR
1593209156,1593209159,HU
1593209160,1593209163,FI
@@ -49211,9 +56479,7 @@
1593311232,1593343999,UA
1593344000,1593376767,HU
1593376768,1593409535,JO
-1593409536,1593416231,DE
-1593416232,1593416239,CH
-1593416240,1593442303,DE
+1593409536,1593442303,DE
1593442304,1593475071,BA
1593475072,1593540607,RU
1593540608,1593573375,PL
@@ -49264,16 +56530,20 @@
1599078400,1599094783,SE
1599094784,1599111167,RU
1599111168,1599127551,IR
-1599127552,1599133695,CZ
+1599127552,1599129007,CZ
+1599129008,1599129011,EE
+1599129012,1599133695,CZ
1599133696,1599133823,SK
-1599133824,1599134207,CZ
-1599134208,1599134463,AT
-1599134464,1599143935,CZ
+1599133824,1599137055,CZ
+1599137056,1599137071,SK
+1599137072,1599143935,CZ
1599143936,1599160319,UA
1599160320,1599176703,IR
1599176704,1599188991,FR
1599188992,1599189263,DE
-1599189264,1599193087,FR
+1599189264,1599189311,FR
+1599189312,1599189375,DE
+1599189376,1599193087,FR
1599193088,1599209471,RU
1599209472,1599242239,IR
1599242240,1599258623,CZ
@@ -49289,7 +56559,6 @@
1599504384,1599520767,AZ
1599520768,1599537151,RU
1599537152,1599553535,BG
-1599553536,1599569919,RU
1599569920,1599586303,SI
1599586304,1599602687,BG
1599602688,1599864831,DE
@@ -49297,7 +56566,13 @@
1600126976,1600389119,NL
1600389120,1600397311,EU
1600397312,1600401407,DE
-1600401408,1600520191,EU
+1600401408,1600442367,EU
+1600442368,1600446463,DE
+1600446464,1600453119,EU
+1600453120,1600453631,IT
+1600453632,1600456703,EU
+1600456704,1600457727,DE
+1600457728,1600520191,EU
1600520192,1600651263,SK
1600651264,1600684031,GE
1600684032,1600749567,RU
@@ -49321,7 +56596,8 @@
1601699840,1602224127,ES
1602224128,1602226175,NL
1602226176,1602228223,GB
-1602228224,1602230271,DE
+1602228224,1602230270,FR
+1602230271,1602230271,DE
1602230272,1602232319,DK
1602232320,1602234367,CH
1602234368,1602234591,FR
@@ -49348,23 +56624,30 @@
1602252800,1602254847,SE
1602254848,1602255359,HU
1602255360,1602255615,US
-1602255616,1602256895,HU
+1602255616,1602255871,PT
+1602255872,1602256895,HU
1602256896,1602258943,GB
1602258944,1602260991,RU
1602260992,1602263039,FR
1602263040,1602265087,ES
1602265088,1602267135,RU
-1602267136,1602269183,RO
+1602267136,1602267199,DE
+1602267200,1602267263,FR
+1602267264,1602267327,GB
+1602267328,1602267391,ES
+1602267392,1602269183,RO
1602269184,1602271231,RU
1602271232,1602273279,MK
1602273280,1602273535,FR
1602273536,1602273791,GB
1602273792,1602274559,IN
1602274560,1602274815,IE
-1602274816,1602275327,FR
+1602274816,1602275327,IN
1602275328,1602275615,DE
1602275616,1602275647,CY
-1602275648,1602279423,DE
+1602275648,1602275679,DE
+1602275680,1602275695,CA
+1602275696,1602279423,DE
1602279424,1602281471,GB
1602281472,1602283519,RU
1602283520,1602285567,HR
@@ -49378,7 +56661,7 @@
1602298368,1602298431,MT
1602298432,1602298879,IL
1602298880,1602299391,MT
-1602299392,1602299903,IL
+1602299392,1602299903,GB
1602299904,1602301951,DK
1602301952,1602303999,DE
1602304000,1602306047,RU
@@ -49403,7 +56686,6 @@
1602347008,1602349055,PL
1602349056,1602351103,RU
1602351104,1602353151,CZ
-1602353152,1602355199,RU
1602355200,1602357247,GB
1602357248,1602359295,FR
1602359296,1602361343,DE
@@ -49428,10 +56710,10 @@
1602392064,1602394111,GB
1602394112,1602396159,FR
1602396160,1602398207,DE
-1602398208,1602398400,TR
-1602398401,1602398406,US
-1602398407,1602399231,TR
-1602399232,1602399487,US
+1602398208,1602399231,TR
+1602399232,1602399359,US
+1602399360,1602399360,TR
+1602399361,1602399487,US
1602399488,1602400255,TR
1602400256,1602402303,RU
1602402304,1602404351,LU
@@ -49465,8 +56747,14 @@
1602451456,1602453503,DE
1602453504,1602455551,SK
1602455552,1602456015,FR
-1602456016,1602456023,ES
-1602456024,1602456175,FR
+1602456016,1602456025,ES
+1602456026,1602456026,DE
+1602456027,1602456027,NL
+1602456028,1602456028,IT
+1602456029,1602456029,ES
+1602456030,1602456030,PT
+1602456031,1602456031,ES
+1602456032,1602456175,FR
1602456176,1602456183,ES
1602456184,1602457599,FR
1602457600,1602459647,RU
@@ -49506,8 +56794,16 @@
1603067904,1603071999,GB
1603072000,1603076095,CZ
1603076096,1603080191,RU
-1603080192,1603084287,DE
-1603084288,1603088383,IT
+1603080192,1603083007,DE
+1603083008,1603083263,UA
+1603083264,1603084287,DE
+1603084288,1603085871,IT
+1603085872,1603085879,CH
+1603085880,1603087515,IT
+1603087516,1603087517,CH
+1603087518,1603087544,IT
+1603087545,1603087546,CH
+1603087547,1603088383,IT
1603088384,1603092479,LB
1603092480,1603100671,NO
1603100672,1603108863,FR
@@ -49530,7 +56826,20 @@
1603149568,1603149823,US
1603149824,1603153919,RU
1603153920,1603158015,NL
-1603158016,1603162111,DE
+1603158016,1603159167,DE
+1603159168,1603159183,NL
+1603159184,1603159487,DE
+1603159488,1603159519,AT
+1603159520,1603159535,DE
+1603159536,1603159551,GB
+1603159552,1603161007,DE
+1603161008,1603161023,GB
+1603161024,1603161103,DE
+1603161104,1603161119,GB
+1603161120,1603161135,AT
+1603161136,1603161567,DE
+1603161568,1603161599,FR
+1603161600,1603162111,DE
1603162112,1603166207,TJ
1603166208,1603166751,NL
1603166752,1603166767,MT
@@ -49572,11 +56881,25 @@
1603223712,1603223936,FR
1603223937,1603223951,GB
1603223952,1603224319,FR
-1603224320,1603224575,GB
+1603224320,1603224335,GB
+1603224336,1603224351,BE
+1603224352,1603224367,NL
+1603224368,1603224383,DE
+1603224384,1603224399,CH
+1603224400,1603224415,IT
+1603224416,1603224431,ES
+1603224432,1603224447,US
+1603224448,1603224463,MX
+1603224464,1603224575,GB
1603224576,1603224775,FR
1603224776,1603224783,GB
-1603224784,1603224799,FR
-1603224800,1603225599,GB
+1603224784,1603224831,FR
+1603224832,1603224847,ES
+1603224848,1603224895,FR
+1603224896,1603225007,GB
+1603225008,1603225023,MX
+1603225024,1603225087,GB
+1603225088,1603225599,FR
1603225600,1603225607,ES
1603225608,1603225615,GB
1603225616,1603225623,DE
@@ -49585,8 +56908,7 @@
1603225640,1603225647,CN
1603225648,1603225855,FR
1603225856,1603226623,GB
-1603226624,1603227391,FR
-1603227392,1603227647,GB
+1603226624,1603227647,FR
1603227648,1603231743,AT
1603231744,1603235839,IT
1603235840,1603239935,RU
@@ -49608,18 +56930,24 @@
1603895296,1603928063,RU
1603928064,1603944447,DK
1603944448,1603977215,RU
-1603977216,1603980463,GB
+1603977216,1603979295,GB
+1603979296,1603979327,ID
+1603979328,1603980463,GB
1603980464,1603980479,CH
-1603980480,1603981823,GB
+1603980480,1603980863,GB
+1603980864,1603980927,ID
+1603980928,1603981823,GB
1603981824,1603982079,IE
1603982080,1603982655,GB
1603982656,1603982687,DK
1603982688,1603982719,AN
-1603982720,1603982783,US
+1603982720,1603982783,GB
1603982784,1603982847,AN
1603982848,1603984895,GB
1603984896,1603985151,PT
-1603985152,1603990271,GB
+1603985152,1603985279,GB
+1603985280,1603985407,BR
+1603985408,1603990271,GB
1603990272,1603990527,SA
1603990528,1603993599,GB
1603993600,1604009983,ME
@@ -49654,7 +56982,8 @@
1604853760,1604861951,HU
1604861952,1604870143,RS
1604870144,1604878335,HR
-1604878336,1604886655,DE
+1604878336,1604886591,DE
+1604886592,1604886655,US
1604886656,1604886783,RU
1604886784,1604887039,DE
1604887040,1604887295,GB
@@ -49667,11 +56996,7 @@
1604891968,1604892159,RU
1604892160,1604892927,DE
1604892928,1604893183,HK
-1604893184,1604893311,RU
-1604893312,1604893375,TR
-1604893376,1604893439,DE
-1604893440,1604893695,TR
-1604893696,1604893951,DE
+1604893184,1604893951,DE
1604893952,1604894463,TR
1604894464,1604894719,DE
1604894720,1604895487,CZ
@@ -49680,7 +57005,14 @@
1604895608,1604895611,SK
1604895612,1604900351,CZ
1604900352,1604900383,SC
-1604900384,1604902911,CZ
+1604900384,1604901311,CZ
+1604901312,1604901375,SC
+1604901376,1604901631,CZ
+1604901632,1604901887,SK
+1604901888,1604901983,CZ
+1604901984,1604902142,SK
+1604902143,1604902399,CZ
+1604902400,1604902911,SK
1604902912,1604911103,BG
1604911104,1604919295,UA
1604919296,1604927487,NO
@@ -49708,21 +57040,35 @@
1605107712,1605115903,GB
1605115904,1605124095,RU
1605124096,1605124607,US
-1605124608,1605124671,GB
-1605124672,1605124735,US
-1605124736,1605125263,GB
-1605125264,1605125287,US
-1605125288,1605125311,GB
-1605125312,1605125319,US
-1605125320,1605125327,GB
-1605125328,1605125343,US
+1605124608,1605124639,GB
+1605124640,1605124735,US
+1605124736,1605124863,GB
+1605124864,1605124895,US
+1605124896,1605124927,GB
+1605124928,1605124959,US
+1605124960,1605125119,GB
+1605125120,1605125247,US
+1605125248,1605125263,GB
+1605125264,1605125279,US
+1605125280,1605125335,GB
+1605125336,1605125343,US
1605125344,1605125375,GB
-1605125376,1605125631,US
-1605125632,1605126143,DE
+1605125376,1605125903,US
+1605125904,1605126143,GB
1605126144,1605127679,US
-1605127680,1605130239,GB
+1605127680,1605127935,GB
+1605127936,1605128703,US
+1605128704,1605129215,GB
+1605129216,1605129727,US
+1605129728,1605130239,GB
1605130240,1605130271,US
-1605130272,1605132287,GB
+1605130272,1605130295,GB
+1605130296,1605130335,US
+1605130336,1605130495,GB
+1605130496,1605131007,US
+1605131008,1605131263,GB
+1605131264,1605132031,US
+1605132032,1605132287,GB
1605132288,1605148671,RU
1605148672,1605156863,PT
1605156864,1605165055,JO
@@ -49740,7 +57086,6 @@
1605230592,1605238783,TR
1605238784,1605246975,IT
1605246976,1605255167,PL
-1605255168,1605263359,HU
1605263360,1605271551,RU
1605271552,1605279743,DE
1605279744,1605287935,FR
@@ -49782,13 +57127,19 @@
1607614464,1607616511,GR
1607616512,1607630847,A2
1607630848,1607633919,IE
-1607633920,1607663615,A2
+1607633920,1607636991,A2
+1607636992,1607639039,IE
+1607639040,1607663615,A2
1607663616,1607729151,NL
1607729152,1607761919,EG
1607761920,1607766015,SY
1607766016,1607794687,EG
1607794688,1607860223,RU
-1607860224,1607925759,ES
+1607860224,1607892992,ES
+1607892993,1607892994,DE
+1607892995,1607893055,ES
+1607893056,1607893119,DE
+1607893120,1607925759,ES
1607925760,1607926783,RU
1607926784,1607927807,NL
1607927808,1607929855,RU
@@ -49821,19 +57172,15 @@
1607966720,1607967743,RU
1607967744,1607968767,UA
1607968768,1607969791,SE
-1607969792,1607971839,RU
1607972864,1607974911,NL
-1607974912,1607975935,LV
1607976960,1607977983,KZ
1607979008,1607980031,RU
1607980032,1607981055,DE
1607981056,1607982079,UA
-1607982080,1607983103,RU
1607983104,1607984127,GB
1607984128,1607985151,RU
1607985152,1607986175,PL
1607986176,1607987199,UA
-1607987200,1607988223,ES
1607988224,1607989247,KG
1607990272,1607991295,RU
1607991296,1608122367,UA
@@ -49893,7 +57240,9 @@
1613546680,1613546695,US
1613546696,1613546703,CA
1613546704,1613546719,US
-1613546720,1613547919,CA
+1613546720,1613547503,CA
+1613547504,1613547519,US
+1613547520,1613547919,CA
1613547920,1613547943,US
1613547944,1613548479,CA
1613548480,1613548487,US
@@ -49911,13 +57260,20 @@
1613549208,1613549319,US
1613549320,1613550735,CA
1613550736,1613550743,US
-1613550744,1613565951,CA
+1613550744,1613554743,CA
+1613554744,1613554751,US
+1613554752,1613557007,CA
+1613557008,1613557015,US
+1613557016,1613557087,CA
+1613557088,1613557095,US
+1613557096,1613558359,CA
+1613558360,1613558375,NL
+1613558376,1613565951,CA
1613565952,1613570047,US
1613570048,1613574143,CA
-1613574144,1613586431,US
-1613586432,1613590527,CA
-1613590528,1613602815,US
-1613606912,1613607423,CA
+1613574144,1613606911,US
+1613606912,1613607167,CA
+1613607168,1613607423,US
1613607424,1613607679,GB
1613607680,1613607935,US
1613607936,1613615103,CA
@@ -49941,8 +57297,16 @@
1614282752,1614741503,US
1614741504,1614757887,CA
1614757888,1614774271,US
-1614774272,1614790655,CA
-1614790656,1632305151,US
+1614774272,1614786559,CA
+1614786560,1618837503,US
+1618837504,1618841599,CA
+1618841600,1618849791,US
+1618849792,1618862079,CA
+1618862080,1618866175,US
+1618866176,1618870271,CA
+1618870272,1618984959,US
+1618984960,1619001343,CA
+1619001344,1632305151,US
1632305152,1632321535,CA
1632321536,1632354303,US
1632354304,1632354607,CA
@@ -49955,9 +57319,11 @@
1632355512,1632355519,US
1632355520,1632355583,CA
1632355584,1632355599,US
-1632355600,1632357439,CA
-1632357440,1632357447,US
-1632357448,1632362495,CA
+1632355600,1632358647,CA
+1632358648,1632358655,US
+1632358656,1632358775,CA
+1632358776,1632358783,US
+1632358784,1632362495,CA
1632362496,1634414591,US
1634414592,1634418687,CA
1634418688,1634447359,US
@@ -50573,12 +57939,15 @@
1654546432,1654550527,VG
1654550528,1654554623,US
1654554624,1654558719,CA
-1654558720,1654583071,US
-1654583072,1654583103,TR
+1654558720,1654583103,US
1654583104,1654583135,CA
-1654583136,1654599455,US
+1654583136,1654597823,US
+1654597824,1654597887,GB
+1654597888,1654599455,US
1654599456,1654599471,CA
-1654599472,1654648831,US
+1654599472,1654599487,US
+1654599488,1654599519,BA
+1654599520,1654648831,US
1654648832,1654652927,CA
1654652928,1665833175,US
1665833176,1665833183,A2
@@ -50603,8 +57972,7 @@
1673562896,1673562911,CA
1673562912,1673562975,US
1673562976,1673563007,NL
-1673563008,1673563071,US
-1673563072,1673563135,NL
+1673563008,1673563135,US
1673563136,1673563167,CA
1673563168,1673563407,US
1673563408,1673563423,CA
@@ -50618,8 +57986,7 @@
1673563776,1673563903,GB
1673563904,1673563967,US
1673563968,1673563983,CA
-1673563984,1673566463,US
-1673566464,1673566719,NL
+1673563984,1673566719,US
1673566720,1673566735,CA
1673566736,1673566767,US
1673566768,1673566783,NO
@@ -50627,11 +57994,9 @@
1673566848,1673566911,CA
1673566912,1673566975,US
1673566976,1673567007,CA
-1673567008,1673567103,US
-1673567104,1673567167,GB
-1673567168,1673567231,US
-1673567232,1673567247,CA
-1673567248,1673567263,US
+1673567008,1673567087,US
+1673567088,1673567167,GB
+1673567168,1673567263,US
1673567264,1673567279,AT
1673567280,1673567311,US
1673567312,1673567327,GB
@@ -50667,18 +58032,14 @@
1673569904,1673569967,US
1673569968,1673569983,GB
1673569984,1673570559,US
-1673570560,1673570831,LT
-1673570832,1673571071,US
-1673571072,1673571263,LT
-1673571264,1673571679,US
+1673570560,1673570815,LT
+1673570816,1673571679,US
1673571680,1673571711,CA
1673571712,1673572095,US
1673572096,1673572351,LT
1673572352,1673572383,US
1673572384,1673572399,EC
-1673572400,1673572415,US
-1673572416,1673572431,CA
-1673572432,1673572895,US
+1673572400,1673572895,US
1673572896,1673572911,CA
1673572912,1673573183,US
1673573184,1673573247,CA
@@ -50686,33 +58047,464 @@
1673573504,1673573567,NL
1673573568,1673573759,US
1673573760,1673573823,CA
-1673573824,1673576447,US
-1673576448,1673576703,NL
-1673576704,1673577727,US
+1673573824,1673577727,US
1673577728,1673577983,LT
1673577984,1673578239,A1
-1673578240,1673986047,US
+1673578240,1673578287,US
+1673578288,1673578303,CA
+1673578304,1673585343,US
+1673585344,1673585407,SC
+1673585408,1673590783,US
+1673590784,1673590911,EC
+1673590912,1673986047,US
1673986048,1674051583,CA
1674051584,1674575871,US
1674575872,1677721599,CA
-1694498816,1694499071,AP
-1694499072,1694499327,AU
-1697775616,1697776639,AP
-1700790272,1702887679,AU
-1711210496,1711276031,AP
+1677721600,1681915903,US
+1694498816,1694499839,CN
+1694499840,1694500863,ID
+1694500864,1694507007,JP
+1694507008,1694515199,IN
+1694515200,1694531583,AU
+1694531584,1694564351,TW
+1694564352,1694565375,CN
+1694565376,1694566399,HK
+1694566400,1694568447,KR
+1694568448,1694572543,HK
+1694572544,1694580735,KR
+1694580736,1694629887,JP
+1694629888,1694662655,IN
+1694662656,1694670847,JP
+1694670848,1694672895,BD
+1694672896,1694673919,AU
+1694673920,1694674943,CN
+1694674944,1694679039,LK
+1694679040,1694695423,AU
+1694695424,1694760959,TW
+1694760960,1695023103,CN
+1695023104,1695547391,TW
+1695547392,1697775615,CN
+1697775616,1697776639,ID
+1697776640,1697779711,JP
+1697779712,1697783807,ID
+1697783808,1697789951,JP
+1697789952,1697790975,CN
+1697790976,1697791999,JP
+1697792000,1697808383,PK
+1697808384,1697841151,JP
+1697841152,1697906687,TH
+1697906688,1697972223,CN
+1697972224,1697988607,VN
+1697988608,1697996799,KR
+1697996800,1697997823,JP
+1697997824,1697998847,CN
+1697998848,1698004991,JP
+1698004992,1698037759,AU
+1698037760,1698103295,CN
+1698103296,1698136063,KR
+1698136064,1698160639,JP
+1698160640,1698162687,CN
+1698162688,1698168831,JP
+1698168832,1698693119,IN
+1698693120,1699611647,CN
+1699611648,1699612671,JP
+1699612672,1699614719,LA
+1699614720,1699618815,PH
+1699618816,1699627007,CN
+1699627008,1699643391,SG
+1699643392,1699676159,HK
+1699676160,1699741695,KR
+1699741696,1700793343,CN
+1700793344,1700794367,VN
+1700794368,1700798463,CN
+1700798464,1700806655,JP
+1700806656,1700823039,VN
+1700823040,1700855807,CN
+1700855808,1700921343,JP
+1700921344,1700986879,NZ
+1700986880,1701003263,VN
+1701003264,1701011455,MY
+1701011456,1701019647,CN
+1701019648,1701052415,GU
+1701052416,1701117951,NZ
+1701117952,1701134335,NC
+1701134336,1701142527,CN
+1701142528,1701143551,HK
+1701143552,1701150719,CN
+1701150720,1701183487,KR
+1701183488,1701199871,JP
+1701199872,1701208063,CN
+1701208064,1701209087,JP
+1701209088,1701216255,CN
+1701216256,1701249023,JP
+1701249024,1701314559,AU
+1701314560,1701576703,CN
+1701576704,1701707775,TH
+1701707776,1701724159,JP
+1701724160,1701736447,CN
+1701736448,1701737471,NZ
+1701737472,1701740543,CN
+1701740544,1701838847,JP
+1701838848,1702363135,AU
+1702363136,1702821887,CN
+1702821888,1702887423,HK
+1702887424,1702888447,CN
+1702888448,1702889471,AU
+1702889472,1702903807,CN
+1702903808,1702920191,ID
+1702920192,1702952959,JP
+1702952960,1703411711,CN
+1703411712,1703673855,TW
+1703673856,1703935999,JP
+1703936000,1704984575,CN
+1704984576,1707081727,AU
+1707081728,1707737087,CN
+1707737088,1707802623,KR
+1707802624,1707835391,JP
+1707835392,1707845631,CN
+1707845632,1707846655,ID
+1707846656,1707851775,CN
+1707851776,1707868159,JP
+1707868160,1708130303,CN
+1708130304,1709178879,IN
+1709178880,1709834239,CN
+1709834240,1709850623,SG
+1709850624,1709852671,CN
+1709852672,1709853695,AU
+1709853696,1709867007,CN
+1709867008,1709899775,AU
+1709899776,1709965311,KR
+1709965312,1710882815,CN
+1710882816,1710948351,KR
+1710948352,1710949375,CN
+1710949376,1710950399,NP
+1710950400,1711210495,CN
+1711210496,1711276031,ID
+1728053248,1728120063,AU
+1728120064,1728120319,SG
+1728120320,1728120575,IN
+1728120576,1728120831,AU
+1728120832,1728121855,CN
+1728121856,1728123903,HK
+1728123904,1728125951,CN
+1728125952,1728126975,LA
+1728126976,1728132095,HK
+1728132096,1728135167,AU
+1728135168,1728136191,HK
+1728136192,1728137215,MY
+1728137216,1728138239,CN
+1728138240,1728139263,AU
+1728139264,1728140287,IN
+1728140288,1728141311,SG
+1728141312,1728142335,CN
+1728142336,1728143359,NP
+1728143360,1728144383,MP
+1728144384,1728145407,IN
+1728145408,1728146431,MY
+1728146432,1728147455,AU
+1728147456,1728148479,IN
+1728148480,1728149503,PH
+1728149504,1728150527,JP
+1728150528,1728152575,IN
+1728152576,1728153599,MY
+1728153600,1728154623,SG
+1728154624,1728155647,JP
+1728155648,1728158719,MY
+1728158720,1728159743,HK
+1728159744,1728161791,TH
+1728161792,1728162815,CN
+1728162816,1728163839,SG
+1728163840,1728164863,LK
+1728164864,1728165887,FJ
+1728165888,1728168959,AU
+1728168960,1728169983,IN
+1728169984,1728171007,VN
+1728171008,1728172031,AU
+1728172032,1728173055,VN
+1728173056,1728175103,AU
+1728175104,1728177151,HK
+1728177152,1728178175,AU
+1728178176,1728179199,LA
+1728179200,1728180223,VN
+1728180224,1728181247,AU
+1728181248,1728203775,JP
+1728203776,1728204799,KR
+1728204800,1728205823,IN
+1728205824,1728206847,KR
+1728206848,1728207871,SB
+1728207872,1728210943,JP
+1728210944,1728211967,SG
+1728211968,1728212991,CN
+1728212992,1728214015,TH
+1728214016,1728215039,AU
+1728215040,1728216063,NZ
+1728216064,1728218111,JP
+1728218112,1728219135,IN
+1728219136,1728220159,JP
+1728220160,1728221183,NZ
+1728221184,1728222207,ID
+1728222208,1728224255,LK
+1728224256,1728225279,CN
+1728225280,1728226303,JP
+1728226304,1728227327,CN
+1728227328,1728230399,AU
+1728230400,1728231423,SG
+1728231424,1728232447,NC
+1728232448,1728235519,AU
+1728235520,1728239615,CN
+1728239616,1728240639,TW
+1728240640,1728243711,VN
+1728243712,1728246783,IN
+1728246784,1728254975,JP
+1728254976,1728255999,MY
+1728256000,1728257023,HK
+1728257024,1728258047,MN
+1728258048,1728259071,IN
+1728259072,1728260095,KR
+1728260096,1728261119,IN
+1728261120,1728262143,ID
+1728262144,1728264191,JP
+1728264192,1728265215,ID
+1728265216,1728266239,SG
+1728266240,1728267263,TH
+1728267264,1728268287,ID
+1728268288,1728269311,MY
+1728269312,1728270335,ID
+1728270336,1728271359,PH
+1728271360,1728286719,CN
+1728286720,1728287743,AU
+1728287744,1728290815,CN
+1728290816,1728291839,AU
+1728291840,1728292863,SG
+1728292864,1728293887,PG
+1728293888,1728294911,MY
+1728294912,1728295935,TH
+1728295936,1728299007,JP
+1728299008,1728300031,TW
+1728300032,1728301055,AU
+1728301056,1728302079,SG
+1728302080,1728303103,IN
+1728303104,1728305151,ID
+1728305152,1728306175,AU
+1728306176,1728307199,ID
+1728307200,1728308223,BD
+1728308224,1728309247,IN
+1728309248,1728310271,NZ
+1728310272,1728311295,AU
+1728311296,1728312319,GU
+1728312320,1728315391,VN
+1728315392,1728316415,ID
+1728316416,1728317439,MY
+1728317440,1728318463,JP
+1728318464,1728319487,SG
+1728319488,1728320511,AU
+1728320512,1728321535,PH
+1728321536,1728322559,JP
+1728322560,1728323583,MY
+1728323584,1728324607,JP
+1728324608,1728325631,SG
+1728325632,1728326655,JP
+1728326656,1728327679,MY
+1728327680,1728328703,KR
+1728328704,1728329727,ID
+1728329728,1728330751,CN
+1728330752,1728331775,AU
+1728331776,1728332799,BD
+1728332800,1728333823,JP
+1728333824,1728334847,PF
+1728334848,1728336895,JP
+1728336896,1728337919,AU
+1728337920,1728338943,MY
+1728338944,1728339967,PK
+1728339968,1728340991,SG
+1728340992,1728342015,AU
+1728342016,1728343039,TW
+1728343040,1728344063,SG
+1728344064,1728344575,HK
+1728344576,1728345087,SG
+1728345088,1728346111,BD
+1728346112,1728346367,AU
+1728346368,1728346623,NZ
+1728346624,1728347135,AU
+1728347136,1728348159,SG
+1728708608,1728709631,CN
+1728709632,1728710655,TW
+1728710656,1728710911,AU
+1728710912,1728711167,IN
+1728711424,1728711679,AU
+1728711680,1728712703,HK
+1728712704,1728713727,CN
+1728713728,1728714751,MN
+1728714752,1728715775,IN
+1728715776,1728716799,NP
+1728716800,1728717823,AU
+1728717824,1728718847,JP
+1728718848,1728719871,MY
+1728719872,1728720895,NZ
+1728720896,1728721919,AU
+1728721920,1728722943,BD
+1728722944,1728723199,ID
+1728723200,1728723455,AU
+1728723456,1728726015,ID
+1728726016,1728727039,JP
+1728727040,1728728063,AU
+1728728064,1728729087,BD
+1728729088,1728729599,ID
+1728729600,1728730111,AU
+1728730112,1728731135,CN
+1728731136,1728732159,VN
+1728732160,1728733183,KR
+1728733184,1728734207,ID
+1728734208,1728735231,SG
+1728735232,1728736255,ID
+1728736256,1728736511,HK
+1728736512,1728736767,IN
+1728736768,1728737023,ID
+1728737024,1728737279,CN
+1728737280,1728738303,JP
+1728738304,1728739327,IN
+1728739328,1728740351,ID
+1728740352,1728740863,HK
+1728740864,1728741119,AU
+1728741120,1728741375,IN
+1729527808,1729528831,SG
+1729528832,1729530879,ID
+1729530880,1729531903,MY
+1729531904,1729532927,AU
+1729532928,1729533951,MY
+1729533952,1729534975,JP
+1729534976,1729535999,TW
+1729536000,1729537023,HK
+1729537024,1729537791,ID
+1729537792,1729538047,JP
+1729538048,1729539071,SG
+1729539072,1729540095,IN
+1729540096,1729541119,AU
+1729541120,1729542143,TH
+1729542144,1729543167,AU
+1729543168,1729544191,CN
+1729544192,1729545215,IN
+1729545216,1729546239,AU
+1729546240,1729547263,HK
+1729547264,1729548287,IN
+1729548288,1729549311,AU
+1729549312,1729550335,JP
+1729550336,1729551359,MY
+1729551360,1729552383,KR
+1729552384,1729553407,AU
+1729553408,1729554431,CN
+1729554432,1729554943,ID
+1729554944,1729555455,NZ
+1729555456,1729556479,IN
+1729556480,1729557503,ID
+1729557504,1729558527,HK
+1729558528,1729559551,ID
+1729559552,1729560575,CN
+1729953792,1729954815,MY
+1729954816,1729955839,ID
+1729955840,1729956863,BD
+1729956864,1729957887,HK
+1729957888,1729958911,CN
+1729958912,1729959935,PH
+1729959936,1729960959,SG
+1729960960,1729961471,IN
+1729961472,1729961983,NZ
+1729961984,1729964031,IN
+1729964032,1729965055,AU
+1729965056,1729966079,IN
+1729966080,1729967103,JP
+1729967104,1729968127,AU
+1729968128,1729969151,MY
+1729969152,1729970175,LK
+1729970176,1729971199,AU
+1729971200,1729972223,JP
+1729972224,1729973247,HK
+1729973248,1729974271,AU
+1729974272,1729975295,PH
+1729975296,1729976831,AU
+1729976832,1729977343,NZ
+1729977344,1729978367,HK
+1729978368,1729979391,IN
+1729979392,1729980415,AU
+1729980416,1729980927,BD
+1729980928,1729982463,SG
+1729982464,1729982719,AU
+1729982720,1729982975,JP
+1729983488,1729984511,IN
+1729984512,1729985535,ID
+1729985536,1729986559,BD
+1744175104,1744176127,ID
+1744176128,1744177151,AU
+1744177152,1744179199,CN
+1744179200,1744180223,TH
+1744180224,1744181247,PH
+1744181248,1744182271,TH
+1744182272,1744183295,AU
+1744191488,1744192511,IN
+1744192512,1744194559,JP
+1744194560,1744194815,ID
+1744194816,1744195071,HK
+1744195072,1744195583,SG
+1744195584,1744196607,JP
+1744196608,1744197631,IN
+1744197632,1744198655,MY
+1744198656,1744199679,SG
+1744199680,1744201727,AU
+1744201728,1744201983,VN
+1744202240,1744202495,IN
+1744202496,1744202751,ID
+1744202752,1744203775,PK
+1744203776,1744204799,MY
+1744204800,1744205823,ID
+1744205824,1744207871,CN
+1769996288,1772093439,MA
+1778384896,1778385151,CN
+1778385152,1778385407,AU
+1778385408,1778393087,CN
+1778401280,1778417663,CN
+1778417664,1778450431,TH
+1778450432,1778515967,TW
+1778515968,1779040255,CN
+1779040256,1779073023,KR
+1779073024,1779105791,SG
+1779105792,1781727231,CN
+1781727232,1781792767,IN
+1781792768,1782579199,CN
+1782579200,1782710271,TW
+1782710272,1782841343,IN
+1782841344,1783103487,AU
+1783103488,1783234559,JP
+1783234560,1783365631,CN
+1783365632,1783627775,IN
+1783627776,1784676351,CN
+1784676352,1785200639,KR
+1785200640,1785462783,TW
+1785462784,1786773503,CN
+1786773504,1790967807,JP
+1790967808,1793064959,IN
+1793064960,1794113535,CN
+1794113536,1795162111,KR
1795162112,1815822335,US
1815822336,1815826431,CA
-1815826432,1815846911,US
+1815826432,1815871487,US
1815871488,1815879679,CA
-1816133632,1822425087,US
+1815879680,1815912447,US
+1815912448,1815920639,CA
+1815920640,1815928831,US
+1815928832,1815937023,BS
+1815937024,1816024319,US
+1816024320,1816024575,CA
+1816024576,1816068095,US
+1816068096,1816133631,CA
+1816133632,1828716543,US
1828716544,1830813695,FR
1830813696,1831337983,NL
1831337984,1831862271,DE
1831862272,1832124415,PT
1832124416,1832386559,IT
1832386560,1832517631,DK
-1832517632,1832615935,SE
-1832615936,1832648703,DK
+1832517632,1832583167,SE
+1832583168,1832648703,DK
1832648704,1832681471,HR
1832681472,1832714239,RU
1832714240,1832747007,HU
@@ -50758,7 +58550,7 @@
1833248768,1833250815,MK
1833250816,1833254911,GB
1833254912,1833256959,DE
-1833256960,1833261055,GB
+1833259008,1833261055,GB
1833261056,1833263103,PL
1833263104,1833265151,DE
1833265152,1833267199,GB
@@ -50766,7 +58558,6 @@
1833269248,1833271295,FI
1833271296,1833273343,IT
1833273344,1833275391,EU
-1833275392,1833277439,GB
1833277440,1833279487,CH
1833279488,1833281535,AL
1833281536,1833283583,AT
@@ -50774,7 +58565,9 @@
1833285632,1833289727,FR
1833289728,1833291775,IT
1833291776,1833293823,CZ
-1833293824,1833295871,BE
+1833293824,1833294557,BE
+1833294558,1833294591,FR
+1833294592,1833295871,BE
1833295872,1833297919,NL
1833297920,1833299967,GB
1833299968,1833302015,LU
@@ -50784,7 +58577,15 @@
1833308752,1833308759,NL
1833308760,1833308763,FR
1833308764,1833308767,NL
-1833308768,1833310207,FR
+1833308768,1833308807,FR
+1833308808,1833308815,NL
+1833308816,1833308819,FR
+1833308820,1833308823,NL
+1833308824,1833308831,FR
+1833308832,1833308839,NL
+1833308840,1833308855,FR
+1833308856,1833308859,NL
+1833308860,1833310207,FR
1833310208,1833312255,RU
1833312256,1833314303,ES
1833314304,1833315903,IM
@@ -50802,8 +58603,8 @@
1833332736,1833334783,CH
1833334784,1833336831,IT
1833336832,1833336959,ES
-1833336960,1833336975,FR
-1833336976,1833338879,ES
+1833336960,1833337071,FR
+1833337072,1833338879,ES
1833338880,1833342975,GB
1833342976,1833345023,CH
1833345024,1833347071,FI
@@ -50875,7 +58676,10 @@
1833468288,1833468575,CH
1833468576,1833468591,RU
1833468592,1833471999,CH
-1833472000,1833476095,EU
+1833472000,1833474047,EU
+1833474048,1833474559,UA
+1833474560,1833474815,RU
+1833474816,1833476095,EU
1833476096,1833477375,NL
1833477376,1833477503,GB
1833477504,1833477631,DE
@@ -50888,6 +58692,7 @@
1833504768,1833508863,DE
1833508864,1833512959,RU
1833512960,1833517055,DE
+1833517056,1833521151,GB
1833521152,1833525247,IT
1833525248,1833529343,LV
1833529344,1833533439,GB
@@ -50896,7 +58701,9 @@
1833541632,1833542143,IL
1833542144,1833542655,GB
1833542656,1833542911,IN
-1833542912,1833545727,GB
+1833542912,1833543168,GB
+1833543169,1833543423,IN
+1833543424,1833545727,GB
1833545728,1833549823,IT
1833549824,1833553919,RU
1833553920,1833558015,CZ
@@ -50911,7 +58718,9 @@
1833586688,1833590783,FR
1833590784,1833594879,PL
1833594880,1833603071,RU
-1833603072,1833607167,SK
+1833603072,1833606399,SK
+1833606400,1833606655,CZ
+1833606656,1833607167,SK
1833607168,1833611263,RU
1833611264,1833615359,NO
1833615360,1833619455,GB
@@ -50928,19 +58737,15 @@
1833644288,1833644319,TJ
1833644320,1833648127,RU
1833648128,1833652223,LB
-1833652224,1833659023,DE
-1833659024,1833659039,BZ
-1833659040,1833659903,DE
-1833659904,1833659919,NA
-1833659920,1833660159,DE
-1833660160,1833660223,CH
-1833660224,1833660351,DE
+1833652224,1833660351,DE
1833660352,1833660415,US
1833660416,1833664511,IT
1833664512,1833668607,RU
1833668608,1833672703,CZ
1833672704,1833676799,GB
-1833676800,1833680895,DE
+1833676800,1833677567,DE
+1833677568,1833677599,CH
+1833677600,1833680895,DE
1833680896,1833684991,UA
1833684992,1833689087,DE
1833689088,1833693183,FI
@@ -50972,7 +58777,7 @@
1834960896,1834964991,RU
1834964992,1834967039,PL
1834967040,1834971135,RU
-1834971136,1834973183,UA
+1834971136,1834973183,PL
1834973184,1834975231,RU
1834975232,1834977279,IL
1834977280,1834983423,PL
@@ -50990,7 +58795,9 @@
1835540480,1835548671,DE
1835548672,1835549695,GB
1835549696,1835550207,ES
-1835550208,1835565055,GB
+1835550208,1835561351,GB
+1835561352,1835561359,A2
+1835561360,1835565055,GB
1835565056,1835573247,AL
1835573248,1835581439,UA
1835581440,1835589631,BG
@@ -51046,7 +58853,11 @@
1835892736,1835909119,GB
1835909120,1835913215,RS
1835913216,1835917311,RU
-1835917312,1835925503,GB
+1835917312,1835920135,GB
+1835920136,1835920191,PT
+1835920192,1835920255,GB
+1835920256,1835920319,PT
+1835920320,1835925503,GB
1835925504,1835933695,LV
1835933696,1835941887,RU
1835941888,1835950079,UA
@@ -51061,12 +58872,14 @@
1836015616,1836023807,AD
1836023808,1836040191,RU
1836040192,1836048383,GB
-1836048384,1836056575,RS
+1836048384,1836048467,RS
+1836048468,1836048471,SR
+1836048472,1836056575,RS
1836056576,1836580863,IT
1836580864,1836597247,RU
-1836597248,1836598015,LU
-1836598016,1836604159,DE
-1836604160,1836613631,LU
+1836597248,1836597759,LU
+1836597760,1836606463,DE
+1836606464,1836613631,LU
1836613632,1836630015,RU
1836630016,1836646399,BG
1836646400,1836679167,RS
@@ -51103,7 +58916,6 @@
1839333376,1839366143,UA
1839366144,1839398911,IR
1839398912,1839431679,NO
-1839431680,1839464447,RU
1839464448,1839497215,CZ
1839497216,1839529983,CH
1839529984,1839562751,RU
@@ -51111,21 +58923,21 @@
1839595520,1839661055,RO
1839661056,1839693823,UA
1839693824,1839726591,RU
-1839726592,1839759359,IT
+1839726592,1839756327,IT
+1839756328,1839756335,FR
+1839756336,1839759359,IT
1839759360,1839792127,RU
1839792128,1839794687,GB
1839794688,1839794943,US
-1839794944,1839795071,GB
-1839795072,1839795087,US
-1839795088,1839795151,GB
+1839794944,1839795151,GB
1839795152,1839795167,US
1839795168,1839796607,GB
1839796608,1839796671,US
-1839796672,1839796735,GB
-1839796736,1839796991,TR
-1839796992,1839797759,GB
+1839796672,1839797759,GB
1839797760,1839798015,GR
-1839798016,1839798527,GB
+1839798016,1839798271,GB
+1839798272,1839798399,DE
+1839798400,1839798527,GB
1839798528,1839798559,US
1839798560,1839800447,GB
1839800448,1839800479,SG
@@ -51138,13 +58950,13 @@
1839801344,1839801471,CN
1839801472,1839801551,GB
1839801552,1839801567,US
-1839801568,1839801599,GB
-1839801600,1839801855,US
-1839801856,1839802111,GB
+1839801568,1839802111,GB
1839802112,1839802239,RO
1839802240,1839806463,GB
-1839806464,1839809535,US
-1839809536,1839816703,GB
+1839806464,1839811071,US
+1839811072,1839811455,GB
+1839811456,1839811583,IE
+1839811584,1839816703,GB
1839816704,1839824895,NO
1839824896,1839890431,RU
1839890432,1839923199,GB
@@ -51169,7 +58981,7 @@
1840906240,1840971775,IL
1840971776,1841102847,RU
1841102848,1841168383,NO
-1841168384,1841299455,RU
+1841233920,1841299455,RU
1841299456,1841430527,DE
1841430528,1841561599,RU
1841561600,1841565695,PL
@@ -51219,25 +59031,16 @@
1841799168,1841807359,DE
1841807360,1841815551,NO
1841815552,1841823743,BG
-1841823744,1841827079,GB
-1841827080,1841827087,ES
-1841827088,1841827231,GB
-1841827232,1841827263,BR
-1841827264,1841827279,BD
-1841827280,1841827463,GB
-1841827464,1841827471,BD
-1841827472,1841827479,ES
-1841827480,1841827695,GB
-1841827696,1841827703,ES
-1841827704,1841828879,GB
-1841828880,1841828895,MT
-1841828896,1841831935,GB
+1841823744,1841831935,GB
1841831936,1841840127,MT
1841840128,1841848319,PL
1841848320,1841856511,RU
1841856512,1841864703,UA
1841864704,1841872895,YE
-1841872896,1841879807,NL
+1841872896,1841878015,NL
+1841878016,1841879039,AU
+1841879040,1841879551,NL
+1841879552,1841879807,US
1841879808,1841880063,GB
1841880064,1841881087,JP
1841881088,1841889279,UA
@@ -51250,7 +59053,7 @@
1841946624,1841954815,UA
1841954816,1841971199,RU
1841971200,1841979391,CZ
-1841979392,1841987583,NL
+1841979392,1841983487,NL
1841987584,1841995775,DK
1841995776,1842003967,RU
1842003968,1842012159,CH
@@ -51290,9 +59093,7 @@
1842188288,1842190335,RU
1842190336,1842192383,GB
1842192384,1842194431,AZ
-1842194432,1842196319,CH
-1842196320,1842196351,NL
-1842196352,1842196479,CH
+1842194432,1842196479,CH
1842196480,1842198527,DE
1842198528,1842200575,GB
1842200576,1842202623,NL
@@ -51301,8 +59102,8 @@
1842206720,1842208767,SE
1842208768,1842210815,GB
1842210816,1842212863,LT
-1842212864,1842214911,CZ
-1842214912,1842216959,RU
+1842212864,1842214655,CZ
+1842214656,1842216959,RU
1842216960,1842225151,RO
1842225152,1842233343,UA
1842233344,1842241535,RO
@@ -51398,24 +59199,26 @@
1843990528,1843992575,LB
1843992576,1843994623,AT
1843994624,1844000767,GB
-1844000768,1844002047,NL
-1844002048,1844002815,NO
+1844000768,1844002559,NL
+1844002560,1844002815,NO
1844002816,1844006911,CZ
1844006912,1844008959,SM
1844008960,1844011007,PL
1844011008,1844013055,IT
1844013056,1844015103,PL
1844015104,1844017151,GB
-1844017152,1844019199,IT
-1844019200,1844021247,RU
+1844017152,1844021247,IT
1844021248,1844027391,DE
1844027392,1844029439,CZ
1844029440,1844031487,RU
1844031488,1844031743,EU
-1844031744,1844031999,CH
-1844032000,1844032255,GB
-1844032256,1844032511,CH
-1844032512,1844033535,EU
+1844031744,1844031775,CH
+1844031776,1844031999,EU
+1844032000,1844032031,GB
+1844032032,1844032255,EU
+1844032256,1844032831,CH
+1844032832,1844033271,EU
+1844033272,1844033535,CH
1844033536,1844035583,RS
1844035584,1844037631,MD
1844037632,1844041727,RU
@@ -51429,10 +59232,11 @@
1844058112,1844062207,RU
1844062208,1844064255,CZ
1844064256,1844068351,IT
-1844068352,1844072447,GB
+1844070400,1844072447,GB
1844072448,1844076543,ES
1844076544,1844078591,IE
-1844078592,1844080639,DE
+1844078592,1844080127,DE
+1844080128,1844080639,PL
1844080640,1844082687,GE
1844082688,1844084735,DE
1844084736,1844086783,RU
@@ -51456,7 +59260,12 @@
1844123648,1844125695,RU
1844125696,1844127743,NL
1844127744,1844129791,DE
-1844129792,1844131839,NL
+1844129792,1844131583,NL
+1844131584,1844131711,SC
+1844131712,1844131743,NL
+1844131744,1844131775,RU
+1844131776,1844131807,AE
+1844131808,1844131839,US
1844131840,1844133887,DE
1844133888,1844135935,LT
1844135936,1844137983,NL
@@ -51468,21 +59277,38 @@
1844148224,1844150271,GB
1844150272,1844152319,ES
1844152320,1844154367,DE
-1844154368,1844154879,GB
-1844154880,1844155135,FR
-1844155136,1844155391,US
-1844155392,1844156415,GB
+1844154368,1844156415,GB
1844156416,1844158463,IT
1844158464,1844160511,RU
1844160512,1844162559,SE
1844162560,1844164607,CZ
1844164608,1844166655,RU
1844166656,1844168703,AZ
-1844168704,1844169487,SE
-1844169488,1844169503,IQ
-1844169504,1844169983,SE
-1844169984,1844170387,DE
-1844170388,1844170751,SE
+1844168704,1844169471,SE
+1844169472,1844169487,AF
+1844169488,1844169519,US
+1844169520,1844169599,SE
+1844169600,1844169647,US
+1844169648,1844169655,AF
+1844169656,1844169663,SE
+1844169664,1844169679,US
+1844169680,1844169687,ZM
+1844169688,1844169695,IQ
+1844169696,1844169727,SE
+1844169728,1844169767,DE
+1844169768,1844169951,US
+1844169952,1844169983,DE
+1844169984,1844169987,AF
+1844169988,1844169991,DE
+1844169992,1844169995,AF
+1844169996,1844169999,TM
+1844170000,1844170015,AF
+1844170016,1844170019,NG
+1844170020,1844170027,AF
+1844170028,1844170031,IQ
+1844170032,1844170239,DE
+1844170240,1844170247,AF
+1844170248,1844170751,DE
1844170752,1844174847,RU
1844174848,1844178943,DE
1844178944,1844180991,EE
@@ -51494,8 +59320,8 @@
1844181953,1844181958,GB
1844181959,1844181984,TR
1844181985,1844181990,GB
-1844181991,1844182271,TR
-1844182272,1844182302,US
+1844181991,1844182272,TR
+1844182273,1844182302,US
1844182303,1844182309,TR
1844182310,1844182329,US
1844182330,1844182343,TR
@@ -51505,9 +59331,7 @@
1844182418,1844182424,TR
1844182425,1844182426,US
1844182427,1844182432,TR
-1844182433,1844182442,US
-1844182443,1844182459,TR
-1844182460,1844182480,US
+1844182433,1844182480,US
1844182481,1844182485,TR
1844182486,1844182489,US
1844182490,1844182501,TR
@@ -51520,10 +59344,21 @@
1844207616,1844211711,RU
1844211712,1844215807,SK
1844215808,1844219903,BE
-1844219904,1844220159,KE
-1844220160,1844223999,DE
+1844219904,1844219919,A2
+1844219920,1844219959,LB
+1844219960,1844220159,A2
+1844220160,1844220191,IQ
+1844220192,1844220287,DE
+1844220288,1844220415,LB
+1844220416,1844220431,A2
+1844220432,1844223743,DE
+1844223744,1844223999,A2
1844224000,1844228095,GB
-1844228096,1844232191,DK
+1844228096,1844228479,DK
+1844228480,1844228511,SE
+1844228512,1844230159,DK
+1844230160,1844230175,SE
+1844230176,1844232191,DK
1844232192,1844235775,ES
1844235776,1844236031,GB
1844236032,1844236287,FR
@@ -51545,9 +59380,10 @@
1844310016,1844318207,FR
1844318208,1844322303,IT
1844322304,1844326399,CZ
-1844326400,1844330495,DK
+1844326400,1844329983,DK
+1844329984,1844330495,LU
1844330496,1844334591,GB
-1844338688,1844342783,RU
+1844334592,1844342783,RU
1844342784,1844346879,IT
1844346880,1844347007,US
1844347008,1844347135,GB
@@ -51623,23 +59459,27 @@
1847721984,1847730175,NP
1847730176,1847732223,PK
1847734272,1847735295,NZ
-1847736320,1847738367,AP
+1847735296,1847736319,AU
+1847736320,1847738367,HK
1847738368,1847754751,KR
-1847754752,1847787519,AP
+1847754752,1847787519,TH
1847787520,1847803903,KR
1847803904,1847807999,VN
1847808000,1847810047,ID
+1847810048,1847812095,FJ
1847812096,1847853055,KR
1847853056,1848115199,PK
1848115200,1848377343,CN
1848381440,1848382463,NZ
+1848382464,1848383487,JP
1848383488,1848385535,AU
1848385536,1848393727,KR
1848393728,1848401919,JP
1848401920,1848406015,PH
1848406016,1848410111,NP
1848410112,1848414207,PH
-1848418304,1848419327,AU
+1848414208,1848418303,CN
+1848418304,1848420351,AU
1848420352,1848422399,ID
1848422400,1848424447,JP
1848424448,1848426495,VN
@@ -51648,6 +59488,7 @@
1848705024,1848770559,TH
1848770560,1848774655,JP
1848774656,1848776703,AU
+1848776704,1848778751,JP
1848778752,1848786943,IN
1848786944,1848791039,JP
1848791040,1848793087,ID
@@ -51669,11 +59510,15 @@
1850400768,1850408959,JP
1850408960,1850490879,CN
1850490880,1850507263,KR
-1850507264,1850511359,AU
+1850507264,1850509311,AU
+1850510336,1850511359,KR
1850511360,1850513407,ID
1850513408,1850514431,TH
+1850514432,1850515455,CN
1850515456,1850519551,IN
1850519552,1850520575,AU
+1850520576,1850521599,JP
+1850521600,1850522623,CN
1850522624,1850523647,HK
1850523648,1850572799,CN
1850572800,1850671103,TH
@@ -51681,6 +59526,7 @@
1850736640,1851523071,CN
1851523072,1851527167,JP
1851527168,1851528191,NZ
+1851528192,1851529215,KR
1851529216,1851531263,PH
1851531264,1851539455,JP
1851541504,1851542527,ID
@@ -51690,8 +59536,10 @@
1851555840,1851588607,KR
1851588608,1851590655,JP
1851590656,1851591679,AU
+1851591680,1851592703,ID
1851592704,1851594751,AU
1851594752,1851596799,KR
+1851596800,1851604991,CN
1851604992,1851613183,PH
1851613184,1851617279,JP
1851617280,1851637759,KR
@@ -51720,9 +59568,10 @@
1856798720,1856815103,IN
1856815104,1856843775,CN
1856843776,1856847871,HK
-1856856064,1856864255,CN
+1856847872,1856864255,CN
1856864256,1856872447,AU
1856872448,1856876543,NZ
+1856876544,1856880639,IN
1856880640,1856888831,CN
1856888832,1856892927,AU
1856892928,1856897023,JP
@@ -51734,14 +59583,20 @@
1860706304,1860714495,CN
1860714496,1860722687,ID
1860722688,1860726783,KR
-1860726784,1860727807,AU
-1860728832,1860734975,JP
+1860726784,1860728831,AU
+1860728832,1860733951,JP
+1860733952,1860734975,AU
1860734976,1860735999,NZ
+1860736000,1860737023,AU
1860737024,1860739071,JP
1860739072,1860743167,PH
-1860743168,1860747263,AU
+1860743168,1860744191,AU
+1860744192,1860745215,IN
+1860745216,1860746239,AU
+1860746240,1860747263,PK
1860747264,1860759551,JP
1860759552,1860761599,AU
+1860761600,1860763647,IN
1860763648,1860829183,JP
1860829184,1860960255,IN
1860960256,1861091327,CN
@@ -51752,6 +59607,7 @@
1866563584,1866579967,KR
1866579968,1866588159,JP
1866588160,1866592255,NZ
+1866592256,1866596351,VN
1866596352,1866661887,CN
1866661888,1866670079,AU
1866670080,1866674175,MY
@@ -51794,7 +59650,9 @@
1868333056,1868341247,PK
1868341248,1868345343,ID
1868345344,1868346367,GU
+1868346368,1868347391,TH
1868347392,1868348415,AU
+1868348416,1868349439,KR
1868349440,1868357631,SG
1868357632,1868361727,HK
1868361728,1868362751,KH
@@ -51808,8 +59666,14 @@
1870036992,1870045183,KH
1870045184,1870049279,AU
1870049280,1870053375,IN
-1870053376,1870069759,AU
-1870069760,1870077951,AP
+1870053376,1870055423,AU
+1870055424,1870057471,CN
+1870057472,1870058495,AU
+1870058496,1870059519,IN
+1870059520,1870065663,AU
+1870065664,1870069759,IN
+1870069760,1870077951,JP
+1870077952,1870086143,NP
1870086144,1870110719,CN
1870110720,1870118911,PK
1870118912,1870135295,IN
@@ -51820,7 +59684,7 @@
1870497792,1870499839,IN
1870499840,1870501887,JP
1870501888,1870503935,AF
-1870503936,1870508031,AU
+1870503936,1870512127,AU
1870512128,1870528511,IN
1870528512,1873281023,CN
1873281024,1873412095,JP
@@ -51864,10 +59728,12 @@
1877692416,1877696511,PH
1877696512,1877704703,CN
1877704704,1877705727,AU
+1877705728,1877706751,MY
1877706752,1877707775,SG
1877707776,1877709823,AU
-1877710848,1877711871,AP
-1877712896,1877721087,CN
+1877709824,1877710847,IN
+1877710848,1877711871,HK
+1877711872,1877721087,CN
1877721088,1877737471,TW
1877737472,1877999615,JP
1877999616,1879048191,TW
@@ -51901,8 +59767,11 @@
1885995008,1886191615,KR
1886191616,1886195711,PH
1886195712,1886197759,ID
+1886197760,1886199807,JP
1886199808,1886207999,KR
-1886208000,1886216191,NZ
+1886208000,1886214143,NZ
+1886214144,1886216191,VN
+1886216192,1886224383,IN
1886224384,1886257151,CN
1886257152,1886322687,IN
1886322688,1886781439,CN
@@ -51922,7 +59791,9 @@
1887993856,1888026623,KR
1888026624,1888030719,BD
1888030720,1888034815,HK
-1888034816,1888059391,JP
+1888034816,1888038911,JP
+1888038912,1888040959,CN
+1888040960,1888059391,JP
1888059392,1888063487,VN
1888063488,1888067583,JP
1888067584,1888071679,MY
@@ -51935,7 +59806,6 @@
1888266240,1888268287,JP
1888268288,1888270335,AU
1888270336,1888271359,SG
-1888271360,1888272383,TH
1888272384,1888288767,KR
1888288768,1888354303,AU
1888354304,1888485375,TH
@@ -51950,6 +59820,7 @@
1892155392,1892941823,PH
1892941824,1893015551,KR
1893015552,1893019647,AU
+1893019648,1893023743,TW
1893023744,1893027839,HK
1893027840,1893031935,VN
1893031936,1893040127,HK
@@ -51966,21 +59837,27 @@
1896587264,1896591359,SG
1896591360,1896593407,ID
1896593408,1896594431,AU
+1896594432,1896595455,MY
1896595456,1896603647,CN
1896603648,1896605695,IN
1896605696,1896606719,AU
+1896606720,1896607743,MY
1896607744,1896609791,VU
+1896609792,1896611839,SG
1896611840,1897070591,CN
1897070592,1897136127,IN
1897136128,1897140223,AU
1897140224,1897141247,IN
1897141248,1897142271,HK
1897142272,1897143295,AU
+1897143296,1897144319,ID
1897144320,1897152511,NC
1897152512,1897160703,FJ
+1897160704,1897168895,VN
1897168896,1897169919,AU
+1897169920,1897170943,HK
1897170944,1897172991,ID
-1897172992,1897175039,SG
+1897172992,1897175039,PH
1897175040,1897176063,JP
1897176064,1897177087,SG
1897177088,1897185279,PH
@@ -52003,12 +59880,12 @@
1897365504,1897398271,MY
1897398272,1897660415,CN
1897660416,1897725951,HK
-1897725952,1897758719,AP
+1897725952,1897758719,JP
1897758720,1897779199,KR
1897779200,1897781247,AU
1897781248,1897783295,JP
1897783296,1897787391,SG
-1897787392,1897788415,AU
+1897787392,1897789439,AU
1897789440,1897790463,KH
1897790464,1897791487,HK
1897791488,1897824255,KR
@@ -52017,20 +59894,25 @@
1897922560,1898708991,JP
1898708992,1899233279,CN
1899233280,1899237375,AU
+1899237376,1899241471,JP
1899241472,1899249663,VN
1899249664,1899266047,MO
1899266048,1899267071,AU
+1899267072,1899268095,HK
1899268096,1899270143,KR
1899270144,1899271167,AU
+1899271168,1899272191,ID
1899272192,1899273215,SG
1899273216,1899274239,JP
1899274240,1899282431,CN
1899282432,1899290623,KR
1899290624,1899294719,AU
+1899294720,1899298815,JP
1899298816,1899364351,TH
1899364352,1899724799,CN
1899724800,1899741183,KR
1899741184,1899749375,LK
+1899749376,1899750399,CN
1899750400,1899751423,JP
1899751424,1899753471,ID
1899753472,1899757567,HK
@@ -52046,29 +59928,38 @@
1904361472,1904369663,KR
1904369664,1904375807,CN
1904375808,1904376831,NZ
+1904376832,1904377855,KH
1904377856,1904476159,KR
1904476160,1905262591,CN
1905262592,1906311167,JP
1906311168,1908408319,VN
1908408320,1908424703,AU
+1908424704,1908441087,KR
1908441088,1908473855,JP
1908473856,1908539391,IN
1908539392,1908670463,CN
1908670464,1908735999,TW
1908736000,1908740095,AU
-1908744192,1908748287,JP
+1908740096,1908744191,JP
+1908744192,1908746239,SG
+1908746240,1908748287,JP
1908748288,1908750335,PK
+1908750336,1908752383,JP
1908752384,1908753407,NZ
+1908753408,1908754431,PF
1908754432,1908756479,PH
1908756480,1908760575,KR
1908760576,1908761599,NZ
+1908761600,1908762623,CN
1908762624,1908763647,IN
-1908764672,1908768767,AP
+1908763648,1908764671,ID
+1908764672,1908768767,AU
1908768768,1908801535,JP
1908801536,1908899839,KR
1908899840,1908932607,NP
1908932608,1909129215,CN
1909129216,1909161983,AU
+1909161984,1909194751,PK
1909194752,1909456895,CN
1909456896,1909473279,JP
1909473280,1909481471,HK
@@ -52077,6 +59968,7 @@
1909719040,1909735423,CN
1909735424,1909743615,IN
1909743616,1909744639,AU
+1909744640,1909745663,CN
1909745664,1909746687,JP
1909746688,1909747711,MY
1909747712,1909751807,ID
@@ -52084,6 +59976,7 @@
1909760000,1909762047,ID
1909762048,1909764095,AU
1909764096,1909766143,PH
+1909766144,1909768191,CN
1909768192,1909784575,HK
1909784576,1909817343,CN
1909817344,1909850111,JP
@@ -52092,7 +59985,8 @@
1910112256,1912340479,CN
1912340480,1912602623,HK
1912602624,1913651199,ID
-1913651200,1914175487,JP
+1913651200,1914109951,JP
+1914109952,1914175487,NZ
1914175488,1914437631,TW
1914437632,1914503167,CN
1914503168,1914552319,KR
@@ -52112,10 +60006,11 @@
1914652672,1914654719,AU
1914654720,1914658815,JP
1914658816,1914660863,AU
+1914660864,1914662911,JP
1914662912,1914667007,KR
1914667008,1914683391,IN
1914683392,1914687487,AU
-1914687488,1914688511,NZ
+1914687488,1914689535,NZ
1914689536,1914691583,JP
1914691584,1914695679,IN
1914695680,1914697727,ID
@@ -52132,6 +60027,7 @@
1917190144,1917321215,KR
1917321216,1917779967,AU
1917779968,1917796351,ID
+1917796352,1917812735,CN
1917812736,1917845503,IN
1917845504,1919680511,CN
1919680512,1919729663,KR
@@ -52141,8 +60037,10 @@
1919815680,1919817727,ID
1919817728,1919819775,KR
1919819776,1919821823,NZ
+1919821824,1919823871,ID
1919823872,1919827967,JP
1919827968,1919844351,CN
+1919844352,1919877119,KR
1919877120,1919885311,CN
1919885312,1919893503,KR
1919893504,1919909887,JP
@@ -52162,15 +60060,18 @@
1921089536,1921105919,AU
1921105920,1921122303,KR
1921122304,1921187839,BD
+1921187840,1921253375,TH
1921253376,1921318911,CN
1921318912,1921384447,MY
1921384448,1921388543,NZ
+1921388544,1921392639,PG
1921392640,1921400831,JP
1921400832,1921404927,ID
1921404928,1921406975,HK
1921406976,1921409023,BD
1921409024,1921425407,JP
-1921425408,1921433599,NZ
+1921425408,1921431551,NZ
+1921431552,1921433599,KH
1921433600,1921449983,JP
1921449984,1921515519,CN
1921515520,1921646591,TW
@@ -52185,6 +60086,7 @@
1921863680,1921865727,BD
1921865728,1921867775,ID
1921867776,1921871871,AU
+1921871872,1921875967,NZ
1921875968,1921892351,CN
1921892352,1921896447,AU
1921896448,1921898495,SG
@@ -52236,6 +60138,7 @@
1932001280,1932132351,KR
1932132352,1932148735,AU
1932148736,1932152831,PK
+1932152832,1932156927,TW
1932156928,1932161023,JP
1932161024,1932163071,TW
1932163072,1932165119,PH
@@ -52259,6 +60162,7 @@
1933959168,1933963263,JP
1933963264,1933967359,IN
1933967360,1934032895,AU
+1934032896,1934098431,KR
1934098432,1934622719,VN
1934622720,1934884863,TW
1934884864,1934901247,CN
@@ -52273,6 +60177,7 @@
1934966784,1934974975,ID
1934974976,1934983167,JP
1934983168,1934985215,AU
+1934985216,1934987263,JP
1934987264,1934991359,TW
1934991360,1934999551,KR
1934999552,1935015935,CN
@@ -52283,9 +60188,11 @@
1935933440,1936457727,CN
1936457728,1937244159,IN
1937244160,1937506303,CN
-1937506304,1937508351,AU
+1937506304,1937510399,AU
1937510400,1937514495,CN
1937514496,1937516543,AU
+1937516544,1937518591,IN
+1937518592,1937522687,JP
1937522688,1937530879,ID
1937530880,1937532927,US
1937532928,1937534463,IN
@@ -52295,7 +60202,7 @@
1937539072,1937637375,JP
1937637376,1937670143,HK
1937670144,1937672191,NZ
-1937674240,1937678335,JP
+1937672192,1937678335,JP
1937678336,1937686527,NC
1937686528,1937702911,KR
1937702912,1937768447,BD
@@ -52303,7 +60210,7 @@
1938030592,1938292735,MY
1938292736,1938948095,KR
1938948096,1938964479,JP
-1938964480,1938968575,AU
+1938964480,1938972671,AU
1938972672,1938976767,MY
1938976768,1938978815,SG
1938978816,1938980863,VN
@@ -52357,7 +60264,7 @@
1941659648,1941667839,NZ
1941667840,1941700607,AU
1941700608,1941831679,NZ
-1941962752,1945108479,CN
+1941831680,1945108479,CN
1945108480,1946157055,IN
1946157056,1946159103,ID
1946159104,1946161151,MY
@@ -52388,6 +60295,7 @@
1946951680,1946953727,BD
1946953728,1946955775,ID
1946955776,1946957823,SG
+1946957824,1946959871,NZ
1946959872,1946976255,LK
1946976256,1947009023,SG
1947009024,1947074559,CN
@@ -52422,14 +60330,17 @@
1950518784,1950519295,NL
1950519296,1950523391,IN
1950523392,1950527487,AU
+1950527488,1950531583,JP
1950531584,1950533631,NP
1950533632,1950535679,ID
1950535680,1950539775,HK
1950539776,1950541823,AU
+1950541824,1950543871,HK
1950543872,1950545919,NZ
1950545920,1950547967,PH
1950547968,1950580735,KR
-1950613504,1950617599,GU
+1950580736,1950613503,JP
+1950613504,1950621695,GU
1950621696,1950629887,KR
1950629888,1950646271,IN
1950646272,1950648319,VN
@@ -52437,7 +60348,7 @@
1950650368,1950654463,TH
1950654464,1950658559,ID
1950658560,1950660607,PH
-1950660608,1950662655,AP
+1950660608,1950662655,HK
1950662656,1950666751,BD
1950666752,1950668799,NP
1950668800,1950670847,JP
@@ -52446,18 +60357,20 @@
1950674944,1950676991,IN
1950676992,1950679039,ID
1950679040,1950777343,CN
-1950777344,1950793727,JP
+1950777344,1950810111,JP
1950810112,1950875647,PK
1950875648,1951137791,IN
1951137792,1951399935,CN
1951399936,1951662079,JP
1951662080,1951727615,KR
+1951727616,1951793151,CN
1951793152,1952022527,SG
1952022528,1952026623,TW
1952026624,1952030719,CN
1952030720,1952038911,KR
1952038912,1952047103,JP
1952047104,1952051199,NZ
+1952051200,1952055295,JP
1952055296,1952071679,AU
1952071680,1952073727,HK
1952073728,1952074751,AU
@@ -52477,7 +60390,8 @@
1952186368,1952251903,HK
1952251904,1952284671,PH
1952284672,1952288767,NZ
-1952301056,1952317439,KR
+1952288768,1952292863,JP
+1952292864,1952317439,KR
1952317440,1952382975,JP
1952382976,1952448511,CN
1952448512,1953497087,VN
@@ -52497,14 +60411,20 @@
1958830080,1958838271,JP
1958838272,1958842367,IN
1958842368,1958844415,NZ
+1958845440,1958846463,HK
1958846464,1958848511,IN
1958848512,1958850559,BD
-1958850560,1958862847,AU
+1958850560,1958853631,AU
+1958853632,1958854655,ID
+1958854656,1958860799,AU
+1958860800,1958862847,BD
+1958862848,1958871039,JP
1958871040,1959067647,CN
1959067648,1959100415,MY
1959100416,1959102463,ID
1959102464,1959104511,JP
1959104512,1959106559,AU
+1959106560,1959108607,JP
1959108608,1959110655,NP
1959110656,1959112703,JP
1959112704,1959116799,HK
@@ -52516,11 +60436,14 @@
1959247872,1959251967,ID
1959251968,1959256063,NZ
1959256064,1959260159,AU
+1959260160,1959264255,JP
1959264256,1959395327,KR
+1959395328,1959526399,IN
1959526400,1959657471,CN
1959657472,1959723007,MY
1959723008,1960050687,CN
1960050688,1960058879,KR
+1960058880,1960067071,VN
1960067072,1960069119,AU
1960069120,1960071167,ID
1960071168,1960075263,TW
@@ -52533,7 +60456,10 @@
1960091648,1960095743,CN
1960095744,1960097791,IN
1960097792,1960099839,BD
-1960099840,1960128511,AU
+1960099840,1960121343,AU
+1960121344,1960122367,JP
+1960122368,1960124415,ID
+1960124416,1960128511,AU
1960128512,1960132607,ID
1960132608,1960181759,CN
1960181760,1960185855,TW
@@ -52552,8 +60478,14 @@
1960574976,1960837119,JP
1960837120,1961885695,CN
1961885696,1961951231,AU
+1961951232,1962016767,TW
1962016768,1962541055,CN
-1962541056,1962672127,AU
+1962541056,1962622975,AU
+1962622976,1962639359,CN
+1962639360,1962658815,NZ
+1962658816,1962659839,HK
+1962659840,1962663935,SG
+1962663936,1962672127,HK
1962672128,1962803199,CN
1962803200,1962827775,JP
1962827776,1962829823,ID
@@ -52561,6 +60493,7 @@
1962831872,1962835967,ID
1962835968,1962868735,CN
1962868736,1962885119,AU
+1962885120,1962901503,KR
1962901504,1962934271,CN
1962934272,1963458559,VN
1963458560,1963982847,CN
@@ -52573,6 +60506,7 @@
1964126464,1964130303,SG
1964130304,1964134399,HK
1964134400,1964136447,NZ
+1964136448,1964138495,JP
1964138496,1964146687,HK
1964146688,1964171263,JP
1964171264,1964173311,BD
@@ -52587,6 +60521,7 @@
1964261376,1964263423,AU
1964263424,1964265471,JP
1964265472,1964269567,KR
+1964269568,1964273663,JP
1964273664,1964275711,KH
1964275712,1964277759,GU
1964277760,1964294143,SG
@@ -52595,7 +60530,9 @@
1965948928,1966014463,JP
1966014464,1966079999,TH
1966080000,1966342143,CN
+1966342144,1966407679,KR
1966407680,1966417919,JP
+1966417920,1966419967,IN
1966419968,1966424063,CN
1966424064,1966440447,KR
1966440448,1966444543,AU
@@ -52646,6 +60583,7 @@
1969707008,1969709055,MH
1969709056,1969713151,TW
1969713152,1969715199,AU
+1969715200,1969717247,IN
1969717248,1969721343,CN
1969721344,1969725439,HK
1969725440,1969727487,JP
@@ -52671,6 +60609,7 @@
1970800640,1970804735,AU
1970804736,1970806783,KH
1970806784,1970808831,NZ
+1970808832,1970810879,AU
1970810880,1970812927,JP
1970812928,1970814975,LK
1970814976,1970915327,CN
@@ -52697,6 +60636,7 @@
1984118784,1984131071,JP
1984131072,1984135167,CN
1984135168,1984151551,KR
+1984151552,1984153599,NZ
1984153600,1984155647,KH
1984155648,1984159743,AU
1984159744,1984167935,IN
@@ -52704,14 +60644,14 @@
1984430080,1985085439,CN
1985085440,1985093631,ID
1985093632,1985097727,AU
-1985101824,1985118207,JP
+1985097728,1985118207,JP
1985118208,1985150975,NZ
1985150976,1985216511,JP
1985216512,1985347583,CN
1985347584,1985478655,JP
1985478656,1985480703,IN
1985480704,1985482751,PH
-1985482752,1985484799,AU
+1985482752,1985486847,AU
1985486848,1985609727,CN
1985609728,1985675263,NZ
1985675264,1985708031,KR
@@ -52747,8 +60687,10 @@
1986525184,1986527231,BN
1986527232,1986723839,JP
1986723840,1986740223,AU
+1986740224,1986756607,VN
1986756608,1986760703,PK
1986760704,1986762751,AU
+1986762752,1986764799,JP
1986764800,1986768895,KR
1986768896,1986772991,AU
1986772992,1986789375,MY
@@ -52758,7 +60700,9 @@
1988083712,1988362239,KR
1988362240,1988624383,CN
1988624384,1988755455,ID
-1988755456,1988886527,AU
+1988755456,1988861951,AU
+1988861952,1988870143,SG
+1988870144,1988886527,KR
1988886528,1989148671,HK
1989148672,1989410815,CN
1989410816,1989541887,NZ
@@ -52774,7 +60718,8 @@
1991245824,1991311359,KR
1991311360,1991376895,JP
1991376896,1991442431,CN
-1991442432,1991507967,BD
+1991442432,1991499775,BD
+1991499776,1991507967,NC
1991507968,1993342975,CN
1993342976,1993605119,AU
1993605120,1993736191,CN
@@ -52796,6 +60741,7 @@
1996644352,1996652543,BT
1996652544,1997176831,CN
1997176832,1997180927,AU
+1997180928,1997185023,HK
1997185024,1997187071,JP
1997187072,1997189119,HK
1997189120,1997191167,ID
@@ -52805,9 +60751,11 @@
1997275136,1997406207,AU
1997406208,1997471743,TW
1997471744,1997479935,NZ
-1997488128,1997490175,AU
+1997479936,1997488127,JP
+1997488128,1997492223,AU
1997492224,1997496319,KH
1997496320,1997500415,AU
+1997500416,1997504511,JP
1997504512,1997506559,ID
1997506560,1997508607,CN
1997508608,1997510655,JP
@@ -52815,10 +60763,14 @@
1997512704,1997520895,VN
1997520896,1997537279,TW
1997537280,1997602815,CN
-1997602816,1997635583,KR
-1997635584,1997643775,AU
+1997602816,1997611007,KR
+1997611008,1997619199,AU
+1997619200,1997635583,KR
+1997635584,1997651967,AU
1997651968,1997668351,VN
-1997668352,1997684735,AU
+1997668352,1997680639,AU
+1997680640,1997684735,IN
+1997684736,1997701119,KR
1997701120,1997705215,VN
1997705216,1997707263,BD
1997707264,1997709311,ID
@@ -52833,6 +60785,7 @@
1998290944,1998299135,PH
1998299136,1998454783,CN
1998454784,1998456831,AU
+1998456832,1998458879,JP
1998458880,1998462975,TW
1998462976,1998467071,BD
1998467072,1998471167,CN
@@ -52845,6 +60798,7 @@
1998565376,1998569471,TW
1998569472,1998577663,CN
1998577664,1998579711,AU
+1998579712,1998581759,SG
1998581760,1998585855,KR
1998585856,1999130623,CN
1999130624,1999134719,BD
@@ -52852,6 +60806,7 @@
1999136768,1999138815,AU
1999138816,1999142911,MY
1999142912,1999249407,CN
+1999249408,1999257599,PH
1999257600,1999276031,TH
1999276032,1999278079,CN
1999278080,1999280127,HK
@@ -52870,12 +60825,14 @@
1999601664,1999634431,JP
1999634432,2000158719,CN
2000158720,2000191487,SG
+2000191488,2000224255,KR
2000224256,2000355327,CN
2000355328,2000371711,KR
2000371712,2000373759,JP
2000373760,2000375807,HK
2000375808,2000377855,AF
2000377856,2000379903,JP
+2000379904,2000388095,TH
2000388096,2000617471,CN
2000617472,2000621567,PH
2000621568,2000625663,JP
@@ -52884,7 +60841,7 @@
2000642048,2000646143,HK
2000646144,2000650239,JP
2000650240,2000654335,PK
-2000658432,2000668671,JP
+2000654336,2000668671,JP
2000668672,2000674815,AU
2000674816,2001207295,KR
2001207296,2001272831,JP
@@ -52901,12 +60858,12 @@
2001567744,2001600511,TW
2001600512,2001862655,CN
2001862656,2001864703,AU
-2001866752,2001870847,JP
+2001864704,2001870847,JP
2001870848,2001879039,KR
2001879040,2001895423,IN
2001895424,2001899519,VN
2001899520,2001901567,AU
-2001903616,2001915903,JP
+2001901568,2001915903,JP
2001915904,2001919999,BD
2001920000,2001926143,ID
2001926144,2001928191,KH
@@ -52943,8 +60900,7 @@
2007031808,2007035903,AU
2007035904,2007039999,TW
2007040000,2007048191,KR
-2007048192,2007052287,AU
-2007056384,2007064575,AU
+2007048192,2007064575,AU
2007064576,2007066623,MY
2007066624,2007070719,JP
2007070720,2007072767,US
@@ -52952,7 +60908,9 @@
2007498752,2008023039,JP
2008023040,2009071615,CN
2009071616,2011168767,KR
-2011168768,2011234303,NZ
+2011168768,2011205631,NZ
+2011205632,2011209727,AU
+2011209728,2011234303,JP
2011234304,2011299839,AU
2011299840,2011430911,IN
2011430912,2011693055,JP
@@ -52963,7 +60921,8 @@
2011897856,2011899903,NZ
2011899904,2011901951,HK
2011901952,2011906047,IN
-2011906048,2011922431,FJ
+2011906048,2011916287,FJ
+2011916288,2011922431,JP
2011922432,2011938815,CN
2011938816,2011942911,KR
2011942912,2011947007,ID
@@ -52975,22 +60934,24 @@
2012610560,2012741631,HK
2012741632,2013003775,CN
2013003776,2013011967,AU
+2013011968,2013020159,JP
2013020160,2013028351,AU
-2013028352,2013030399,TH
+2013028352,2013030399,CN
2013030400,2013032447,ID
2013032448,2013036543,FM
2013036544,2013038591,ID
2013038592,2013040639,HK
2013040640,2013044735,IN
2013044736,2013048831,ID
-2013048832,2013050879,AU
+2013048832,2013052927,AU
2013052928,2013061119,IN
2013061120,2013065215,PG
-2013069312,2014314495,CN
+2013065216,2014314495,CN
2014314496,2014838783,AU
2014838784,2015100927,CN
2015100928,2015166463,PH
2015166464,2015182847,AU
+2015182848,2015199231,PH
2015199232,2015203327,KR
2015203328,2015205375,JP
2015205376,2015207423,ID
@@ -53004,13 +60965,13 @@
2015223760,2015223807,CA
2015223808,2015225855,ID
2015225856,2015227903,IN
-2015227904,2015229951,AU
+2015227904,2015231999,AU
2015232000,2016542719,CN
2016542720,2016550911,BD
2016550912,2016555007,SG
2016555008,2016559103,MY
2016559104,2016583679,KR
-2016583680,2016585727,JP
+2016583680,2016587775,JP
2016587776,2016589823,BD
2016589824,2016591871,VN
2016591872,2016673791,JP
@@ -53032,12 +60993,15 @@
2019035136,2019037183,CN
2019037184,2019041279,JP
2019041280,2019045375,IN
-2019049472,2019057663,AU
-2019065856,2019082239,AU
+2019045376,2019049471,JP
+2019049472,2019078143,AU
+2019078144,2019082239,IN
+2019082240,2019098623,HK
2019098624,2019115007,PH
2019115008,2019117055,US
2019117056,2019119103,IN
2019119104,2019121151,NZ
+2019121152,2019123199,ID
2019123200,2019131391,NP
2019131392,2019164159,JP
2019164160,2019360767,CN
@@ -53046,6 +61010,7 @@
2019557376,2021654527,TW
2021654528,2022178815,CN
2022178816,2022180863,NZ
+2022180864,2022182911,JP
2022182912,2022184959,ID
2022184960,2022187007,KH
2022187008,2022187071,US
@@ -53110,6 +61075,7 @@
2033623040,2033625087,PH
2033625088,2033627135,HK
2033627136,2033629183,NZ
+2033629184,2033631231,JP
2033631232,2033647615,KR
2033647616,2033663999,CN
2033664000,2033696767,KR
@@ -53150,6 +61116,7 @@
2036600832,2036604927,ID
2036604928,2036609023,SG
2036609024,2036611071,AF
+2036611072,2036613119,JP
2036613120,2036629503,KR
2036629504,2036662271,CN
2036662272,2036678655,AU
@@ -53182,7 +61149,9 @@
2043199488,2043201535,BD
2043201536,2043203583,JP
2043203584,2043205631,AU
+2043205632,2043207679,JP
2043207680,2043211775,AU
+2043211776,2043215871,SG
2043215872,2043281407,CN
2043281408,2043412479,HK
2043412480,2043674623,CN
@@ -53229,15 +61198,16 @@
2053340160,2053341183,IN
2053341184,2053373951,KR
2053373952,2053378047,AU
-2053378048,2053380095,JP
+2053378048,2053382143,JP
2053382144,2053390335,KR
2053390336,2053406719,TW
2053406720,2053439487,MO
2053439488,2053505023,KR
2053505024,2053509119,CN
2053509120,2053511167,AU
+2053511168,2053513215,IN
2053513216,2053515263,BD
-2053517312,2053519359,ID
+2053515264,2053519359,ID
2053519360,2053521407,BD
2053521408,2053529599,CN
2053529600,2053533695,AU
@@ -53261,10 +61231,13 @@
2055241728,2055274495,KR
2055274496,2055290879,AU
2055290880,2055299071,PK
-2055299072,2055307263,ID
+2055299072,2055305215,ID
+2055305216,2055307263,MY
2055307264,2055315455,AU
+2055315456,2055323647,JP
2055323648,2055327743,ID
2055327744,2055329791,KR
+2055329792,2055331839,AU
2055331840,2055335935,JP
2055335936,2055340031,KR
2055340032,2055733247,JP
@@ -53281,7 +61254,8 @@
2056519680,2056781823,AU
2056781824,2056794111,JP
2056794112,2056796159,BD
-2056798208,2056806399,JP
+2056796160,2056806399,JP
+2056806400,2056814591,KR
2056814592,2056815167,JP
2056815168,2056815195,HK
2056815196,2056815215,JP
@@ -53328,8 +61302,8 @@
2056847360,2056912895,KR
2056912896,2057043967,TH
2057043968,2057306111,CN
-2057306112,2059403263,IN
-2059403264,2059665407,CN
+2057306112,2059141119,IN
+2059141120,2059665407,CN
2059665408,2059796479,JP
2059796480,2059862015,CN
2059862016,2059878399,AU
@@ -53345,16 +61319,18 @@
2059960320,2059964415,AU
2059964416,2059966463,ID
2059966464,2059968511,TW
-2059968512,2059972607,AU
+2059968512,2059976703,AU
2059976704,2059995135,JP
2059995136,2059997183,VN
2059997184,2060001279,MN
2060001280,2060005375,HK
+2060005376,2060009471,CN
2060009472,2060025855,AU
2060025856,2060058623,TW
+2060058624,2060062719,AU
2060062720,2060066815,JP
2060066816,2060075007,KR
-2060075008,2060079103,AU
+2060075008,2060083199,AU
2060083200,2060091391,PH
2060091392,2060189695,KR
2060189696,2060451839,CN
@@ -53365,6 +61341,7 @@
2063081472,2063085567,BD
2063085568,2063089663,CN
2063089664,2063097855,JP
+2063097856,2063106047,MM
2063106048,2063106559,SG
2063106560,2063106815,JP
2063106816,2063107423,SG
@@ -53393,6 +61370,7 @@
2063114328,2063116287,JP
2063116288,2063116319,SG
2063116320,2063122431,JP
+2063122432,2063138815,SG
2063138816,2063335423,JP
2063335424,2063341567,AU
2063341568,2063351807,AP
@@ -53400,8 +61378,10 @@
2063368192,2063370239,AP
2063370240,2063372287,JP
2063372288,2063374335,AP
+2063374336,2063376383,NZ
2063376384,2063380479,TW
2063380480,2063382527,KH
+2063382528,2063384575,NZ
2063384576,2063392767,KR
2063392768,2063400959,IN
2063400960,2063466495,JP
@@ -53415,11 +61395,13 @@
2063556608,2063564799,MY
2063564800,2063597567,JP
2063597568,2063601663,KR
+2063601664,2063605759,BD
2063605760,2063613951,TW
2063613952,2063630335,JP
2063630336,2063646719,CN
2063646720,2063663103,TW
2063663104,2063695871,JP
+2063695872,2063728639,HK
2063728640,2063859711,AU
2063859712,2064646143,CN
2064646144,2065694719,VN
@@ -53432,6 +61414,7 @@
2066882560,2066890751,TW
2066890752,2066907135,PF
2066907136,2066915327,AU
+2066915328,2066923519,CN
2066923520,2066939903,JP
2066939904,2066972671,AU
2066972672,2067005439,TW
@@ -53446,6 +61429,7 @@
2070159360,2070167551,AU
2070167552,2070183935,NZ
2070183936,2070192127,AU
+2070192128,2070200319,KR
2070200320,2070208511,JP
2070208512,2070209023,MY
2070209024,2070209535,SG
@@ -53460,7 +61444,11 @@
2070216704,2070282239,CN
2070282240,2070347775,AU
2070347776,2070380543,CN
-2070380544,2070677503,JP
+2070380544,2070396927,JP
+2070396928,2070405119,AU
+2070405120,2070409215,JP
+2070409216,2070413311,HK
+2070413312,2070677503,JP
2070677504,2070679551,ID
2070679552,2070683647,KR
2070683648,2070691839,IN
@@ -53471,6 +61459,7 @@
2070704128,2070708223,PH
2070708224,2070712319,CN
2070712320,2070714367,NZ
+2070714368,2070716415,JP
2070716416,2070724607,KR
2070724608,2070726655,JP
2070726656,2070728703,IN
@@ -53499,6 +61488,7 @@
2075140096,2075144191,IN
2075144192,2075146239,JP
2075146240,2075147263,BD
+2075147264,2075148287,CN
2075148288,2075150335,PH
2075150336,2075152383,WS
2075152384,2075156479,CN
@@ -53549,6 +61539,8 @@
2080243712,2080260095,JP
2080260096,2080268287,KR
2080268288,2080270335,AP
+2080270336,2080272383,HK
+2080272384,2080276479,AU
2080276480,2080309247,KR
2080309248,2080325631,NZ
2080325632,2080342015,HK
@@ -53567,6 +61559,7 @@
2080800768,2080817151,PH
2080817152,2080825343,NZ
2080825344,2080829439,BD
+2080829440,2080833535,LK
2080833536,2080899071,IN
2080899072,2081226751,TW
2081226752,2081292287,MY
@@ -53587,6 +61580,7 @@
2083045376,2083053567,AU
2083053568,2083057663,TH
2083057664,2083058687,AU
+2083058688,2083059711,IN
2083059712,2083061759,ID
2083061760,2083110911,JP
2083110912,2083127295,NP
@@ -53604,7 +61598,9 @@
2084741120,2084743167,ID
2084743168,2084745215,JP
2084745216,2084749311,KR
-2084749312,2084765695,JP
+2084749312,2084753407,JP
+2084753408,2084757503,KR
+2084757504,2084765695,JP
2084765696,2085617663,CN
2085617664,2085683199,KR
2085683200,2085748735,ID
@@ -53614,6 +61610,7 @@
2086141952,2086666239,CN
2086666240,2087190527,JP
2087190528,2087452671,PH
+2087452672,2087453695,AU
2087453696,2087454719,KH
2087454720,2087456767,CN
2087456768,2087458815,BD
@@ -53662,7 +61659,7 @@
2090242048,2090246143,JP
2090246144,2090250239,NZ
2090250240,2090270719,JP
-2090270720,2090336255,CN
+2090270720,2090401791,CN
2090401792,2090418175,ID
2090418176,2090434559,IN
2090434560,2090467327,KR
@@ -53670,6 +61667,7 @@
2090565632,2090582015,TW
2090582016,2090590207,SG
2090590208,2090594303,NZ
+2090594304,2090598399,IN
2090598400,2090663935,CN
2090663936,2090680319,AU
2090680320,2090696703,NZ
@@ -53717,7 +61715,7 @@
2094759936,2094792703,JP
2094792704,2096152575,CN
2096152576,2096160767,PG
-2096168960,2096234495,JP
+2096160768,2096234495,JP
2096234496,2096300031,CN
2096300032,2096332799,KR
2096332800,2096349183,AU
@@ -53730,6 +61728,7 @@
2096611328,2096627711,IN
2096627712,2096660479,CN
2096660480,2096664575,NZ
+2096664576,2096668671,JP
2096668672,2096676863,KH
2096676864,2096693247,HK
2096693248,2096889855,CN
@@ -53763,11 +61762,13 @@
2101149696,2101182463,KR
2101182464,2101231615,CN
2101231616,2101239807,AU
-2101239808,2101272575,IN
+2101239808,2101270527,IN
+2101270528,2101272575,KR
2101272576,2101276671,TW
2101276672,2101280767,JP
2101280768,2101288959,AU
2101288960,2101293055,JP
+2101293056,2101297151,AU
2101297152,2101313535,IN
2101313536,2101346303,AU
2101346304,2103640063,CN
@@ -53872,9 +61873,11 @@
2113724928,2113725183,IN
2113725184,2113728511,AP
2113728512,2113732607,JP
-2113732608,2113765375,AU
+2113732608,2113761279,AU
+2113761280,2113765375,VN
2113765376,2113798143,HK
2113798144,2113811455,AU
+2113811456,2113812479,HK
2113812480,2113813503,JP
2113813504,2113830911,AU
2113830912,2113863679,CN
@@ -53921,9 +61924,7 @@
2159869952,2159935487,CA
2159935488,2160525311,US
2160525312,2160590847,GB
-2160590848,2160656383,US
-2160656384,2160721919,FR
-2160721920,2161508351,US
+2160590848,2161508351,US
2161508352,2161573887,FI
2161573888,2162687999,US
2162688000,2162753535,GB
@@ -53932,11 +61933,9 @@
2163212288,2163277823,GB
2163277824,2163288063,US
2163288064,2163290111,A1
-2163290112,2163300351,US
-2163300352,2163300607,A1
-2163300608,2163304447,US
-2163304448,2163305983,A1
-2163305984,2163408895,US
+2163290112,2163304447,US
+2163304448,2163306495,A1
+2163306496,2163408895,US
2163408896,2163474431,GB
2163474432,2163605503,US
2163605504,2163671039,CH
@@ -54087,9 +62086,9 @@
2187229472,2187229479,A1
2187229480,2187229607,US
2187229608,2187229615,A1
-2187229616,2187229687,US
-2187229688,2187229695,A1
-2187229696,2187230111,US
+2187229616,2187229679,US
+2187229680,2187229687,A1
+2187229688,2187230111,US
2187230112,2187230143,A1
2187230144,2187232511,US
2187232512,2187232639,A1
@@ -54246,8 +62245,7 @@
2210136064,2210201599,DE
2210201600,2210594815,US
2210594816,2210660351,CA
-2210660352,2210725887,FR
-2210725888,2211053567,US
+2210660352,2211053567,US
2211053568,2211119103,CA
2211119104,2211184639,NZ
2211184640,2211250175,US
@@ -54266,7 +62264,13 @@
2212495360,2212560895,NL
2212560896,2212691967,US
2212691968,2212757503,GB
-2212757504,2212823039,FI
+2212757504,2212761599,FI
+2212761600,2212762623,GB
+2212762624,2212766719,FI
+2212766720,2212767743,GB
+2212767744,2212810751,FI
+2212810752,2212811519,US
+2212811520,2212823039,FI
2212823040,2212954111,US
2212954112,2213019647,GB
2213019648,2213085183,CA
@@ -54284,13 +62288,7 @@
2214068224,2214133759,JP
2214133760,2214264831,US
2214264832,2214330367,GB
-2214330368,2214396159,US
-2214396160,2214396415,CA
-2214396416,2214396671,US
-2214396672,2214396927,CA
-2214396928,2214397183,US
-2214397184,2214397695,CA
-2214397696,2214397951,US
+2214330368,2214397951,US
2214397952,2214398207,CA
2214398208,2214398975,US
2214398976,2214400767,CA
@@ -54369,7 +62367,15 @@
2249781256,2249785343,US
2249785344,2249850879,SE
2249850880,2249916415,US
-2249916416,2249981951,NL
+2249916416,2249924863,NL
+2249924864,2249925119,US
+2249925120,2249928703,NL
+2249928704,2249930751,US
+2249930752,2249931775,NL
+2249931776,2249932799,US
+2249932800,2249932927,NL
+2249932928,2249933055,BR
+2249933056,2249981951,NL
2249981952,2250047487,DE
2250047488,2250113023,US
2250113024,2250178559,DE
@@ -54387,7 +62393,8 @@
2251948032,2252013567,BE
2252013568,2252079103,FR
2252079104,2252210175,DE
-2252210176,2253062143,US
+2252210176,2252931071,US
+2252996608,2253062143,US
2253062144,2253127679,KR
2253127680,2253193215,DE
2253193216,2253455359,US
@@ -54742,7 +62749,8 @@
2301820928,2302083071,US
2302083072,2302214143,NL
2302214144,2302279679,US
-2302279680,2302541823,SE
+2302279680,2302345215,SE
+2302410752,2302541823,SE
2302541824,2302607359,CH
2302672896,2302935039,US
2302935040,2303000575,KR
@@ -54758,7 +62766,7 @@
2304573440,2304638975,NO
2304638976,2304704511,CA
2304704512,2304770047,US
-2304770048,2304835583,SE
+2304770048,2304835583,FI
2304835584,2305097727,US
2305097728,2305163263,GB
2305163264,2305359871,US
@@ -54957,9 +62965,12 @@
2331770880,2331836415,AU
2331836416,2331901951,GB
2331901952,2331967487,US
-2332033024,2332622847,DE
+2332033024,2332098559,ID
+2332098560,2332622847,DE
+2332622848,2332688383,CN
2332688384,2332753919,NL
-2332753920,2334064639,DE
+2332753920,2333868031,DE
+2333933568,2334064639,DE
2334064640,2334916607,US
2334916608,2334982143,AU
2334982144,2335178751,US
@@ -54975,7 +62986,7 @@
2335899648,2335965183,AU
2335965184,2336161791,US
2336161792,2336227327,NL
-2336227328,2336358399,US
+2336292864,2336358399,US
2336358400,2336423935,FI
2336423936,2336882687,US
2336882688,2336948223,FI
@@ -55013,6 +63024,7 @@
2338455552,2338521087,NO
2338521088,2338586623,US
2338586624,2338652159,FR
+2338652160,2338717695,JP
2338717696,2338783231,US
2338783232,2338848767,CA
2338848768,2338914303,US
@@ -55023,6 +63035,7 @@
2340159488,2340225023,FR
2340225024,2340421631,US
2340421632,2340487167,IT
+2340487168,2340552703,CN
2340552704,2340618239,AU
2340618240,2340683775,US
2340683776,2340749311,AU
@@ -55035,14 +63048,18 @@
2341470208,2341535743,US
2341535744,2341601279,NO
2341601280,2341732351,US
+2341732352,2341797887,CN
2341797888,2341863423,GB
+2341863424,2341928959,KR
2341928960,2341994495,US
2341994496,2342060031,JP
2342060032,2342125567,GB
2342125568,2342191103,JP
+2342191104,2342256639,CN
2342256640,2342322175,NL
2342322176,2342387711,FI
2342387712,2342453247,FR
+2342453248,2342518783,CN
2342518784,2342584319,FR
2342584320,2342649855,US
2342649856,2342715391,NL
@@ -55053,10 +63070,12 @@
2342977536,2343043071,US
2343043072,2343108607,AU
2343108608,2343174143,US
+2343174144,2343239679,CN
2343239680,2343370751,US
2343370752,2343436287,CA
2343436288,2343501823,DE
2343501824,2343567359,TW
+2343567360,2343632895,CN
2343632896,2343698431,US
2343698432,2343763967,NL
2343763968,2343829503,TR
@@ -55065,17 +63084,32 @@
2343925760,2343934975,US
2343934976,2343935999,IL
2343936000,2344026111,US
+2344026112,2344091647,CN
2344091648,2344157183,GB
2344157184,2344222719,US
+2344222720,2344288255,CN
2344288256,2344353791,US
2344353792,2344419327,AU
+2344419328,2344484863,CN
+2344484864,2344550399,PK
2344550400,2344615935,EU
+2344615936,2344878079,ID
+2344878080,2346188799,CN
+2346188800,2346450943,AU
+2346450944,2346582015,CN
2346582016,2346647551,GB
2346647552,2346713087,TW
+2346713088,2346778623,CN
2346778624,2346844159,US
+2346844160,2346975231,CN
+2346975232,2347040767,ID
2347040768,2347106303,US
2347106304,2347171839,AU
-2347171840,2353856511,US
+2347171840,2348744703,US
+2348744704,2348875775,ID
+2348875776,2353725439,US
+2353725440,2353790975,CN
+2353790976,2353856511,US
2353856512,2353922047,FR
2353922048,2353987583,AT
2353987584,2354053119,AU
@@ -55099,8 +63133,11 @@
2355691520,2355757055,IT
2355757056,2355953663,US
2355953664,2357919743,TW
-2357919744,2358509567,US
+2357919744,2358181887,US
+2358181888,2358247423,CN
+2358247424,2358509567,US
2358509568,2358575103,MX
+2358575104,2358640639,TH
2358640640,2358706175,SE
2358706176,2358771711,FI
2358771712,2359230463,US
@@ -55113,9 +63150,7 @@
2359689216,2359754751,SE
2359754752,2359820287,CA
2359820288,2359885823,AU
-2359885824,2360215807,US
-2360215808,2360216063,A1
-2360216064,2360672255,US
+2359885824,2360672255,US
2360672256,2360737791,DE
2360737792,2360868863,US
2360868864,2360934399,CA
@@ -55128,9 +63163,19 @@
2361982976,2362114047,US
2362114048,2362179583,IE
2362179584,2362245119,GB
-2362441728,2363883519,US
+2362245120,2362441727,CN
+2362441728,2362572799,US
+2362572800,2362638335,CN
+2362638336,2362769407,US
+2362769408,2362834943,ID
+2362834944,2363490303,US
+2363490304,2363555839,CN
+2363555840,2363883519,US
2363883520,2363949055,CA
-2363949056,2364538879,US
+2363949056,2364342271,US
+2364342272,2364407807,CN
+2364407808,2364538879,US
+2364538880,2364604415,CN
2364604416,2364671487,US
2364671488,2364671743,CN
2364671744,2364675839,US
@@ -55138,10 +63183,37 @@
2364676096,2364676863,US
2364676864,2364677119,GB
2364677120,2364735487,US
-2364801024,2365390847,US
+2364735488,2364801023,CN
+2364801024,2364932095,US
+2364932096,2364997631,CN
+2364997632,2365128703,US
+2365128704,2365259775,CN
+2365259776,2365390847,US
2365390848,2365456383,AU
2365456384,2365521919,US
-2365587456,2366308351,DE
+2365521920,2365587455,CN
+2365587456,2365589503,JO
+2365589504,2365591519,NO
+2365591520,2365591551,US
+2365591552,2365593599,DE
+2365593600,2365595647,NL
+2365595648,2365603839,GB
+2365603840,2365624319,NO
+2365624320,2365630463,GB
+2365630464,2365632511,NL
+2365632512,2365634559,RU
+2365634560,2365636607,FR
+2365636608,2365638655,GB
+2365638656,2365640703,FR
+2365640704,2365644799,GB
+2365644800,2365652991,NO
+2365652992,2366111743,DE
+2366111744,2366144511,MT
+2366144512,2366162943,RU
+2366162944,2366164991,AL
+2366164992,2366167039,GE
+2366167040,2366169087,GB
+2366169088,2366308351,DE
2366308352,2366373887,GB
2366373888,2367487999,DE
2367488000,2367553535,SI
@@ -55158,9 +63230,50 @@
2371944448,2372009983,GB
2372009984,2372075519,CH
2372075520,2372206591,DE
+2372206592,2372214783,UA
+2372214784,2372218879,DE
+2372218880,2372220927,FR
+2372220928,2372222975,KW
+2372222976,2372239359,EU
+2372239360,2372272127,RU
2372272128,2372337663,US
2372337664,2372403199,ID
-2372403200,2372665343,US
+2372403200,2372468735,US
+2372468736,2372472831,NL
+2372472832,2372474367,PL
+2372474368,2372474623,US
+2372474624,2372474879,GB
+2372474880,2372483071,RU
+2372483072,2372485119,JO
+2372485120,2372487167,RU
+2372487168,2372489215,FR
+2372489216,2372493311,LB
+2372493312,2372497407,ES
+2372497408,2372499455,IE
+2372499456,2372501503,NL
+2372501504,2372505599,UA
+2372505600,2372507647,NL
+2372507648,2372509695,IT
+2372509696,2372511743,AE
+2372511744,2372511744,SI
+2372511745,2372511998,BA
+2372511999,2372512000,SI
+2372512001,2372512254,BA
+2372512255,2372512256,SI
+2372512257,2372512510,BA
+2372512511,2372512512,SI
+2372512513,2372512766,BA
+2372512767,2372512768,SI
+2372512769,2372513022,BA
+2372513023,2372513024,SI
+2372513025,2372513278,BA
+2372513279,2372513280,SI
+2372513281,2372513534,BA
+2372513535,2372513536,SI
+2372513537,2372513790,BA
+2372513791,2372513791,SI
+2372513792,2372534271,GB
+2372534272,2372665343,US
2372665344,2372730879,IT
2372730880,2372796415,CA
2372796416,2372993023,US
@@ -55179,12 +63292,38 @@
2374172672,2374238207,US
2374238208,2374303743,AU
2374303744,2374369279,US
+2374369280,2374500351,BE
+2374500352,2374502399,LV
+2374502400,2374504447,MK
+2374504448,2374508543,RO
+2374508544,2374512639,LT
+2374512640,2374514687,SK
+2374514688,2374516735,ES
+2374516736,2374524927,AM
+2374524928,2374529023,FR
+2374529024,2374531071,RU
+2374531072,2374533119,NL
+2374533120,2374565887,HR
2374565888,2374631423,SE
+2374631424,2374647807,HR
+2374647808,2374651903,BE
+2374651904,2374653951,IT
+2374653952,2374655999,FR
+2374656000,2374664191,UA
+2374664192,2374666239,GB
+2374666240,2374670335,NL
+2374670336,2374672383,FR
+2374672384,2374674431,PL
+2374674432,2374676479,NL
+2374680576,2374684671,NL
+2374684672,2374686719,MT
+2374686720,2374688767,NL
+2374688768,2374696959,GB
2374696960,2374959103,US
2374959104,2375024639,BE
2375024640,2375090175,DK
2375090176,2375155711,NO
-2375155712,2375221247,FI
+2375155712,2375221247,US
2375221248,2375286783,SE
2375286784,2375352319,CH
2375352320,2376269823,US
@@ -55192,6 +63331,11 @@
2376335360,2376597503,US
2376597504,2376663039,AU
2376663040,2376728575,DE
+2376728576,2376761343,GB
+2376761344,2376777727,CZ
+2376777728,2376781823,BA
+2376781824,2376783871,ES
+2376785920,2376794111,UA
2376794112,2376859647,CH
2376859648,2376925183,FI
2376925184,2377056255,US
@@ -55207,7 +63351,9 @@
2378170368,2378235903,FI
2378235904,2378301439,US
2378301440,2378366975,FR
-2378366976,2378694655,US
+2378366976,2378432511,US
+2378432512,2378498047,TR
+2378498048,2378694655,US
2378694656,2378760191,DE
2378760192,2378825727,AT
2378825728,2378891263,US
@@ -55223,7 +63369,9 @@
2380595200,2380660735,JP
2380660736,2380726271,US
2380726272,2380791807,GB
-2380791808,2381381631,US
+2380791808,2381119487,US
+2381119488,2381185023,GR
+2381185024,2381381631,US
2381381632,2381447167,GB
2381447168,2381512703,US
2381512704,2381578239,AU
@@ -55236,6 +63384,7 @@
2382102528,2382168063,NL
2382168064,2382233599,BE
2382233600,2382299135,US
+2382299136,2382331903,GR
2382364672,2385430655,CA
2385430656,2385430687,US
2385430688,2385903615,CA
@@ -55248,7 +63397,11 @@
2386988288,2386988543,CH
2386988544,2386989055,CA
2386989056,2386989311,GB
-2386989312,2387410943,CA
+2386989312,2387003391,CA
+2387003392,2387003647,GB
+2387003648,2387003903,CA
+2387003904,2387004159,GB
+2387004160,2387410943,CA
2387410944,2387476479,US
2387476480,2387542015,CA
2387542016,2387607551,US
@@ -55350,13 +63503,17 @@
2415656960,2415722495,GB
2415722496,2415788031,JP
2415788032,2415853567,US
+2415919104,2415984639,CN
2415984640,2416050175,JP
2416050176,2416115711,NL
2416115712,2416181247,US
2416181248,2416246783,FI
2416246784,2416312319,US
2416312320,2416377855,AU
-2416443392,2416967679,US
+2416377856,2416443391,CN
+2416443392,2416705535,US
+2416705536,2416771071,CN
+2416771072,2416967679,US
2416967680,2417033215,IN
2417033216,2417229823,US
2417229824,2417295359,ES
@@ -55374,6 +63531,7 @@
2418737152,2418802687,NL
2418802688,2418868223,EU
2418868224,2419326975,US
+2419326976,2419392511,CN
2419392512,2419458047,AU
2419458048,2419523583,NL
2419523584,2419589119,AU
@@ -55413,6 +63571,7 @@
2423783424,2423848959,FJ
2423848960,2423914495,US
2423914496,2423980031,TR
+2423980032,2424045567,CN
2424045568,2424111103,GB
2424111104,2424242175,US
2424242176,2424307711,NO
@@ -55423,9 +63582,7 @@
2425487360,2426667007,US
2426667008,2426732543,NO
2426732544,2426798079,FR
-2426798080,2426929151,US
-2426929152,2426994687,GB
-2426994688,2427256831,US
+2426798080,2427207679,US
2427256832,2427322367,GB
2427322368,2427453439,US
2427453440,2427584511,NO
@@ -55450,14 +63607,21 @@
2430205952,2430271487,AU
2430271488,2432172031,US
2432172032,2432237567,BE
-2432237568,2432696319,US
+2432237568,2432630783,US
+2432630784,2432696319,CN
2432696320,2433810431,NL
2433810432,2433875967,GB
2433875968,2436300799,NL
2436300800,2436366335,GB
2436366336,2436759551,NL
2436759552,2436825087,GB
-2436825088,2447376383,NL
+2436825088,2446983167,NL
+2446983168,2447015935,EU
+2447015936,2447015939,DK
+2447015940,2447015943,SE
+2447015944,2447015947,GB
+2447015948,2447048703,EU
+2447048704,2447376383,NL
2447376384,2447441919,GB
2447441920,2447507455,DE
2447507456,2447572991,FR
@@ -55466,7 +63630,50 @@
2447679820,2447679839,IT
2447679840,2447704063,DE
2447704064,2447769599,GB
-2447769600,2447835135,DE
+2447769600,2447769855,DE
+2447769856,2447770111,GB
+2447770112,2447775743,DE
+2447775744,2447777791,GB
+2447777792,2447781887,DE
+2447781888,2447782911,GB
+2447782912,2447783935,LU
+2447783936,2447784959,GB
+2447784960,2447785983,LU
+2447785984,2447788031,DE
+2447788032,2447790079,QA
+2447790080,2447792127,DE
+2447792128,2447792383,GB
+2447792384,2447793919,DE
+2447793920,2447794175,QA
+2447794176,2447796223,DE
+2447796224,2447798271,GB
+2447798272,2447801343,DE
+2447801344,2447802367,IT
+2447802368,2447806463,DE
+2447806464,2447808511,HU
+2447808512,2447810559,DE
+2447810560,2447812607,GB
+2447812608,2447813631,HU
+2447813632,2447813887,IE
+2447813888,2447814143,DE
+2447814144,2447814655,GB
+2447814656,2447815679,DE
+2447815680,2447816191,IT
+2447816192,2447816447,GB
+2447816448,2447816703,DE
+2447816704,2447817727,GB
+2447817728,2447821055,DE
+2447821056,2447821311,QA
+2447821312,2447821823,GB
+2447821824,2447824895,IT
+2447824896,2447826943,DE
+2447826944,2447827967,GB
+2447827968,2447830015,DE
+2447830016,2447830527,IT
+2447830528,2447833087,DE
+2447833088,2447833599,GB
+2447833600,2447834111,DE
+2447834112,2447835135,IT
2447835136,2447900671,FR
2447900672,2447966207,CH
2447966208,2448031743,GB
@@ -55519,7 +63726,7 @@
2453864448,2453929983,CH
2453929984,2454061055,US
2454061056,2454126591,GB
-2454126592,2454192127,US
+2454159360,2454192127,US
2454192128,2454257663,NO
2454257664,2454388735,US
2454388736,2454454271,SE
@@ -55649,7 +63856,6 @@
2468151296,2468189663,DK
2468189664,2468189695,GB
2468189696,2468216831,DK
-2468216832,2468282367,EU
2468282368,2468347903,US
2468347904,2468478975,CZ
2468478976,2468937727,US
@@ -55878,23 +64084,27 @@
2514419712,2514485247,GB
2514485248,2514514431,DE
2514514432,2514514687,NL
-2514514688,2515599359,DE
-2515599360,2515664895,EU
-2515664896,2516254719,DE
+2514514688,2516254719,DE
2516254720,2516320255,FR
2516320256,2516451327,US
2516451328,2516516863,GB
-2516582400,2523201535,JP
+2516582400,2516647935,CN
+2516647936,2523201535,JP
2523201536,2523267071,AU
2523267072,2523529215,US
2523529216,2523594751,NO
-2523594752,2523660287,AT
-2523660288,2524971007,US
+2523660288,2524119039,US
+2524119040,2524184575,CN
+2524184576,2524315647,TW
+2524315648,2524512255,US
+2524512256,2524643327,CN
+2524643328,2524971007,US
2524971008,2525036543,ES
2525036544,2525102079,EU
2525102080,2525233151,US
2525233152,2525298687,SE
2525298688,2525626367,US
+2525626368,2525757439,CN
2525757440,2525822975,GR
2525822976,2526085119,US
2526085120,2526216191,IT
@@ -55930,7 +64140,9 @@
2530607104,2530672639,ES
2530672640,2530803711,US
2530803712,2530869247,IT
-2530869248,2531459071,US
+2530869248,2531196927,US
+2531196928,2531262463,CN
+2531262464,2531459071,US
2531459072,2531524607,SE
2531524608,2531590143,US
2531590144,2531655679,AU
@@ -55939,13 +64151,13 @@
2532114432,2532179967,GB
2532179968,2532376575,US
2532376576,2532442111,ES
-2532442112,2532507647,FR
2532507648,2532573183,US
2532573184,2532638719,ES
2532638720,2533031935,US
2533031936,2533097471,BE
2533097472,2533228543,US
2533228544,2533294079,PL
+2533294080,2533359615,CN
2533359616,2539978751,IT
2539978752,2540240895,US
2540240896,2540306431,FI
@@ -56006,7 +64218,6 @@
2555641856,2555707391,BR
2555707392,2555903999,US
2555904000,2555969535,CH
-2555969536,2556035071,FR
2556035072,2556100607,NO
2556100608,2556166143,AU
2556166144,2556231679,BR
@@ -56045,8 +64256,10 @@
2561671168,2564947967,US
2564947968,2565013503,SG
2565013504,2565210111,US
+2566914048,2566979583,CN
2566979584,2567045119,FI
2567045120,2567110655,US
+2567110656,2567176191,CN
2567176192,2567241727,US
2567241728,2567307263,SI
2567307264,2567897087,US
@@ -56056,7 +64269,9 @@
2568093696,2568159231,US
2568159232,2568224767,PL
2568224768,2568290303,SG
-2568290304,2569601023,US
+2568290304,2569142271,US
+2569142272,2569404415,CN
+2569404416,2569601023,US
2569601024,2569666559,CA
2569666560,2569797631,US
2569797632,2569863167,NO
@@ -56072,7 +64287,10 @@
2572944896,2572945919,EU
2572945920,2572946175,DE
2572946176,2573008895,EU
-2573008896,2573533183,DE
+2573008896,2573402111,DE
+2573402112,2573467647,CN
+2573467648,2573533183,DE
+2573533184,2573598719,CN
2573598720,2573926399,US
2573926400,2573991935,AU
2573991936,2574123007,CH
@@ -56082,16 +64300,16 @@
2574315008,2574315263,NO
2574315264,2574319615,SE
2574319616,2574647295,US
-2583691264,2584018943,US
-2584018944,2584084479,CA
-2584084480,2584215551,US
+2574647296,2574778367,CN
+2574778368,2583691263,JP
+2583691264,2584215551,US
2584215552,2584281087,GB
2584281088,2584346623,US
2584346624,2584412159,KR
2584412160,2584477695,CA
2584477696,2584608767,US
-2584608768,2584805375,CH
-2584805376,2585001983,US
+2584608768,2584739839,CH
+2584739840,2585001983,US
2585001984,2585067519,CA
2585067520,2585788415,US
2585788416,2585853951,GB
@@ -56253,7 +64471,10 @@
2627010560,2627076095,NZ
2627076096,2627141631,NL
2627141632,2627469311,US
-2634022912,2635399167,JP
+2634022912,2634088447,CN
+2634088448,2635202559,JP
+2635202560,2635268095,CN
+2635268096,2635399167,JP
2635399168,2635530239,US
2635530240,2635595775,FR
2635595776,2635661311,FI
@@ -56263,6 +64484,7 @@
2635988992,2636120063,US
2636120064,2637561855,ID
2637561856,2638020607,US
+2638020608,2638086143,CN
2638086144,2638151679,US
2638151680,2639462399,JP
2639462400,2639593471,GB
@@ -56282,6 +64504,7 @@
2640576512,2640642047,EC
2640642048,2641952767,JP
2641952768,2642018303,US
+2642018304,2642083839,CN
2642083840,2642149375,US
2642149376,2642214911,FI
2642214912,2642280447,SE
@@ -56297,8 +64520,11 @@
2643197952,2643263487,GB
2643263488,2643460095,US
2643460096,2643525631,FI
-2643525632,2644180991,US
+2643525632,2643722239,US
+2643722240,2643787775,CN
+2643787776,2644180991,US
2644180992,2644246527,AU
+2644246528,2644312063,CN
2644312064,2644377599,IS
2644377600,2644443135,PL
2644443136,2644508671,FR
@@ -56353,6 +64579,7 @@
2650406912,2650603519,US
2650603520,2650669055,CO
2650669056,2650734591,US
+2650734592,2650800127,CN
2650800128,2653159423,US
2653159424,2653421567,NO
2653421568,2653487103,AU
@@ -56365,7 +64592,6 @@
2653945856,2654011391,US
2654011392,2654076927,ES
2654076928,2654142463,FR
-2654142464,2654207999,CA
2654208000,2654339071,US
2654339072,2654404607,AU
2654404608,2654994431,US
@@ -56564,7 +64790,12 @@
2678652928,2678718463,US
2678718464,2678783999,GB
2678784000,2678849535,NO
-2678849536,2678915071,US
+2678849536,2678885375,US
+2678885376,2678885631,GB
+2678885632,2678885887,DE
+2678885888,2678886143,US
+2678886144,2678886399,NL
+2678886400,2678915071,US
2678915072,2678980607,FR
2678980608,2679046143,US
2679046144,2679111679,CA
@@ -56636,7 +64867,9 @@
2686910464,2686975999,US
2686976000,2687041535,GR
2687041536,2687238143,US
-2687238144,2687299119,DE
+2687238144,2687297824,DE
+2687297825,2687297828,FR
+2687297829,2687299119,DE
2687299120,2687299127,US
2687299128,2687299135,CN
2687299136,2687762431,DE
@@ -56879,6 +65112,7 @@
2727018496,2727084031,CA
2727084032,2727346175,US
2727346176,2727608319,AU
+2734686208,2734751743,CN
2734751744,2734817279,GB
2734817280,2734882815,US
2734882816,2734948351,SE
@@ -56904,10 +65138,13 @@
2742681600,2742747135,IN
2742747136,2742779903,CA
2742812672,2742878207,US
+2742878208,2742943743,CN
2742943744,2743009279,US
2743009280,2743140351,AU
2743140352,2743205887,US
-2743205888,2744516607,JP
+2743205888,2743992319,JP
+2743992320,2744057855,CN
+2744057856,2744516607,JP
2744516608,2744647679,US
2744647680,2744713215,KR
2744713216,2744844287,US
@@ -56930,15 +65167,24 @@
2746089472,2746155007,NO
2746155008,2746220543,NL
2746220544,2746286079,US
+2746286080,2746351615,CN
2746351616,2746417151,CR
+2746417152,2746482687,CN
2746482688,2746548223,KR
2746548224,2747072511,US
2747072512,2747138047,AU
2747138048,2747465727,US
2747465728,2748055551,ZA
-2748055552,2748317695,US
-2748317696,2749628415,JP
-2749628416,2749890559,US
+2748055552,2748121087,CN
+2748121088,2748317695,US
+2748317696,2748645375,JP
+2748645376,2748710911,KR
+2748710912,2749235199,JP
+2749235200,2749300735,KR
+2749300736,2749628415,JP
+2749628416,2749693951,US
+2749693952,2749759487,KR
+2749759488,2749890559,US
2749890560,2750021631,AU
2750021632,2750349311,US
2750349312,2750414847,KR
@@ -56946,7 +65192,8 @@
2750873600,2750939135,CL
2750939136,2751070207,US
2751070208,2751135743,CL
-2751135744,2751463423,US
+2751135744,2751397887,US
+2751397888,2751463423,KR
2751528960,2751660031,FR
2751660032,2751725567,AT
2751725568,2751791103,SE
@@ -57028,7 +65275,6 @@
2760245248,2760310783,GB
2760310784,2760376319,SE
2760376320,2760507391,GB
-2760507392,2760572927,FR
2760572928,2760638463,DE
2760638464,2760703999,NL
2760704000,2760769535,FI
@@ -57124,14 +65370,14 @@
2780926272,2780926303,FR
2780926304,2780926319,IT
2780926320,2780926327,GB
-2780926328,2780926823,US
-2780926824,2780926847,GB
-2780926848,2780926975,US
+2780926328,2780926335,US
+2780926336,2780926367,GB
+2780926368,2780926823,US
+2780926824,2780926879,GB
+2780926880,2780926975,US
2780926976,2780927487,GB
2780927488,2780927743,US
-2780927744,2780927999,GB
-2780928000,2780928031,US
-2780928032,2780928127,GB
+2780927744,2780928127,GB
2780928128,2780928383,US
2780928384,2780928415,GB
2780928416,2780928447,US
@@ -57177,7 +65423,9 @@
2780946128,2780946135,CA
2780946136,2780947903,US
2780947904,2780947967,MY
-2780947968,2780952967,US
+2780947968,2780948815,US
+2780948816,2780948823,MY
+2780948824,2780952967,US
2780952968,2780952975,GB
2780952976,2780954623,US
2780954624,2781020159,KR
@@ -57235,7 +65483,11 @@
2788243472,2788243487,SG
2788243488,2788245007,US
2788245008,2788245023,CA
-2788245024,2788261887,US
+2788245024,2788247863,US
+2788247864,2788247871,GB
+2788247872,2788253183,US
+2788253184,2788253191,JP
+2788253192,2788261887,US
2788261888,2788294655,GB
2788294656,2789212159,US
2789212160,2789277695,AU
@@ -57325,8 +65577,8 @@
2815164416,2815229951,US
2815229952,2815295487,ID
2815295488,2815984639,US
-2815984640,2815985407,IL
-2815985408,2815985663,US
+2815984640,2815985151,IL
+2815985152,2815985663,US
2815985664,2815986687,IL
2815986688,2815986815,GB
2815986816,2815986831,US
@@ -57501,13 +65753,14 @@
2848522240,2848587775,AU
2848587776,2848653311,ZA
2848653312,2848980991,US
-2848980992,2849177855,AU
+2848980992,2849177855,KR
2849177856,2849178111,CN
-2849178112,2849178367,KR
-2849178368,2849178623,AU
+2849178112,2849178623,KR
2849178624,2849178879,ID
2849178880,2849179135,VN
-2849179136,2849964031,AU
+2849179136,2849898495,KR
+2849898496,2849898751,AU
+2849898752,2849964031,KR
2849964032,2850029567,PH
2850029568,2851995647,US
2852126720,2853306367,US
@@ -57516,7 +65769,7 @@
2853765120,2853830655,MX
2853830656,2854617087,US
2854617088,2854682623,MY
-2854682624,2855469055,US
+2854748160,2855469055,US
2855469056,2855534591,AR
2855534592,2856058879,US
2856058880,2856124415,CH
@@ -57550,6 +65803,10 @@
2867855360,2868117503,US
2868379648,2868772863,US
2868838400,2868903935,BE
+2868903936,2869035007,SG
+2869035008,2869166079,JP
+2869166080,2869428223,TH
+2869428224,2869952511,CN
2869952512,2870018047,FR
2870018048,2870083583,DE
2870083584,2870149119,FR
@@ -57568,8 +65825,17 @@
2870935552,2871001087,HU
2871001088,2871066623,SE
2871066624,2871083007,CH
-2873098240,2874146815,US
-2877292544,2885681151,US
+2871132160,2872049663,CN
+2872049664,2873098239,IN
+2873098240,2873884671,US
+2873884672,2874146815,IN
+2874146816,2875195391,CN
+2875195392,2875719679,TH
+2875719680,2877292543,CN
+2877292544,2882469887,US
+2882469888,2882535423,SG
+2882535424,2883583999,CN
+2883584000,2885681151,VN
2894069760,2894921727,US
2894921728,2895118335,GB
2895118336,2895301887,US
@@ -57596,9 +65862,49 @@
2899443712,2899574783,FR
2899574784,2899902463,GB
2902458368,2902462463,A1
-2902462464,2902470936,US
+2902462464,2902470775,US
+2902470776,2902470777,BD
+2902470778,2902470936,US
2902470937,2902470938,LK
-2902470939,2902507519,US
+2902470939,2902470986,US
+2902470987,2902470989,BD
+2902470990,2902471468,US
+2902471469,2902471470,AU
+2902471471,2902471895,US
+2902471896,2902471897,AU
+2902471898,2902471960,US
+2902471961,2902471962,AU
+2902471963,2902472018,US
+2902472019,2902472021,AL
+2902472022,2902472037,US
+2902472038,2902472039,AU
+2902472040,2902472725,US
+2902472726,2902472728,BD
+2902472729,2902472788,US
+2902472789,2902472790,LK
+2902472791,2902472813,US
+2902472814,2902472814,LK
+2902472815,2902472834,US
+2902472835,2902472836,BD
+2902472837,2902473028,US
+2902473029,2902473031,IN
+2902473032,2902473107,US
+2902473108,2902473109,BD
+2902473110,2902473556,US
+2902473557,2902473558,LK
+2902473559,2902473649,US
+2902473650,2902473650,BD
+2902473651,2902473652,US
+2902473653,2902473653,BD
+2902473654,2902474023,US
+2902474024,2902474032,RU
+2902474033,2902474062,US
+2902474063,2902474073,RU
+2902474074,2902475263,US
+2902475264,2902475327,CY
+2902475328,2902492671,US
+2902492672,2902493183,IN
+2902493184,2902507519,US
2902507520,2902515711,CA
2902515712,2904555519,US
2904555520,2904817663,CA
@@ -57608,7 +65914,9 @@
2905378304,2905378815,CA
2905378816,2905379071,US
2905379072,2905379583,CA
-2905379584,2905381887,US
+2905379584,2905380607,US
+2905380608,2905380863,CA
+2905380864,2905381887,US
2905381888,2905382016,CA
2905382017,2905384959,US
2905384960,2905385471,CA
@@ -57628,24 +65936,34 @@
2905428968,2905428975,AE
2905428976,2905432975,US
2905432976,2905432983,AE
-2905432984,2905449983,US
+2905432984,2905441535,US
+2905441536,2905441791,DE
+2905441792,2905446655,US
+2905446656,2905446911,DE
+2905446912,2905449983,US
2905449984,2905451007,CA
2905451008,2905451519,US
2905451520,2905451647,PA
-2905451648,2905451775,US
-2905451776,2905451903,PA
-2905451904,2905473023,US
+2905451648,2905473023,US
2905473024,2905481215,CA
2905481216,2913992703,US
2913992704,2914516991,CA
2914516992,2915250175,US
2915250176,2915254271,CA
-2915254272,2915765279,US
+2915254272,2915274751,US
+2915274752,2915274815,PL
+2915274816,2915275007,US
+2915275008,2915275071,PL
+2915275072,2915275263,US
+2915275264,2915275327,PL
+2915275328,2915516671,US
+2915516672,2915516927,CA
+2915516928,2915765279,US
2915765280,2915765287,IN
2915765288,2915765343,US
2915765344,2915765351,NZ
2915765352,2915765367,US
-2915765368,2915765375,PE
+2915765368,2915765375,ZA
2915765376,2915765431,US
2915765432,2915765439,MX
2915765440,2915765471,US
@@ -57677,7 +65995,7 @@
2915767904,2915768191,US
2915768192,2915768199,GB
2915768200,2915768303,US
-2915768304,2915768311,IL
+2915768304,2915768311,MX
2915768312,2915768359,US
2915768360,2915768367,GB
2915768368,2915768375,US
@@ -57698,15 +66016,29 @@
2915769240,2915769247,CA
2915769248,2915769295,US
2915769296,2915769303,BR
-2915769304,2915772671,US
+2915769304,2915770167,US
+2915770168,2915770175,BR
+2915770176,2915770255,US
+2915770256,2915770263,CA
+2915770264,2915770279,JE
+2915770280,2915770311,US
+2915770312,2915770319,MX
+2915770320,2915771103,US
+2915771104,2915771135,CA
+2915771136,2915772671,US
2915772672,2915772679,IN
2915772680,2915772711,US
2915772712,2915772719,GB
-2915772720,2915773023,US
+2915772720,2915772751,US
+2915772752,2915772759,DE
+2915772760,2915773023,US
2915773024,2915773039,IN
2915773040,2915773175,US
2915773176,2915773183,KW
-2915773184,2915794959,US
+2915773184,2915773791,US
+2915773792,2915773807,CA
+2915773808,2915773839,JE
+2915773840,2915794959,US
2915794960,2915794975,MX
2915794976,2915795007,US
2915795008,2915795023,BR
@@ -57920,13 +66252,17 @@
2915808248,2915808255,DE
2915808256,2915810471,US
2915810472,2915810479,GB
-2915810480,2915811135,US
+2915810480,2915810647,US
+2915810648,2915810663,CA
+2915810664,2915811135,US
2915811136,2915811199,IN
2915811200,2915958783,US
2915958784,2916024319,CA
-2916024320,2916110623,US
-2916110624,2916110639,CA
-2916110640,2916163583,US
+2916024320,2916118223,US
+2916118224,2916118231,LK
+2916118232,2916121087,US
+2916121088,2916121343,GB
+2916121344,2916163583,US
2916163584,2916171775,CA
2916171776,2916184063,US
2916184064,2916196351,CA
@@ -57934,60 +66270,94 @@
2916253696,2916286463,CA
2916286464,2916319231,US
2916319232,2916335615,PR
-2916352000,2916368383,US
+2916335616,2916368383,US
2916368384,2916401151,CA
-2916401152,2916417535,US
-2916417536,2916434431,CA
-2916434432,2916434559,US
+2916401152,2916433919,US
+2916433920,2916434175,CA
+2916434176,2916434559,US
2916434560,2916434591,CA
-2916434592,2916437503,US
-2916437504,2916437567,CA
-2916437568,2916440063,US
-2916440064,2916440095,CA
-2916440096,2916440143,US
+2916434592,2916434623,US
+2916434624,2916434655,CA
+2916434656,2916436487,US
+2916436488,2916436495,CA
+2916436496,2916436543,US
+2916436544,2916436607,CA
+2916436608,2916437039,US
+2916437040,2916437047,DE
+2916437048,2916437055,CN
+2916437056,2916437063,GB
+2916437064,2916437199,US
+2916437200,2916437207,GB
+2916437208,2916437215,TH
+2916437216,2916437231,US
+2916437232,2916437239,SG
+2916437240,2916440143,US
2916440144,2916440159,CA
2916440160,2916440175,US
2916440176,2916440191,CA
-2916440192,2916441119,US
+2916440192,2916440287,US
+2916440288,2916440295,CA
+2916440296,2916441119,US
2916441120,2916441151,CA
-2916441152,2916441343,US
+2916441152,2916441199,US
+2916441200,2916441207,MY
+2916441208,2916441343,US
2916441344,2916442111,CA
2916442112,2916442623,US
2916442624,2916442879,CA
-2916442880,2916443582,US
-2916443583,2916443614,PK
+2916442880,2916443614,US
2916443615,2916443647,CA
-2916443648,2916443903,US
-2916443904,2916444159,CA
-2916444160,2916444927,US
+2916443648,2916444927,US
2916444928,2916445951,CA
2916445952,2916449279,US
2916449280,2916450303,CA
2916450304,2916515839,US
-2916548608,2916581375,US
+2916515840,2916519935,CA
+2916524032,2916581375,US
2916581376,2916614143,PR
2916614144,2917167679,US
2917167680,2917167743,BR
-2917167744,2917167775,US
-2917167776,2917167807,IR
-2917167808,2917167967,US
+2917167744,2917167807,US
+2917167808,2917167839,RS
+2917167840,2917167871,TR
+2917167872,2917167903,US
+2917167904,2917167935,TR
+2917167936,2917167967,US
2917167968,2917167999,GB
-2917168000,2917168095,US
+2917168000,2917168031,UA
+2917168032,2917168095,US
2917168096,2917168127,NZ
2917168128,2917168223,US
2917168224,2917168255,BR
-2917168256,2917168287,US
-2917168288,2917168319,TR
+2917168256,2917168319,US
2917168320,2917168351,AR
-2917168352,2917168383,US
+2917168352,2917168383,DE
2917168384,2917168415,BR
-2917168416,2917168607,US
+2917168416,2917168447,US
+2917168448,2917168479,BR
+2917168480,2917168607,US
2917168608,2917168639,BR
2917168640,2917169663,US
2917169664,2917169695,DE
-2917169696,2917195775,US
-2917195776,2917196031,CA
-2917196032,2917199871,A2
+2917169696,2917170015,US
+2917170016,2917170047,UA
+2917170048,2917170079,BR
+2917170080,2917170111,US
+2917170112,2917170143,RU
+2917170144,2917170239,US
+2917170240,2917170271,RU
+2917170272,2917170303,BR
+2917170304,2917193025,US
+2917193026,2917193087,SG
+2917193088,2917194145,US
+2917194146,2917194158,SG
+2917194159,2917194201,US
+2917194202,2917194206,SG
+2917194207,2917195775,US
+2917195776,2917196159,CA
+2917196160,2917196287,A2
+2917196288,2917196415,CA
+2917196416,2917199871,A2
2917199872,2917203967,CA
2917203968,2917210335,US
2917210336,2917210367,CA
@@ -57997,14 +66367,15 @@
2917257216,2917261311,KY
2917261312,2917265407,US
2917265408,2917269503,JM
-2917269504,2917572607,US
+2917269504,2917449727,US
+2917449728,2917466111,PR
+2917466112,2917572607,US
2917572608,2917580799,CA
2917580800,2917597439,US
2917597440,2917597695,GB
2917597696,2917621759,US
2917621760,2917629951,CA
-2917629952,2917646335,US
-2917662720,2917663231,US
+2917629952,2917663231,US
2917663232,2917663487,CA
2917663488,2917665791,US
2917665792,2917666303,CA
@@ -58022,8 +66393,8 @@
2917682432,2917683455,CA
2917683456,2917685503,US
2917685504,2917686015,CA
-2917686016,2917690367,US
-2917690368,2917690879,CA
+2917686016,2917690623,US
+2917690624,2917690879,CA
2917690880,2917693183,US
2917693184,2917693951,CA
2917693952,2917695231,US
@@ -58032,21 +66403,41 @@
2917695744,2917696255,CA
2917696256,2917702399,US
2917702400,2917707007,CA
-2917707008,2917714175,US
+2917707008,2917707519,US
+2917707520,2917707775,CA
+2917707776,2917714175,US
2917714176,2917714431,CA
2917714432,2917718527,US
2917718528,2917719039,CA
2917719040,2917722367,US
2917722368,2917722623,CA
-2917722624,2917842175,US
+2917722624,2917802367,US
+2917802368,2917802375,CA
+2917802376,2917804935,US
+2917804936,2917804943,CA
+2917804944,2917815575,US
+2917815576,2917815583,RO
+2917815584,2917834751,US
+2917834752,2917835007,GB
+2917835008,2917842175,US
2917842176,2917842431,CA
-2917842432,2918055935,US
-2918055936,2918121471,CA
+2917842432,2917858047,US
+2917858048,2917858303,BE
+2917858304,2918014975,US
+2918014976,2918023167,CA
+2918023168,2918043647,US
+2918043648,2918047743,CA
+2918047744,2918051839,US
+2918051840,2918121471,CA
2918121472,2918154239,US
2918154240,2918170623,CA
2918170624,2918199679,US
2918199680,2918199743,CA
-2918199744,2918232063,US
+2918199744,2918200287,US
+2918200288,2918200303,CA
+2918200304,2918201551,US
+2918201552,2918201567,CA
+2918201568,2918232063,US
2918232064,2918236159,CA
2918236160,2918260735,US
2918260736,2918264831,CA
@@ -58064,26 +66455,63 @@
2918375424,2918391807,US
2918391808,2918395903,CA
2918395904,2918404095,US
-2918404096,2918408191,PR
-2918408192,2918432767,US
+2918404096,2918406911,PR
+2918406912,2918407423,US
+2918407424,2918408191,PR
+2918408192,2918416383,US
+2918416384,2918420479,CA
+2918420480,2918432767,US
2918432768,2918436863,CA
-2918436864,2918533119,US
+2918436864,2918460095,US
+2918460096,2918460159,GB
+2918460160,2918469631,US
+2918469632,2918471423,CA
+2918471424,2918471679,US
+2918471680,2918473727,CA
+2918473728,2918477823,US
+2918477824,2918481919,CA
+2918481920,2918514943,US
+2918514944,2918515079,CA
+2918515080,2918532111,US
+2918532112,2918532119,CN
+2918532120,2918532143,US
+2918532144,2918532151,PK
+2918532152,2918533119,US
2918533120,2918533127,CN
-2918533128,2918533167,US
-2918533168,2918533183,CN
-2918533184,2918533247,US
-2918533248,2918533375,CA
-2918533376,2918534911,US
+2918533128,2918533143,US
+2918533144,2918533151,CN
+2918533152,2918533159,US
+2918533160,2918533167,CN
+2918533168,2918533191,US
+2918533192,2918533199,AU
+2918533200,2918533215,CN
+2918533216,2918534687,US
+2918534688,2918534695,CN
+2918534696,2918534703,US
+2918534704,2918534735,CN
+2918534736,2918534751,US
+2918534752,2918534767,CN
+2918534768,2918534815,US
+2918534816,2918534879,CN
+2918534880,2918534911,US
2918534912,2918534943,KR
-2918534944,2918580223,US
+2918534944,2918534975,CN
+2918534976,2918534983,US
+2918534984,2918534991,ID
+2918534992,2918535807,US
+2918535808,2918535967,CN
+2918535968,2918535999,US
+2918536000,2918536191,CN
+2918536192,2918536703,A1
+2918536704,2918580223,US
2918580224,2918588415,CA
2918588416,2918596607,US
2918596608,2918604799,CA
-2918604800,2918608895,US
-2918612992,2918760447,US
+2918604800,2918699007,US
+2918699008,2918703103,CA
+2918703104,2918760447,US
2918760448,2918776831,CA
-2918776832,2918813695,US
-2918825984,2918828031,US
+2918776832,2918828031,US
2918828032,2918828543,UA
2918828544,2918829055,ES
2918829056,2918829183,US
@@ -58094,15 +66522,325 @@
2918829696,2918829823,DE
2918829824,2918830079,CN
2918830080,2918834175,CA
-2918834176,2918838271,US
-2918838272,2918875135,CA
+2918834176,2918842367,US
+2918842368,2918875135,CA
2918875136,2918973439,US
2918973440,2918989823,CA
-2919006208,2919174143,US
+2918989824,2919010303,US
+2919010304,2919010559,CA
+2919010560,2919020543,US
+2919020544,2919020575,CA
+2919020576,2919020591,US
+2919020592,2919020655,CA
+2919020656,2919020711,US
+2919020712,2919020719,CA
+2919020720,2919020727,US
+2919020728,2919020751,CA
+2919020752,2919020767,US
+2919020768,2919020799,CA
+2919020800,2919063551,US
+2919063552,2919064063,MX
+2919064064,2919067655,CN
+2919067656,2919067695,US
+2919067696,2919067703,PK
+2919067704,2919067711,ES
+2919067712,2919067719,CN
+2919067720,2919067727,TR
+2919067728,2919067735,IN
+2919067736,2919067743,US
+2919067744,2919067751,BR
+2919067752,2919067759,IN
+2919067760,2919067767,CA
+2919067768,2919067775,US
+2919067776,2919067783,AU
+2919067784,2919067791,US
+2919067792,2919067799,BR
+2919067800,2919067823,US
+2919067824,2919067831,BR
+2919067832,2919067839,US
+2919067840,2919067847,BR
+2919067848,2919067863,US
+2919067864,2919067871,ES
+2919067872,2919067879,CA
+2919067880,2919067887,TW
+2919067888,2919067895,IE
+2919067896,2919067903,CA
+2919067904,2919067911,US
+2919067912,2919067919,CN
+2919067920,2919067927,US
+2919067928,2919067935,RU
+2919067936,2919067943,BR
+2919067944,2919067951,PL
+2919067952,2919067959,CN
+2919067960,2919067967,IL
+2919067968,2919067975,US
+2919067976,2919067983,CA
+2919067984,2919067999,CN
+2919068000,2919068007,CM
+2919068008,2919068015,BR
+2919068016,2919068023,US
+2919068024,2919068031,HK
+2919068032,2919068039,US
+2919068040,2919068047,IN
+2919068048,2919068055,CA
+2919068056,2919068087,US
+2919068088,2919068095,TR
+2919068096,2919068103,US
+2919068104,2919068111,AE
+2919068112,2919068119,US
+2919068120,2919068127,CN
+2919068128,2919068135,US
+2919068136,2919068143,PK
+2919068144,2919068151,IN
+2919068152,2919068159,JM
+2919068160,2919068167,US
+2919068168,2919068175,CA
+2919068176,2919068183,US
+2919068184,2919068191,CA
+2919068192,2919068199,PR
+2919068200,2919068207,US
+2919068208,2919068215,GB
+2919068216,2919068223,CA
+2919068224,2919068239,US
+2919068240,2919068247,CN
+2919068248,2919068255,AU
+2919068256,2919068271,US
+2919068272,2919068279,SG
+2919068280,2919068287,US
+2919068288,2919068295,CN
+2919068296,2919068303,BR
+2919068304,2919068311,RO
+2919068312,2919068319,MY
+2919068320,2919068335,US
+2919068336,2919068343,RU
+2919068344,2919068359,US
+2919068360,2919068367,CM
+2919068368,2919068375,CN
+2919068376,2919068383,US
+2919068384,2919068391,BR
+2919068392,2919068415,US
+2919068416,2919068423,BR
+2919068424,2919068431,CN
+2919068432,2919068495,US
+2919068496,2919068503,BR
+2919068504,2919068511,IN
+2919068512,2919068519,CN
+2919068520,2919068527,US
+2919068528,2919068535,PL
+2919068536,2919068551,IN
+2919068552,2919068559,AU
+2919068560,2919068567,CN
+2919068568,2919068575,IN
+2919068576,2919068583,US
+2919068584,2919068591,CN
+2919068592,2919068599,IN
+2919068600,2919068607,CM
+2919068608,2919068615,MY
+2919068616,2919068647,US
+2919068648,2919068655,AU
+2919068656,2919068663,CN
+2919068664,2919068671,MY
+2919068672,2919068703,US
+2919068704,2919068711,IN
+2919068712,2919068719,JM
+2919068720,2919068727,US
+2919068728,2919068735,RU
+2919068736,2919068743,NO
+2919068744,2919068751,PR
+2919068752,2919068775,US
+2919068776,2919068783,HK
+2919068784,2919068791,IN
+2919068792,2919068799,CR
+2919068800,2919068815,NO
+2919068816,2919068823,US
+2919068824,2919068831,CA
+2919068832,2919068839,CN
+2919068840,2919068871,US
+2919068872,2919068879,CN
+2919068880,2919068887,DO
+2919068888,2919068895,SG
+2919068896,2919068911,US
+2919068912,2919068927,CN
+2919068928,2919068935,US
+2919068936,2919068943,ZA
+2919068944,2919068967,US
+2919068968,2919068975,RU
+2919068976,2919068991,US
+2919068992,2919068999,DO
+2919069000,2919069015,US
+2919069016,2919069031,CN
+2919069032,2919069039,US
+2919069040,2919069047,CN
+2919069048,2919069055,US
+2919069056,2919069063,CN
+2919069064,2919069071,AF
+2919069072,2919069079,CN
+2919069080,2919069087,US
+2919069088,2919069095,IN
+2919069096,2919069103,BZ
+2919069104,2919069111,US
+2919069112,2919069119,CN
+2919069120,2919069127,CA
+2919069128,2919069135,US
+2919069136,2919069143,CN
+2919069144,2919069151,BR
+2919069152,2919069159,US
+2919069160,2919069167,JM
+2919069168,2919069175,GB
+2919069176,2919069183,US
+2919069184,2919069191,PR
+2919069192,2919069199,US
+2919069200,2919069207,GB
+2919069208,2919069215,BR
+2919069216,2919069231,US
+2919069232,2919069239,ES
+2919069240,2919069255,GB
+2919069256,2919069271,CN
+2919069272,2919069295,US
+2919069296,2919069303,BR
+2919069304,2919069327,US
+2919069328,2919069335,BR
+2919069336,2919069343,TR
+2919069344,2919069359,US
+2919069360,2919069367,CN
+2919069368,2919069375,AU
+2919069376,2919069391,US
+2919069392,2919069399,GB
+2919069400,2919069407,US
+2919069408,2919069415,VN
+2919069416,2919069439,US
+2919069440,2919069447,CA
+2919069448,2919069455,US
+2919069456,2919069463,CN
+2919069464,2919069471,US
+2919069472,2919069479,CA
+2919069480,2919069487,CN
+2919069488,2919069495,US
+2919069496,2919069503,CN
+2919069504,2919069511,AR
+2919069512,2919069527,US
+2919069528,2919069535,TR
+2919069536,2919069543,US
+2919069544,2919069559,CN
+2919069560,2919069567,AE
+2919069568,2919069575,VN
+2919069576,2919069583,CN
+2919069584,2919069607,US
+2919069608,2919069615,CN
+2919069616,2919069623,QA
+2919069624,2919069631,PK
+2919069632,2919069639,TW
+2919069640,2919069663,US
+2919069664,2919069671,CA
+2919069672,2919069679,US
+2919069680,2919069687,CA
+2919069688,2919069703,US
+2919069704,2919069711,CN
+2919069712,2919069735,US
+2919069736,2919069743,BR
+2919069744,2919069823,US
+2919069824,2919069831,IN
+2919069832,2919069839,US
+2919069840,2919069847,BR
+2919069848,2919069895,US
+2919069896,2919069903,BR
+2919069904,2919070111,US
+2919070112,2919070119,ES
+2919070120,2919070303,US
+2919070304,2919070311,BR
+2919070312,2919070783,US
+2919070784,2919070791,BR
+2919070792,2919070919,US
+2919070920,2919070927,CA
+2919070928,2919070943,US
+2919070944,2919070951,BR
+2919070952,2919071143,US
+2919071144,2919071151,CN
+2919071152,2919170327,US
+2919170328,2919170335,PE
+2919170336,2919170351,US
+2919170352,2919170359,PE
+2919170360,2919170367,AU
+2919170368,2919170383,BR
+2919170384,2919170391,AU
+2919170392,2919170399,IN
+2919170400,2919170407,TR
+2919170408,2919170415,ES
+2919170416,2919170431,US
+2919170432,2919170439,JP
+2919170440,2919170447,IN
+2919170448,2919170463,TH
+2919170464,2919170487,US
+2919170488,2919170495,NL
+2919170496,2919170527,US
+2919170528,2919170535,BR
+2919170536,2919170551,US
+2919170552,2919170559,FR
+2919170560,2919170575,US
+2919170576,2919170583,FR
+2919170584,2919170599,US
+2919170600,2919170607,JP
+2919170608,2919170615,US
+2919170616,2919170623,CN
+2919170624,2919170639,US
+2919170640,2919170655,JP
+2919170656,2919170663,US
+2919170664,2919170671,PH
+2919170672,2919170679,JP
+2919170680,2919170695,US
+2919170696,2919170703,CN
+2919170704,2919170711,MX
+2919170712,2919170727,US
+2919170728,2919170735,IN
+2919170736,2919170751,US
+2919170752,2919170759,GB
+2919170760,2919170767,BR
+2919170768,2919170775,AR
+2919170776,2919170799,US
+2919170800,2919170815,SG
+2919170816,2919170863,US
+2919170864,2919170871,AU
+2919170872,2919170879,CH
+2919170880,2919170903,US
+2919170904,2919170911,GR
+2919170912,2919170919,BR
+2919170920,2919170935,US
+2919170936,2919170943,PH
+2919170944,2919170967,US
+2919170968,2919170975,NZ
+2919170976,2919171047,US
+2919171048,2919171055,BR
+2919171056,2919171071,US
+2919171072,2919171079,IN
+2919171080,2919171087,CL
+2919171088,2919171095,TR
+2919171096,2919171103,US
+2919171104,2919171111,PL
+2919171112,2919171119,US
+2919171120,2919171127,CL
+2919171128,2919171135,BR
+2919171136,2919171143,AU
+2919171144,2919171151,TR
+2919171152,2919171159,US
+2919171160,2919171167,AU
+2919171168,2919171311,US
+2919171312,2919171319,IL
+2919171320,2919171327,TW
+2919171328,2919171343,US
+2919171344,2919171351,BR
+2919171352,2919171399,US
+2919171400,2919171407,IT
+2919171408,2919171455,US
+2919171456,2919171463,BR
+2919171464,2919171479,US
+2919171480,2919171487,BR
+2919171488,2919174143,US
2919174144,2919178239,CA
2919178240,2919186431,US
2919186432,2919190527,CA
-2919190528,2919202815,US
+2919190528,2919202079,US
+2919202080,2919202111,BE
+2919202112,2919202815,US
2919206912,2919211007,CA
2919219200,2919235583,US
2919235584,2919759871,CA
@@ -58114,11 +66852,17 @@
2921497416,2921497423,IN
2921497424,2921497471,US
2921497472,2921497599,IN
-2921497600,2921503607,US
+2921497600,2921498383,US
+2921498384,2921498391,ID
+2921498392,2921500159,US
+2921500160,2921500415,GB
+2921500416,2921503607,US
2921503608,2921503615,GB
2921503616,2921503695,US
2921503696,2921503703,ID
-2921503704,2921508719,US
+2921503704,2921504431,US
+2921504432,2921504439,GB
+2921504440,2921508719,US
2921508720,2921508727,SE
2921508728,2921512703,US
2921512704,2921512959,CA
@@ -58128,53 +66872,90 @@
2925002752,2925527039,CA
2925527040,2926575615,US
2926575616,2927099903,CA
-2927099904,2928173103,US
+2927099904,2927112031,US
+2927112032,2927112039,CH
+2927112040,2927152175,US
+2927152176,2927152183,CH
+2927152184,2927154847,US
+2927154848,2927154855,CH
+2927154856,2927242751,US
+2927242752,2927243263,AE
+2927243264,2927254527,US
+2927254528,2927255039,AE
+2927255040,2927911183,US
+2927911184,2927911191,CH
+2927911192,2928173103,US
2928173104,2928173119,PH
2928173120,2928173151,US
2928173152,2928173159,RU
-2928173160,2928173343,US
+2928173160,2928173223,US
+2928173224,2928173231,JP
+2928173232,2928173343,US
2928173344,2928173351,NL
2928173352,2928173519,US
-2928173520,2928173527,GB
+2928173520,2928173527,JP
2928173528,2928173551,US
2928173552,2928173559,CA
-2928173560,2928173679,US
+2928173560,2928173671,US
+2928173672,2928173679,NZ
2928173680,2928173695,JP
2928173696,2928173711,US
2928173712,2928173727,JP
-2928173728,2928173775,US
-2928173776,2928173783,IE
-2928173784,2928173855,US
-2928173856,2928173871,AU
-2928173872,2928173903,US
+2928173728,2928173903,US
2928173904,2928173919,NZ
2928173920,2928173959,US
2928173960,2928173967,CA
-2928173968,2928174095,US
-2928174096,2928174103,CA
-2928174104,2928174575,US
-2928174576,2928174583,AU
-2928174584,2928174911,US
+2928173968,2928174087,US
+2928174088,2928174103,CA
+2928174104,2928174215,US
+2928174216,2928174223,MQ
+2928174224,2928174231,CA
+2928174232,2928174479,US
+2928174480,2928174487,SE
+2928174488,2928174911,US
2928174912,2928174919,AU
2928174920,2928175055,US
2928175056,2928175063,MX
-2928175064,2928175791,US
+2928175064,2928175143,US
+2928175144,2928175151,PH
+2928175152,2928175167,US
+2928175168,2928175175,RU
+2928175176,2928175207,US
+2928175208,2928175215,CA
+2928175216,2928175271,US
+2928175272,2928175279,NZ
+2928175280,2928175303,US
+2928175304,2928175311,CN
+2928175312,2928175399,US
+2928175400,2928175407,TR
+2928175408,2928175551,US
+2928175552,2928175567,CA
+2928175568,2928175655,US
+2928175656,2928175663,AU
+2928175664,2928175775,US
+2928175776,2928175791,PH
2928175792,2928175799,CA
-2928175800,2928175839,US
-2928175840,2928175847,SE
-2928175848,2928175967,US
+2928175800,2928175815,US
+2928175816,2928175823,CA
+2928175824,2928175967,US
2928175968,2928175975,ZA
-2928175976,2928176223,US
+2928175976,2928176007,US
+2928176008,2928176015,AU
+2928176016,2928176207,US
+2928176208,2928176223,ZA
2928176224,2928176231,JP
2928176232,2928176383,US
2928176384,2928176391,ES
-2928176392,2928176575,US
-2928176576,2928176591,MQ
-2928176592,2928176783,US
+2928176392,2928176519,US
+2928176520,2928176527,NL
+2928176528,2928176543,CN
+2928176544,2928176783,US
2928176784,2928176799,MX
2928176800,2928176895,US
2928176896,2928176903,CA
-2928176904,2928177151,US
+2928176904,2928176919,US
+2928176920,2928176927,CA
+2928176928,2928177151,US
2928177152,2928181247,CA
2928181248,2928218127,US
2928218128,2928218143,CA
@@ -58185,7 +66966,9 @@
2928226400,2928226407,US
2928226408,2928226415,CA
2928226416,2928226423,US
-2928226424,2928227583,CA
+2928226424,2928226551,CA
+2928226552,2928226559,US
+2928226560,2928227583,CA
2928227584,2928227783,US
2928227784,2928228087,CA
2928228088,2928228095,RU
@@ -58461,17 +67244,25 @@
2928278960,2928278991,US
2928278992,2928279015,CA
2928279016,2928279023,US
-2928279024,2928279551,CA
+2928279024,2928279383,CA
+2928279384,2928279391,US
+2928279392,2928279551,CA
2928279552,2928312319,US
2928312320,2928316415,CA
2928316416,2928318719,US
2928318720,2928318975,DO
-2928318976,2928321311,US
+2928318976,2928320519,US
+2928320520,2928320527,BR
+2928320528,2928321063,US
+2928321064,2928321071,AU
+2928321072,2928321311,US
2928321312,2928321327,GB
2928321328,2928321343,CN
2928321344,2928323135,US
2928323136,2928323143,RU
-2928323144,2928323967,US
+2928323144,2928323175,US
+2928323176,2928323183,AU
+2928323184,2928323967,US
2928323968,2928323983,RU
2928323984,2928328703,US
2928328704,2928336895,CA
@@ -59013,7 +67804,8 @@
2938710016,2938712063,AU
2938712064,2938716159,TW
2938716160,2938732543,JP
-2938732544,2938765311,SG
+2938732544,2938748927,SG
+2938748928,2938765311,JP
2938765312,2938961919,CN
2938961920,2938978303,HK
2938978304,2938996735,AU
@@ -59038,17 +67830,19 @@
2942763008,2942767103,JP
2942767104,2942771199,AU
2942771200,2942779391,ID
+2942779392,2942795775,VN
2942795776,2942959615,JP
2942959616,2942960639,VN
2942960640,2942961663,AU
2942961664,2942965759,ID
-2942965760,2942966783,AU
+2942965760,2942967807,AU
2942967808,2942975999,AF
2942976000,2942992383,KR
2942992384,2943025151,CN
2943025152,2943041535,PK
2943041536,2943057919,KR
2943057920,2943074303,AU
+2943074304,2943090687,PK
2943090688,2943221759,JP
2943221760,2943291391,PK
2943291392,2943295487,KR
@@ -59059,7 +67853,6 @@
2943311872,2943312895,HK
2943312896,2943313919,NZ
2943313920,2943314943,SG
-2943314944,2943315967,BD
2943315968,2943318015,ID
2943318016,2943320063,JP
2943320064,2943336447,PK
@@ -59074,8 +67867,7 @@
2946375680,2946383871,ID
2946383872,2946392063,IN
2946392064,2946393087,BD
-2946393088,2946394111,JP
-2946394112,2946395135,AU
+2946394112,2946396159,AU
2946396160,2946400255,JP
2946400256,2946416639,NC
2946416640,2946433023,PH
@@ -59084,10 +67876,8 @@
2947547136,2947579903,PH
2947579904,2947583999,KR
2947584000,2947586047,TO
-2947586048,2947588095,JP
2947588096,2947590143,ID
2947590144,2947592191,SG
-2947592192,2947596287,HK
2947596288,2947597311,IN
2947597312,2947598335,JP
2947598336,2947602431,AU
@@ -59107,7 +67897,246 @@
2948135936,2948136959,IN
2948136960,2948595711,CN
2948595712,2952790015,KR
-2969567232,2971664383,BR
+2952790016,2953314303,DE
+2953314304,2953379839,UA
+2953379840,2953445375,DE
+2953445376,2953453567,IT
+2953453568,2953455615,IS
+2953455616,2953457663,SK
+2953457664,2953459711,DE
+2953459712,2953461759,IT
+2953461760,2953465855,ES
+2953465856,2953465991,GB
+2953465992,2953467903,EU
+2953467904,2953469951,BE
+2953469952,2953478143,CH
+2953478144,2953510911,SE
+2953510912,2953576447,NO
+2953576448,2953592831,BG
+2953592832,2953596927,IR
+2953596928,2953598975,ES
+2953598976,2953601023,IT
+2953601024,2953603071,RU
+2953603072,2953605119,GB
+2953609216,2953707519,IL
+2953707520,2953838591,RU
+2953838592,2954100735,SA
+2954100736,2954362879,DK
+2954362880,2954625023,GB
+2954625024,2954641407,DE
+2954641408,2954643455,RU
+2954643456,2954645503,IQ
+2954645504,2954647551,AZ
+2954647552,2954657791,ES
+2954657792,2954756095,JO
+2954756096,2954821631,TR
+2954821632,2954887167,FR
+2954887168,2954891263,UA
+2954891264,2954895359,IT
+2954895360,2954897407,RU
+2954897408,2954899455,DE
+2954899456,2954901503,ES
+2954901504,2954903551,IT
+2954903552,2954905599,NL
+2954905600,2954907647,IE
+2954907648,2954909695,GB
+2954909696,2954911743,DE
+2954911744,2954919935,IE
+2954919936,2954928127,RU
+2954928128,2954932223,PL
+2954932224,2954936319,RU
+2954936320,2954938367,AM
+2954938368,2954940415,HU
+2954940416,2954944511,DE
+2954944512,2954946559,GB
+2954946560,2954948607,DE
+2954948608,2954950655,RU
+2954950656,2954952703,ES
+2954952704,2955018239,TR
+2955018240,2955051007,IE
+2955051008,2955055103,NL
+2955055104,2955083775,IE
+2955083776,2955149311,GB
+2955149312,2955411455,UA
+2955411456,2955673599,TR
+2955673600,2955804671,SA
+2955804672,2955837439,EE
+2955837440,2955845631,IR
+2955845632,2955853823,GB
+2955853824,2955870207,CH
+2955870208,2955935743,UA
+2955935744,2956230655,RU
+2956230656,2956238847,SI
+2956238848,2956242943,ES
+2956242944,2956244991,SE
+2956244992,2956247039,FR
+2956247040,2956249087,DE
+2956251136,2956253183,GB
+2956253184,2956255231,IE
+2956255232,2956259327,FR
+2956259328,2956261375,DE
+2956261376,2956263423,ES
+2956263424,2956296191,TR
+2956296192,2956328959,RU
+2956328960,2956460031,TR
+2956460032,2956468223,RU
+2956468224,2956470271,LV
+2956470272,2956472319,NL
+2956472320,2956474367,RU
+2956474368,2956476415,GB
+2956476416,2956492799,ES
+2956492800,2956496895,CH
+2956496896,2956500991,IR
+2956500992,2956507135,RU
+2956507136,2956508159,NL
+2956508160,2956508671,RU
+2956508672,2956509183,NL
+2956509184,2956517375,GB
+2956517376,2956521471,NL
+2956521472,2956525567,SE
+2956525568,2956533759,JO
+2956533760,2956535807,FR
+2956535808,2956537855,LV
+2956537856,2956541951,UA
+2956541952,2956543999,FR
+2956544000,2956546047,RU
+2956546048,2956548095,FR
+2956548096,2956550143,ME
+2956550144,2956554239,ES
+2956554240,2956558335,IT
+2956558336,2956574719,DE
+2956574720,2956576767,SE
+2956576768,2956578815,ES
+2956578816,2956582911,RU
+2956582912,2956587007,CH
+2956587008,2956589055,FR
+2956589056,2956593151,GB
+2956593152,2956595199,ES
+2956595200,2956597247,AZ
+2956597248,2956599295,NL
+2956599296,2956607487,RU
+2956607488,2956611583,PS
+2956611584,2956613631,IT
+2956613632,2956613887,GB
+2956613888,2956614143,NL
+2956614144,2956614399,FR
+2956614400,2956615679,EU
+2956615680,2956623871,GB
+2956623872,2956656639,GR
+2956656640,2956722175,RU
+2956722176,2956787711,BY
+2956787712,2956820479,IE
+2956820480,2956822527,NL
+2956822528,2956824575,SE
+2956824576,2956826623,PT
+2956826624,2956828671,DK
+2956828672,2956836863,AT
+2956836864,2956853247,SK
+2956853248,2956865535,HR
+2956865536,2956869631,IT
+2956869632,2956886015,RU
+2956886016,2956888063,GB
+2956888064,2956890111,BE
+2956890112,2956892159,IR
+2956892160,2956894207,IT
+2956894208,2956898303,NL
+2956898304,2956902399,RU
+2956902400,2956904447,NL
+2956904448,2956906495,DK
+2956906496,2956908543,GB
+2956908544,2956910591,RU
+2956910592,2956914687,CZ
+2956914688,2956918783,RU
+2956918784,2956984319,HU
+2956984320,2957049855,SE
+2957049856,2957058047,PS
+2957058048,2957066239,RU
+2957066240,2957068287,GB
+2957070336,2957074431,IT
+2957074432,2957082623,RU
+2957082624,2957115391,DE
+2957115392,2957180927,AT
+2957180928,2957189119,UA
+2957189120,2957193215,LV
+2957193216,2957195263,RU
+2957195264,2957197311,PS
+2957197312,2957201407,IR
+2957201408,2957201663,GB
+2957201664,2957201727,US
+2957201728,2957201743,CA
+2957201744,2957201759,MX
+2957201760,2957201775,BR
+2957201776,2957201791,AR
+2957201792,2957201807,BS
+2957201808,2957201823,VE
+2957201824,2957201839,AU
+2957201840,2957201855,JP
+2957201856,2957201871,HK
+2957201872,2957201887,RU
+2957201888,2957201903,KR
+2957201904,2957201919,TW
+2957201920,2957202431,US
+2957202432,2957202495,GB
+2957202496,2957202511,DE
+2957202512,2957202527,NO
+2957202528,2957202543,SE
+2957202544,2957202551,FI
+2957202552,2957202559,EE
+2957202560,2957202567,LV
+2957202568,2957202575,LT
+2957202576,2957202583,BY
+2957202584,2957202591,UA
+2957202592,2957202599,RO
+2957202600,2957202607,BG
+2957202608,2957202615,GR
+2957202616,2957202623,TR
+2957202624,2957202627,AT
+2957202628,2957202631,IT
+2957202632,2957202639,CH
+2957202640,2957202643,LU
+2957202644,2957202647,BE
+2957202648,2957202651,NL
+2957202652,2957202667,DK
+2957202668,2957202671,FR
+2957202672,2957202675,US
+2957202676,2957202679,ES
+2957202680,2957202683,PT
+2957202684,2957202687,AU
+2957202688,2957203455,US
+2957203456,2957205503,FR
+2957205504,2957213695,PS
+2957213696,2957221887,FR
+2957221888,2957228031,GB
+2957228032,2957230079,DK
+2957230080,2957238271,RS
+2957238272,2957240319,CZ
+2957240320,2957242367,BG
+2957242368,2957244415,RU
+2957244416,2957246463,HU
+2957246464,2957508607,SE
+2957508608,2957574143,FI
+2957574144,2957639679,GE
+2957639680,2957641727,GB
+2957641728,2957643775,RU
+2957643776,2957647871,GB
+2957647872,2957649919,FR
+2957649920,2957651967,CH
+2957651968,2957654015,AE
+2957654016,2957656063,DE
+2957656064,2957672447,GE
+2957672448,2957680639,CZ
+2957680640,2957688831,GB
+2957688832,2957690879,SE
+2957690880,2957692927,RU
+2957692928,2957694975,NO
+2957694976,2957697023,CZ
+2957697024,2957705215,NL
+2957705216,2957770751,NO
+2957770752,2957836287,SI
+2957901824,2958032895,PT
+2958032896,2958557183,ES
+2958557184,2958819327,TR
+2969567232,2977955839,BR
2986344448,2987393023,DE
2987393024,2987397119,IM
2987397120,2987401215,LV
@@ -59118,12 +68147,20 @@
2987417600,2987425791,PL
2987425792,2987429887,BG
2987429888,2987433215,RU
-2987433216,2987433235,KZ
-2987433236,2987433239,RU
-2987433240,2987433287,KZ
-2987433288,2987433295,RU
-2987433296,2987433331,KZ
-2987433332,2987433983,RU
+2987433216,2987433287,KZ
+2987433288,2987433291,RU
+2987433292,2987433331,KZ
+2987433332,2987433335,RU
+2987433336,2987433339,KZ
+2987433340,2987433347,RU
+2987433348,2987433359,KZ
+2987433360,2987433375,RU
+2987433376,2987433379,KZ
+2987433380,2987433383,RU
+2987433384,2987433391,KZ
+2987433392,2987433407,RU
+2987433408,2987433471,KZ
+2987433472,2987433983,RU
2987433984,2987438079,FR
2987438080,2987442175,FI
2987442176,2987446271,IE
@@ -59133,20 +68170,18 @@
2987458560,2987462655,CZ
2987462656,2987466751,RS
2987466752,2987470847,GB
-2987470848,2987474943,DE
+2987470848,2987474943,IQ
2987474944,2987479039,GB
2987479040,2987487231,CZ
2987487232,2987491327,HR
2987491328,2987495423,RU
2987495424,2987499519,NO
-2987499520,2987500103,MD
-2987500104,2987500111,US
-2987500112,2987500239,MD
-2987500240,2987500255,DE
-2987500256,2987503615,MD
+2987499520,2987503615,MD
2987503616,2987511807,RU
2987511808,2987515903,JO
-2987515904,2987519999,A2
+2987515904,2987519487,A2
+2987519488,2987519743,KE
+2987519744,2987519999,A2
2987520000,2987524095,GB
2987524096,2987528191,RU
2987528192,2987529215,US
@@ -59177,7 +68212,8 @@
2987585872,2987585879,MX
2987585880,2987585887,BR
2987585888,2987585895,PL
-2987585896,2987589631,DE
+2987585896,2987589119,DE
+2987589120,2987589631,US
2987589632,2987593727,FR
2987593728,2987597823,LT
2987597824,2987601919,ES
@@ -59196,8 +68232,7 @@
2987655168,2987658367,DE
2987658368,2987658383,AT
2987658384,2987659263,DE
-2987659264,2987660799,BA
-2987660800,2987661311,SI
+2987659264,2987661311,BA
2987661312,2987663359,GB
2987663360,2987665407,IT
2987665408,2987667455,RU
@@ -59245,7 +68280,6 @@
2987755520,2987757567,PL
2987757568,2987759615,DE
2987759616,2987761663,PL
-2987761664,2987763711,DK
2987763712,2987765759,GR
2987765760,2987767807,FR
2987767808,2987769855,CZ
@@ -59260,7 +68294,9 @@
2987786240,2987788287,FR
2987788288,2987788543,GB
2987788544,2987788799,DE
-2987788800,2987790335,TR
+2987788800,2987789055,US
+2987789056,2987789311,GB
+2987789312,2987790335,TR
2987790336,2987792383,GB
2987792384,2987794431,CH
2987794432,2987796479,IQ
@@ -59324,9 +68360,19 @@
2987917312,2988179455,DE
2988179456,2988441599,SE
2988441600,2988441603,CH
-2988441604,2988441655,FR
+2988441604,2988441607,GB
+2988441608,2988441611,DE
+2988441612,2988441615,CH
+2988441616,2988441647,FR
+2988441648,2988441651,GB
+2988441652,2988441655,FR
2988441656,2988441663,DE
-2988441664,2988441839,FR
+2988441664,2988441695,IT
+2988441696,2988441791,FR
+2988441792,2988441807,PL
+2988441808,2988441815,FR
+2988441816,2988441819,FI
+2988441820,2988441839,FR
2988441840,2988441843,PL
2988441844,2988441847,BE
2988441848,2988441855,FR
@@ -59334,9 +68380,20 @@
2988441888,2988441895,FR
2988441896,2988441903,PL
2988441904,2988441911,IT
-2988441912,2988441991,FR
+2988441912,2988441919,ES
+2988441920,2988441935,PL
+2988441936,2988441939,FR
+2988441940,2988441943,ES
+2988441944,2988441951,FR
+2988441952,2988441967,PL
+2988441968,2988441971,NL
+2988441972,2988441975,CH
+2988441976,2988441979,DE
+2988441980,2988441983,IT
+2988441984,2988441991,FR
2988441992,2988441995,ES
-2988441996,2988442003,FR
+2988441996,2988441999,PT
+2988442000,2988442003,FR
2988442004,2988442007,ES
2988442008,2988442047,FR
2988442048,2988442063,GB
@@ -59349,7 +68406,16 @@
2988442432,2988442439,CZ
2988442440,2988442447,ES
2988442448,2988442463,GB
-2988442464,2988442895,FR
+2988442464,2988442623,FR
+2988442624,2988442647,PL
+2988442648,2988442651,DE
+2988442652,2988442655,GB
+2988442656,2988442671,PL
+2988442672,2988442675,GB
+2988442676,2988442687,FR
+2988442688,2988442695,PL
+2988442696,2988442703,PT
+2988442704,2988442895,FR
2988442896,2988442899,PL
2988442900,2988442903,FR
2988442904,2988442907,IT
@@ -59361,7 +68427,7 @@
2988442928,2988442975,FR
2988442976,2988443007,GB
2988443008,2988443023,PT
-2988443024,2988443027,FR
+2988443024,2988443027,CZ
2988443028,2988443031,BE
2988443032,2988443035,GB
2988443036,2988443039,BE
@@ -59371,7 +68437,7 @@
2988443088,2988443111,PL
2988443112,2988443119,ES
2988443120,2988443391,FR
-2988443392,2988443407,GB
+2988443392,2988443407,DE
2988443408,2988443439,FR
2988443440,2988443443,CZ
2988443444,2988443447,DE
@@ -59380,7 +68446,7 @@
2988443488,2988443539,FR
2988443540,2988443547,ES
2988443548,2988443551,IT
-2988443552,2988443555,FR
+2988443552,2988443555,CH
2988443556,2988443559,PL
2988443560,2988443563,GB
2988443564,2988443567,PL
@@ -59393,12 +68459,14 @@
2988443928,2988444167,FR
2988444168,2988444171,CZ
2988444172,2988444199,FR
-2988444200,2988444203,DE
+2988444200,2988444203,FI
2988444204,2988444207,NL
2988444208,2988444415,FR
2988444416,2988444679,ES
-2988444680,2988444695,PL
-2988444696,2988444719,FR
+2988444680,2988444687,FR
+2988444688,2988444695,LT
+2988444696,2988444703,FR
+2988444704,2988444719,GB
2988444720,2988444735,ES
2988444736,2988444739,GB
2988444740,2988444755,BE
@@ -59408,19 +68476,32 @@
2988444772,2988444775,GB
2988444776,2988444783,CZ
2988444784,2988444799,FR
-2988444800,2988445055,ES
-2988445056,2988445119,FR
-2988445120,2988445151,IT
-2988445152,2988445183,GB
+2988444800,2988444927,ES
+2988444928,2988444931,PL
+2988444932,2988444943,DE
+2988444944,2988444967,PL
+2988444968,2988444999,FR
+2988445000,2988445007,PL
+2988445008,2988445023,FR
+2988445024,2988445027,PL
+2988445028,2988445031,FR
+2988445032,2988445035,ES
+2988445036,2988445039,PL
+2988445040,2988445119,FR
+2988445120,2988445127,ES
+2988445128,2988445139,FR
+2988445140,2988445143,GB
+2988445144,2988445167,FR
+2988445168,2988445183,ES
2988445184,2988445951,DE
2988445952,2988445967,FR
2988445968,2988445983,GB
2988445984,2988446207,DE
2988446208,2988446271,PL
2988446272,2988446275,IT
-2988446276,2988446287,FR
-2988446288,2988446303,GB
-2988446304,2988446307,FR
+2988446276,2988446291,FR
+2988446292,2988446295,ES
+2988446296,2988446307,FR
2988446308,2988446319,PL
2988446320,2988446323,FR
2988446324,2988446327,LT
@@ -59436,18 +68517,18 @@
2988447924,2988447927,IT
2988447928,2988447935,PL
2988447936,2988447943,DE
-2988447944,2988447947,NL
-2988447948,2988447951,DE
-2988447952,2988447955,GB
-2988447956,2988447959,BE
+2988447944,2988447947,GB
+2988447948,2988447959,FR
2988447960,2988447967,IT
2988447968,2988447999,GB
2988448000,2988448127,DE
2988448128,2988448255,ES
2988448256,2988448511,DE
-2988448512,2988448519,FR
+2988448512,2988448515,GB
+2988448516,2988448519,FR
2988448520,2988448543,PL
-2988448544,2988448551,FR
+2988448544,2988448547,GB
+2988448548,2988448551,FR
2988448552,2988448559,PL
2988448560,2988448563,DE
2988448564,2988448575,ES
@@ -59483,8 +68564,10 @@
2988449536,2988449579,FR
2988449580,2988449583,PL
2988449584,2988449631,FR
-2988449632,2988449647,ES
-2988449648,2988449663,GB
+2988449632,2988449639,ES
+2988449640,2988449643,CH
+2988449644,2988449647,CZ
+2988449648,2988449663,FR
2988449664,2988449695,DE
2988449696,2988449727,IT
2988449728,2988449743,BE
@@ -59497,7 +68580,7 @@
2988457988,2988457991,PL
2988457992,2988457995,CH
2988457996,2988457999,FR
-2988458000,2988458015,GB
+2988458000,2988458015,DE
2988458016,2988458031,FR
2988458032,2988458047,IT
2988458048,2988458055,PL
@@ -59507,8 +68590,10 @@
2988458076,2988458111,PL
2988458112,2988458255,FR
2988458256,2988458271,IT
-2988458272,2988458287,PL
-2988458288,2988458295,FR
+2988458272,2988458275,GB
+2988458276,2988458279,FI
+2988458280,2988458283,ES
+2988458284,2988458295,FR
2988458296,2988458299,GB
2988458300,2988458319,ES
2988458320,2988458323,CZ
@@ -59519,14 +68604,14 @@
2988458400,2988458431,PL
2988458432,2988458495,FR
2988458496,2988458751,GB
-2988458752,2988459007,FR
+2988458752,2988458759,FR
+2988458760,2988458763,NL
+2988458764,2988458767,ES
+2988458768,2988459007,FR
2988459008,2988459015,PL
2988459016,2988459019,DE
2988459020,2988459023,GB
-2988459024,2988459027,BE
-2988459028,2988459031,CH
-2988459032,2988459035,CZ
-2988459036,2988459039,ES
+2988459024,2988459039,IE
2988459040,2988459051,FR
2988459052,2988459055,ES
2988459056,2988459071,CH
@@ -59538,18 +68623,28 @@
2988459104,2988459111,FR
2988459112,2988459119,ES
2988459120,2988459127,IT
-2988459128,2988459135,PL
-2988459136,2988459167,IT
+2988459128,2988459151,PL
+2988459152,2988459167,FR
2988459168,2988459171,IE
-2988459172,2988459183,FR
-2988459184,2988459199,ES
+2988459172,2988459175,FR
+2988459176,2988459179,PL
+2988459180,2988459183,FR
+2988459184,2988459199,PL
2988459200,2988459215,FR
2988459216,2988459219,DE
2988459220,2988459223,FR
-2988459224,2988459263,PL
+2988459224,2988459231,DE
+2988459232,2988459235,IT
+2988459236,2988459239,PL
+2988459240,2988459243,FR
+2988459244,2988459247,ES
+2988459248,2988459251,LT
+2988459252,2988459255,BE
+2988459256,2988459259,FR
+2988459260,2988459263,NL
2988459264,2988459519,ES
2988459520,2988459583,DE
-2988459584,2988459599,FR
+2988459584,2988459599,ES
2988459600,2988459603,GB
2988459604,2988459615,FR
2988459616,2988459631,CZ
@@ -59563,8 +68658,8 @@
2988459692,2988459695,PL
2988459696,2988459711,FR
2988459712,2988459715,ES
-2988459716,2988459723,FR
-2988459724,2988459727,DE
+2988459716,2988459719,FR
+2988459720,2988459727,DE
2988459728,2988459731,FR
2988459732,2988459735,BE
2988459736,2988459743,PL
@@ -59577,17 +68672,15 @@
2988459776,2988459839,FR
2988459840,2988459855,GB
2988459856,2988459863,FR
-2988459864,2988459867,ES
-2988459868,2988459871,GB
-2988459872,2988459887,FR
-2988459888,2988459895,PL
+2988459864,2988459871,ES
+2988459872,2988459895,PL
2988459896,2988459967,FR
2988459968,2988459999,ES
-2988460000,2988460031,FR
+2988460000,2988460015,NL
+2988460016,2988460031,FR
2988460032,2988460063,DE
2988460064,2988460095,FR
-2988460096,2988460103,ES
-2988460104,2988460107,PL
+2988460096,2988460107,PL
2988460108,2988460111,DE
2988460112,2988460119,FR
2988460120,2988460123,DE
@@ -59596,8 +68689,7 @@
2988460132,2988460135,CZ
2988460136,2988460143,FR
2988460144,2988460147,GB
-2988460148,2988460151,FR
-2988460152,2988460159,ES
+2988460148,2988460159,ES
2988460160,2988460191,GB
2988460192,2988460195,FR
2988460196,2988460199,CZ
@@ -59612,9 +68704,12 @@
2988460276,2988460279,NL
2988460280,2988460287,PL
2988460288,2988460323,FR
-2988460324,2988460335,PL
-2988460336,2988460351,DE
-2988460352,2988460375,GB
+2988460324,2988460327,GB
+2988460328,2988460335,PL
+2988460336,2988460339,FR
+2988460340,2988460343,GB
+2988460344,2988460367,FR
+2988460368,2988460375,PL
2988460376,2988460543,FR
2988460544,2988460547,GB
2988460548,2988460551,DE
@@ -59622,29 +68717,28 @@
2988460576,2988460591,PT
2988460592,2988460607,GB
2988460608,2988460615,IT
-2988460616,2988460623,PL
+2988460616,2988460623,PT
2988460624,2988460679,FR
-2988460680,2988460683,GB
-2988460684,2988460687,DE
+2988460680,2988460687,DE
2988460688,2988460719,FR
2988460720,2988460735,ES
-2988460736,2988460759,FR
-2988460760,2988460763,PT
-2988460764,2988460767,FR
+2988460736,2988460755,FR
+2988460756,2988460759,PT
+2988460760,2988460767,FR
2988460768,2988460799,PL
2988460800,2988460863,DE
2988460864,2988460927,FR
-2988460928,2988460931,DE
+2988460928,2988460931,ES
2988460932,2988460943,PL
2988460944,2988460959,DE
2988460960,2988460991,GB
-2988460992,2988461087,FR
-2988461088,2988461103,PL
-2988461104,2988461119,FR
-2988461120,2988461151,NL
-2988461152,2988461247,GB
-2988461248,2988461255,FR
-2988461256,2988461263,GB
+2988460992,2988461055,FR
+2988461056,2988461103,PL
+2988461104,2988461151,FR
+2988461152,2988461183,GB
+2988461184,2988461255,FR
+2988461256,2988461259,IT
+2988461260,2988461263,PT
2988461264,2988461279,PL
2988461280,2988461295,IT
2988461296,2988461299,PL
@@ -59680,13 +68774,14 @@
2988461616,2988461623,IT
2988461624,2988461695,FR
2988461696,2988461699,DE
-2988461700,2988461703,FR
-2988461704,2988461707,NL
+2988461700,2988461703,PL
+2988461704,2988461707,FR
2988461708,2988461711,BE
2988461712,2988461719,FR
-2988461720,2988461723,GB
+2988461720,2988461723,DE
2988461724,2988461735,FR
-2988461736,2988461747,DE
+2988461736,2988461743,DE
+2988461744,2988461747,ES
2988461748,2988461751,IT
2988461752,2988461755,FR
2988461756,2988461759,NL
@@ -59696,25 +68791,34 @@
2988461812,2988461815,FR
2988461816,2988461819,PL
2988461820,2988461823,GB
-2988461824,2988461855,NL
-2988461856,2988461859,PL
+2988461824,2988461839,PL
+2988461840,2988461851,FR
+2988461852,2988461855,PL
+2988461856,2988461859,FI
2988461860,2988461871,DE
2988461872,2988461879,FR
-2988461880,2988461883,CZ
-2988461884,2988461887,IT
+2988461880,2988461883,ES
+2988461884,2988461887,PL
2988461888,2988461903,FR
2988461904,2988461911,ES
-2988461912,2988461935,FR
+2988461912,2988461915,IT
+2988461916,2988461919,NL
+2988461920,2988461935,FR
2988461936,2988461951,GB
2988461952,2988462087,PL
2988462088,2988462095,DE
-2988462096,2988462127,FR
+2988462096,2988462119,FR
+2988462120,2988462123,PL
+2988462124,2988462127,GB
2988462128,2988462131,ES
2988462132,2988462143,FR
2988462144,2988462151,PL
2988462152,2988462155,IT
2988462156,2988462159,NL
-2988462160,2988462191,PL
+2988462160,2988462167,ES
+2988462168,2988462171,PL
+2988462172,2988462175,ES
+2988462176,2988462191,PL
2988462192,2988462199,FR
2988462200,2988462203,PL
2988462204,2988462303,FR
@@ -59723,7 +68827,8 @@
2988462312,2988462319,FR
2988462320,2988462323,IT
2988462324,2988462327,DE
-2988462328,2988462335,FR
+2988462328,2988462331,GB
+2988462332,2988462335,FR
2988462336,2988462463,ES
2988462464,2988462495,GB
2988462496,2988462527,DE
@@ -59739,8 +68844,9 @@
2988462752,2988462767,PL
2988462768,2988462775,GB
2988462776,2988462779,PL
-2988462780,2988462783,FR
-2988462784,2988462799,DE
+2988462780,2988462787,FR
+2988462788,2988462795,PL
+2988462796,2988462799,DE
2988462800,2988462815,FR
2988462816,2988462823,BE
2988462824,2988462847,FR
@@ -59748,7 +68854,8 @@
2988463104,2988463107,IT
2988463108,2988463111,FR
2988463112,2988463119,ES
-2988463120,2988463127,GB
+2988463120,2988463123,GB
+2988463124,2988463127,ES
2988463128,2988463131,FR
2988463132,2988463135,PL
2988463136,2988463143,NL
@@ -59757,17 +68864,17 @@
2988463152,2988463159,FR
2988463160,2988463167,ES
2988463168,2988463199,NL
-2988463200,2988463203,GB
+2988463200,2988463203,PL
2988463204,2988463207,DE
2988463208,2988463211,FR
2988463212,2988463223,GB
-2988463224,2988463227,FR
+2988463224,2988463227,ES
2988463228,2988463231,CH
2988463232,2988463263,NL
2988463264,2988463279,PL
2988463280,2988463283,GB
2988463284,2988463315,FR
-2988463316,2988463319,DE
+2988463316,2988463319,PL
2988463320,2988463323,FR
2988463324,2988463331,DE
2988463332,2988463335,IT
@@ -59787,7 +68894,7 @@
2988463744,2988463747,BE
2988463748,2988463759,FR
2988463760,2988463775,DE
-2988463776,2988463791,PL
+2988463776,2988463791,FR
2988463792,2988463803,GB
2988463804,2988463823,FR
2988463824,2988463827,DE
@@ -59795,9 +68902,13 @@
2988463832,2988463835,DE
2988463836,2988463839,FR
2988463840,2988463871,PL
-2988463872,2988463915,FR
+2988463872,2988463907,FR
+2988463908,2988463911,PL
+2988463912,2988463915,FR
2988463916,2988463919,GB
-2988463920,2988463947,FR
+2988463920,2988463939,FR
+2988463940,2988463943,DE
+2988463944,2988463947,FR
2988463948,2988463951,GB
2988463952,2988463999,FR
2988464000,2988464007,IE
@@ -59808,11 +68919,17 @@
2988464028,2988464031,PL
2988464032,2988464055,FR
2988464056,2988464059,ES
-2988464060,2988464063,FR
+2988464060,2988464063,CZ
2988464064,2988464095,PL
-2988464096,2988464303,FR
+2988464096,2988464271,FR
+2988464272,2988464275,ES
+2988464276,2988464279,PL
+2988464280,2988464283,FR
+2988464284,2988464287,PL
+2988464288,2988464303,FR
2988464304,2988464307,IT
-2988464308,2988464351,FR
+2988464308,2988464311,PL
+2988464312,2988464351,FR
2988464352,2988464355,DE
2988464356,2988464359,FR
2988464360,2988464363,PL
@@ -59823,29 +68940,38 @@
2988464528,2988464543,DE
2988464544,2988464551,FR
2988464552,2988464575,ES
-2988464576,2988464607,FR
+2988464576,2988464591,GB
+2988464592,2988464607,FR
2988464608,2988464611,DE
-2988464612,2988464615,PL
-2988464616,2988464619,FR
+2988464612,2988464619,PL
2988464620,2988464623,ES
2988464624,2988464627,FR
2988464628,2988464631,IT
-2988464632,2988464639,GB
-2988464640,2988464783,FR
+2988464632,2988464779,FR
+2988464780,2988464783,PL
2988464784,2988464787,IT
2988464788,2988464791,ES
-2988464792,2988464799,FR
+2988464792,2988464795,FR
+2988464796,2988464799,GB
2988464800,2988464815,DE
2988464816,2988464819,FR
2988464820,2988464823,NL
-2988464824,2988464831,PL
-2988464832,2988464895,ES
-2988464896,2988464927,NL
-2988464928,2988464947,FR
+2988464824,2988464895,ES
+2988464896,2988464911,PL
+2988464912,2988464915,CH
+2988464916,2988464919,DE
+2988464920,2988464923,FI
+2988464924,2988464927,FR
+2988464928,2988464943,ES
+2988464944,2988464947,FR
2988464948,2988464951,CH
2988464952,2988464955,FR
2988464956,2988464959,GB
-2988464960,2988465215,FR
+2988464960,2988464963,IT
+2988464964,2988464967,LT
+2988464968,2988464971,PT
+2988464972,2988464975,PL
+2988464976,2988465215,FR
2988465216,2988465223,ES
2988465224,2988465235,FR
2988465236,2988465239,ES
@@ -59900,29 +69026,897 @@
2988466128,2988466131,PT
2988466132,2988466139,FR
2988466140,2988466143,PL
-2988466144,2988466175,NL
-2988466176,2988507135,FR
-2988507136,2988507183,DE
+2988466144,2988466159,NL
+2988466160,2988476415,FR
+2988476416,2988478463,IT
+2988478464,2988482559,FR
+2988482560,2988482567,ES
+2988482568,2988482579,FR
+2988482580,2988482591,ES
+2988482592,2988482607,PL
+2988482608,2988482631,FR
+2988482632,2988482639,PL
+2988482640,2988482647,FR
+2988482648,2988482651,CZ
+2988482652,2988482655,GB
+2988482656,2988482763,FR
+2988482764,2988482767,GB
+2988482768,2988482775,PL
+2988482776,2988482779,NL
+2988482780,2988482783,PL
+2988482784,2988482799,FR
+2988482800,2988482807,ES
+2988482808,2988482811,GB
+2988482812,2988482815,FR
+2988482816,2988482819,NL
+2988482820,2988482823,DE
+2988482824,2988482831,PL
+2988482832,2988482839,FI
+2988482840,2988482843,ES
+2988482844,2988482847,NL
+2988482848,2988482863,FR
+2988482864,2988482871,ES
+2988482872,2988482875,PT
+2988482876,2988482879,CZ
+2988482880,2988482887,PL
+2988482888,2988482891,ES
+2988482892,2988482895,PL
+2988482896,2988482927,GB
+2988482928,2988482935,FR
+2988482936,2988482939,PL
+2988482940,2988482943,LT
+2988482944,2988482959,PL
+2988482960,2988482975,CZ
+2988482976,2988482979,DE
+2988482980,2988482983,GB
+2988482984,2988482987,DE
+2988482988,2988483091,FR
+2988483092,2988483095,BE
+2988483096,2988483099,FR
+2988483100,2988483103,PL
+2988483104,2988483107,IE
+2988483108,2988483111,PL
+2988483112,2988483115,ES
+2988483116,2988483119,PL
+2988483120,2988483127,ES
+2988483128,2988483135,PL
+2988483136,2988483151,FR
+2988483152,2988483155,CH
+2988483156,2988483159,FR
+2988483160,2988483167,ES
+2988483168,2988483199,GB
+2988483200,2988483231,FR
+2988483232,2988483235,IE
+2988483236,2988483263,PL
+2988483264,2988483267,FR
+2988483268,2988483271,NL
+2988483272,2988483279,DE
+2988483280,2988483283,ES
+2988483284,2988483295,DE
+2988483296,2988483299,FR
+2988483300,2988483303,NL
+2988483304,2988483311,FR
+2988483312,2988483315,GB
+2988483316,2988483319,NL
+2988483320,2988483327,PL
+2988483328,2988483335,BE
+2988483336,2988483343,DE
+2988483344,2988483351,GB
+2988483352,2988483359,FR
+2988483360,2988483367,ES
+2988483368,2988483375,PL
+2988483376,2988483383,ES
+2988483384,2988483427,FR
+2988483428,2988483431,BE
+2988483432,2988483447,FR
+2988483448,2988483455,DE
+2988483456,2988483711,FR
+2988483712,2988483727,PL
+2988483728,2988483735,FR
+2988483736,2988483739,DE
+2988483740,2988483743,FR
+2988483744,2988483767,GB
+2988483768,2988483775,FR
+2988483776,2988483871,PL
+2988483872,2988483879,DE
+2988483880,2988483887,ES
+2988483888,2988483895,GB
+2988483896,2988483903,DE
+2988483904,2988483935,PT
+2988483936,2988483951,ES
+2988483952,2988483963,IT
+2988483964,2988483967,FR
+2988483968,2988483983,IE
+2988483984,2988483991,DE
+2988483992,2988483995,GB
+2988483996,2988483999,PT
+2988484000,2988484003,DE
+2988484004,2988484007,GB
+2988484008,2988484011,FR
+2988484012,2988484015,IE
+2988484016,2988484019,FR
+2988484020,2988484023,ES
+2988484024,2988484031,FR
+2988484032,2988484039,IT
+2988484040,2988484047,NL
+2988484048,2988484051,FR
+2988484052,2988484055,GB
+2988484056,2988484095,FR
+2988484096,2988484111,DE
+2988484112,2988484127,FR
+2988484128,2988484131,PT
+2988484132,2988484135,PL
+2988484136,2988484143,NL
+2988484144,2988484163,FR
+2988484164,2988484167,PT
+2988484168,2988484191,ES
+2988484192,2988484207,DE
+2988484208,2988484223,FR
+2988484224,2988484239,ES
+2988484240,2988484243,DE
+2988484244,2988484287,FR
+2988484288,2988484351,PL
+2988484352,2988484383,GB
+2988484384,2988484399,PL
+2988484400,2988484403,PT
+2988484404,2988484427,PL
+2988484428,2988484431,GB
+2988484432,2988484439,PL
+2988484440,2988484443,ES
+2988484444,2988484447,FR
+2988484448,2988484463,SN
+2988484464,2988484471,FR
+2988484472,2988484475,PL
+2988484476,2988484479,FR
+2988484480,2988484511,PL
+2988484512,2988484543,IT
+2988484544,2988484591,FR
+2988484592,2988484607,ES
+2988484608,2988484775,FR
+2988484776,2988484783,PL
+2988484784,2988484831,FR
+2988484832,2988484847,PL
+2988484848,2988484863,FR
+2988484864,2988484879,ES
+2988484880,2988484883,GB
+2988484884,2988484887,PL
+2988484888,2988484891,FR
+2988484892,2988484895,GB
+2988484896,2988484927,FR
+2988484928,2988484959,PT
+2988484960,2988484991,FR
+2988484992,2988485007,LT
+2988485008,2988485023,PL
+2988485024,2988485039,IE
+2988485040,2988485055,PL
+2988485056,2988485071,FR
+2988485072,2988485087,IE
+2988485088,2988485119,PL
+2988485120,2988485135,FR
+2988485136,2988485151,PL
+2988485152,2988485167,IT
+2988485168,2988485183,FR
+2988485184,2988485247,BE
+2988485248,2988485255,IT
+2988485256,2988485263,NL
+2988485264,2988485267,DE
+2988485268,2988485271,CH
+2988485272,2988485279,FR
+2988485280,2988485311,PL
+2988485312,2988485327,IT
+2988485328,2988485335,FI
+2988485336,2988485343,PT
+2988485344,2988485347,ES
+2988485348,2988485351,IT
+2988485352,2988485355,GB
+2988485356,2988485359,PL
+2988485360,2988485439,FR
+2988485440,2988485455,PL
+2988485456,2988485479,FR
+2988485480,2988485487,IT
+2988485488,2988485503,FR
+2988485504,2988485519,GB
+2988485520,2988485559,FR
+2988485560,2988485567,NL
+2988485568,2988485583,GB
+2988485584,2988485591,ES
+2988485592,2988485599,FR
+2988485600,2988485607,PL
+2988485608,2988485611,FR
+2988485612,2988485615,PL
+2988485616,2988485631,GB
+2988485632,2988485663,ES
+2988485664,2988485671,PL
+2988485672,2988485675,ES
+2988485676,2988485683,FR
+2988485684,2988485687,PL
+2988485688,2988485691,GB
+2988485692,2988485831,FR
+2988485832,2988485835,NL
+2988485836,2988485839,LT
+2988485840,2988485855,BE
+2988485856,2988485887,FR
+2988485888,2988485903,PL
+2988485904,2988485911,GB
+2988485912,2988485951,FR
+2988485952,2988485955,GB
+2988485956,2988485959,CZ
+2988485960,2988485967,FR
+2988485968,2988485983,IE
+2988485984,2988485999,FR
+2988486000,2988486015,PL
+2988486016,2988486031,FR
+2988486032,2988486047,PL
+2988486048,2988486063,GB
+2988486064,2988486067,FR
+2988486068,2988486071,ES
+2988486072,2988486075,FR
+2988486076,2988486079,ES
+2988486080,2988486083,BE
+2988486084,2988486087,IT
+2988486088,2988486111,FR
+2988486112,2988486135,PL
+2988486136,2988486139,FR
+2988486140,2988486143,GB
+2988486144,2988486151,ES
+2988486152,2988486159,FR
+2988486160,2988486175,IE
+2988486176,2988486179,FR
+2988486180,2988486183,DE
+2988486184,2988486191,IE
+2988486192,2988486195,IT
+2988486196,2988486199,DE
+2988486200,2988486207,PT
+2988486208,2988486211,ES
+2988486212,2988486215,DE
+2988486216,2988486219,ES
+2988486220,2988486223,IT
+2988486224,2988486231,BE
+2988486232,2988486235,PL
+2988486236,2988486239,ES
+2988486240,2988486287,PL
+2988486288,2988486291,FR
+2988486292,2988486295,DE
+2988486296,2988486299,GB
+2988486300,2988486303,PL
+2988486304,2988486319,DE
+2988486320,2988486323,IT
+2988486324,2988486327,PT
+2988486328,2988486343,ES
+2988486344,2988486347,FR
+2988486348,2988486351,ES
+2988486352,2988486399,FR
+2988486400,2988486783,GB
+2988486784,2988486787,DE
+2988486788,2988486795,FR
+2988486796,2988486799,PL
+2988486800,2988486807,FR
+2988486808,2988486811,DE
+2988486812,2988486823,FR
+2988486824,2988486831,IT
+2988486832,2988486847,PL
+2988486848,2988486863,FR
+2988486864,2988486879,BE
+2988486880,2988486883,PL
+2988486884,2988486887,FR
+2988486888,2988486891,PT
+2988486892,2988486903,GB
+2988486904,2988486907,DE
+2988486908,2988486911,LT
+2988486912,2988487167,PL
+2988487168,2988487423,FR
+2988487424,2988487679,IE
+2988487680,2988487935,DE
+2988487936,2988487939,BE
+2988487940,2988487979,FR
+2988487980,2988487983,ES
+2988487984,2988488011,FR
+2988488012,2988488015,LT
+2988488016,2988488031,FR
+2988488032,2988488047,IE
+2988488048,2988488051,IT
+2988488052,2988488055,FR
+2988488056,2988488063,DE
+2988488064,2988488095,FR
+2988488096,2988488099,DE
+2988488100,2988488103,PT
+2988488104,2988488111,FR
+2988488112,2988488127,PL
+2988488128,2988488159,FR
+2988488160,2988488175,ES
+2988488176,2988488179,GB
+2988488180,2988488183,DE
+2988488184,2988488187,IT
+2988488188,2988488191,DE
+2988488192,2988488479,FR
+2988488480,2988488487,PL
+2988488488,2988488491,FR
+2988488492,2988488495,ES
+2988488496,2988488511,FR
+2988488512,2988488543,ES
+2988488544,2988488575,FR
+2988488576,2988488607,NL
+2988488608,2988488639,IT
+2988488640,2988488647,ES
+2988488648,2988488655,IT
+2988488656,2988488663,PL
+2988488664,2988488959,FR
+2988488960,2988488963,NL
+2988488964,2988488967,FR
+2988488968,2988488971,DE
+2988488972,2988488975,FR
+2988488976,2988488983,ES
+2988488984,2988488987,FR
+2988488988,2988488991,NL
+2988488992,2988489023,ES
+2988489024,2988489055,FR
+2988489056,2988489071,DE
+2988489072,2988489087,FR
+2988489088,2988489103,GB
+2988489104,2988489119,FI
+2988489120,2988489123,ES
+2988489124,2988489127,NL
+2988489128,2988489131,DE
+2988489132,2988489167,FR
+2988489168,2988489175,PT
+2988489176,2988489179,PL
+2988489180,2988489183,GB
+2988489184,2988489255,FR
+2988489256,2988489259,GB
+2988489260,2988489263,FR
+2988489264,2988489279,IT
+2988489280,2988489283,FI
+2988489284,2988489287,FR
+2988489288,2988489295,PL
+2988489296,2988489311,FR
+2988489312,2988489327,PL
+2988489328,2988489331,DE
+2988489332,2988489335,PL
+2988489336,2988489339,DE
+2988489340,2988489343,PL
+2988489344,2988489347,DE
+2988489348,2988489351,PL
+2988489352,2988489355,FR
+2988489356,2988489359,PT
+2988489360,2988489375,FR
+2988489376,2988489379,ES
+2988489380,2988489383,GB
+2988489384,2988489391,FR
+2988489392,2988489399,NL
+2988489400,2988489403,PL
+2988489404,2988489407,IT
+2988489408,2988489439,PT
+2988489440,2988489455,GB
+2988489456,2988489471,BE
+2988489472,2988489475,ES
+2988489476,2988489479,GB
+2988489480,2988489483,PL
+2988489484,2988489487,GB
+2988489488,2988489503,FR
+2988489504,2988489519,GB
+2988489520,2988489527,ES
+2988489528,2988489539,NL
+2988489540,2988489543,CH
+2988489544,2988489663,FR
+2988489664,2988489667,DE
+2988489668,2988489671,GB
+2988489672,2988489675,ES
+2988489676,2988489679,IE
+2988489680,2988489695,FR
+2988489696,2988489711,FI
+2988489712,2988489719,FR
+2988489720,2988489723,IT
+2988489724,2988489727,ES
+2988489728,2988489743,FR
+2988489744,2988489751,IT
+2988489752,2988489755,ES
+2988489756,2988489759,FR
+2988489760,2988489791,NL
+2988489792,2988489887,PL
+2988489888,2988489903,FR
+2988489904,2988489919,GB
+2988489920,2988489935,PL
+2988489936,2988489943,ES
+2988489944,2988489947,FR
+2988489948,2988489951,GB
+2988489952,2988489967,FR
+2988489968,2988489983,GB
+2988489984,2988490047,FR
+2988490048,2988490051,ES
+2988490052,2988490055,PL
+2988490056,2988490059,LT
+2988490060,2988490063,FR
+2988490064,2988490079,GB
+2988490080,2988490095,FR
+2988490096,2988490103,PT
+2988490104,2988490107,ES
+2988490108,2988490111,FR
+2988490112,2988490143,PL
+2988490144,2988490175,ES
+2988490176,2988490183,FR
+2988490184,2988490191,ES
+2988490192,2988490195,GB
+2988490196,2988490199,PT
+2988490200,2988490223,FR
+2988490224,2988490227,DE
+2988490228,2988490231,GB
+2988490232,2988490239,ES
+2988490240,2988490247,PL
+2988490248,2988490251,ES
+2988490252,2988490255,FR
+2988490256,2988490271,PL
+2988490272,2988490287,ES
+2988490288,2988490295,FR
+2988490296,2988490303,DE
+2988490304,2988490319,ES
+2988490320,2988490335,FR
+2988490336,2988490367,PT
+2988490368,2988490379,FR
+2988490380,2988490383,ES
+2988490384,2988490399,FR
+2988490400,2988490407,GB
+2988490408,2988490415,NL
+2988490416,2988490423,GB
+2988490424,2988490463,FR
+2988490464,2988490623,PL
+2988490624,2988490751,ES
+2988490752,2988491775,FR
+2988491776,2988492031,TN
+2988492032,2988492799,FR
+2988492800,2988494847,PL
+2988494848,2988498991,FR
+2988498992,2988499007,PL
+2988499008,2988499039,FR
+2988499040,2988499051,DE
+2988499052,2988499055,IT
+2988499056,2988499063,FR
+2988499064,2988499067,DE
+2988499068,2988499071,FR
+2988499072,2988499103,PL
+2988499104,2988499119,IE
+2988499120,2988499135,FR
+2988499136,2988499139,DE
+2988499140,2988499143,FR
+2988499144,2988499151,DE
+2988499152,2988499167,FR
+2988499168,2988499199,ES
+2988499200,2988499327,FR
+2988499328,2988499343,NL
+2988499344,2988499347,PL
+2988499348,2988499351,FR
+2988499352,2988499359,IT
+2988499360,2988499367,PL
+2988499368,2988499375,IT
+2988499376,2988499379,PT
+2988499380,2988499387,PL
+2988499388,2988499407,FR
+2988499408,2988499415,PL
+2988499416,2988499423,FR
+2988499424,2988499455,PL
+2988499456,2988499463,NL
+2988499464,2988499471,DE
+2988499472,2988499487,FR
+2988499488,2988499519,PL
+2988499520,2988499551,FR
+2988499552,2988499559,PL
+2988499560,2988499567,NL
+2988499568,2988499575,IE
+2988499576,2988499579,FR
+2988499580,2988499583,CH
+2988499584,2988499599,IT
+2988499600,2988499615,PL
+2988499616,2988499623,DE
+2988499624,2988499631,ES
+2988499632,2988499635,CH
+2988499636,2988499639,DE
+2988499640,2988499663,GB
+2988499664,2988499671,DE
+2988499672,2988499679,NL
+2988499680,2988499683,FR
+2988499684,2988499687,CZ
+2988499688,2988499691,FI
+2988499692,2988499695,IT
+2988499696,2988499699,PT
+2988499700,2988499703,GB
+2988499704,2988499711,DE
+2988499712,2988499731,GB
+2988499732,2988499735,FR
+2988499736,2988499743,NL
+2988499744,2988499747,IE
+2988499748,2988499751,LT
+2988499752,2988499755,PL
+2988499756,2988499759,ES
+2988499760,2988499763,CH
+2988499764,2988499775,PL
+2988499776,2988499791,IT
+2988499792,2988499795,GB
+2988499796,2988499803,IT
+2988499804,2988499807,DE
+2988499808,2988499823,FR
+2988499824,2988499831,PL
+2988499832,2988499839,GB
+2988499840,2988499847,BE
+2988499848,2988499851,DE
+2988499852,2988499855,PL
+2988499856,2988499871,ES
+2988499872,2988499903,CH
+2988499904,2988499907,FR
+2988499908,2988499911,BE
+2988499912,2988499919,FR
+2988499920,2988499923,DE
+2988499924,2988499927,BE
+2988499928,2988499935,FR
+2988499936,2988499967,IE
+2988499968,2988500223,FR
+2988500224,2988500255,NL
+2988500256,2988500271,IT
+2988500272,2988500287,BE
+2988500288,2988500303,PL
+2988500304,2988500307,FR
+2988500308,2988500311,IT
+2988500312,2988500315,ES
+2988500316,2988500319,DE
+2988500320,2988500335,IT
+2988500336,2988500347,FR
+2988500348,2988500351,PL
+2988500352,2988500383,GB
+2988500384,2988500399,BE
+2988500400,2988500415,DE
+2988500416,2988500447,PL
+2988500448,2988500479,ES
+2988500480,2988500495,DE
+2988500496,2988500499,PL
+2988500500,2988500503,DE
+2988500504,2988500511,PL
+2988500512,2988500519,NL
+2988500520,2988500523,ES
+2988500524,2988500527,GB
+2988500528,2988500543,BE
+2988500544,2988500607,PL
+2988500608,2988500639,FR
+2988500640,2988500671,GB
+2988500672,2988500679,IT
+2988500680,2988500687,PL
+2988500688,2988500703,NL
+2988500704,2988500711,PL
+2988500712,2988500735,FR
+2988500736,2988500751,IE
+2988500752,2988500767,FR
+2988500768,2988500771,PT
+2988500772,2988500775,ES
+2988500776,2988500779,GB
+2988500780,2988500783,PL
+2988500784,2988500791,FR
+2988500792,2988500799,PL
+2988500800,2988500815,ES
+2988500816,2988500863,FR
+2988500864,2988500867,GB
+2988500868,2988500871,DE
+2988500872,2988500879,NL
+2988500880,2988500883,BE
+2988500884,2988500887,PL
+2988500888,2988500895,DE
+2988500896,2988500919,FR
+2988500920,2988500927,PL
+2988500928,2988500935,FR
+2988500936,2988500939,DE
+2988500940,2988500943,FI
+2988500944,2988500959,IT
+2988500960,2988500975,IE
+2988500976,2988500979,CZ
+2988500980,2988500983,FR
+2988500984,2988500987,DE
+2988500988,2988500991,PL
+2988500992,2988501055,FR
+2988501056,2988501119,PT
+2988501120,2988501199,FR
+2988501200,2988501215,GB
+2988501216,2988501219,DE
+2988501220,2988501223,ES
+2988501224,2988501227,PL
+2988501228,2988501231,CZ
+2988501232,2988501247,PL
+2988501248,2988501327,FR
+2988501328,2988501331,FI
+2988501332,2988501335,GB
+2988501336,2988501339,FR
+2988501340,2988501359,PL
+2988501360,2988501367,FR
+2988501368,2988501375,ES
+2988501376,2988501407,FR
+2988501408,2988501411,LT
+2988501412,2988501415,NL
+2988501416,2988501423,BE
+2988501424,2988501439,NL
+2988501440,2988501471,BE
+2988501472,2988501475,PT
+2988501476,2988501479,BE
+2988501480,2988501483,DE
+2988501484,2988501487,PL
+2988501488,2988501503,FR
+2988501504,2988501567,PT
+2988501568,2988501631,PL
+2988501632,2988501663,DE
+2988501664,2988501679,CH
+2988501680,2988501683,PL
+2988501684,2988501687,GB
+2988501688,2988501691,FR
+2988501692,2988501695,PL
+2988501696,2988501727,FI
+2988501728,2988501759,PL
+2988501760,2988502031,FR
+2988502032,2988502047,DE
+2988502048,2988502063,NL
+2988502064,2988502067,FR
+2988502068,2988502071,GB
+2988502072,2988502075,PL
+2988502076,2988502079,ES
+2988502080,2988502095,IE
+2988502096,2988502099,FI
+2988502100,2988502103,CZ
+2988502104,2988502111,PT
+2988502112,2988502143,PL
+2988502144,2988502207,FR
+2988502208,2988502223,GB
+2988502224,2988502255,FR
+2988502256,2988502263,GB
+2988502264,2988502267,ES
+2988502268,2988502271,DE
+2988502272,2988502399,FR
+2988502400,2988502407,NL
+2988502408,2988502411,FR
+2988502412,2988502415,CH
+2988502416,2988502431,DE
+2988502432,2988502447,FR
+2988502448,2988502451,IE
+2988502452,2988502455,IT
+2988502456,2988502459,ES
+2988502460,2988502463,PT
+2988502464,2988502527,FR
+2988502528,2988502591,PL
+2988502592,2988502599,FR
+2988502600,2988502603,DE
+2988502604,2988502607,PL
+2988502608,2988502631,FR
+2988502632,2988502639,NL
+2988502640,2988502655,FR
+2988502656,2988502719,DE
+2988502720,2988502723,ES
+2988502724,2988502731,FR
+2988502732,2988502735,PL
+2988502736,2988502751,FR
+2988502752,2988502783,ES
+2988502784,2988502795,FR
+2988502796,2988502799,DE
+2988502800,2988502831,GB
+2988502832,2988502839,DE
+2988502840,2988502847,NL
+2988502848,2988502851,FR
+2988502852,2988502855,CH
+2988502856,2988502859,FI
+2988502860,2988502863,BE
+2988502864,2988502867,IE
+2988502868,2988502871,LT
+2988502872,2988502875,PL
+2988502876,2988502879,ES
+2988502880,2988502883,IT
+2988502884,2988502887,CZ
+2988502888,2988502891,NL
+2988502892,2988502895,PL
+2988502896,2988502911,FR
+2988502912,2988502915,PL
+2988502916,2988502919,CH
+2988502920,2988502959,FR
+2988502960,2988502975,IE
+2988502976,2988502983,PL
+2988502984,2988502991,BE
+2988502992,2988503015,DE
+2988503016,2988503019,PL
+2988503020,2988503023,ES
+2988503024,2988503031,GB
+2988503032,2988503035,ES
+2988503036,2988503039,GB
+2988503040,2988503079,FR
+2988503080,2988503103,GB
+2988503104,2988503107,ES
+2988503108,2988503111,NL
+2988503112,2988503119,PL
+2988503120,2988503127,DE
+2988503128,2988503131,IT
+2988503132,2988503151,PL
+2988503152,2988503155,DE
+2988503156,2988503159,LT
+2988503160,2988503167,ES
+2988503168,2988503171,PL
+2988503172,2988503183,ES
+2988503184,2988503199,NL
+2988503200,2988503215,FR
+2988503216,2988503231,PL
+2988503232,2988503375,FR
+2988503376,2988503391,GB
+2988503392,2988503395,ES
+2988503396,2988503399,PL
+2988503400,2988503415,FR
+2988503416,2988503423,PL
+2988503424,2988503471,FR
+2988503472,2988503487,NL
+2988503488,2988503503,DE
+2988503504,2988503519,FR
+2988503520,2988503535,NL
+2988503536,2988503551,FI
+2988503552,2988503807,GB
+2988503808,2988503987,FR
+2988503988,2988504003,PL
+2988504004,2988504015,FR
+2988504016,2988504019,GB
+2988504020,2988504023,BE
+2988504024,2988504031,FR
+2988504032,2988504063,ES
+2988504064,2988504223,FR
+2988504224,2988504227,PT
+2988504228,2988504231,DE
+2988504232,2988504239,PL
+2988504240,2988504255,GB
+2988504256,2988504287,ES
+2988504288,2988504303,GB
+2988504304,2988504311,PL
+2988504312,2988504315,FI
+2988504316,2988504319,DE
+2988504320,2988504415,FR
+2988504416,2988504419,PL
+2988504420,2988504423,DE
+2988504424,2988504427,ES
+2988504428,2988504431,PT
+2988504432,2988504435,FR
+2988504436,2988504439,ES
+2988504440,2988504443,FR
+2988504444,2988504463,GB
+2988504464,2988504467,DE
+2988504468,2988504471,ES
+2988504472,2988504479,PL
+2988504480,2988504543,FR
+2988504544,2988504559,PL
+2988504560,2988504563,FR
+2988504564,2988504567,PL
+2988504568,2988504571,FR
+2988504572,2988504603,PL
+2988504604,2988504671,FR
+2988504672,2988504703,PT
+2988504704,2988504735,FR
+2988504736,2988504743,PL
+2988504744,2988504751,GB
+2988504752,2988504767,FR
+2988504768,2988504799,ES
+2988504800,2988504815,CH
+2988504816,2988504863,FR
+2988504864,2988504879,PL
+2988504880,2988504959,FR
+2988504960,2988504963,PT
+2988504964,2988504967,FR
+2988504968,2988504975,BE
+2988504976,2988504991,FR
+2988504992,2988505023,CZ
+2988505024,2988505087,FR
+2988505088,2988505151,NL
+2988505152,2988505183,FR
+2988505184,2988505195,PL
+2988505196,2988505199,DE
+2988505200,2988505207,PL
+2988505208,2988505211,ES
+2988505212,2988505215,PT
+2988505216,2988505247,FR
+2988505248,2988505255,PL
+2988505256,2988505311,FR
+2988505312,2988505315,DE
+2988505316,2988505319,ES
+2988505320,2988505323,PL
+2988505324,2988505327,FR
+2988505328,2988505343,PL
+2988505344,2988505439,FR
+2988505440,2988505455,PL
+2988505456,2988505487,FR
+2988505488,2988505503,PL
+2988505504,2988505599,FR
+2988505600,2988505603,DE
+2988505604,2988505607,ES
+2988505608,2988505615,FR
+2988505616,2988505631,ES
+2988505632,2988505663,FR
+2988505664,2988505695,ES
+2988505696,2988505699,FR
+2988505700,2988505703,IT
+2988505704,2988505711,PL
+2988505712,2988505727,GB
+2988505728,2988505735,PL
+2988505736,2988505739,DE
+2988505740,2988505743,ES
+2988505744,2988505747,PT
+2988505748,2988505751,DE
+2988505752,2988505755,CH
+2988505756,2988505759,PL
+2988505760,2988505775,FR
+2988505776,2988505791,ES
+2988505792,2988505807,FR
+2988505808,2988505811,PL
+2988505812,2988505815,DE
+2988505816,2988505823,BE
+2988505824,2988506143,FR
+2988506144,2988506175,PT
+2988506176,2988506191,IT
+2988506192,2988506207,GB
+2988506208,2988506239,ES
+2988506240,2988506271,FR
+2988506272,2988506303,GB
+2988506304,2988506335,DE
+2988506336,2988506367,FR
+2988506368,2988506375,IE
+2988506376,2988506379,FR
+2988506380,2988506383,DE
+2988506384,2988506399,FR
+2988506400,2988506415,GB
+2988506416,2988506431,BE
+2988506432,2988506447,IT
+2988506448,2988506451,ES
+2988506452,2988506455,PT
+2988506456,2988506459,BE
+2988506460,2988506463,PL
+2988506464,2988506495,FR
+2988506496,2988506499,PL
+2988506500,2988506507,DE
+2988506508,2988506515,ES
+2988506516,2988506519,FR
+2988506520,2988506523,PL
+2988506524,2988506527,IE
+2988506528,2988506543,FR
+2988506544,2988506551,DE
+2988506552,2988506559,FR
+2988506560,2988506563,DE
+2988506564,2988506567,A2
+2988506568,2988506571,GB
+2988506572,2988506575,CH
+2988506576,2988506623,FR
+2988506624,2988506687,PL
+2988506688,2988506751,IE
+2988506752,2988506763,ES
+2988506764,2988506767,PL
+2988506768,2988506783,ES
+2988506784,2988506819,PL
+2988506820,2988506831,FR
+2988506832,2988506847,PL
+2988506848,2988506863,FR
+2988506864,2988506871,DE
+2988506872,2988506875,ES
+2988506876,2988506887,FR
+2988506888,2988506891,ES
+2988506892,2988507143,FR
+2988507144,2988507147,BE
+2988507148,2988507155,IT
+2988507156,2988507159,PL
+2988507160,2988507163,CH
+2988507164,2988507167,PL
+2988507168,2988507183,DE
2988507184,2988507199,FR
2988507200,2988507203,GB
-2988507204,2988507207,PL
+2988507204,2988507207,DE
2988507208,2988507211,ES
2988507212,2988507215,PL
2988507216,2988507231,FR
2988507232,2988507239,ES
2988507240,2988507243,FR
-2988507244,2988507247,ES
+2988507244,2988507247,GB
2988507248,2988507263,FR
2988507264,2988507279,PL
2988507280,2988507287,GB
2988507288,2988507327,FR
2988507328,2988507335,DE
-2988507336,2988507423,FR
+2988507336,2988507339,FR
+2988507340,2988507343,NL
+2988507344,2988507423,FR
2988507424,2988507431,PL
2988507432,2988507439,DE
2988507440,2988507443,IT
2988507444,2988507447,NL
-2988507448,2988507451,PL
+2988507448,2988507451,IT
2988507452,2988507459,FR
2988507460,2988507463,BE
2988507464,2988507467,CH
@@ -59934,12 +69928,11 @@
2988507488,2988507503,FR
2988507504,2988507519,IT
2988507520,2988507527,PL
-2988507528,2988507531,DE
-2988507532,2988507535,PL
+2988507528,2988507535,DE
2988507536,2988507539,FR
2988507540,2988507543,PL
-2988507544,2988507551,FR
-2988507552,2988507567,GB
+2988507544,2988507547,FR
+2988507548,2988507567,GB
2988507568,2988507583,IE
2988507584,2988507591,ES
2988507592,2988507595,FR
@@ -59958,8 +69951,7 @@
2988507712,2988507743,FR
2988507744,2988507759,IE
2988507760,2988507767,FR
-2988507768,2988507775,PL
-2988507776,2988507839,IE
+2988507768,2988507839,PL
2988507840,2988507855,FR
2988507856,2988507859,BE
2988507860,2988507867,PL
@@ -59982,7 +69974,8 @@
2988507980,2988507983,DE
2988507984,2988507999,FR
2988508000,2988508031,NL
-2988508032,2988508039,PL
+2988508032,2988508035,PL
+2988508036,2988508039,CZ
2988508040,2988508047,FR
2988508048,2988508055,GB
2988508056,2988508063,ES
@@ -59991,28 +69984,32 @@
2988508072,2988508079,FR
2988508080,2988508095,ES
2988508096,2988508103,FR
-2988508104,2988508127,GB
+2988508104,2988508111,GB
+2988508112,2988508127,BE
2988508128,2988508135,PL
2988508136,2988508143,GB
2988508144,2988508151,FR
-2988508152,2988508155,ES
-2988508156,2988508159,PL
+2988508152,2988508159,ES
2988508160,2988508207,FR
-2988508208,2988508211,DE
-2988508212,2988508215,PL
+2988508208,2988508215,PL
2988508216,2988508219,FR
2988508220,2988508223,DE
-2988508224,2988508287,FR
+2988508224,2988508255,FR
+2988508256,2988508259,BE
+2988508260,2988508263,FR
+2988508264,2988508271,ES
+2988508272,2988508287,FR
2988508288,2988508303,PL
-2988508304,2988508307,CZ
+2988508304,2988508307,PT
2988508308,2988508315,FR
2988508316,2988508319,ES
2988508320,2988508343,FR
-2988508344,2988508367,ES
+2988508344,2988508351,GB
+2988508352,2988508367,ES
2988508368,2988508383,FR
-2988508384,2988508399,PL
-2988508400,2988508415,ES
-2988508416,2988508431,PT
+2988508384,2988508423,PL
+2988508424,2988508427,CH
+2988508428,2988508431,CZ
2988508432,2988508435,FR
2988508436,2988508439,DE
2988508440,2988508447,PL
@@ -60025,41 +70022,37 @@
2988508684,2988508687,DE
2988508688,2988508703,PL
2988508704,2988508711,GB
-2988508712,2988508715,DE
-2988508716,2988508719,GB
-2988508720,2988508847,FR
+2988508712,2988508719,DE
+2988508720,2988508723,IT
+2988508724,2988508735,GB
+2988508736,2988508767,FR
+2988508768,2988508799,PT
+2988508800,2988508847,FR
2988508848,2988508855,GB
2988508856,2988508871,FR
2988508872,2988508875,PL
-2988508876,2988508879,DE
-2988508880,2988508895,ES
+2988508876,2988508879,PT
+2988508880,2988508895,DE
2988508896,2988508911,PL
-2988508912,2988508915,FR
-2988508916,2988508919,GB
-2988508920,2988508923,IE
-2988508924,2988508927,IT
-2988508928,2988508931,LT
-2988508932,2988508939,NL
-2988508940,2988508943,PL
-2988508944,2988508947,PT
+2988508912,2988508927,FR
+2988508928,2988508943,GB
+2988508944,2988508947,DE
2988508948,2988508951,FR
-2988508952,2988508959,IT
-2988508960,2988508975,DE
-2988508976,2988508991,NL
-2988508992,2988509023,FR
-2988509024,2988509055,ES
-2988509056,2988509119,IT
-2988509120,2988509151,GB
+2988508952,2988508959,ES
+2988508960,2988508991,FR
+2988508992,2988509055,NL
+2988509056,2988509119,FR
+2988509120,2988509151,IT
2988509152,2988509183,PL
2988509184,2988509279,FR
2988509280,2988509283,DE
2988509284,2988509287,IT
2988509288,2988509291,BE
-2988509292,2988509295,FR
+2988509292,2988509295,IT
2988509296,2988509311,DE
2988509312,2988509343,FR
2988509344,2988509351,BE
-2988509352,2988509355,NL
+2988509352,2988509355,ES
2988509356,2988509363,DE
2988509364,2988509367,IT
2988509368,2988509371,CH
@@ -60073,8 +70066,7 @@
2988509444,2988509451,ES
2988509452,2988509455,PL
2988509456,2988509467,FR
-2988509468,2988509471,NL
-2988509472,2988509503,FR
+2988509468,2988509503,NL
2988509504,2988509507,PL
2988509508,2988509511,FR
2988509512,2988509515,GB
@@ -60105,21 +70097,28 @@
2988509824,2988509839,FR
2988509840,2988509855,ES
2988509856,2988509859,FR
-2988509860,2988509871,DE
-2988509872,2988509903,FR
+2988509860,2988509875,DE
+2988509876,2988509879,FR
+2988509880,2988509887,DE
+2988509888,2988509903,FR
2988509904,2988509907,PL
2988509908,2988509919,IT
-2988509920,2988509931,FR
-2988509932,2988509951,PL
+2988509920,2988509927,FR
+2988509928,2988509935,PL
+2988509936,2988509939,DE
+2988509940,2988509943,IT
+2988509944,2988509951,FR
2988509952,2988509955,IT
2988509956,2988509959,PL
-2988509960,2988509963,FR
+2988509960,2988509963,IT
2988509964,2988509967,GB
2988509968,2988509983,ES
-2988509984,2988509995,FR
+2988509984,2988509987,DE
+2988509988,2988509991,CZ
+2988509992,2988509995,FR
2988509996,2988509999,DE
2988510000,2988510015,PL
-2988510016,2988510023,ES
+2988510016,2988510023,GB
2988510024,2988510031,FR
2988510032,2988510079,PL
2988510080,2988510095,ES
@@ -60144,19 +70143,35 @@
2988510324,2988510327,GB
2988510328,2988510399,FR
2988510400,2988510403,DE
-2988510404,2988510407,FR
+2988510404,2988510407,GB
2988510408,2988510415,PL
2988510416,2988510431,FR
2988510432,2988510435,IT
-2988510436,2988510751,FR
+2988510436,2988510463,FR
+2988510464,2988510495,PL
+2988510496,2988510511,FR
+2988510512,2988510515,GB
+2988510516,2988510519,DE
+2988510520,2988510523,PT
+2988510524,2988510527,BE
+2988510528,2988510559,FR
+2988510560,2988510591,IT
+2988510592,2988510623,BE
+2988510624,2988510655,IE
+2988510656,2988510687,PL
+2988510688,2988510703,FR
+2988510704,2988510719,PL
+2988510720,2988510751,FR
2988510752,2988510759,PL
2988510760,2988510767,FR
2988510768,2988510775,ES
2988510776,2988510847,FR
-2988510848,2988510911,PL
-2988510912,2988510943,FR
+2988510848,2988510943,PL
2988510944,2988510975,GB
-2988510976,2988510991,PL
+2988510976,2988510979,PL
+2988510980,2988510983,IT
+2988510984,2988510987,GB
+2988510988,2988510991,PL
2988510992,2988511007,FR
2988511008,2988511015,PL
2988511016,2988511023,IT
@@ -60167,7 +70182,8 @@
2988511088,2988511103,FR
2988511104,2988511167,PL
2988511168,2988511175,IE
-2988511176,2988511183,FR
+2988511176,2988511179,GB
+2988511180,2988511183,FR
2988511184,2988511191,GB
2988511192,2988511487,FR
2988511488,2988511551,PL
@@ -60177,7 +70193,7 @@
2988511576,2988511583,GB
2988511584,2988511663,FR
2988511664,2988511671,DE
-2988511672,2988511675,FR
+2988511672,2988511675,PL
2988511676,2988511679,GB
2988511680,2988511683,NL
2988511684,2988511687,ES
@@ -60187,8 +70203,9 @@
2988511700,2988511703,IT
2988511704,2988511711,PL
2988511712,2988511719,DE
-2988511720,2988511735,FR
-2988511736,2988511739,DE
+2988511720,2988511727,FR
+2988511728,2988511731,NL
+2988511732,2988511739,DE
2988511740,2988511743,FR
2988511744,2988511747,PL
2988511748,2988511751,GB
@@ -60197,7 +70214,7 @@
2988511776,2988511807,GB
2988511808,2988511823,ES
2988511824,2988511831,DE
-2988511832,2988511835,ES
+2988511832,2988511835,GB
2988511836,2988511855,FR
2988511856,2988511871,GB
2988511872,2988511887,PL
@@ -60208,15 +70225,16 @@
2988511920,2988511923,GB
2988511924,2988511927,ES
2988511928,2988511931,IT
-2988511932,2988511935,PL
+2988511932,2988511935,FR
2988511936,2988511951,PT
2988511952,2988511999,GB
2988512000,2988512031,PL
-2988512032,2988512055,FR
+2988512032,2988512047,FR
+2988512048,2988512055,ES
2988512056,2988512059,PL
2988512060,2988512063,FR
2988512064,2988512095,CH
-2988512096,2988512127,FR
+2988512096,2988512127,IE
2988512128,2988512143,PL
2988512144,2988512151,GB
2988512152,2988512155,ES
@@ -60239,10 +70257,12 @@
2988512316,2988512319,DE
2988512320,2988512335,FR
2988512336,2988512339,PL
-2988512340,2988512343,ES
+2988512340,2988512343,DE
2988512344,2988512351,FR
2988512352,2988512383,IT
-2988512384,2988512415,FR
+2988512384,2988512399,FR
+2988512400,2988512403,DE
+2988512404,2988512415,FR
2988512416,2988512435,PL
2988512436,2988512439,FR
2988512440,2988512447,NL
@@ -60251,19 +70271,21 @@
2988512460,2988512467,FR
2988512468,2988512471,GB
2988512472,2988512479,FR
-2988512480,2988512483,ES
+2988512480,2988512483,DE
2988512484,2988512523,FR
2988512524,2988512527,IT
2988512528,2988512543,FR
2988512544,2988512551,PL
-2988512552,2988512579,FR
+2988512552,2988512575,FR
+2988512576,2988512579,NL
2988512580,2988512583,ES
2988512584,2988512587,FR
2988512588,2988512591,PL
2988512592,2988512595,BE
2988512596,2988512599,ES
2988512600,2988512607,PT
-2988512608,2988512639,FR
+2988512608,2988512631,GB
+2988512632,2988512639,PL
2988512640,2988512647,GB
2988512648,2988512651,ES
2988512652,2988512655,DE
@@ -60279,17 +70301,16 @@
2988512840,2988512847,DE
2988512848,2988512851,ES
2988512852,2988512855,DE
-2988512856,2988512879,FR
-2988512880,2988512895,DE
+2988512856,2988512895,FR
2988512896,2988512899,PL
2988512900,2988512903,GB
2988512904,2988512907,ES
-2988512908,2988512911,LT
-2988512912,2988512943,FR
+2988512908,2988512943,FR
2988512944,2988512951,GB
2988512952,2988512955,FR
2988512956,2988512959,LT
-2988512960,2988512967,ES
+2988512960,2988512963,ES
+2988512964,2988512967,PL
2988512968,2988512971,GB
2988512972,2988512975,NL
2988512976,2988512995,FR
@@ -60315,25 +70336,27 @@
2988513276,2988513279,CH
2988513280,2988513283,FR
2988513284,2988513287,ES
-2988513288,2988513307,FR
+2988513288,2988513291,FR
+2988513292,2988513295,PL
+2988513296,2988513303,NL
+2988513304,2988513307,FR
2988513308,2988513311,PL
2988513312,2988513327,PT
2988513328,2988513331,PL
-2988513332,2988513335,FR
-2988513336,2988513343,GB
-2988513344,2988513351,FR
+2988513332,2988513343,FR
+2988513344,2988513351,ES
2988513352,2988513359,IT
2988513360,2988513375,GB
-2988513376,2988513383,FR
-2988513384,2988513407,GB
+2988513376,2988513379,FR
+2988513380,2988513383,PT
+2988513384,2988513407,FR
2988513408,2988513471,PL
2988513472,2988513503,FR
2988513504,2988513507,CH
2988513508,2988513511,DE
2988513512,2988513515,FR
2988513516,2988513519,DE
-2988513520,2988513535,GB
-2988513536,2988513551,DE
+2988513520,2988513551,GB
2988513552,2988513555,IT
2988513556,2988513567,FR
2988513568,2988513575,GB
@@ -60345,11 +70368,12 @@
2988513680,2988513683,ES
2988513684,2988513691,FR
2988513692,2988513695,DE
-2988513696,2988513723,FR
+2988513696,2988513703,FR
+2988513704,2988513707,DE
+2988513708,2988513723,FR
2988513724,2988513727,DE
-2988513728,2988513731,FR
-2988513732,2988513735,BE
-2988513736,2988513743,DE
+2988513728,2988513739,FR
+2988513740,2988513743,ES
2988513744,2988513759,GB
2988513760,2988513879,FR
2988513880,2988513883,ES
@@ -60358,16 +70382,26 @@
2988513900,2988513903,PL
2988513904,2988513919,IT
2988513920,2988513951,FR
-2988513952,2988513983,PT
-2988513984,2988514015,GB
-2988514016,2988514019,PT
+2988513952,2988513967,PT
+2988513968,2988513983,DE
+2988513984,2988513991,GB
+2988513992,2988513999,IE
+2988514000,2988514015,FR
+2988514016,2988514019,ES
2988514020,2988514023,NL
-2988514024,2988514027,PT
-2988514028,2988514111,FR
+2988514024,2988514027,CH
+2988514028,2988514031,PL
+2988514032,2988514047,FR
+2988514048,2988514079,ES
+2988514080,2988514095,PL
+2988514096,2988514099,DE
+2988514100,2988514103,PL
+2988514104,2988514111,FR
2988514112,2988514115,DE
2988514116,2988514127,FR
2988514128,2988514131,IE
-2988514132,2988514139,IT
+2988514132,2988514135,IT
+2988514136,2988514139,ES
2988514140,2988514143,PL
2988514144,2988514159,FR
2988514160,2988514163,IT
@@ -60378,26 +70412,26 @@
2988514208,2988514211,ES
2988514212,2988514219,FR
2988514220,2988514227,GB
-2988514228,2988514231,FR
-2988514232,2988514239,GB
+2988514228,2988514231,IE
+2988514232,2988514239,ES
2988514240,2988514243,FR
2988514244,2988514251,GB
2988514252,2988514255,FR
2988514256,2988514271,ES
2988514272,2988514279,FR
-2988514280,2988514283,PL
-2988514284,2988514287,GB
+2988514280,2988514287,PL
2988514288,2988514303,ES
2988514304,2988514335,FR
-2988514336,2988514339,IE
+2988514336,2988514339,PL
2988514340,2988514343,FR
-2988514344,2988514351,GB
-2988514352,2988514399,FR
+2988514344,2988514359,PL
+2988514360,2988514367,ES
+2988514368,2988514399,FR
2988514400,2988514431,GB
2988514432,2988514447,FR
2988514448,2988514463,ES
-2988514464,2988514527,FR
-2988514528,2988514559,DE
+2988514464,2988514543,FR
+2988514544,2988514559,PL
2988514560,2988514623,FR
2988514624,2988514655,DE
2988514656,2988514671,FR
@@ -60405,7 +70439,7 @@
2988514676,2988514679,IT
2988514680,2988514687,FR
2988514688,2988514719,GB
-2988514720,2988514735,DE
+2988514720,2988514735,ES
2988514736,2988514739,FR
2988514740,2988514743,ES
2988514744,2988514747,BE
@@ -60413,24 +70447,410 @@
2988514752,2988514815,FI
2988514816,2988514823,FR
2988514824,2988514827,PL
-2988514828,2988514831,DE
+2988514828,2988514831,FR
2988514832,2988514839,PL
2988514840,2988514879,ES
2988514880,2988514943,PL
2988514944,2988514959,ES
2988514960,2988514975,PL
-2988514976,2988514979,BE
+2988514976,2988514979,DE
2988514980,2988514983,PL
2988514984,2988514991,IT
-2988514992,2988514999,FR
-2988515000,2988515007,PL
-2988515008,2988515039,FR
+2988514992,2988514995,FR
+2988514996,2988515007,PL
+2988515008,2988515027,FR
+2988515028,2988515031,DE
+2988515032,2988515039,FR
2988515040,2988515071,GB
2988515072,2988515327,FR
2988515328,2988517375,DE
2988517376,2988519423,FR
2988519424,2988521471,PL
-2988521472,2988535807,FR
+2988521472,2988523519,FR
+2988523520,2988523523,GB
+2988523524,2988523599,FR
+2988523600,2988523603,ES
+2988523604,2988523607,GB
+2988523608,2988523615,PL
+2988523616,2988523631,IT
+2988523632,2988523651,PL
+2988523652,2988523655,FR
+2988523656,2988523663,FI
+2988523664,2988523667,DE
+2988523668,2988523679,FR
+2988523680,2988523711,ES
+2988523712,2988523731,GB
+2988523732,2988523735,IT
+2988523736,2988523739,DE
+2988523740,2988523743,FR
+2988523744,2988523775,GB
+2988523776,2988524031,FR
+2988524032,2988524159,DE
+2988524160,2988524163,ES
+2988524164,2988524167,FR
+2988524168,2988524175,ES
+2988524176,2988524191,FR
+2988524192,2988524195,FI
+2988524196,2988524199,DE
+2988524200,2988524203,IE
+2988524204,2988524211,FR
+2988524212,2988524215,FI
+2988524216,2988524219,FR
+2988524220,2988524223,ES
+2988524224,2988524227,DE
+2988524228,2988524231,PL
+2988524232,2988524239,ES
+2988524240,2988524255,FR
+2988524256,2988524259,LT
+2988524260,2988524263,PT
+2988524264,2988524267,CZ
+2988524268,2988524271,NL
+2988524272,2988524287,DE
+2988524288,2988524291,ES
+2988524292,2988524295,IT
+2988524296,2988524303,FR
+2988524304,2988524307,IT
+2988524308,2988524319,GB
+2988524320,2988524351,FR
+2988524352,2988524359,CH
+2988524360,2988524363,ES
+2988524364,2988524367,DE
+2988524368,2988524383,GB
+2988524384,2988524415,IE
+2988524416,2988524447,FI
+2988524448,2988524479,GB
+2988524480,2988524483,CZ
+2988524484,2988524487,IT
+2988524488,2988524495,FR
+2988524496,2988524543,PL
+2988524544,2988524575,IE
+2988524576,2988524591,FR
+2988524592,2988524603,PL
+2988524604,2988524607,ES
+2988524608,2988524623,GB
+2988524624,2988524639,FR
+2988524640,2988524671,DE
+2988524672,2988524799,FR
+2988524800,2988525055,GB
+2988525056,2988525567,PL
+2988525568,2988525583,FR
+2988525584,2988525647,PL
+2988525648,2988525655,IE
+2988525656,2988525659,FR
+2988525660,2988525663,DE
+2988525664,2988525695,FR
+2988525696,2988525823,PL
+2988525824,2988525839,FR
+2988525840,2988525847,ES
+2988525848,2988525851,IT
+2988525852,2988525887,DE
+2988525888,2988525951,FI
+2988525952,2988526079,ES
+2988526080,2988526143,PT
+2988526144,2988526175,BE
+2988526176,2988526239,ES
+2988526240,2988526423,PL
+2988526424,2988526427,BE
+2988526428,2988526431,ES
+2988526432,2988526447,FR
+2988526448,2988526451,ES
+2988526452,2988526455,FR
+2988526456,2988526463,ES
+2988526464,2988526543,FR
+2988526544,2988526559,IT
+2988526560,2988526579,FR
+2988526580,2988526583,ES
+2988526584,2988526591,DE
+2988526592,2988526607,FR
+2988526608,2988526615,DE
+2988526616,2988526655,FR
+2988526656,2988526663,PL
+2988526664,2988526687,FR
+2988526688,2988526703,ES
+2988526704,2988526711,FR
+2988526712,2988526715,ES
+2988526716,2988526719,GB
+2988526720,2988526847,FR
+2988526848,2988526863,PL
+2988526864,2988526867,GB
+2988526868,2988526871,FR
+2988526872,2988526875,DE
+2988526876,2988526911,FR
+2988526912,2988526927,GB
+2988526928,2988526935,DE
+2988526936,2988526943,PL
+2988526944,2988526951,DE
+2988526952,2988526959,PT
+2988526960,2988526975,FR
+2988526976,2988526991,PL
+2988526992,2988526995,DE
+2988526996,2988526999,ES
+2988527000,2988527087,FR
+2988527088,2988527095,GB
+2988527096,2988527099,IE
+2988527100,2988527103,LT
+2988527104,2988527127,FR
+2988527128,2988527167,PL
+2988527168,2988527171,DE
+2988527172,2988527175,ES
+2988527176,2988527179,PT
+2988527180,2988527183,PL
+2988527184,2988527187,IT
+2988527188,2988527191,ES
+2988527192,2988527195,DE
+2988527196,2988527199,FR
+2988527200,2988527207,NL
+2988527208,2988527211,DE
+2988527212,2988527391,FR
+2988527392,2988527399,PL
+2988527400,2988527407,DE
+2988527408,2988527411,FR
+2988527412,2988527415,PL
+2988527416,2988527423,GB
+2988527424,2988527431,FR
+2988527432,2988527439,IT
+2988527440,2988527451,PL
+2988527452,2988527455,PT
+2988527456,2988527459,IT
+2988527460,2988527475,FR
+2988527476,2988527479,ES
+2988527480,2988527487,FR
+2988527488,2988527503,GB
+2988527504,2988527523,FR
+2988527524,2988527531,DE
+2988527532,2988527535,FR
+2988527536,2988527551,GB
+2988527552,2988527583,PL
+2988527584,2988527591,GB
+2988527592,2988527595,IT
+2988527596,2988527599,DE
+2988527600,2988527603,NL
+2988527604,2988527607,FR
+2988527608,2988527611,DE
+2988527612,2988527615,PT
+2988527616,2988528127,DE
+2988528128,2988528159,GB
+2988528160,2988528175,ES
+2988528176,2988528179,CH
+2988528180,2988528183,IT
+2988528184,2988528187,PL
+2988528188,2988528191,GB
+2988528192,2988528207,IE
+2988528208,2988528215,FR
+2988528216,2988528219,IE
+2988528220,2988528223,DE
+2988528224,2988528231,CH
+2988528232,2988528235,GB
+2988528236,2988528239,FR
+2988528240,2988528255,GB
+2988528256,2988528383,FR
+2988528384,2988528399,GB
+2988528400,2988528415,FR
+2988528416,2988528423,GB
+2988528424,2988528431,NL
+2988528432,2988528435,PL
+2988528436,2988528439,FR
+2988528440,2988528447,ES
+2988528448,2988528451,DE
+2988528452,2988528455,IT
+2988528456,2988528459,GB
+2988528460,2988528463,ES
+2988528464,2988528467,DE
+2988528468,2988528471,GB
+2988528472,2988528475,ES
+2988528476,2988528479,DE
+2988528480,2988528483,NL
+2988528484,2988528487,ES
+2988528488,2988528495,FR
+2988528496,2988528511,IT
+2988528512,2988528639,FR
+2988528640,2988528643,BE
+2988528644,2988528647,PL
+2988528648,2988528671,FR
+2988528672,2988528703,DE
+2988528704,2988528767,FR
+2988528768,2988528771,DE
+2988528772,2988528783,FR
+2988528784,2988528787,ES
+2988528788,2988528791,FR
+2988528792,2988528795,PL
+2988528796,2988528799,GB
+2988528800,2988528863,FR
+2988528864,2988528867,DE
+2988528868,2988528875,FR
+2988528876,2988528879,GB
+2988528880,2988528895,ES
+2988528896,2988528911,FR
+2988528912,2988528919,ES
+2988528920,2988528923,CH
+2988528924,2988528927,GB
+2988528928,2988528959,FR
+2988528960,2988528991,FI
+2988528992,2988529007,LT
+2988529008,2988529023,FI
+2988529024,2988529031,PL
+2988529032,2988529047,FR
+2988529048,2988529051,PL
+2988529052,2988529055,PT
+2988529056,2988529119,FR
+2988529120,2988529151,NL
+2988529152,2988529159,IT
+2988529160,2988529163,IE
+2988529164,2988529167,DE
+2988529168,2988529171,IE
+2988529172,2988529175,PT
+2988529176,2988529179,ES
+2988529180,2988529199,FR
+2988529200,2988529207,PL
+2988529208,2988529247,FR
+2988529248,2988529251,GB
+2988529252,2988529255,PL
+2988529256,2988529263,NL
+2988529264,2988529279,ES
+2988529280,2988529311,FR
+2988529312,2988529315,PL
+2988529316,2988529319,FR
+2988529320,2988529323,FI
+2988529324,2988529331,DE
+2988529332,2988529335,FR
+2988529336,2988529339,GB
+2988529340,2988529343,DE
+2988529344,2988529351,IE
+2988529352,2988529359,GB
+2988529360,2988529375,IE
+2988529376,2988529383,GB
+2988529384,2988529387,DE
+2988529388,2988529391,FR
+2988529392,2988529407,PL
+2988529408,2988529423,FR
+2988529424,2988529431,DE
+2988529432,2988529439,FR
+2988529440,2988529455,PL
+2988529456,2988529535,FR
+2988529536,2988529567,FI
+2988529568,2988529599,GB
+2988529600,2988529607,IT
+2988529608,2988529631,FR
+2988529632,2988529647,LT
+2988529648,2988529663,FR
+2988529664,2988529679,PL
+2988529680,2988529703,FR
+2988529704,2988529707,GB
+2988529708,2988529759,FR
+2988529760,2988529767,PL
+2988529768,2988529771,FR
+2988529772,2988529775,DE
+2988529776,2988529783,ES
+2988529784,2988529791,FR
+2988529792,2988529799,ES
+2988529800,2988529807,DE
+2988529808,2988529823,FR
+2988529824,2988529855,ES
+2988529856,2988529887,FR
+2988529888,2988529891,DE
+2988529892,2988529895,PL
+2988529896,2988529899,GB
+2988529900,2988529903,FI
+2988529904,2988529919,BE
+2988529920,2988529935,FR
+2988529936,2988529939,CH
+2988529940,2988529943,GB
+2988529944,2988529947,ES
+2988529948,2988529951,PT
+2988529952,2988529955,GB
+2988529956,2988529959,PL
+2988529960,2988529967,GB
+2988529968,2988529983,NL
+2988529984,2988529999,GB
+2988530000,2988530003,FR
+2988530004,2988530007,GB
+2988530008,2988530039,FR
+2988530040,2988530043,DE
+2988530044,2988530047,FR
+2988530048,2988530063,GB
+2988530064,2988530079,IE
+2988530080,2988530095,FR
+2988530096,2988530099,DE
+2988530100,2988530103,FR
+2988530104,2988530111,GB
+2988530112,2988530191,FR
+2988530192,2988530207,NL
+2988530208,2988530239,PL
+2988530240,2988530271,FR
+2988530272,2988530303,IE
+2988530304,2988530307,DE
+2988530308,2988530311,PL
+2988530312,2988530323,FR
+2988530324,2988530327,GB
+2988530328,2988530351,FR
+2988530352,2988530371,ES
+2988530372,2988530379,FR
+2988530380,2988530383,CH
+2988530384,2988530399,FR
+2988530400,2988530403,ES
+2988530404,2988530407,PL
+2988530408,2988530415,FR
+2988530416,2988530423,PL
+2988530424,2988530431,ES
+2988530432,2988530687,DE
+2988530688,2988530695,IT
+2988530696,2988530703,PL
+2988530704,2988530735,FR
+2988530736,2988530739,IE
+2988530740,2988530743,NL
+2988530744,2988530751,PL
+2988530752,2988530847,FR
+2988530848,2988530851,DE
+2988530852,2988530855,ES
+2988530856,2988530863,PT
+2988530864,2988530867,PL
+2988530868,2988530871,FR
+2988530872,2988530879,IT
+2988530880,2988530887,PL
+2988530888,2988530895,DE
+2988530896,2988530927,FR
+2988530928,2988530943,FI
+2988530944,2988530975,FR
+2988530976,2988531007,PL
+2988531008,2988531015,DE
+2988531016,2988531019,NL
+2988531020,2988531023,IE
+2988531024,2988531027,ES
+2988531028,2988531031,FR
+2988531032,2988531039,PL
+2988531040,2988531047,FR
+2988531048,2988531051,GB
+2988531052,2988531055,PL
+2988531056,2988531071,FR
+2988531072,2988531075,DE
+2988531076,2988531079,GB
+2988531080,2988531083,FR
+2988531084,2988531087,PL
+2988531088,2988531103,FR
+2988531104,2988531119,BE
+2988531120,2988531151,FR
+2988531152,2988531171,PL
+2988531172,2988531175,BE
+2988531176,2988531183,GB
+2988531184,2988531187,ES
+2988531188,2988531191,IE
+2988531192,2988531199,FR
+2988531200,2988531247,ES
+2988531248,2988531259,PL
+2988531260,2988531263,GB
+2988531264,2988531295,FR
+2988531296,2988531311,IE
+2988531312,2988531319,FR
+2988531320,2988531323,PT
+2988531324,2988531327,GB
+2988531328,2988531343,IE
+2988531344,2988531391,FR
+2988531392,2988531399,PL
+2988531400,2988531403,DE
+2988531404,2988531427,PL
+2988531428,2988531451,FR
+2988531452,2988531455,CH
+2988531456,2988535807,FR
2988535808,2988537855,ES
2988537856,2988539935,FR
2988539936,2988539967,GB
@@ -60449,7 +70869,9 @@
2988540220,2988540223,GB
2988540224,2988540255,BE
2988540256,2988540271,PL
-2988540272,2988540287,FR
+2988540272,2988540275,DE
+2988540276,2988540279,PL
+2988540280,2988540287,FR
2988540288,2988540303,BE
2988540304,2988540319,FR
2988540320,2988540351,PT
@@ -60457,8 +70879,9 @@
2988540364,2988540367,PL
2988540368,2988540375,FR
2988540376,2988540379,GB
-2988540380,2988540423,FR
-2988540424,2988540427,GB
+2988540380,2988540415,FR
+2988540416,2988540419,CZ
+2988540420,2988540427,GB
2988540428,2988540431,NL
2988540432,2988540435,FR
2988540436,2988540439,DE
@@ -60468,7 +70891,7 @@
2988540456,2988540459,DE
2988540460,2988540463,ES
2988540464,2988540471,PL
-2988540472,2988540479,DE
+2988540472,2988540479,ES
2988540480,2988540483,FR
2988540484,2988540487,DE
2988540488,2988540491,ES
@@ -60479,19 +70902,18 @@
2988540544,2988540607,PL
2988540608,2988540639,FR
2988540640,2988540647,PL
-2988540648,2988540651,GB
-2988540652,2988540663,PL
-2988540664,2988540671,IT
-2988540672,2988540679,PL
-2988540680,2988540683,IT
+2988540648,2988540651,FR
+2988540652,2988540667,PL
+2988540668,2988540671,IT
+2988540672,2988540683,PL
2988540684,2988540715,FR
2988540716,2988540719,PL
2988540720,2988540735,DE
2988540736,2988540751,ES
2988540752,2988540759,PL
-2988540760,2988540763,GB
+2988540760,2988540763,ES
2988540764,2988540767,DE
-2988540768,2988540775,GB
+2988540768,2988540775,PL
2988540776,2988540783,BE
2988540784,2988540787,ES
2988540788,2988540791,DE
@@ -60516,13 +70938,13 @@
2988541120,2988541131,FR
2988541132,2988541135,DE
2988541136,2988541143,GB
-2988541144,2988541151,IT
-2988541152,2988541215,FR
+2988541144,2988541215,FR
2988541216,2988541231,PT
2988541232,2988541235,DE
2988541236,2988541243,FR
2988541244,2988541247,GB
-2988541248,2988541279,FR
+2988541248,2988541263,FR
+2988541264,2988541279,IT
2988541280,2988541311,NL
2988541312,2988541315,DE
2988541316,2988541319,CH
@@ -60530,7 +70952,7 @@
2988541328,2988541335,PL
2988541336,2988541375,FR
2988541376,2988541391,BE
-2988541392,2988541407,FR
+2988541392,2988541407,CH
2988541408,2988541423,BE
2988541424,2988541439,DE
2988541440,2988541443,IT
@@ -60538,21 +70960,19 @@
2988541464,2988541467,ES
2988541468,2988541503,FR
2988541504,2988541519,CH
-2988541520,2988541535,FR
-2988541536,2988541551,GB
-2988541552,2988541583,FR
-2988541584,2988541587,ES
-2988541588,2988541591,FR
-2988541592,2988541599,GB
-2988541600,2988541603,FR
+2988541520,2988541539,FR
+2988541540,2988541543,PT
+2988541544,2988541547,FR
+2988541548,2988541551,ES
+2988541552,2988541567,FR
+2988541568,2988541587,ES
+2988541588,2988541603,FR
2988541604,2988541607,NL
2988541608,2988541611,GB
2988541612,2988541615,IT
2988541616,2988541619,BE
2988541620,2988541623,CH
-2988541624,2988541631,FR
-2988541632,2988541647,PL
-2988541648,2988541655,FR
+2988541624,2988541655,FR
2988541656,2988541659,ES
2988541660,2988541663,PL
2988541664,2988541679,FR
@@ -60561,7 +70981,8 @@
2988541688,2988541691,ES
2988541692,2988541695,IT
2988541696,2988541727,PL
-2988541728,2988541735,FR
+2988541728,2988541731,NL
+2988541732,2988541735,FR
2988541736,2988541739,GB
2988541740,2988541743,FR
2988541744,2988541747,DE
@@ -60575,9 +70996,12 @@
2988541784,2988541787,NL
2988541788,2988541791,FR
2988541792,2988541807,ES
-2988541808,2988541823,FR
-2988541824,2988541855,LT
-2988541856,2988541887,IE
+2988541808,2988541815,FR
+2988541816,2988541819,ES
+2988541820,2988541823,CZ
+2988541824,2988541855,FR
+2988541856,2988541867,PL
+2988541868,2988541887,FR
2988541888,2988541895,DE
2988541896,2988541899,PL
2988541900,2988541903,BE
@@ -60588,11 +71012,15 @@
2988541940,2988541943,FI
2988541944,2988541947,FR
2988541948,2988541951,ES
-2988541952,2988541959,DE
+2988541952,2988541955,GB
+2988541956,2988541959,DE
2988541960,2988541963,CH
2988541964,2988541967,DE
-2988541968,2988541983,FR
-2988541984,2988542015,ES
+2988541968,2988541999,FR
+2988542000,2988542003,PL
+2988542004,2988542007,DE
+2988542008,2988542011,FI
+2988542012,2988542015,CH
2988542016,2988542019,GB
2988542020,2988542023,FR
2988542024,2988542027,NL
@@ -60602,10 +71030,15 @@
2988542056,2988542063,FR
2988542064,2988542067,GB
2988542068,2988542071,ES
-2988542072,2988542367,FR
+2988542072,2988542255,FR
+2988542256,2988542271,IT
+2988542272,2988542335,ES
+2988542336,2988542367,FR
2988542368,2988542399,CZ
-2988542400,2988542407,FR
-2988542408,2988542415,PL
+2988542400,2988542403,FI
+2988542404,2988542407,FR
+2988542408,2988542411,LT
+2988542412,2988542415,PL
2988542416,2988542431,FR
2988542432,2988542439,PL
2988542440,2988542443,ES
@@ -60632,23 +71065,29 @@
2988542784,2988542847,CZ
2988542848,2988542919,DE
2988542920,2988542923,PL
-2988542924,2988542943,GB
+2988542924,2988542935,FR
+2988542936,2988542939,IT
+2988542940,2988542943,PL
2988542944,2988542959,DE
2988542960,2988542963,FR
2988542964,2988542967,CH
-2988542968,2988542971,NL
-2988542972,2988542975,DE
+2988542968,2988542975,DE
2988542976,2988543007,FR
2988543008,2988543011,PL
-2988543012,2988543015,GB
+2988543012,2988543015,LT
2988543016,2988543023,CH
2988543024,2988543039,DE
-2988543040,2988543043,CZ
-2988543044,2988543047,ES
-2988543048,2988543051,IE
-2988543052,2988543067,FR
-2988543068,2988543071,GB
-2988543072,2988543231,FR
+2988543040,2988543047,GB
+2988543048,2988543067,FR
+2988543068,2988543071,PL
+2988543072,2988543103,FR
+2988543104,2988543167,GB
+2988543168,2988543199,IE
+2988543200,2988543203,GB
+2988543204,2988543207,FR
+2988543208,2988543211,PL
+2988543212,2988543215,GB
+2988543216,2988543231,FR
2988543232,2988543235,IT
2988543236,2988543243,FR
2988543244,2988543247,IT
@@ -60661,15 +71100,19 @@
2988543300,2988543303,FR
2988543304,2988543307,ES
2988543308,2988543311,PL
-2988543312,2988543315,DE
+2988543312,2988543315,FR
2988543316,2988543319,IE
2988543320,2988543323,FI
2988543324,2988543327,PL
-2988543328,2988543383,FR
+2988543328,2988543379,FR
+2988543380,2988543383,PL
2988543384,2988543399,DE
2988543400,2988543403,GB
2988543404,2988543407,NL
-2988543408,2988543423,GB
+2988543408,2988543411,PL
+2988543412,2988543415,FR
+2988543416,2988543419,ES
+2988543420,2988543423,PL
2988543424,2988543431,DE
2988543432,2988543439,GB
2988543440,2988543447,FR
@@ -60682,8 +71125,8 @@
2988543504,2988543527,FR
2988543528,2988543535,GB
2988543536,2988543551,PL
-2988543552,2988543555,GB
-2988543556,2988543559,NL
+2988543552,2988543555,CH
+2988543556,2988543559,BE
2988543560,2988543563,PT
2988543564,2988543567,FR
2988543568,2988543579,PL
@@ -60691,12 +71134,18 @@
2988543584,2988543615,DE
2988543616,2988543743,ES
2988543744,2988543935,FR
-2988543936,2988543939,FI
-2988543940,2988543947,IT
+2988543936,2988543947,PL
2988543948,2988543959,BE
2988543960,2988543967,PL
-2988543968,2988543999,FR
-2988544000,2988544127,CZ
+2988543968,2988544015,FR
+2988544016,2988544023,GB
+2988544024,2988544031,IE
+2988544032,2988544035,PL
+2988544036,2988544039,FR
+2988544040,2988544043,DE
+2988544044,2988544047,GB
+2988544048,2988544063,FR
+2988544064,2988544127,DE
2988544128,2988544159,GB
2988544160,2988544163,FR
2988544164,2988544167,PL
@@ -60705,17 +71154,52 @@
2988544180,2988544183,IT
2988544184,2988544191,DE
2988544192,2988544227,ES
-2988544228,2988544255,FR
-2988544256,2988544383,LT
-2988544384,2988544511,NL
+2988544228,2988544271,FR
+2988544272,2988544275,DE
+2988544276,2988544279,FR
+2988544280,2988544283,GB
+2988544284,2988544287,CZ
+2988544288,2988544291,PL
+2988544292,2988544295,GB
+2988544296,2988544303,FR
+2988544304,2988544307,PL
+2988544308,2988544311,IT
+2988544312,2988544315,DE
+2988544316,2988544323,FR
+2988544324,2988544327,ES
+2988544328,2988544331,PL
+2988544332,2988544351,FR
+2988544352,2988544355,PL
+2988544356,2988544359,DE
+2988544360,2988544367,FR
+2988544368,2988544371,ES
+2988544372,2988544375,FR
+2988544376,2988544383,ES
+2988544384,2988544447,GB
+2988544448,2988544463,FR
+2988544464,2988544479,ES
+2988544480,2988544511,PL
2988544512,2988544527,FR
2988544528,2988544535,ES
-2988544536,2988544539,PL
-2988544540,2988544543,LT
+2988544536,2988544543,FR
2988544544,2988544639,ES
-2988544640,2988544735,DE
-2988544736,2988544751,PL
-2988544752,2988544799,FR
+2988544640,2988544647,PL
+2988544648,2988544655,FR
+2988544656,2988544659,ES
+2988544660,2988544663,FR
+2988544664,2988544667,DE
+2988544668,2988544671,ES
+2988544672,2988544687,GB
+2988544688,2988544703,PL
+2988544704,2988544719,IT
+2988544720,2988544723,FR
+2988544724,2988544727,DE
+2988544728,2988544767,FR
+2988544768,2988544775,ES
+2988544776,2988544783,PT
+2988544784,2988544787,GB
+2988544788,2988544791,PL
+2988544792,2988544799,PT
2988544800,2988544831,FI
2988544832,2988544863,FR
2988544864,2988544895,PL
@@ -60723,12 +71207,11 @@
2988544928,2988544931,DE
2988544932,2988544935,FR
2988544936,2988544943,IT
-2988544944,2988544951,PL
+2988544944,2988544951,PT
2988544952,2988544959,GB
2988544960,2988544979,ES
2988544980,2988544983,FR
-2988544984,2988544991,IE
-2988544992,2988544995,PL
+2988544984,2988544995,PL
2988544996,2988544999,FR
2988545000,2988545003,DE
2988545004,2988545007,ES
@@ -60755,19 +71238,37 @@
2988545292,2988545295,DE
2988545296,2988545311,FR
2988545312,2988545327,CH
-2988545328,2988545335,IT
-2988545336,2988545343,DE
-2988545344,2988545407,FR
-2988545408,2988545439,IE
-2988545440,2988545471,FR
+2988545328,2988545331,FR
+2988545332,2988545343,DE
+2988545344,2988545367,FR
+2988545368,2988545371,DE
+2988545372,2988545375,GB
+2988545376,2988545383,DE
+2988545384,2988545387,ES
+2988545388,2988545391,FR
+2988545392,2988545395,DE
+2988545396,2988545439,FR
+2988545440,2988545443,DE
+2988545444,2988545447,ES
+2988545448,2988545455,PL
+2988545456,2988545471,FR
2988545472,2988545503,ES
2988545504,2988545507,FR
2988545508,2988545511,DE
2988545512,2988545515,IT
-2988545516,2988545531,PL
-2988545532,2988545535,FR
-2988545536,2988545567,BE
-2988545568,2988545663,FR
+2988545516,2988545523,PL
+2988545524,2988545527,FR
+2988545528,2988545531,PL
+2988545532,2988545551,FR
+2988545552,2988545555,PL
+2988545556,2988545559,IT
+2988545560,2988545563,FR
+2988545564,2988545567,DE
+2988545568,2988545571,NL
+2988545572,2988545575,DE
+2988545576,2988545579,FR
+2988545580,2988545583,ES
+2988545584,2988545663,FR
2988545664,2988545695,ES
2988545696,2988545727,DE
2988545728,2988545791,FR
@@ -60779,15 +71280,18 @@
2988545836,2988545839,DE
2988545840,2988545855,FR
2988545856,2988545859,ES
-2988545860,2988545867,FR
-2988545868,2988545871,PL
+2988545860,2988545863,FR
+2988545864,2988545871,PL
2988545872,2988545919,FR
-2988545920,2988545923,GB
+2988545920,2988545923,ES
2988545924,2988545927,PL
2988545928,2988545931,BE
-2988545932,2988545943,FR
+2988545932,2988545935,DE
+2988545936,2988545943,FR
2988545944,2988545967,NL
-2988545968,2988545983,GB
+2988545968,2988545971,IT
+2988545972,2988545979,FR
+2988545980,2988545983,DE
2988545984,2988545987,FR
2988545988,2988545991,PL
2988545992,2988545995,LT
@@ -60809,7 +71313,7 @@
2988546176,2988546239,GB
2988546240,2988546271,LT
2988546272,2988546279,IT
-2988546280,2988546283,GB
+2988546280,2988546283,DE
2988546284,2988546287,BE
2988546288,2988546291,GB
2988546292,2988546295,ES
@@ -60822,15 +71326,18 @@
2988546328,2988546335,ES
2988546336,2988546351,PT
2988546352,2988546367,ES
-2988546368,2988546431,FR
-2988546432,2988546463,DE
+2988546368,2988546439,FR
+2988546440,2988546443,DE
+2988546444,2988546447,FR
+2988546448,2988546463,ES
2988546464,2988546527,FR
2988546528,2988546535,BE
2988546536,2988546539,IE
2988546540,2988546547,ES
2988546548,2988546559,FR
2988546560,2988546567,NL
-2988546568,2988546575,FR
+2988546568,2988546571,PL
+2988546572,2988546575,DE
2988546576,2988546579,ES
2988546580,2988546583,GB
2988546584,2988546591,FR
@@ -60838,24 +71345,34 @@
2988546600,2988546603,PT
2988546604,2988546615,GB
2988546616,2988546619,FI
-2988546620,2988546623,FR
+2988546620,2988546623,IT
2988546624,2988546687,FI
2988546688,2988546695,PL
2988546696,2988546699,FR
2988546700,2988546703,IT
-2988546704,2988546727,FR
-2988546728,2988546735,ES
-2988546736,2988546751,FR
+2988546704,2988546751,FR
2988546752,2988546783,ES
-2988546784,2988546831,FR
+2988546784,2988546815,FR
+2988546816,2988546819,PT
+2988546820,2988546823,NL
+2988546824,2988546831,FR
2988546832,2988546835,DE
2988546836,2988546839,ES
2988546840,2988546847,IE
-2988546848,2988546879,FR
+2988546848,2988546851,PT
+2988546852,2988546855,IT
+2988546856,2988546859,FR
+2988546860,2988546863,IE
+2988546864,2988546867,GB
+2988546868,2988546871,FR
+2988546872,2988546875,GB
+2988546876,2988546879,IE
2988546880,2988546947,ES
2988546948,2988546951,DE
-2988546952,2988546959,FR
-2988546960,2988546967,DE
+2988546952,2988546955,FR
+2988546956,2988546959,DE
+2988546960,2988546963,CH
+2988546964,2988546967,IT
2988546968,2988546971,FR
2988546972,2988546975,BE
2988546976,2988546991,FI
@@ -60863,8 +71380,7 @@
2988546996,2988546999,ES
2988547000,2988547003,IT
2988547004,2988547007,ES
-2988547008,2988547011,GB
-2988547012,2988547015,FR
+2988547008,2988547015,FR
2988547016,2988547019,NL
2988547020,2988547023,ES
2988547024,2988547039,FR
@@ -60884,19 +71400,22 @@
2988547124,2988547127,IT
2988547128,2988547135,FR
2988547136,2988547167,IT
-2988547168,2988547199,BE
+2988547168,2988547183,IE
+2988547184,2988547191,ES
+2988547192,2988547195,DE
+2988547196,2988547199,PL
2988547200,2988547207,IE
-2988547208,2988547211,FR
-2988547212,2988547215,DE
-2988547216,2988547219,IT
-2988547220,2988547223,FR
-2988547224,2988547227,ES
-2988547228,2988547231,PT
-2988547232,2988547239,FR
+2988547208,2988547211,ES
+2988547212,2988547215,GB
+2988547216,2988547223,FR
+2988547224,2988547227,GB
+2988547228,2988547239,FR
2988547240,2988547247,PL
2988547248,2988547255,NL
-2988547256,2988547271,FR
-2988547272,2988547279,ES
+2988547256,2988547263,FR
+2988547264,2988547267,GB
+2988547268,2988547271,ES
+2988547272,2988547279,NL
2988547280,2988547295,FR
2988547296,2988547303,DE
2988547304,2988547311,FR
@@ -60906,31 +71425,30 @@
2988547432,2988547435,ES
2988547436,2988547443,PL
2988547444,2988547447,DE
-2988547448,2988547455,FR
+2988547448,2988547451,FR
+2988547452,2988547455,PT
2988547456,2988547471,DE
-2988547472,2988547475,NL
+2988547472,2988547475,LT
2988547476,2988547479,GB
2988547480,2988547487,FR
2988547488,2988547519,ES
-2988547520,2988547523,PL
+2988547520,2988547523,NL
2988547524,2988547527,CZ
2988547528,2988547531,IT
2988547532,2988547535,ES
2988547536,2988547539,FR
2988547540,2988547543,DE
-2988547544,2988547547,IT
-2988547548,2988547551,PL
-2988547552,2988547567,FR
+2988547544,2988547547,BE
+2988547548,2988547567,FR
2988547568,2988547583,DE
2988547584,2988547599,ES
2988547600,2988547615,FR
2988547616,2988547647,PL
2988547648,2988547655,FR
2988547656,2988547663,PL
-2988547664,2988547679,IE
+2988547664,2988547679,FR
2988547680,2988547711,CH
-2988547712,2988547727,PL
-2988547728,2988547751,FR
+2988547712,2988547751,FR
2988547752,2988547775,DE
2988547776,2988547807,ES
2988547808,2988547871,FR
@@ -60954,11 +71472,15 @@
2988556416,2988556447,FR
2988556448,2988556451,NL
2988556452,2988556479,FR
-2988556480,2988556495,IT
-2988556496,2988556511,FR
-2988556512,2988556543,DE
-2988556544,2988556799,FR
-2988556800,2988556839,DE
+2988556480,2988556487,IT
+2988556488,2988556491,PL
+2988556492,2988556495,DE
+2988556496,2988556527,FR
+2988556528,2988556535,PL
+2988556536,2988556539,GB
+2988556540,2988556543,DE
+2988556544,2988556831,FR
+2988556832,2988556839,DE
2988556840,2988556847,FR
2988556848,2988556855,ES
2988556856,2988556863,GB
@@ -60968,26 +71490,38 @@
2988556888,2988556895,FR
2988556896,2988556911,PL
2988556912,2988556919,NL
-2988556920,2988556959,PL
+2988556920,2988556927,PL
+2988556928,2988556943,FR
+2988556944,2988556959,PL
2988556960,2988556963,ES
2988556964,2988556967,FR
2988556968,2988556975,BE
2988556976,2988556979,FI
-2988556980,2988557023,FR
+2988556980,2988556999,FR
+2988557000,2988557003,BE
+2988557004,2988557007,ES
+2988557008,2988557023,FR
2988557024,2988557039,IE
-2988557040,2988557047,FR
+2988557040,2988557043,PT
+2988557044,2988557047,BE
2988557048,2988557055,PL
-2988557056,2988557071,FR
+2988557056,2988557059,ES
+2988557060,2988557071,FR
2988557072,2988557075,PL
2988557076,2988557079,FR
2988557080,2988557087,FI
-2988557088,2988557119,DE
-2988557120,2988557151,NL
+2988557088,2988557095,CH
+2988557096,2988557103,ES
+2988557104,2988557111,FR
+2988557112,2988557115,LT
+2988557116,2988557151,NL
2988557152,2988557215,FR
2988557216,2988557247,BE
2988557248,2988557251,FR
2988557252,2988557255,ES
-2988557256,2988557279,GB
+2988557256,2988557259,FR
+2988557260,2988557263,DE
+2988557264,2988557279,GB
2988557280,2988557295,ES
2988557296,2988557299,BE
2988557300,2988557303,PL
@@ -60997,20 +71531,17 @@
2988557344,2988557379,FR
2988557380,2988557383,ES
2988557384,2988557387,GB
-2988557388,2988557391,ES
-2988557392,2988557395,FR
-2988557396,2988557399,PL
+2988557388,2988557391,CZ
+2988557392,2988557399,PL
2988557400,2988557407,DE
2988557408,2988557427,ES
2988557428,2988557431,DE
-2988557432,2988557435,PL
-2988557436,2988557439,FR
+2988557432,2988557439,PL
2988557440,2988557471,GB
2988557472,2988557487,PL
2988557488,2988557495,DE
2988557496,2988557539,PL
-2988557540,2988557543,IE
-2988557544,2988557599,FR
+2988557540,2988557599,FR
2988557600,2988557631,GB
2988557632,2988557639,FR
2988557640,2988557643,IE
@@ -61020,21 +71551,30 @@
2988557664,2988557695,PL
2988557696,2988557727,FR
2988557728,2988557759,PL
-2988557760,2988557763,FR
-2988557764,2988557767,GB
+2988557760,2988557763,DE
+2988557764,2988557767,ES
2988557768,2988557771,PL
2988557772,2988557823,FR
2988557824,2988557951,DE
2988557952,2988557983,LT
-2988557984,2988557999,GB
+2988557984,2988557999,FR
2988558000,2988558015,IE
2988558016,2988558047,FR
2988558048,2988558063,PL
-2988558064,2988558071,IT
+2988558064,2988558067,DE
+2988558068,2988558071,FI
2988558072,2988558075,DE
2988558076,2988558079,PL
-2988558080,2988558127,FR
-2988558128,2988558135,PL
+2988558080,2988558083,FR
+2988558084,2988558087,PL
+2988558088,2988558095,FR
+2988558096,2988558103,PL
+2988558104,2988558111,FR
+2988558112,2988558115,IE
+2988558116,2988558123,GB
+2988558124,2988558127,FR
+2988558128,2988558131,DE
+2988558132,2988558135,PL
2988558136,2988558139,GB
2988558140,2988558143,DE
2988558144,2988558207,PL
@@ -61045,7 +71585,12 @@
2988558464,2988558527,NL
2988558528,2988558591,PL
2988558592,2988558655,GB
-2988558656,2988558767,FR
+2988558656,2988558719,FR
+2988558720,2988558727,PL
+2988558728,2988558731,IT
+2988558732,2988558735,PT
+2988558736,2988558751,GB
+2988558752,2988558767,FR
2988558768,2988558783,CH
2988558784,2988558831,FR
2988558832,2988558847,IT
@@ -61062,10 +71607,12 @@
2988558976,2988559007,GB
2988559008,2988559011,BE
2988559012,2988559015,PL
-2988559016,2988559071,FR
+2988559016,2988559039,FR
+2988559040,2988559055,GB
+2988559056,2988559071,LT
2988559072,2988559103,ES
2988559104,2988559135,PL
-2988559136,2988559139,FR
+2988559136,2988559139,DE
2988559140,2988559151,PL
2988559152,2988559231,FR
2988559232,2988559247,DE
@@ -61090,14 +71637,16 @@
2988559736,2988559743,GB
2988559744,2988559871,FR
2988559872,2988560383,IT
-2988560384,2988560575,FR
+2988560384,2988560447,FR
+2988560448,2988560451,DE
+2988560452,2988560455,PL
+2988560456,2988560575,FR
2988560576,2988560591,ES
-2988560592,2988560595,DE
+2988560592,2988560595,NL
2988560596,2988560599,IT
2988560600,2988560603,PL
-2988560604,2988560607,PT
-2988560608,2988560623,FR
-2988560624,2988560627,BE
+2988560604,2988560623,FR
+2988560624,2988560627,PL
2988560628,2988560639,FR
2988560640,2988560703,GB
2988560704,2988560711,DE
@@ -61111,19 +71660,199 @@
2988560800,2988560815,DE
2988560816,2988560831,FR
2988560832,2988560863,GB
-2988560864,2988560895,DE
+2988560864,2988560871,PL
+2988560872,2988560895,GB
2988560896,2988560911,PL
2988560912,2988560919,FR
2988560920,2988560923,DE
2988560924,2988560951,FR
2988560952,2988560959,PL
-2988560960,2988561023,IE
-2988561024,2988561031,ES
-2988561032,2988561039,FR
-2988561040,2988561043,ES
-2988561044,2988561055,FR
-2988561056,2988561071,FI
-2988561072,2988572671,FR
+2988560960,2988560975,FR
+2988560976,2988560991,ES
+2988560992,2988560995,FR
+2988560996,2988561007,DE
+2988561008,2988561023,FR
+2988561024,2988561027,BE
+2988561028,2988561039,FR
+2988561040,2988561043,GB
+2988561044,2988561047,DE
+2988561048,2988561051,PL
+2988561052,2988561055,GB
+2988561056,2988561059,FR
+2988561060,2988561071,PL
+2988561072,2988561075,NL
+2988561076,2988561079,LT
+2988561080,2988561083,PL
+2988561084,2988561087,GB
+2988561088,2988561095,FR
+2988561096,2988561099,PL
+2988561100,2988561103,CZ
+2988561104,2988561119,BE
+2988561120,2988561171,FR
+2988561172,2988561175,PL
+2988561176,2988561179,ES
+2988561180,2988561183,PL
+2988561184,2988561187,GB
+2988561188,2988561191,FR
+2988561192,2988561195,CZ
+2988561196,2988561199,LT
+2988561200,2988561203,PL
+2988561204,2988561207,GB
+2988561208,2988561215,PL
+2988561216,2988561231,FR
+2988561232,2988561235,PT
+2988561236,2988561239,GB
+2988561240,2988561243,BE
+2988561244,2988561263,PL
+2988561264,2988561283,FR
+2988561284,2988561287,NL
+2988561288,2988561291,ES
+2988561292,2988561295,PT
+2988561296,2988561303,PL
+2988561304,2988561343,FR
+2988561344,2988561375,PL
+2988561376,2988561391,FR
+2988561392,2988561403,ES
+2988561404,2988561407,LT
+2988561408,2988561667,GB
+2988561668,2988561671,PL
+2988561672,2988561675,NL
+2988561676,2988561679,FI
+2988561680,2988561683,FR
+2988561684,2988561687,CZ
+2988561688,2988561691,DE
+2988561692,2988561695,LT
+2988561696,2988561727,FR
+2988561728,2988561743,PL
+2988561744,2988561747,FR
+2988561748,2988561751,PL
+2988561752,2988561759,GB
+2988561760,2988561763,PL
+2988561764,2988561767,PT
+2988561768,2988561775,PL
+2988561776,2988561843,FR
+2988561844,2988561847,IT
+2988561848,2988561855,FR
+2988561856,2988561871,IE
+2988561872,2988561875,CH
+2988561876,2988561887,FR
+2988561888,2988561903,PL
+2988561904,2988561983,FR
+2988561984,2988562015,DE
+2988562016,2988562027,ES
+2988562028,2988562031,LT
+2988562032,2988562047,PL
+2988562048,2988562079,DE
+2988562080,2988562095,PL
+2988562096,2988562111,IE
+2988562112,2988562127,FR
+2988562128,2988562143,PL
+2988562144,2988562151,FR
+2988562152,2988562163,PL
+2988562164,2988562167,DE
+2988562168,2988562431,NL
+2988562432,2988562591,FR
+2988562592,2988562599,GB
+2988562600,2988562607,FR
+2988562608,2988562611,PT
+2988562612,2988562623,PL
+2988562624,2988562687,FI
+2988562688,2988562703,GB
+2988562704,2988562707,PL
+2988562708,2988562711,DE
+2988562712,2988562719,GB
+2988562720,2988562815,BE
+2988562816,2988562823,PL
+2988562824,2988562831,PT
+2988562832,2988562835,FR
+2988562836,2988562839,NL
+2988562840,2988562847,FR
+2988562848,2988562855,NL
+2988562856,2988562863,DE
+2988562864,2988562911,FR
+2988562912,2988562943,PL
+2988562944,2988563011,FR
+2988563012,2988563015,PT
+2988563016,2988563023,GB
+2988563024,2988563043,FR
+2988563044,2988563047,ES
+2988563048,2988563055,FR
+2988563056,2988563059,NL
+2988563060,2988563063,CH
+2988563064,2988563067,FI
+2988563068,2988563075,PT
+2988563076,2988563079,GB
+2988563080,2988563083,DE
+2988563084,2988563087,FR
+2988563088,2988563103,PL
+2988563104,2988563135,FR
+2988563136,2988563151,PL
+2988563152,2988563183,FR
+2988563184,2988563187,CZ
+2988563188,2988563191,PL
+2988563192,2988563199,CH
+2988563200,2988563455,IE
+2988563456,2988563487,FR
+2988563488,2988563499,GB
+2988563500,2988563503,FR
+2988563504,2988563519,PL
+2988563520,2988563523,CZ
+2988563524,2988563527,FI
+2988563528,2988563535,PL
+2988563536,2988563555,FR
+2988563556,2988563559,BE
+2988563560,2988563567,FR
+2988563568,2988563571,NL
+2988563572,2988563575,GB
+2988563576,2988563583,IE
+2988563584,2988563591,PT
+2988563592,2988563599,GB
+2988563600,2988563607,ES
+2988563608,2988563615,DE
+2988563616,2988563647,FR
+2988563648,2988563663,LT
+2988563664,2988563667,FR
+2988563668,2988563671,PL
+2988563672,2988563675,FR
+2988563676,2988563679,PL
+2988563680,2988563967,FR
+2988563968,2988563999,BE
+2988564000,2988564015,IE
+2988564016,2988564019,FR
+2988564020,2988564023,PL
+2988564024,2988564031,FR
+2988564032,2988564063,BE
+2988564064,2988564175,FR
+2988564176,2988564179,PL
+2988564180,2988564183,GB
+2988564184,2988564187,PL
+2988564188,2988564191,GB
+2988564192,2988564195,ES
+2988564196,2988564199,LT
+2988564200,2988564203,DE
+2988564204,2988564215,FR
+2988564216,2988564219,GB
+2988564220,2988564223,IT
+2988564224,2988564275,FR
+2988564276,2988564279,BE
+2988564280,2988564287,ES
+2988564288,2988564303,FR
+2988564304,2988564307,IT
+2988564308,2988564311,PL
+2988564312,2988564319,ES
+2988564320,2988564351,FR
+2988564352,2988564359,DE
+2988564360,2988564367,GB
+2988564368,2988564383,FR
+2988564384,2988564387,IE
+2988564388,2988564391,GB
+2988564392,2988564395,NL
+2988564396,2988564399,CH
+2988564400,2988564403,DE
+2988564404,2988564407,ES
+2988564408,2988564471,FR
+2988564472,2988564479,GB
+2988564480,2988572671,FR
2988572672,2988703743,RU
2988703744,2988834815,PL
2988834816,2988965887,CH
@@ -61135,7 +71864,7 @@
2989621248,2989752319,BE
2989752320,2989817855,SY
2989817856,2989883391,KW
-2989883392,2989916159,UA
+2989883392,2989948927,UA
2989948928,2990014463,FI
2990014464,2990079999,PL
2990080000,2990145535,RU
@@ -61148,9 +71877,11 @@
2990518016,2990518079,IT
2990518080,2990525247,DE
2990525248,2990525311,ES
-2990525312,2990534655,DE
-2990534656,2990534783,EG
-2990534784,2990535935,DE
+2990525312,2990528703,DE
+2990528704,2990528735,RS
+2990528736,2990534655,DE
+2990534656,2990534687,EG
+2990534688,2990535935,DE
2990535936,2990535967,PL
2990535968,2990538751,DE
2990538752,2991063039,RU
@@ -61163,149 +71894,176 @@
2991128576,2991144959,PL
2991144960,2991161343,SA
2991161344,2991177727,FR
-2991177728,2991182335,SE
-2991182336,2991182591,GB
-2991182592,2991185919,SE
+2991177728,2991178751,A1
+2991178752,2991179263,SE
+2991179264,2991179327,A1
+2991179328,2991180799,SE
+2991180800,2991182847,A1
+2991182848,2991185919,SE
2991185920,2991185951,GB
2991185952,2991185967,NL
2991185968,2991185983,DE
2991185984,2991185999,DK
2991186000,2991186015,ES
-2991186016,2991186175,SE
+2991186016,2991186019,FR
+2991186020,2991186175,SE
2991186176,2991186207,GB
2991186208,2991186223,NL
2991186224,2991186239,DE
2991186240,2991186255,DK
2991186256,2991186271,ES
-2991186272,2991186431,SE
+2991186272,2991186275,FR
+2991186276,2991186431,SE
2991186432,2991186463,GB
2991186464,2991186479,NL
2991186480,2991186495,DE
2991186496,2991186511,DK
2991186512,2991186527,ES
-2991186528,2991186687,SE
+2991186528,2991186531,FR
+2991186532,2991186687,SE
2991186688,2991186719,GB
2991186720,2991186735,NL
2991186736,2991186751,DE
2991186752,2991186767,DK
2991186768,2991186783,ES
-2991186784,2991186943,SE
+2991186784,2991186787,FR
+2991186788,2991186943,SE
2991186944,2991186975,GB
2991186976,2991186991,NL
2991186992,2991187007,DE
2991187008,2991187023,DK
2991187024,2991187039,ES
-2991187040,2991187199,SE
+2991187040,2991187043,FR
+2991187044,2991187199,SE
2991187200,2991187231,GB
2991187232,2991187247,NL
2991187248,2991187263,DE
2991187264,2991187279,DK
2991187280,2991187295,ES
-2991187296,2991187455,SE
+2991187296,2991187299,FR
+2991187300,2991187455,SE
2991187456,2991187487,GB
2991187488,2991187503,NL
2991187504,2991187519,DE
2991187520,2991187535,DK
2991187536,2991187551,ES
-2991187552,2991187711,SE
+2991187552,2991187555,FR
+2991187556,2991187711,SE
2991187712,2991187743,GB
2991187744,2991187759,NL
2991187760,2991187775,DE
2991187776,2991187791,DK
2991187792,2991187807,ES
-2991187808,2991187967,SE
+2991187808,2991187811,FR
+2991187812,2991187967,SE
2991187968,2991187999,GB
2991188000,2991188015,NL
2991188016,2991188031,DE
2991188032,2991188047,DK
2991188048,2991188063,ES
-2991188064,2991188223,SE
+2991188064,2991188067,FR
+2991188068,2991188223,SE
2991188224,2991188255,GB
2991188256,2991188271,NL
2991188272,2991188287,DE
2991188288,2991188303,DK
2991188304,2991188319,ES
-2991188320,2991188479,SE
+2991188320,2991188323,FR
+2991188324,2991188479,SE
2991188480,2991188511,GB
2991188512,2991188527,NL
2991188528,2991188543,DE
2991188544,2991188559,DK
2991188560,2991188575,ES
-2991188576,2991188735,SE
+2991188576,2991188579,FR
+2991188580,2991188735,SE
2991188736,2991188767,GB
2991188768,2991188783,NL
2991188784,2991188799,DE
2991188800,2991188815,DK
2991188816,2991188831,ES
-2991188832,2991188991,SE
+2991188832,2991188835,FR
+2991188836,2991188991,SE
2991188992,2991189023,GB
2991189024,2991189039,NL
2991189040,2991189055,DE
2991189056,2991189071,DK
2991189072,2991189087,ES
-2991189088,2991189247,SE
+2991189088,2991189091,FR
+2991189092,2991189247,SE
2991189248,2991189279,GB
2991189280,2991189295,NL
2991189296,2991189311,DE
2991189312,2991189327,DK
2991189328,2991189343,ES
-2991189344,2991189503,SE
+2991189344,2991189347,FR
+2991189348,2991189503,SE
2991189504,2991189535,GB
2991189536,2991189551,NL
2991189552,2991189567,DE
2991189568,2991189583,DK
2991189584,2991189599,ES
-2991189600,2991189759,SE
+2991189600,2991189603,FR
+2991189604,2991189759,SE
2991189760,2991189791,GB
2991189792,2991189807,NL
2991189808,2991189823,DE
2991189824,2991189839,DK
2991189840,2991189855,ES
-2991189856,2991190015,SE
+2991189856,2991189859,FR
+2991189860,2991190015,SE
2991190016,2991190047,GB
2991190048,2991190063,NL
2991190064,2991190079,DE
2991190080,2991190095,DK
2991190096,2991190111,ES
-2991190112,2991190271,SE
+2991190112,2991190115,FR
+2991190116,2991190271,SE
2991190272,2991190303,GB
2991190304,2991190319,NL
2991190320,2991190335,DE
2991190336,2991190351,DK
2991190352,2991190367,ES
-2991190368,2991190527,SE
+2991190368,2991190371,FR
+2991190372,2991190527,SE
2991190528,2991190559,GB
2991190560,2991190575,NL
2991190576,2991190591,DE
2991190592,2991190607,DK
2991190608,2991190623,ES
-2991190624,2991190783,SE
+2991190624,2991190627,FR
+2991190628,2991190783,SE
2991190784,2991190815,GB
2991190816,2991190831,NL
2991190832,2991190847,DE
2991190848,2991190863,DK
2991190864,2991190879,ES
-2991190880,2991191039,SE
+2991190880,2991190883,FR
+2991190884,2991191039,SE
2991191040,2991191071,GB
2991191072,2991191087,NL
2991191088,2991191103,DE
2991191104,2991191119,DK
2991191120,2991191135,ES
-2991191136,2991191295,SE
+2991191136,2991191139,FR
+2991191140,2991191295,SE
2991191296,2991191327,GB
2991191328,2991191343,NL
2991191344,2991191359,DE
2991191360,2991191375,DK
2991191376,2991191391,ES
-2991191392,2991191551,SE
+2991191392,2991191395,FR
+2991191396,2991191551,SE
2991191552,2991191583,GB
2991191584,2991191599,NL
2991191600,2991191615,DE
2991191616,2991191631,DK
2991191632,2991191647,ES
-2991191648,2991191807,SE
+2991191648,2991191651,FR
+2991191652,2991191807,SE
2991191808,2991192063,FI
-2991192064,2991192319,DK
+2991192064,2991192255,DK
+2991192256,2991192319,IT
2991192320,2991194111,SE
2991194112,2991210495,NO
2991210496,2991243263,RU
@@ -61329,34 +72087,33 @@
2991538176,2991554559,SI
2991554560,2991571455,GB
2991571456,2991587327,IT
-2991587328,2991718399,RU
2991718400,2991849471,CH
2991849472,2991980543,NL
2991980544,2991980807,UA
2991980808,2991980815,NA
2991980816,2991981063,UA
2991981064,2991981071,DE
-2991981072,2991981463,UA
-2991981464,2991981471,NA
-2991981472,2991981495,UA
+2991981072,2991981495,UA
2991981496,2991981503,NA
-2991981504,2991981647,UA
-2991981648,2991981655,NA
-2991981656,2991981687,UA
-2991981688,2991981695,NA
-2991981696,2991981839,UA
+2991981504,2991981839,UA
2991981840,2991981847,RU
-2991981848,2991981911,UA
-2991981912,2991981919,RU
-2991981920,2991982535,UA
+2991981848,2991982535,UA
2991982536,2991982543,GL
2991982544,2991982592,UA
2991982593,2991982599,JP
2991982600,2991982607,UA
-2991982608,2991982846,JP
+2991982608,2991982751,JP
+2991982752,2991982759,UA
+2991982760,2991982846,JP
2991982847,2991983359,UA
2991983360,2991983615,JP
-2991983616,2992111615,UA
+2991983616,2991984383,UA
+2991984384,2991984639,JP
+2991984640,2991985919,UA
+2991985920,2991986175,JP
+2991986176,2991986431,UA
+2991986432,2991986687,JP
+2991986688,2992111615,UA
2992111616,2992373759,KZ
2992373760,2992635903,UA
2992635904,2993684479,GB
@@ -61366,7 +72123,6 @@
2994733056,2994798591,GR
2994798592,2994929663,RU
2994929664,2994995199,IR
-2994995200,2995060735,RU
2995060736,2995126271,UA
2995126272,2995191807,GE
2995191808,2995257343,LB
@@ -61390,7 +72146,7 @@
2996649984,2996666367,RO
2996666368,2996682751,RU
2996682752,2996699135,DK
-2996731904,2996748287,UA
+2996699136,2996764671,UA
2996764672,2996768767,NL
2996768768,2996772863,RU
2996772864,2996776959,UA
@@ -61409,8 +72165,7 @@
2996862976,2996895743,AM
2996895744,2996928511,KW
2996928512,2996994047,RU
-2996994048,2996994879,DE
-2996994880,2996994943,UA
+2996994048,2996994943,DE
2996994944,2996995071,US
2996995072,2996995327,BZ
2996995328,2996995647,DE
@@ -61424,11 +72179,11 @@
2996996352,2996996383,DE
2996996384,2996996447,RU
2996996448,2996996575,UA
-2996996576,2996996639,DE
+2996996576,2996996583,US
+2996996584,2996996639,DE
2996996640,2996996767,UA
2996996768,2996996831,RU
-2996996832,2996996863,DE
-2996996864,2996997119,CN
+2996996832,2996997119,CN
2996997120,2996998143,DE
2996998144,2996998271,UA
2996998272,2996998463,DE
@@ -61436,25 +72191,26 @@
2996998528,2996998655,UA
2996998656,2996998719,DE
2996998720,2996998911,RU
-2996998912,2996999199,DE
-2996999200,2996999231,AU
-2996999232,2996999359,DE
+2996998912,2996999359,DE
2996999360,2996999423,IL
2996999424,2996999551,IN
2996999552,2996999679,DE
2996999680,2996999935,GB
-2996999936,2996999967,DE
-2996999968,2996999999,AU
-2997000000,2997000447,DE
+2996999936,2996999951,DE
+2996999952,2996999967,LT
+2996999968,2997000447,DE
2997000448,2997000703,RU
2997000704,2997000767,DE
-2997000768,2997000831,SC
+2997000768,2997000831,CY
2997000832,2997000959,CA
2997000960,2997000991,DE
2997000992,2997001119,RO
2997001120,2997001471,DE
2997001472,2997001727,BZ
-2997001728,2997003071,DE
+2997001728,2997001983,TR
+2997001984,2997003023,DE
+2997003024,2997003039,US
+2997003040,2997003071,DE
2997003072,2997003135,RU
2997003136,2997003199,DE
2997003200,2997003263,RU
@@ -61462,11 +72218,9 @@
2997003288,2997003295,NL
2997003296,2997003327,CA
2997003328,2997003391,RU
-2997003392,2997003583,DE
-2997003584,2997003647,UA
-2997003648,2997004031,DE
+2997003392,2997004031,DE
2997004032,2997004287,BZ
-2997004288,2997004543,US
+2997004288,2997004543,CA
2997004544,2997004607,DE
2997004608,2997004671,RU
2997004672,2997004799,DE
@@ -61482,37 +72236,43 @@
2997006592,2997006655,DE
2997006656,2997006719,TR
2997006720,2997006847,RU
-2997006848,2997008191,DE
-2997008192,2997008255,TR
+2997006848,2997008255,DE
2997008256,2997008383,LT
2997008384,2997008447,DE
2997008448,2997008511,RU
2997008512,2997008639,LT
2997008640,2997008959,DE
2997008960,2997009023,RU
-2997009024,2997010431,DE
-2997010432,2997018623,US
+2997009024,2997010495,DE
+2997010496,2997010559,CY
+2997010560,2997010687,IN
+2997010688,2997018623,DE
2997018624,2997019135,GB
2997019136,2997019391,TR
2997019392,2997019647,GB
-2997019648,2997019679,DE
-2997019680,2997019711,AU
+2997019648,2997019711,DE
2997019712,2997019903,US
2997019904,2997020415,DE
2997020416,2997020671,CA
-2997020672,2997021183,DE
+2997020672,2997020719,DE
+2997020720,2997020735,SE
+2997020736,2997020799,DE
+2997020800,2997020863,CA
+2997020864,2997021183,DE
2997021184,2997021695,GB
-2997021696,2997021951,NL
-2997021952,2997022015,DE
-2997022016,2997022143,GB
-2997022144,2997022207,IN
-2997022208,2997022239,DE
+2997021696,2997022079,DE
+2997022080,2997022143,GB
+2997022144,2997022239,DE
2997022240,2997022303,NL
2997022304,2997022367,SG
-2997022368,2997022783,DE
+2997022368,2997022751,DE
+2997022752,2997022783,TR
2997022784,2997022847,IN
2997022848,2997023231,BZ
-2997023232,2997024255,DE
+2997023232,2997023287,DE
+2997023288,2997023295,US
+2997023296,2997023423,IN
+2997023424,2997024255,DE
2997024256,2997024511,TR
2997024512,2997026815,DE
2997026816,2997059583,RU
@@ -61556,12 +72316,17 @@
2999985712,2999985727,BE
2999985728,2999985743,CZ
2999985744,2999985759,NL
-2999985760,2999986687,BE
-2999986688,2999992319,NL
+2999985760,2999988991,BE
+2999988992,2999988999,FR
+2999989000,2999989247,NL
+2999989248,2999991039,BE
+2999991040,2999992319,NL
2999992320,3000000511,RU
3000000512,3000008703,DE
3000008704,3000016895,RU
-3000016896,3000025087,GB
+3000016896,3000020991,GB
+3000020992,3000023039,US
+3000023040,3000025087,GB
3000025088,3000033279,GI
3000033280,3000041471,RU
3000041472,3000049663,BA
@@ -61642,6 +72407,7 @@
3000434688,3000451071,IR
3000451072,3000467455,RU
3000467456,3000471551,GB
+3000471552,3000475647,RU
3000475648,3000483839,UA
3000483840,3000487935,PL
3000487936,3000492031,PS
@@ -61649,7 +72415,7 @@
3000506368,3000508415,PL
3000508416,3000510463,UA
3000510464,3000512511,PL
-3000512512,3000514559,EE
+3000512512,3000514559,SE
3000514560,3000516607,SI
3000516608,3000520703,RU
3000520704,3000522751,CZ
@@ -61666,7 +72432,6 @@
3000545280,3000547327,RU
3000547328,3000549375,UA
3000549376,3000551423,SE
-3000551424,3000553471,RS
3000553472,3000555519,KG
3000555520,3000557567,RU
3000557568,3000561663,UA
@@ -61704,7 +72469,6 @@
3000668160,3000672255,RU
3000672256,3000676351,HR
3000676352,3000680447,RO
-3000680448,3000684543,RS
3000684544,3000688639,RU
3000688640,3000692735,PL
3000692736,3000696831,UA
@@ -61714,7 +72478,7 @@
3000709120,3000713215,AM
3000713216,3000717311,A2
3000717312,3000721407,UA
-3000721408,3000729599,PL
+3000721408,3000733695,PL
3000733696,3000737791,RU
3000737792,3000741887,UA
3000741888,3000745983,RU
@@ -61732,24 +72496,85 @@
3001815040,3001819135,RU
3001819136,3001823231,IR
3001823232,3001827327,GE
-3001827328,3001831423,SE
+3001827328,3001827647,SE
+3001827648,3001827743,GB
+3001827744,3001827775,US
+3001827776,3001828864,SE
+3001828865,3001828896,US
+3001828897,3001828927,SE
+3001828928,3001828991,DE
+3001828992,3001829055,GB
+3001829056,3001829120,SE
+3001829121,3001829152,US
+3001829153,3001829183,SE
+3001829184,3001829247,DE
+3001829248,3001829311,GB
+3001829312,3001830400,SE
+3001830401,3001830432,GB
+3001830433,3001830495,SE
+3001830496,3001830527,GB
+3001830528,3001830559,IT
+3001830560,3001830591,FR
+3001830592,3001830623,US
+3001830624,3001830631,SE
+3001830632,3001830639,IT
+3001830640,3001830656,SE
+3001830657,3001830688,GB
+3001830689,3001830751,SE
+3001830752,3001830783,GB
+3001830784,3001830815,IT
+3001830816,3001830847,FR
+3001830848,3001830879,US
+3001830880,3001830887,SE
+3001830888,3001830895,IT
+3001830896,3001830912,SE
+3001830913,3001830944,GB
+3001830945,3001831007,SE
+3001831008,3001831039,GB
+3001831040,3001831071,IT
+3001831072,3001831103,FR
+3001831104,3001831135,US
+3001831136,3001831167,IT
+3001831168,3001831199,GB
+3001831200,3001831263,SE
+3001831264,3001831295,GB
+3001831296,3001831327,IT
+3001831328,3001831359,FR
+3001831360,3001831391,US
+3001831392,3001831423,SE
3001831424,3001835519,BA
3001835520,3001839615,RU
3001839616,3001843711,ES
-3001843712,3001845759,RU
-3001845760,3001851903,GB
+3001843712,3001846271,RU
+3001846272,3001846783,GB
+3001846784,3001847807,RU
+3001847808,3001851903,GB
3001851904,3001855999,IT
3001856000,3001859071,NL
3001859072,3001860095,MD
-3001860096,3001864191,EE
+3001860096,3001861119,LV
+3001861120,3001862143,LT
+3001862144,3001863167,EE
+3001863168,3001864191,LT
3001864192,3001868287,RU
-3001868288,3001869312,FR
+3001868288,3001869055,FR
+3001869056,3001869311,RU
+3001869312,3001869312,FR
3001869313,3001869599,SA
3001869600,3001869600,FR
3001869601,3001869696,IR
3001869697,3001869823,YE
3001869824,3001869887,IR
-3001869888,3001872383,FR
+3001869888,3001870079,FR
+3001870080,3001870335,RU
+3001870336,3001870591,IT
+3001870592,3001870847,FR
+3001870848,3001871103,DE
+3001871104,3001871359,ES
+3001871360,3001871615,GR
+3001871616,3001871871,PL
+3001871872,3001872127,PT
+3001872128,3001872383,RO
3001872384,3001876479,RU
3001876480,3001880575,IT
3001880576,3001884671,RU
@@ -61760,7 +72585,8 @@
3001885440,3001886463,BE
3001886464,3001886511,NL
3001886512,3001886527,US
-3001886528,3001888767,NL
+3001886528,3001886543,IE
+3001886544,3001888767,NL
3001888768,3001892863,BH
3001892864,3001896959,AZ
3001896960,3001901055,CH
@@ -61778,95 +72604,96 @@
3001954304,3001958399,IT
3001958400,3001962495,KZ
3001962496,3001966591,GB
-3001966592,3001970687,NL
+3001966592,3001968639,NL
+3001968640,3001970687,BE
3001970688,3001974783,RU
3001974784,3001975567,GB
-3001975568,3001975591,US
-3001975592,3001975599,TW
-3001975600,3001975607,CN
-3001975608,3001975615,RU
-3001975616,3001975623,US
+3001975568,3001975575,LK
+3001975576,3001975591,US
+3001975592,3001975599,MY
+3001975600,3001975615,CN
+3001975616,3001975623,UA
3001975624,3001975631,RU
3001975632,3001975655,GB
3001975656,3001975663,RU
-3001975664,3001975671,US
+3001975664,3001975671,FR
3001975672,3001975679,CN
3001975680,3001975687,TW
3001975688,3001975695,US
-3001975696,3001975703,GB
+3001975696,3001975703,UA
3001975704,3001975711,DE
3001975712,3001975719,MY
3001975720,3001975727,US
-3001975728,3001975735,GB
+3001975728,3001975735,RU
3001975736,3001975743,MY
-3001975744,3001975759,GB
-3001975760,3001975799,US
-3001975800,3001975815,GB
+3001975744,3001975751,CN
+3001975752,3001975759,UA
+3001975760,3001975767,US
+3001975768,3001975783,CN
+3001975784,3001975791,US
+3001975792,3001975799,IT
+3001975800,3001975807,US
+3001975808,3001975815,UA
3001975816,3001975823,US
-3001975824,3001975839,GB
-3001975840,3001975847,CN
+3001975824,3001975831,UA
+3001975832,3001975847,GB
3001975848,3001975855,US
-3001975856,3001975863,GB
-3001975864,3001975871,AU
-3001975872,3001975879,US
-3001975880,3001975895,GB
-3001975896,3001975903,RU
-3001975904,3001976415,GB
-3001976416,3001976447,IL
-3001976448,3001976575,GB
-3001976576,3001976607,US
-3001976608,3001976623,GB
-3001976624,3001976639,CN
+3001975856,3001975863,MY
+3001975864,3001975871,AE
+3001975872,3001975887,US
+3001975888,3001975895,CN
+3001975896,3001975919,GB
+3001975920,3001975927,CN
+3001975928,3001975935,AU
+3001975936,3001976639,GB
3001976640,3001976655,RU
3001976656,3001976671,GB
3001976672,3001976679,IN
3001976680,3001976687,US
3001976688,3001976831,GB
3001976832,3001976895,CN
-3001976896,3001976927,IL
+3001976896,3001976927,GB
3001976928,3001976959,RU
-3001976960,3001977087,GB
-3001977088,3001977103,IN
+3001976960,3001977103,GB
3001977104,3001977119,RU
-3001977120,3001977135,GB
-3001977136,3001977151,AE
-3001977152,3001977167,GB
+3001977120,3001977135,IN
+3001977136,3001977143,CN
+3001977144,3001977151,TW
+3001977152,3001977167,IN
3001977168,3001977183,LK
-3001977184,3001977199,GB
-3001977200,3001977215,DE
+3001977184,3001977215,GB
3001977216,3001977247,RU
3001977248,3001977311,GB
3001977312,3001977343,CN
-3001977344,3001977375,IL
-3001977376,3001977407,CA
-3001977408,3001977439,IL
-3001977440,3001977447,GB
+3001977344,3001977375,GB
+3001977376,3001977407,US
+3001977408,3001977447,GB
3001977448,3001977455,IT
-3001977456,3001977463,US
-3001977464,3001977487,GB
+3001977456,3001977471,US
+3001977472,3001977487,IN
3001977488,3001977503,LK
3001977504,3001977519,GB
3001977520,3001977535,CN
-3001977536,3001977575,GB
-3001977576,3001977583,CA
-3001977584,3001977599,GB
+3001977536,3001977567,GB
+3001977568,3001977575,CA
+3001977576,3001977599,GB
3001977600,3001977855,DK
-3001977856,3001978047,GB
-3001978048,3001978111,US
-3001978112,3001978303,GB
-3001978304,3001978367,IL
+3001977856,3001978031,GB
+3001978032,3001978047,RU
+3001978048,3001978367,GB
3001978368,3001978495,US
3001978496,3001978527,RU
3001978528,3001978559,UA
3001978560,3001978591,US
-3001978592,3001978607,AU
-3001978608,3001978623,GB
-3001978624,3001978687,CA
+3001978592,3001978607,RU
+3001978608,3001978615,IE
+3001978616,3001978623,CN
+3001978624,3001978687,US
3001978688,3001978751,EE
3001978752,3001978783,RU
3001978784,3001978815,US
-3001978816,3001978831,LK
-3001978832,3001978847,GB
+3001978816,3001978823,LK
+3001978824,3001978847,GB
3001978848,3001978879,UA
3001978880,3001982975,GB
3001982976,3001987071,CH
@@ -61877,17 +72704,9 @@
3002003456,3002011647,PL
3002011648,3002015743,BA
3002015744,3002019839,IT
-3002019840,3002020095,NL
-3002020096,3002020159,SG
-3002020160,3002020223,NL
-3002020224,3002020287,IL
+3002019840,3002020287,NL
3002020288,3002020303,US
-3002020304,3002020319,BZ
-3002020320,3002021695,NL
-3002021696,3002021759,SG
-3002021760,3002022527,NL
-3002022528,3002022655,BZ
-3002022656,3002023935,NL
+3002020304,3002023935,NL
3002023936,3002028031,DE
3002028032,3002036223,GB
3002036224,3002040319,BG
@@ -61949,7 +72768,11 @@
3002662912,3002664959,DE
3002664960,3002667007,ES
3002667008,3002669055,GE
-3002669056,3002671103,DE
+3002669056,3002669199,DE
+3002669200,3002669207,CH
+3002669208,3002669951,DE
+3002669952,3002669983,US
+3002669984,3002671103,DE
3002671104,3002673151,LV
3002673152,3002675199,GB
3002675200,3002677247,DK
@@ -61966,7 +72789,7 @@
3002699776,3002701823,SE
3002701824,3002703871,NL
3002703872,3002705919,DE
-3002705920,3002707967,BG
+3002705920,3002707967,MK
3002707968,3002710015,KW
3002710016,3002712063,IT
3002712064,3002714111,LU
@@ -62010,8 +72833,8 @@
3002798080,3002800127,FR
3002800128,3002802175,NL
3002802176,3002804223,GB
-3002804224,3002806271,TR
-3002806272,3002808319,DE
+3002804224,3002806015,TR
+3002806016,3002808319,DE
3002808320,3002810367,FI
3002810368,3002812415,AT
3002812416,3002814463,IT
@@ -62024,7 +72847,9 @@
3002826752,3002828799,SE
3002828800,3002830847,RU
3002830848,3002834943,FI
-3002834944,3002836991,LU
+3002834944,3002835887,LU
+3002835888,3002835903,US
+3002835904,3002836991,LU
3002836992,3002841087,GB
3002841088,3002843135,CZ
3002843136,3002845183,NL
@@ -62050,15 +72875,17 @@
3003056128,3003058175,DE
3003058176,3003058431,MT
3003058432,3003058687,FI
-3003058688,3003058943,EE
-3003058944,3003059135,PH
-3003059136,3003060223,EE
+3003058688,3003058751,EE
+3003058752,3003058943,PH
+3003058944,3003059199,IL
+3003059200,3003060223,EE
3003060224,3003062271,DE
3003062272,3003064319,NL
3003064320,3003066367,RO
3003066368,3003066887,PL
3003066888,3003066895,MX
-3003066896,3003066911,UA
+3003066896,3003066903,RU
+3003066904,3003066911,UA
3003066912,3003068415,PL
3003068416,3003070463,NL
3003070464,3003074559,GB
@@ -62071,7 +72898,11 @@
3003088896,3003090943,FR
3003090944,3003092991,DE
3003092992,3003095039,NO
-3003095040,3003097087,AT
+3003095040,3003095567,AT
+3003095568,3003095583,CZ
+3003095584,3003096063,AT
+3003096064,3003096079,CZ
+3003096080,3003097087,AT
3003097088,3003099135,FR
3003099136,3003101183,CZ
3003101184,3003103231,UA
@@ -62090,8 +72921,7 @@
3024879616,3025141759,CN
3025141760,3025403903,KR
3025403904,3025600511,CN
-3025600512,3025649663,AP
-3025649664,3025666047,IN
+3025600512,3025666047,IN
3025666048,3025928191,CN
3025928192,3025932287,TW
3025932288,3025944575,JP
@@ -62099,17 +72929,20 @@
3025960960,3025969151,PK
3025969152,3025973247,IN
3025973248,3025974271,AU
+3025974272,3025975295,HK
3025975296,3025977343,SG
3025977344,3025979391,AU
3025979392,3025981439,IN
-3025981440,3025985535,AU
+3025981440,3025982463,AU
+3025982464,3025983487,ID
+3025983488,3025985535,AU
3025985536,3025989631,BD
3025989632,3025993727,KR
3025993728,3026059263,VN
3026059264,3026067455,PH
3026068480,3026069503,PH
3026069504,3026071551,JP
-3026071552,3026073599,AP
+3026071552,3026073599,HK
3026073600,3026075647,CN
3026075648,3026083839,AF
3026083840,3026087935,CN
@@ -62130,6 +72963,7 @@
3028484096,3028500479,KR
3028500480,3028516863,JP
3028516864,3028518911,AU
+3028518912,3028520959,JP
3028520960,3028521983,ID
3028521984,3028523007,LA
3028523008,3028525055,JP
@@ -62140,28 +72974,32 @@
3029336064,3029598207,JP
3029598208,3029600255,VN
3029600256,3029601279,AU
+3029601280,3029602303,IN
+3029602304,3029604351,CN
3029604352,3029605375,AU
+3029605376,3029606399,JP
3029606400,3029614591,IN
-3029614592,3029622783,AU
+3029614592,3029630975,AU
3029630976,3029635071,VN
3029635072,3029637119,JP
+3029637120,3029639167,CN
3029639168,3029643263,JP
3029643264,3029644287,AU
+3029644288,3029645311,KR
3029645312,3029651455,JP
3029651456,3029653503,BD
-3029655552,3029663743,CN
+3029653504,3029663743,CN
3029663744,3029671935,BD
3029671936,3029680127,IN
3029680128,3029696511,MN
3029696512,3029704703,CN
3029704704,3029712895,JP
-3029712896,3029713919,AU
+3029712896,3029714943,AU
3029714944,3029715199,JP
3029715200,3029715455,AU
-3029715456,3029715967,AP
-3029715968,3029716991,JP
+3029715456,3029716991,JP
3029716992,3029721087,PK
-3029721088,3029725183,AP
+3029721088,3029725183,AU
3029725184,3029727231,IN
3029727232,3029728255,AU
3029728256,3029729279,HK
@@ -62180,11 +73018,13 @@
3031564288,3031572479,IN
3031572480,3031580671,HK
3031580672,3031581695,AU
+3031581696,3031582719,JP
3031582720,3031584767,SG
3031584768,3031587839,JP
3031587840,3031592959,ID
3031592960,3031595007,HK
3031595008,3031596031,AU
+3031596032,3031597055,KH
3031597056,3031613439,PK
3031613440,3031629823,CN
3031629824,3031695359,IN
@@ -62200,13 +73040,13 @@
3032285184,3032301567,JP
3032301568,3032317951,KR
3032317952,3032319999,JP
-3032320000,3032321023,AU
-3032322048,3032323071,AU
+3032320000,3032323071,AU
3032323072,3032324095,CN
3032324096,3032326143,AU
3032326144,3032330239,TL
3032330240,3032334335,KR
3032334336,3032342527,NZ
+3032342528,3032350719,JP
3032350720,3032743935,PH
3032743936,3033038847,JP
3033038848,3033063423,AU
@@ -62220,11 +73060,12 @@
3033268224,3033530367,TW
3033530368,3033661439,CN
3033661440,3033694207,KR
+3033694208,3033710591,BD
3033710592,3033712639,KR
3033712640,3033714687,SG
3033714688,3033715711,NZ
+3033715712,3033716735,AU
3033716736,3033717759,TH
-3033717760,3033718783,BD
3033718784,3033726975,CN
3033726976,3033743359,KR
3033743360,3033745407,IN
@@ -62237,6 +73078,7 @@
3033792512,3033923583,CN
3033923584,3033939967,JP
3033939968,3033948159,AU
+3033948160,3033956351,NC
3033956352,3033964543,IN
3033964544,3033966591,HK
3033966592,3033968639,AU
@@ -62252,17 +73094,21 @@
3034251264,3034316799,HK
3034316800,3034447871,JP
3034447872,3034456063,AU
+3034456064,3034464255,JP
3034464256,3034466303,NZ
3034466304,3034472447,JP
-3034472448,3034480639,IN
+3034472448,3034478591,IN
+3034478592,3034480639,JP
3034480640,3034482687,SG
3034482688,3034484735,AF
3034484736,3034488831,TH
3034488832,3034492927,AU
-3034497024,3034498047,AU
+3034492928,3034497023,JP
+3034497024,3034499071,AU
3034499072,3034500095,HK
3034500096,3034501119,TW
3034501120,3034502143,VU
+3034502144,3034503167,IN
3034503168,3034504191,ID
3034504192,3034505215,KR
3034505216,3034578943,CN
@@ -62270,9 +73116,9 @@
3035103232,3035168767,PH
3035168768,3035193343,CN
3035193344,3035197439,JP
-3035197440,3035199487,AP
+3035197440,3035199487,HK
3035199488,3035200511,IN
-3035201536,3035202559,AU
+3035200512,3035202559,AU
3035202560,3035205631,JP
3035205632,3035207679,MY
3035207680,3035209727,ID
@@ -62282,7 +73128,7 @@
3035299840,3035316223,JP
3035316224,3035324415,CN
3035324416,3035326463,JP
-3035326464,3035327487,AU
+3035326464,3035328511,AU
3035332608,3035333631,AU
3035333632,3035334655,HK
3035335680,3035337727,JP
@@ -62290,15 +73136,24 @@
3035338752,3035339007,SG
3035339008,3035339263,IN
3035339264,3035339775,HK
+3035339776,3035340799,AU
3035340800,3035348991,MN
3035348992,3035357183,AU
+3035357184,3035365375,JP
3035365376,3035627519,KR
-3035627520,3036676095,ID
+3035627520,3036610559,ID
+3036610560,3036676095,SG
+3036676096,3037790207,AR
+3037790208,3037855743,VE
+3037986816,3038248959,AR
+3038511104,3038773247,AR
+3039035392,3039166463,DO
+3039297536,3039363071,PY
+3039821824,3040346111,CO
3053453312,3054501887,ID
3054501888,3054534655,HK
3054534656,3054537727,PH
3054537728,3054538751,SG
-3054538752,3054540799,BD
3054540800,3054541823,NZ
3054541824,3054542847,BD
3054542848,3054551039,ID
@@ -62312,35 +73167,42 @@
3054665728,3054682111,IN
3054682112,3054698495,PH
3054698496,3054731263,IN
+3054731264,3054764031,SG
3054764032,3054960639,JP
3054960640,3054993407,ID
3054993408,3054997503,IN
3054997504,3055001599,SG
3055001600,3055005695,ID
3055005696,3055007743,NZ
+3055007744,3055009791,CN
3055009792,3055011839,AU
+3055011840,3055013887,CN
3055013888,3055014911,JP
3055014912,3055015935,AU
3055015936,3055026175,JP
-3055026176,3055550463,ID
+3055026176,3055484927,ID
+3055484928,3055550463,KR
3055550464,3056599039,CN
3056599040,3056615423,JP
3056615424,3056623615,BD
3056623616,3056631807,CN
3056631808,3056639999,NZ
+3056640000,3056648191,ID
3056648192,3056664575,IN
3056664576,3056734207,CN
3056734208,3056746495,KR
3056746496,3056747519,NP
-3056747520,3056748543,BD
3056748544,3056749567,WS
+3056749568,3056750591,SG
3056750592,3056754687,TH
3056754688,3056758783,JP
3056758784,3056762879,CN
3056762880,3056771071,SG
3056771072,3056772095,NZ
+3056772096,3056773119,JP
3056773120,3056774143,WS
-3056775168,3056779263,AP
+3056774144,3056775167,JP
+3056775168,3056779263,AF
3056779264,3056791551,JP
3056791552,3056795647,ID
3056795648,3056861183,CN
@@ -62348,8 +73210,11 @@
3056992256,3057025023,CN
3057025024,3057033215,PH
3057033216,3057037311,NZ
+3057037312,3057041407,JP
3057041408,3057049599,MY
-3057049600,3057053695,AU
+3057049600,3057050623,AU
+3057050624,3057051647,SG
+3057051648,3057053695,AU
3057053696,3057054719,JP
3057054720,3057055743,HK
3057055744,3057057791,JP
@@ -62367,6 +73232,7 @@
3059744768,3063414783,CN
3063414784,3063545855,HK
3063545856,3063611391,NZ
+3063611392,3063676927,TW
3063676928,3063742463,IN
3063742464,3063807999,CN
3063808000,3063939071,JP
@@ -62374,6 +73240,7 @@
3063955456,3063963647,CN
3063963648,3063971839,BD
3063971840,3063988223,AU
+3063988224,3064004607,JP
3064004608,3064012799,LK
3064012800,3064020991,MY
3064020992,3064023039,JP
@@ -62446,8 +73313,7 @@
3075383296,3075385343,IN
3075385344,3075386367,MY
3075386368,3075387391,AU
-3075387392,3075388415,JP
-3075388416,3075389439,MY
+3075388416,3075389439,CN
3075389440,3075390463,IN
3075390464,3075391487,JP
3075391488,3075407871,KR
@@ -62455,6 +73321,7 @@
3075473408,3075571711,VN
3075571712,3075575807,FJ
3075575808,3075577855,AU
+3075577856,3075579903,ID
3075579904,3075581951,MY
3075581952,3075582975,MN
3075582976,3075583999,TH
@@ -62478,10 +73345,10 @@
3076194304,3076202495,VN
3076202496,3076210687,HK
3076210688,3076218879,ID
+3076218880,3076227071,JP
3076227072,3076228095,CN
3076228096,3076229119,NP
-3076229120,3076231167,TH
-3076231168,3076235263,CN
+3076229120,3076235263,CN
3076235264,3076243455,VN
3076243456,3076259839,KR
3076259840,3076521983,CN
@@ -62490,7 +73357,7 @@
3081437184,3081502719,MY
3081502720,3081764863,CN
3081764864,3081846783,JP
-3081846784,3081854975,AP
+3081846784,3081854975,HK
3081854976,3081859071,MN
3081859072,3081861119,PH
3081861120,3081862143,AU
@@ -62501,7 +73368,7 @@
3082158080,3082166271,CN
3082166272,3082174463,JP
3082174464,3082178559,PH
-3082178560,3082179583,AP
+3082178560,3082179583,HK
3082179584,3082181631,IN
3082181632,3082182655,ID
3082182656,3082190847,LA
@@ -62509,18 +73376,60 @@
3082289152,3087007743,CN
3087007744,3091202047,US
3091202048,3091726335,CA
-3091726336,3093168127,US
+3091726336,3091955711,US
+3091955712,3091959807,CA
+3091959808,3091976191,US
+3091976192,3091980287,CA
+3091980288,3093168127,US
3093168128,3093200895,CA
+3093200896,3093213183,US
+3093213184,3093217279,CA
+3093217280,3093233663,US
3093233664,3093237759,PR
-3093299200,3093939167,US
-3093939168,3093939175,CN
-3093939176,3093941111,US
-3093941112,3093941119,MY
-3093941120,3093941199,US
-3093941200,3093941207,CN
-3093941208,3093942271,US
-3093942272,3093942527,CA
-3093942528,3093954759,US
+3093237760,3093241863,US
+3093241864,3093241871,AU
+3093241872,3093242287,US
+3093242288,3093242295,AU
+3093242296,3093242719,US
+3093242720,3093242751,CN
+3093242752,3093243223,US
+3093243224,3093243231,AU
+3093243232,3093245575,US
+3093245576,3093245583,BR
+3093245584,3093245719,US
+3093245720,3093245727,AU
+3093245728,3093245999,US
+3093246000,3093246007,AU
+3093246008,3093246431,US
+3093246432,3093246439,AU
+3093246440,3093247327,US
+3093247328,3093247335,AU
+3093247336,3093247511,US
+3093247512,3093247519,AU
+3093247520,3093248375,US
+3093248376,3093248399,AU
+3093248400,3093248415,US
+3093248416,3093248431,AU
+3093248432,3093248479,US
+3093248480,3093248487,AU
+3093248488,3093248727,US
+3093248728,3093248735,AU
+3093248736,3093248831,US
+3093248832,3093248839,AU
+3093248840,3093248887,US
+3093248888,3093248895,AU
+3093248896,3093249599,US
+3093249600,3093249623,AU
+3093249624,3093249679,US
+3093249680,3093249687,AU
+3093249688,3093266431,US
+3093299200,3093940991,US
+3093940992,3093941055,CN
+3093941056,3093941103,US
+3093941104,3093941119,CN
+3093941120,3093941191,US
+3093941192,3093941199,CN
+3093941200,3093954759,US
3093954760,3093954767,AR
3093954768,3093954975,US
3093954976,3093954983,AU
@@ -62546,7 +73455,9 @@
3093955664,3093955679,CA
3093955680,3093956479,US
3093956480,3093956495,IE
-3093956496,3093956567,US
+3093956496,3093956543,US
+3093956544,3093956551,AU
+3093956552,3093956567,US
3093956568,3093956575,MX
3093956576,3093956895,US
3093956896,3093956943,CA
@@ -62598,15 +73509,52 @@
3093962376,3093962379,CA
3093962380,3093962475,US
3093962476,3093962479,CA
-3093962480,3093962807,US
+3093962480,3093962559,US
+3093962560,3093962575,GB
+3093962576,3093962807,US
3093962808,3093962815,AU
-3093962816,3093963359,US
+3093962816,3093962943,US
+3093962944,3093962951,GB
+3093962952,3093963359,US
3093963360,3093963367,CA
3093963368,3093963487,US
3093963488,3093963495,IE
3093963496,3093963599,US
3093963600,3093963607,CA
-3093963608,3093986367,US
+3093963608,3093965039,US
+3093965040,3093965055,GB
+3093965056,3093965359,US
+3093965360,3093965367,FR
+3093965368,3093965663,US
+3093965664,3093965671,KW
+3093965672,3093965879,US
+3093965880,3093965881,CA
+3093965882,3093965885,US
+3093965886,3093965887,MX
+3093965888,3093965903,US
+3093965904,3093965905,CA
+3093965906,3093965965,US
+3093965966,3093965967,MX
+3093965968,3093966319,US
+3093966320,3093966323,AU
+3093966324,3093967191,US
+3093967192,3093967199,CA
+3093967200,3093968911,US
+3093968912,3093968927,CA
+3093968928,3093968943,US
+3093968944,3093968951,MX
+3093968952,3093969007,US
+3093969008,3093969015,IE
+3093969016,3093969031,US
+3093969032,3093969035,CA
+3093969036,3093969131,US
+3093969132,3093969135,MX
+3093969136,3093970503,US
+3093970504,3093970507,GB
+3093970508,3093977159,US
+3093977160,3093977163,AU
+3093977164,3093977167,IL
+3093977168,3093986367,US
3093986368,3093986431,DE
3093986432,3093986463,US
3093986464,3093986495,GB
@@ -62616,14 +73564,55 @@
3096444928,3096969215,CA
3096969216,3097493503,US
3097493504,3097755647,CA
-3097755648,3098148863,US
+3097755648,3098095615,US
+3098095616,3098099711,CA
+3098099712,3098116095,US
3098148864,3098165247,JM
-3098214400,3098263551,US
+3098165248,3098181631,US
+3098181632,3098185727,CA
+3098185728,3098263551,US
3098263552,3098271743,CA
3098271744,3098275839,US
-3098279936,3098476543,US
+3098279936,3098279943,US
+3098279944,3098279951,KW
+3098279952,3098280591,US
+3098280592,3098280599,PA
+3098280600,3098281503,US
+3098281504,3098281511,PA
+3098281512,3098281711,US
+3098281712,3098281719,PA
+3098281720,3098290223,US
+3098290224,3098290231,IN
+3098290232,3098291087,US
+3098291088,3098291095,IN
+3098291096,3098291119,US
+3098291120,3098291135,NL
+3098291136,3098291151,US
+3098291152,3098291159,NL
+3098291160,3098295751,US
+3098295752,3098295759,PL
+3098295760,3098322367,US
+3098322368,3098322375,BD
+3098322376,3098322383,US
+3098322384,3098322391,BD
+3098322392,3098322695,US
+3098322696,3098322703,BD
+3098322704,3098333951,US
+3098333952,3098333959,BD
+3098333960,3098365535,US
+3098365536,3098365551,IN
+3098365552,3098365951,US
+3098365952,3098365959,MX
+3098365960,3098371303,US
+3098371304,3098371311,PE
+3098371312,3098476543,US
3098476544,3098492927,CA
-3098492928,3103784959,US
+3098492928,3098495999,US
+3098496000,3098496255,CA
+3098496256,3098502143,US
+3098502144,3098502207,IN
+3098502208,3103784959,US
+3103784960,3107979263,EU
3120562176,3120594943,CO
3120594944,3120599039,AR
3120599040,3120601087,EC
@@ -62634,6 +73623,7 @@
3120610304,3120611327,PY
3120611328,3120627711,AR
3120627712,3120644095,NI
+3120644096,3120660479,DO
3120660480,3120668671,PA
3120676864,3120680959,HT
3120685056,3120689151,AR
@@ -62657,19 +73647,27 @@
3122135040,3122331647,VE
3122331648,3122348031,BO
3122397184,3122659327,CO
-3122659328,3122724863,GT
-3122790400,3122987007,CL
-3123052544,3123118079,AR
+3122659328,3122675711,CR
+3122675712,3122700287,GT
+3122700288,3122716671,CR
+3122716672,3122724863,GT
+3122790400,3123052543,CL
+3123052544,3123183615,AR
3123183616,3123314687,CL
3123314688,3123380223,EC
3123380224,3123412991,CO
3123445760,3123576831,TT
-3123576832,3123609599,EC
+3123576832,3123642367,EC
3123707904,3123970047,UY
3124232192,3124772863,AR
+3124789248,3124822015,CR
+3124822016,3124838399,EC
+3124854784,3124887551,CL
3124887552,3124953087,EC
-3125018624,3125149695,EC
+3124953088,3125018623,CL
+3125018624,3125280767,EC
3125280768,3125542911,PA
+3125673984,3125805055,CL
3125805056,3126329343,CO
3126329344,3126853631,VE
3126853632,3126919167,AR
@@ -62678,34 +73676,46 @@
3127246848,3127377919,CO
3127377920,3127640063,CL
3127640064,3127902207,AR
-3127902208,3128164351,CO
+3127902208,3128426495,CO
3128426496,3128492031,DO
3128492032,3128524799,CO
3128557568,3128950783,AR
3128950784,3129016319,UY
3129016320,3129999359,AR
3129999360,3130261503,CO
+3130261504,3130277887,CL
+3130327040,3130392575,DO
3130523648,3130654719,AR
+3130654720,3130720255,CO
+3130785792,3130818559,CL
+3130851328,3130916863,AR
3131047936,3131310079,PE
-3132096512,3132129279,CR
+3131310080,3131572223,VE
+3131572224,3131703295,CO
+3132096512,3132162047,CR
3132227584,3132293119,EC
-3132358656,3132424191,CO
+3132358656,3132489727,CO
3132489728,3132555263,AR
-3132620800,3132751871,VE
-3132882944,3132915711,VE
+3132620800,3132915711,VE
+3132915712,3132948479,PA
3132948480,3133014015,AR
3133014016,3133046783,HT
-3133046784,3133054975,AR
+3133046784,3133067263,AR
+3133067264,3133073407,PA
+3133073408,3133074431,AN
+3133074432,3133075455,CL
+3133075456,3133079551,AN
3133079552,3133145087,AR
3133145088,3145727999,BR
3145728000,3154116607,MX
-3154116608,3154182143,EU
+3154149376,3154157567,UA
+3154157568,3154173951,RU
+3154173952,3154182143,MD
3154182144,3154247679,DE
3154247680,3154313215,RS
3154313216,3154378751,TR
3154378752,3154444287,GR
3154444288,3154509823,BE
-3154509824,3154575359,RU
3154575360,3154640895,FR
3154640896,3155165183,IT
3155165184,3155427327,RU
@@ -62714,23 +73724,25 @@
3155506336,3155689471,AT
3155689472,3155951615,RO
3155951616,3156213759,GB
-3156213760,3156279295,RU
3156279296,3156344831,PL
3156344832,3156410367,IR
3156410368,3156475903,RU
3156475904,3156539391,HU
3156539392,3156539647,RO
3156539648,3156541439,HU
+3156541440,3156606975,PT
3156606976,3156672511,TR
3156672512,3156738047,GB
3156738048,3156791439,DE
3156791440,3156791455,NL
3156791456,3156802271,DE
3156802272,3156802303,US
-3156802304,3156803583,DE
+3156802304,3156803327,DE
+3156803328,3156803359,CH
+3156803360,3156803583,DE
3156803584,3156869119,TR
3156869120,3156934655,LU
-3156934656,3157065727,RU
+3156934656,3157000191,RU
3157065728,3157131263,AT
3157131264,3157196799,DE
3157196800,3157262335,PL
@@ -62738,7 +73750,6 @@
3157786624,3158048767,TR
3158048768,3158310911,CH
3158310912,3158312959,FI
-3158312960,3158315007,NL
3158315008,3158317055,DE
3158317056,3158319103,SI
3158319104,3158321151,GB
@@ -62784,11 +73795,25 @@
3158395008,3158395135,GB
3158395136,3158395151,AT
3158395152,3158395159,DE
-3158395160,3158395263,AT
+3158395160,3158395167,AT
+3158395168,3158395175,DE
+3158395176,3158395191,AT
+3158395192,3158395199,DE
+3158395200,3158395263,AT
3158395264,3158395295,DE
-3158395296,3158395647,AT
+3158395296,3158395359,AT
+3158395360,3158395367,DE
+3158395368,3158395431,AT
+3158395432,3158395439,DE
+3158395440,3158395647,AT
3158395648,3158395663,DE
-3158395664,3158396927,AT
+3158395664,3158395687,AT
+3158395688,3158395695,DE
+3158395696,3158395711,AT
+3158395712,3158395743,DE
+3158395744,3158396287,AT
+3158396288,3158396319,DE
+3158396320,3158396927,AT
3158396928,3158398975,IT
3158398976,3158401023,ES
3158401024,3158403071,GB
@@ -62802,7 +73827,12 @@
3158417408,3158419455,NL
3158419456,3158421503,FR
3158421504,3158423551,GB
-3158423552,3158425599,MT
+3158423552,3158424063,MT
+3158424064,3158424095,NL
+3158424096,3158424127,MT
+3158424128,3158424159,IE
+3158424160,3158425567,MT
+3158425568,3158425599,IE
3158425600,3158427647,NL
3158427648,3158429695,DE
3158429696,3158431743,RU
@@ -62815,8 +73845,13 @@
3158446080,3158448127,NL
3158448128,3158452223,RU
3158452224,3158454271,DE
+3158454272,3158458367,EU
+3158458368,3158474751,GB
+3158474752,3158507519,OM
+3158507520,3158573055,FI
3158573056,3158638591,RU
3158638592,3158704127,LT
+3158704128,3158835199,KW
3158835200,3158851583,IQ
3158851584,3158867967,RU
3158867968,3158884351,AZ
@@ -62829,13 +73864,9 @@
3158886176,3158886207,BZ
3158886208,3158886271,DE
3158886272,3158886335,RO
-3158886336,3158886399,DE
-3158886400,3158886655,TR
-3158886656,3158887167,DE
+3158886336,3158887167,DE
3158887168,3158887423,CA
-3158887424,3158889215,DE
-3158889216,3158889727,TR
-3158889728,3158889983,DE
+3158887424,3158889983,DE
3158889984,3158890239,HK
3158890240,3158891263,DE
3158891264,3158891519,CA
@@ -62845,16 +73876,17 @@
3158891648,3158891711,DE
3158891712,3158891775,RU
3158891776,3158892031,PL
-3158892032,3158892415,DE
+3158892032,3158892351,DE
+3158892352,3158892415,IR
3158892416,3158892543,GB
3158892544,3158892671,DE
3158892672,3158892799,RU
3158892800,3158893567,DE
3158893568,3158893823,GB
-3158893824,3158894079,TR
-3158894080,3158895167,DE
+3158893824,3158895167,DE
3158895168,3158895231,RU
-3158895232,3158895423,DE
+3158895232,3158895359,TR
+3158895360,3158895423,DE
3158895424,3158895487,RU
3158895488,3158895551,MK
3158895552,3158895615,AE
@@ -62873,7 +73905,8 @@
3158898272,3158898335,RU
3158898336,3158898431,DE
3158898432,3158898687,US
-3158898688,3158898943,DE
+3158898688,3158898815,DE
+3158898816,3158898943,BZ
3158898944,3158899199,ES
3158899200,3158899455,DE
3158899456,3158899711,CA
@@ -62882,12 +73915,14 @@
3158917120,3158933503,DE
3158933504,3158949887,RU
3158949888,3158966271,GR
+3158966272,3158982655,DE
3158982656,3158999039,GB
3158999040,3159031807,RO
3159031808,3159048191,RU
3159048192,3159064575,IR
3159064576,3159080959,CZ
3159080960,3159097343,RU
+3159097344,3159359487,ES
3159359488,3159621631,PT
3159621632,3159883775,ES
3159883776,3160145919,NL
@@ -62896,6 +73931,8 @@
3160150016,3160152063,LV
3160152064,3160154111,IT
3160154112,3160156159,DE
+3160156160,3160158207,CZ
+3160158208,3160160255,CH
3160160256,3160162303,NL
3160162304,3160164351,FR
3160164352,3160166399,LV
@@ -62967,6 +74004,7 @@
3160271952,3160272895,ES
3160272896,3160274943,RU
3160274944,3160276991,AT
+3160276992,3160279039,FR
3160279040,3160281087,ES
3160281088,3160283135,GB
3160283136,3160285183,DE
@@ -62991,7 +74029,10 @@
3160324096,3160328191,IT
3160328192,3160330239,FR
3160330240,3160332287,RU
-3160332288,3160333055,NO
+3160332288,3160332751,NO
+3160332752,3160332759,SE
+3160332760,3160332767,AU
+3160332768,3160333055,NO
3160333056,3160333087,CO
3160333088,3160334335,NO
3160334336,3160336383,RU
@@ -63015,6 +74056,7 @@
3160377344,3160379391,NL
3160379392,3160381439,TR
3160381440,3160383487,UA
+3160383488,3160385535,SA
3160385536,3160387583,NL
3160387584,3160389631,RS
3160389632,3160391679,RU
@@ -63022,7 +74064,9 @@
3160395776,3160397823,EE
3160397824,3160399871,ES
3160399872,3160401919,SE
+3160401920,3160403967,DE
3160403968,3160406015,NO
+3160406016,3160408063,ES
3160408064,3161456639,DE
3161456640,3161473023,PL
3161473024,3161489407,SK
@@ -63045,14 +74089,19 @@
3161784320,3161800703,FI
3161800704,3161817087,SA
3161817088,3161833471,PL
-3161833472,3161833983,MK
-3161833984,3161834495,AT
-3161834496,3161835263,MK
-3161835264,3161849855,AT
+3161833472,3161835519,MK
+3161835520,3161835775,AT
+3161835776,3161837567,MK
+3161837568,3161837695,AT
+3161837696,3161840639,MK
+3161840640,3161840895,AT
+3161840896,3161844735,MK
+3161844736,3161849855,AT
3161849856,3161866239,BE
3161866240,3161882623,IR
3161882624,3161899007,DE
3161899008,3161915391,AT
+3161915392,3161931775,TR
3161931776,3161948159,SA
3161948160,3161964543,RO
3161964544,3161980927,ES
@@ -63070,17 +74119,30 @@
3162071040,3162087423,IR
3162087424,3162095615,SK
3162095616,3162103807,GE
-3162103808,3162104319,FR
-3162104320,3162108415,NL
-3162108416,3162108671,FR
-3162108672,3162108927,NL
-3162108928,3162109951,FR
-3162109952,3162111999,NL
+3162103808,3162104831,FR
+3162104832,3162110975,NL
+3162110976,3162111103,FR
+3162111104,3162111167,NL
+3162111168,3162111231,FR
+3162111232,3162111295,CA
+3162111296,3162111359,NL
+3162111360,3162111391,CA
+3162111392,3162111471,NL
+3162111472,3162111487,BE
+3162111488,3162111519,CA
+3162111520,3162111599,NL
+3162111600,3162111615,BE
+3162111616,3162111727,NL
+3162111728,3162111775,CH
+3162111776,3162111871,NL
+3162111872,3162111903,CH
+3162111904,3162111999,NL
3162112000,3162120191,PL
3162120192,3162128383,GB
3162128384,3162129407,NL
3162129408,3162129919,DE
3162129920,3162136575,NL
+3162136576,3162144767,ES
3162144768,3162152959,SE
3162152960,3162161151,RU
3162161152,3162169343,CZ
@@ -63095,6 +74157,7 @@
3162234880,3162243071,RU
3162243072,3162251263,TR
3162251264,3162259455,RU
+3162259456,3162267647,BG
3162267648,3162275839,RU
3162275840,3162284031,NO
3162284032,3162292223,PL
@@ -63115,7 +74178,8 @@
3162365952,3162374143,PL
3162374144,3162382335,BG
3162382336,3162390527,RU
-3162390528,3162398719,SE
+3162390528,3162391551,SE
+3162391552,3162398719,A1
3162398720,3162406911,BE
3162406912,3162415103,IR
3162415104,3162423295,DE
@@ -63128,7 +74192,9 @@
3162472448,3162480639,HU
3162480640,3162488831,ES
3162488832,3162497023,FI
-3162497024,3162537983,RU
+3162497024,3162504511,RU
+3162504512,3162504543,PL
+3162504544,3162537983,RU
3162537984,3162570751,PL
3162570752,3162603519,HR
3162603520,3162636287,GE
@@ -63137,7 +74203,9 @@
3162681344,3162682367,UA
3162682368,3162685439,RU
3162685440,3162697727,UA
-3162697728,3162701823,RU
+3162697728,3162700543,RU
+3162700544,3162700799,UA
+3162700800,3162701823,RU
3162701824,3162734591,MD
3162734592,3162767359,RU
3162767360,3162800127,SA
@@ -63150,54 +74218,84 @@
3163029504,3163062271,DE
3163062272,3163095039,IR
3163095040,3163127807,PL
+3163127808,3163160575,BH
3163160576,3163161631,DE
3163161632,3163161663,DK
-3163161664,3163161695,DE
+3163161664,3163161695,US
3163161696,3163161727,BG
-3163161728,3163161887,DE
-3163161888,3163161919,US
-3163161920,3163162111,DE
+3163161728,3163161759,DE
+3163161760,3163161791,BR
+3163161792,3163161887,DE
+3163161888,3163161951,US
+3163161952,3163162079,DE
+3163162080,3163162111,RU
3163162112,3163162143,TR
-3163162144,3163162175,DE
-3163162176,3163162207,US
-3163162208,3163162239,TR
-3163162240,3163162271,DE
+3163162144,3163162239,DE
+3163162240,3163162271,US
3163162272,3163162303,NL
-3163162304,3163162431,DE
+3163162304,3163162367,DE
+3163162368,3163162399,TR
+3163162400,3163162431,DE
3163162432,3163162463,CY
-3163162464,3163163871,DE
+3163162464,3163163807,DE
+3163163808,3163163839,CY
+3163163840,3163163871,DE
3163163872,3163163903,RU
3163163904,3163163935,GR
3163163936,3163163967,VG
-3163163968,3163164543,DE
+3163163968,3163164031,DE
+3163164032,3163164063,TW
+3163164064,3163164095,AM
+3163164096,3163164127,RU
+3163164128,3163164287,DE
+3163164288,3163164319,CL
+3163164320,3163164351,RU
+3163164352,3163164447,DE
+3163164448,3163164479,RU
+3163164480,3163164511,DE
+3163164512,3163164543,HU
3163164544,3163164575,RU
3163164576,3163165759,DE
3163165760,3163165791,PL
3163165792,3163165823,RU
-3163165824,3163166175,DE
-3163166176,3163166207,US
-3163166208,3163166367,DE
-3163166368,3163166399,NL
+3163165824,3163166015,DE
+3163166016,3163166047,US
+3163166048,3163166175,DE
+3163166176,3163166207,RU
+3163166208,3163166239,TR
+3163166240,3163166271,IT
+3163166272,3163166367,DE
+3163166368,3163166399,US
3163166400,3163166495,DE
3163166496,3163166527,RO
3163166528,3163166559,DE
3163166560,3163166591,HU
3163166592,3163167775,DE
3163167776,3163167807,GR
-3163167808,3163167839,NL
-3163167840,3163167967,DE
+3163167808,3163167839,US
+3163167840,3163167871,BR
+3163167872,3163167903,DE
+3163167904,3163167935,UA
+3163167936,3163167967,DE
3163167968,3163167999,TR
3163168000,3163168031,DE
3163168032,3163168095,RU
3163168096,3163168127,TR
3163168128,3163168159,SA
-3163168160,3163168319,DE
+3163168160,3163168191,BR
+3163168192,3163168223,AT
+3163168224,3163168319,DE
3163168320,3163168351,DK
-3163168352,3163168575,DE
-3163168576,3163168607,NL
+3163168352,3163168383,RU
+3163168384,3163168415,TR
+3163168416,3163168511,DE
+3163168512,3163168543,TR
+3163168544,3163168575,DE
+3163168576,3163168607,US
3163168608,3163168671,DE
3163168672,3163168703,US
-3163168704,3163169823,DE
+3163168704,3163168735,GR
+3163168736,3163169823,DE
3163169824,3163169855,RU
3163169856,3163169951,DE
3163169952,3163169983,GB
@@ -63205,57 +74303,90 @@
3163170016,3163170047,ES
3163170048,3163170079,RU
3163170080,3163170111,TR
-3163170112,3163170207,DE
+3163170112,3163170143,TW
+3163170144,3163170175,ZA
+3163170176,3163170207,DE
3163170208,3163170239,RU
-3163170240,3163170303,DE
+3163170240,3163170271,DE
+3163170272,3163170303,TW
3163170304,3163170335,IT
-3163170336,3163170495,DE
-3163170496,3163170527,BR
+3163170336,3163170367,RO
+3163170368,3163170495,DE
+3163170496,3163170527,BG
3163170528,3163170591,DE
3163170592,3163170623,BR
-3163170624,3163171871,DE
+3163170624,3163170655,GR
+3163170656,3163170751,DE
+3163170752,3163170783,CH
+3163170784,3163171871,DE
3163171872,3163171903,RO
-3163171904,3163172127,DE
-3163172128,3163172159,NL
-3163172160,3163172191,RU
-3163172192,3163172255,DE
-3163172256,3163172287,PL
-3163172288,3163172319,DE
+3163171904,3163171935,BZ
+3163171936,3163171967,DE
+3163171968,3163171999,US
+3163172000,3163172095,DE
+3163172096,3163172127,BR
+3163172128,3163172159,US
+3163172160,3163172191,TR
+3163172192,3163172319,DE
3163172320,3163172351,NL
3163172352,3163172383,GB
-3163172384,3163172447,DE
-3163172448,3163172479,TR
-3163172480,3163172607,DE
+3163172384,3163172479,DE
+3163172480,3163172511,US
+3163172512,3163172543,RU
+3163172544,3163172607,DE
3163172608,3163172639,DK
3163172640,3163172735,DE
3163172736,3163172767,GR
-3163172768,3163174047,DE
+3163172768,3163173919,DE
+3163173920,3163173951,TW
+3163173952,3163174015,DE
+3163174016,3163174047,RU
3163174048,3163174079,DK
-3163174080,3163174303,DE
+3163174080,3163174111,DE
+3163174112,3163174143,BE
+3163174144,3163174175,DE
+3163174176,3163174207,US
+3163174208,3163174239,DE
+3163174240,3163174271,TW
+3163174272,3163174303,DE
3163174304,3163174335,IL
3163174336,3163174367,RU
-3163174368,3163174591,DE
+3163174368,3163174431,DE
+3163174432,3163174463,BR
+3163174464,3163174495,DE
+3163174496,3163174527,US
+3163174528,3163174559,BD
+3163174560,3163174591,PL
3163174592,3163174623,SE
3163174624,3163174655,GB
-3163174656,3163174687,NL
-3163174688,3163174719,DE
+3163174656,3163174719,DE
3163174720,3163174751,NL
-3163174752,3163174783,US
-3163174784,3163176127,DE
-3163176128,3163176159,NL
+3163174752,3163174815,DE
+3163174816,3163174847,CA
+3163174848,3163174879,TR
+3163174880,3163174911,RU
+3163174912,3163176095,DE
+3163176096,3163176127,CY
+3163176128,3163176159,US
3163176160,3163176255,DE
3163176256,3163176287,UG
-3163176288,3163176319,DE
-3163176320,3163176351,US
-3163176352,3163176479,DE
-3163176480,3163176543,GB
+3163176288,3163176319,PT
+3163176320,3163176447,DE
+3163176448,3163176479,US
+3163176480,3163176511,GB
+3163176512,3163176543,TR
3163176544,3163176575,DE
3163176576,3163176607,GR
-3163176608,3163176767,DE
+3163176608,3163176639,TW
+3163176640,3163176671,DE
+3163176672,3163176703,AU
+3163176704,3163176767,DE
3163176768,3163176799,PL
-3163176800,3163176895,DE
+3163176800,3163176831,EG
+3163176832,3163176895,DE
3163176896,3163176927,SE
3163176928,3163193343,DE
+3163193344,3163226111,MD
3163226112,3163258879,SA
3163258880,3163291647,SY
3163291648,3163324415,PT
@@ -63263,7 +74394,7 @@
3163357184,3163389951,IE
3163389952,3163422719,FR
3163422720,3163455487,NL
-3163455488,3163488255,HU
+3163455488,3163521023,HU
3163521024,3163553791,RU
3163553792,3163684863,DE
3163684864,3163815935,PL
@@ -63301,15 +74432,18 @@
3164947044,3164947047,GB
3164947048,3164947063,FR
3164947064,3164947067,NL
-3164947068,3164947071,PL
+3164947068,3164947071,IT
3164947072,3164947199,DE
3164947200,3164947455,FR
3164947456,3164947519,PL
3164947520,3164947551,ES
3164947552,3164947583,DE
-3164947584,3164947599,FR
-3164947600,3164947615,GB
-3164947616,3164947627,FR
+3164947584,3164947587,FR
+3164947588,3164947591,DE
+3164947592,3164947599,GB
+3164947600,3164947619,FR
+3164947620,3164947623,ES
+3164947624,3164947627,GB
3164947628,3164947635,ES
3164947636,3164947639,DE
3164947640,3164947643,IT
@@ -63326,31 +74460,39 @@
3164948736,3164949087,GB
3164949088,3164949095,FR
3164949096,3164949103,IT
-3164949104,3164949119,GB
+3164949104,3164949107,DE
+3164949108,3164949111,PL
+3164949112,3164949119,FR
3164949120,3164949123,PT
3164949124,3164949131,DE
3164949132,3164949151,FR
3164949152,3164949155,NL
-3164949156,3164949159,FR
+3164949156,3164949159,DE
3164949160,3164949163,PL
3164949164,3164949183,FR
-3164949184,3164949215,DE
+3164949184,3164949199,GB
+3164949200,3164949215,FR
3164949216,3164949219,PL
3164949220,3164949223,FR
3164949224,3164949231,PL
3164949232,3164949247,BE
-3164949248,3164949279,FR
+3164949248,3164949263,FR
+3164949264,3164949271,PL
+3164949272,3164949275,GB
+3164949276,3164949279,CH
3164949280,3164949295,ES
3164949296,3164949327,FR
-3164949328,3164949331,PL
-3164949332,3164949335,ES
+3164949328,3164949335,PL
3164949336,3164949343,IE
3164949344,3164949359,FR
3164949360,3164949363,BE
-3164949364,3164949391,FR
+3164949364,3164949371,FR
+3164949372,3164949375,GB
+3164949376,3164949391,FR
3164949392,3164949395,ES
3164949396,3164949439,FR
-3164949440,3164949471,PL
+3164949440,3164949455,GB
+3164949456,3164949471,PL
3164949472,3164949503,FR
3164949504,3164950015,BE
3164950016,3164950271,GB
@@ -63360,7 +74502,7 @@
3164950412,3164950435,PL
3164950436,3164950439,ES
3164950440,3164950447,FR
-3164950448,3164950451,PL
+3164950448,3164950451,ES
3164950452,3164950455,CZ
3164950456,3164950463,PL
3164950464,3164950479,ES
@@ -63377,8 +74519,9 @@
3164950624,3164950655,GB
3164950656,3164950687,FR
3164950688,3164950703,ES
-3164950704,3164950719,PL
-3164950720,3164950723,GB
+3164950704,3164950711,PL
+3164950712,3164950715,FI
+3164950716,3164950723,GB
3164950724,3164950735,FR
3164950736,3164950751,ES
3164950752,3164950759,GB
@@ -63391,7 +74534,9 @@
3164951296,3164951471,PL
3164951472,3164951487,FR
3164951488,3164951519,PL
-3164951520,3164951535,GB
+3164951520,3164951523,ES
+3164951524,3164951527,IT
+3164951528,3164951535,FR
3164951536,3164951543,BE
3164951544,3164951547,NL
3164951548,3164951559,FR
@@ -63404,13 +74549,14 @@
3164951596,3164951615,FR
3164951616,3164951663,GB
3164951664,3164951671,PL
-3164951672,3164951679,FR
-3164951680,3164951683,ES
+3164951672,3164951675,FR
+3164951676,3164951683,ES
3164951684,3164951687,GB
3164951688,3164951691,FR
3164951692,3164951695,CH
-3164951696,3164951711,IE
-3164951712,3164951807,FR
+3164951696,3164951711,PL
+3164951712,3164951775,FR
+3164951776,3164951807,DE
3164951808,3164951823,NL
3164951824,3164951831,CH
3164951832,3164951839,FR
@@ -63420,7 +74566,8 @@
3164951876,3164951879,IT
3164951880,3164951887,DE
3164951888,3164951895,ES
-3164951896,3164951907,FR
+3164951896,3164951903,FR
+3164951904,3164951907,DE
3164951908,3164951911,PL
3164951912,3164951915,ES
3164951916,3164951919,IE
@@ -63431,8 +74578,13 @@
3164952032,3164952063,PL
3164952064,3164952191,FR
3164952192,3164952207,ES
-3164952208,3164952219,NL
-3164952220,3164952255,FR
+3164952208,3164952215,FR
+3164952216,3164952219,NL
+3164952220,3164952223,FR
+3164952224,3164952239,GB
+3164952240,3164952243,DE
+3164952244,3164952247,BE
+3164952248,3164952255,FR
3164952256,3164952319,DE
3164952320,3164952575,ES
3164952576,3164952831,FR
@@ -63448,7 +74600,9 @@
3164953248,3164953255,CH
3164953256,3164953263,CZ
3164953264,3164953311,FR
-3164953312,3164953375,PL
+3164953312,3164953319,CZ
+3164953320,3164953327,BE
+3164953328,3164953375,PL
3164953376,3164953391,FR
3164953392,3164953395,IT
3164953396,3164953399,NL
@@ -63459,15 +74613,16 @@
3164953440,3164953443,PL
3164953444,3164953447,DE
3164953448,3164953451,ES
-3164953452,3164953455,FR
-3164953456,3164953463,PL
+3164953452,3164953459,FR
+3164953460,3164953463,GB
3164953464,3164953467,FR
3164953468,3164953471,GB
3164953472,3164953503,PL
3164953504,3164953511,FR
3164953512,3164953515,PL
3164953516,3164953519,IE
-3164953520,3164953567,PL
+3164953520,3164953535,FR
+3164953536,3164953567,PL
3164953568,3164953571,FR
3164953572,3164953575,GB
3164953576,3164953583,IT
@@ -63495,7 +74650,9 @@
3164954544,3164954559,LT
3164954560,3164954591,FR
3164954592,3164954623,PL
-3164954624,3164956479,FR
+3164954624,3164956383,FR
+3164956384,3164956399,DE
+3164956400,3164956479,FR
3164956480,3164956543,GB
3164956544,3164958847,FR
3164958848,3164958911,IT
@@ -63520,15 +74677,49 @@
3164959384,3164959387,PL
3164959388,3164959487,FR
3164959488,3164959743,ES
-3164959744,3164959999,FR
-3164960000,3164960255,DE
-3164960256,3164960511,FR
+3164959744,3164959887,FR
+3164959888,3164959895,ES
+3164959896,3164959903,PL
+3164959904,3164959919,DE
+3164959920,3164959927,FR
+3164959928,3164959931,GB
+3164959932,3164959935,ES
+3164959936,3164959999,FR
+3164960000,3164960259,DE
+3164960260,3164960263,FR
+3164960264,3164960267,LT
+3164960268,3164960271,NL
+3164960272,3164960295,FR
+3164960296,3164960299,IT
+3164960300,3164960303,GB
+3164960304,3164960319,FR
+3164960320,3164960323,ES
+3164960324,3164960327,IT
+3164960328,3164960331,CZ
+3164960332,3164960335,LT
+3164960336,3164960339,PL
+3164960340,3164960359,FR
+3164960360,3164960367,PL
+3164960368,3164960383,FR
+3164960384,3164960387,DE
+3164960388,3164960391,PL
+3164960392,3164960395,GB
+3164960396,3164960399,DE
+3164960400,3164960415,PL
+3164960416,3164960435,FR
+3164960436,3164960439,ES
+3164960440,3164960443,CH
+3164960444,3164960447,IT
+3164960448,3164960463,PL
+3164960464,3164960467,NL
+3164960468,3164960471,GB
+3164960472,3164960479,FR
+3164960480,3164960511,DE
3164960512,3164960575,PL
3164960576,3164960591,DE
3164960592,3164960599,ES
-3164960600,3164960603,IT
-3164960604,3164960607,CZ
-3164960608,3164960639,BE
+3164960600,3164960623,DE
+3164960624,3164960639,FR
3164960640,3164960643,LT
3164960644,3164960647,FR
3164960648,3164960651,CH
@@ -63538,35 +74729,49 @@
3164960676,3164960679,GB
3164960680,3164960699,PL
3164960700,3164960703,ES
-3164960704,3164960719,GB
+3164960704,3164960719,FR
3164960720,3164960723,CH
-3164960724,3164960727,DE
+3164960724,3164960727,FR
3164960728,3164960735,GB
3164960736,3164960767,ES
-3164960768,3164960831,PL
-3164960832,3164960895,FR
-3164960896,3164960959,PT
-3164960960,3164961023,CH
+3164960768,3164960799,GB
+3164960800,3164960831,ES
+3164960832,3164960911,FR
+3164960912,3164960919,PL
+3164960920,3164960927,FR
+3164960928,3164960935,ES
+3164960936,3164960939,GB
+3164960940,3164960943,DE
+3164960944,3164960959,PL
+3164960960,3164960963,DE
+3164960964,3164960967,PT
+3164960968,3164960975,PL
+3164960976,3164960991,GB
+3164960992,3164960999,FR
+3164961000,3164961003,ES
+3164961004,3164961007,DE
+3164961008,3164961023,PL
3164961024,3164961151,FR
3164961152,3164961167,DE
3164961168,3164961175,PL
-3164961176,3164961247,FR
-3164961248,3164961279,NL
+3164961176,3164961279,FR
3164961280,3164961311,DE
3164961312,3164961319,FR
3164961320,3164961327,PL
-3164961328,3164961331,ES
-3164961332,3164961339,FR
-3164961340,3164961343,ES
-3164961344,3164961363,FR
+3164961328,3164961331,CZ
+3164961332,3164961363,FR
3164961364,3164961367,ES
3164961368,3164961375,FR
-3164961376,3164961391,DE
-3164961392,3164961399,FR
+3164961376,3164961379,DE
+3164961380,3164961387,IT
+3164961388,3164961399,FR
3164961400,3164961403,PL
3164961404,3164961471,FR
3164961472,3164961503,DE
-3164961504,3164961551,ES
+3164961504,3164961519,GB
+3164961520,3164961527,IT
+3164961528,3164961535,PL
+3164961536,3164961551,ES
3164961552,3164961559,FR
3164961560,3164961563,DE
3164961564,3164961583,FR
@@ -63577,12 +74782,14 @@
3164961656,3164961663,ES
3164961664,3164961695,DE
3164961696,3164961727,GB
-3164961728,3164961743,ES
-3164961744,3164961759,PL
-3164961760,3164961763,ES
+3164961728,3164961731,ES
+3164961732,3164961735,IT
+3164961736,3164961739,FR
+3164961740,3164961743,GB
+3164961744,3164961763,PL
3164961764,3164961767,IT
3164961768,3164961775,BE
-3164961776,3164961783,FR
+3164961776,3164961783,PL
3164961784,3164961791,ES
3164961792,3164961855,FR
3164961856,3164961871,PL
@@ -63595,13 +74802,18 @@
3164961972,3164961975,ES
3164961976,3164961979,GB
3164961980,3164961999,DE
-3164962000,3164962031,FR
+3164962000,3164962007,BE
+3164962008,3164962011,DE
+3164962012,3164962015,PT
+3164962016,3164962031,FR
3164962032,3164962047,NL
3164962048,3164962079,FR
3164962080,3164962095,ES
-3164962096,3164962111,BE
+3164962096,3164962111,FR
3164962112,3164962143,GB
-3164962144,3164962203,FR
+3164962144,3164962151,ES
+3164962152,3164962159,DE
+3164962160,3164962203,FR
3164962204,3164962207,PT
3164962208,3164962211,GB
3164962212,3164962215,PL
@@ -63631,11 +74843,14 @@
3164962544,3164962623,FR
3164962624,3164962627,BE
3164962628,3164962631,PL
-3164962632,3164962655,FR
+3164962632,3164962639,FR
+3164962640,3164962647,ES
+3164962648,3164962655,PT
3164962656,3164962687,ES
-3164962688,3164962715,FR
+3164962688,3164962703,PL
+3164962704,3164962715,FR
3164962716,3164962719,NL
-3164962720,3164962723,IT
+3164962720,3164962723,FR
3164962724,3164962727,ES
3164962728,3164962751,FR
3164962752,3164964863,ES
@@ -63662,7 +74877,8 @@
3164967936,3164967967,DE
3164967968,3164967971,FR
3164967972,3164967975,DE
-3164967976,3164967999,FR
+3164967976,3164967983,FR
+3164967984,3164967999,PL
3164968000,3164968063,ES
3164968064,3164968191,FR
3164968192,3164968703,PL
@@ -63671,14 +74887,16 @@
3164968864,3164968895,FR
3164968896,3164968927,GB
3164968928,3164968959,IT
-3164968960,3164968991,DE
-3164968992,3164969007,FR
+3164968960,3164968991,GB
+3164968992,3164969007,IE
3164969008,3164969015,PT
-3164969016,3164969023,FR
+3164969016,3164969019,NL
+3164969020,3164969023,BE
3164969024,3164969055,PL
3164969056,3164969071,CZ
-3164969072,3164969087,FR
-3164969088,3164969095,ES
+3164969072,3164969079,FR
+3164969080,3164969083,PL
+3164969084,3164969095,ES
3164969096,3164969099,PL
3164969100,3164969103,DE
3164969104,3164969135,FR
@@ -63717,7 +74935,9 @@
3164970368,3164970371,PL
3164970372,3164970375,ES
3164970376,3164970399,IT
-3164970400,3164970415,GB
+3164970400,3164970407,CH
+3164970408,3164970411,IT
+3164970412,3164970415,GB
3164970416,3164970423,FR
3164970424,3164970427,IE
3164970428,3164970431,PT
@@ -63725,7 +74945,8 @@
3164970464,3164970495,GB
3164970496,3164970559,PL
3164970560,3164970567,FR
-3164970568,3164970575,ES
+3164970568,3164970571,GB
+3164970572,3164970575,ES
3164970576,3164970607,FR
3164970608,3164970615,ES
3164970616,3164970623,CH
@@ -63746,9 +74967,9 @@
3164970832,3164970835,IT
3164970836,3164970839,PL
3164970840,3164970847,GB
-3164970848,3164970855,FR
-3164970856,3164970863,PL
-3164970864,3164970911,FR
+3164970848,3164970887,FR
+3164970888,3164970891,GB
+3164970892,3164970911,FR
3164970912,3164970915,ES
3164970916,3164970919,FR
3164970920,3164970923,GB
@@ -63762,7 +74983,7 @@
3164971072,3164971135,DE
3164971136,3164971263,GB
3164971264,3164971455,DE
-3164971456,3164971459,NL
+3164971456,3164971459,FR
3164971460,3164971463,IT
3164971464,3164971467,CH
3164971468,3164971471,FR
@@ -63793,7 +75014,8 @@
3164972480,3164972499,FR
3164972500,3164972511,DE
3164972512,3164972527,GB
-3164972528,3164972799,FR
+3164972528,3164972531,DE
+3164972532,3164972799,FR
3164972800,3164973311,ES
3164973312,3164973823,FR
3164973824,3164973855,DE
@@ -63805,17 +75027,19 @@
3164973884,3164973887,DE
3164973888,3164973919,ES
3164973920,3164973935,FR
-3164973936,3164973939,IE
+3164973936,3164973939,GB
3164973940,3164973943,FR
3164973944,3164973951,PL
-3164973952,3164974651,FR
+3164973952,3164974591,FR
+3164974592,3164974623,PL
+3164974624,3164974647,FR
+3164974648,3164974651,PT
3164974652,3164974655,DE
3164974656,3164974663,FR
3164974664,3164974667,GB
3164974668,3164974671,DE
3164974672,3164974675,FR
-3164974676,3164974679,PT
-3164974680,3164974719,PL
+3164974676,3164974719,PL
3164974720,3164974727,FR
3164974728,3164974731,PL
3164974732,3164974735,IT
@@ -63834,8 +75058,80 @@
3164975352,3164975355,NL
3164975356,3164975359,FR
3164975360,3164975615,ES
-3164975616,3164976127,GB
-3164976128,3164976767,FR
+3164975616,3164975663,FI
+3164975664,3164975679,DE
+3164975680,3164975695,GB
+3164975696,3164975699,PL
+3164975700,3164975703,ES
+3164975704,3164975719,PL
+3164975720,3164975731,ES
+3164975732,3164975735,PT
+3164975736,3164975739,BE
+3164975740,3164975751,PL
+3164975752,3164975755,NL
+3164975756,3164975759,ES
+3164975760,3164975775,PL
+3164975776,3164975807,FR
+3164975808,3164975823,PL
+3164975824,3164975839,FR
+3164975840,3164975843,DE
+3164975844,3164975847,PL
+3164975848,3164975851,ES
+3164975852,3164975871,PL
+3164975872,3164975935,FR
+3164975936,3164975939,ES
+3164975940,3164975943,PT
+3164975944,3164975947,PL
+3164975948,3164975967,GB
+3164975968,3164975983,NL
+3164975984,3164975987,PL
+3164975988,3164975991,DE
+3164975992,3164976011,PL
+3164976012,3164976015,ES
+3164976016,3164976023,PL
+3164976024,3164976027,ES
+3164976028,3164976063,FR
+3164976064,3164976095,PT
+3164976096,3164976127,PL
+3164976128,3164976131,NL
+3164976132,3164976135,GB
+3164976136,3164976139,FR
+3164976140,3164976143,GB
+3164976144,3164976159,FR
+3164976160,3164976191,GB
+3164976192,3164976215,FR
+3164976216,3164976223,PL
+3164976224,3164976231,FR
+3164976232,3164976239,ES
+3164976240,3164976255,IE
+3164976256,3164976259,GB
+3164976260,3164976263,DE
+3164976264,3164976271,PT
+3164976272,3164976279,FI
+3164976280,3164976287,PL
+3164976288,3164976295,ES
+3164976296,3164976303,IT
+3164976304,3164976307,FR
+3164976308,3164976311,DE
+3164976312,3164976315,GB
+3164976316,3164976319,FR
+3164976320,3164976327,DE
+3164976328,3164976331,FR
+3164976332,3164976335,PL
+3164976336,3164976343,FR
+3164976344,3164976347,PL
+3164976348,3164976351,ES
+3164976352,3164976367,DE
+3164976368,3164976383,PL
+3164976384,3164976399,FR
+3164976400,3164976403,ES
+3164976404,3164976407,FR
+3164976408,3164976415,DE
+3164976416,3164976431,IT
+3164976432,3164976459,FR
+3164976460,3164976479,DE
+3164976480,3164976511,PL
+3164976512,3164976767,FR
3164976768,3164976783,DE
3164976784,3164976799,ES
3164976800,3164976815,DE
@@ -63857,18 +75153,25 @@
3164977744,3164977759,PT
3164977760,3164977775,NL
3164977776,3164977791,PL
-3164977792,3164977807,FR
-3164977808,3164977823,NL
+3164977792,3164977823,FR
3164977824,3164977839,GB
-3164977840,3164977883,FR
+3164977840,3164977871,FR
+3164977872,3164977875,DE
+3164977876,3164977879,ES
+3164977880,3164977883,DE
3164977884,3164977887,GB
3164977888,3164977903,IT
-3164977904,3164977919,NL
+3164977904,3164977907,DE
+3164977908,3164977911,BE
+3164977912,3164977915,CH
+3164977916,3164977919,CZ
3164977920,3164978047,DE
-3164978048,3164978067,FR
+3164978048,3164978055,FR
+3164978056,3164978063,NL
+3164978064,3164978067,FR
3164978068,3164978079,ES
3164978080,3164978111,IT
-3164978112,3164978127,ES
+3164978112,3164978127,GB
3164978128,3164978143,FR
3164978144,3164978147,DE
3164978148,3164978151,ES
@@ -63876,17 +75179,17 @@
3164978156,3164978159,DE
3164978160,3164978175,FR
3164978176,3164978431,IT
-3164978432,3164978447,FR
-3164978448,3164978463,PT
-3164978464,3164978495,DE
+3164978432,3164978495,FR
3164978496,3164978511,IT
3164978512,3164978527,ES
3164978528,3164978543,FR
-3164978544,3164978559,PT
-3164978560,3164978575,GB
+3164978544,3164978563,PT
+3164978564,3164978567,PL
+3164978568,3164978571,GB
+3164978572,3164978575,FR
3164978576,3164978591,ES
3164978592,3164978607,FR
-3164978608,3164978623,CZ
+3164978608,3164978623,IE
3164978624,3164978687,FR
3164978688,3164978943,PL
3164978944,3164978951,PT
@@ -63894,12 +75197,14 @@
3164978956,3164978959,GB
3164978960,3164978975,FR
3164978976,3164978991,ES
-3164978992,3164979007,FR
-3164979008,3164979023,ES
-3164979024,3164979039,CH
-3164979040,3164979071,PT
-3164979072,3164979103,ES
-3164979104,3164979111,DE
+3164978992,3164978999,PL
+3164979000,3164979003,FR
+3164979004,3164979007,DE
+3164979008,3164979023,GB
+3164979024,3164979047,FR
+3164979048,3164979051,BE
+3164979052,3164979103,FR
+3164979104,3164979111,GB
3164979112,3164979119,PL
3164979120,3164979135,NL
3164979136,3164979151,DE
@@ -63922,13 +75227,39 @@
3166175232,3166306303,CH
3166306304,3166437375,RU
3166437376,3166568447,BE
+3166568448,3166601215,UA
+3166601216,3166609407,RU
+3166609408,3166633983,UA
+3166633984,3166638079,RU
+3166638080,3166646271,UA
+3166646272,3166650367,CZ
+3166650368,3166654463,UA
+3166654464,3166658559,RU
+3166658560,3166662655,UA
+3166662656,3166666751,RU
+3166666752,3166670847,RO
+3166670848,3166672895,UA
+3166672896,3166674943,GB
+3166674944,3166679039,RU
+3166679040,3166681087,IR
+3166681088,3166685183,RU
+3166685184,3166687231,PL
+3166687232,3166689279,MD
+3166689280,3166691327,PL
+3166691328,3166693375,RU
+3166693376,3166695423,UA
+3166695424,3166697471,RU
+3166697472,3166699519,RO
3166699520,3166961663,DE
+3166961664,3167223807,SI
3167223808,3167594831,NL
3167594832,3167594839,A2
3167594840,3167748095,NL
3167748096,3167940095,RO
3167940096,3167940351,CY
-3167940352,3168092159,RO
+3167940352,3168015871,RO
+3168015872,3168016127,GB
+3168016128,3168092159,RO
3168092160,3168096255,GB
3168096256,3168100351,MD
3168100352,3168104447,RO
@@ -63937,13 +75268,11 @@
3168112640,3168116735,GB
3168116736,3168120831,RO
3168120832,3168124927,GB
-3168124928,3168129023,RO
-3168129024,3168137215,GB
-3168137216,3168157695,RO
-3168157696,3168178175,GB
-3168178176,3168182271,RO
-3168182272,3168194559,GB
-3168194560,3168207103,RO
+3168124928,3168190463,RO
+3168190464,3168194559,GB
+3168194560,3168195583,RO
+3168195584,3168196095,DE
+3168196096,3168207103,RO
3168207104,3168207359,CY
3168207360,3168214527,RO
3168214528,3168214783,CY
@@ -63959,7 +75288,11 @@
3168927744,3169058815,RU
3169058816,3169091583,DK
3169091584,3169124351,IT
-3169124352,3169157119,RO
+3169124352,3169149439,RO
+3169149440,3169149695,IT
+3169149696,3169149951,PS
+3169149952,3169157119,RO
+3169157120,3169189887,SY
3169189888,3169222655,UA
3169222656,3169255423,SI
3169255424,3169264895,KW
@@ -63990,9 +75323,16 @@
3169281024,3169281279,US
3169281280,3169288191,KW
3169288192,3169320959,UA
-3169845248,3169965823,RO
-3169965824,3169966079,GB
-3169966080,3169976319,RO
+3169320960,3169583103,RU
+3169583104,3169648639,KW
+3169648640,3169714175,MD
+3169714176,3169779711,FI
+3169779712,3169845247,UA
+3169845248,3169863679,RO
+3169863680,3169864703,MD
+3169864704,3169867775,RO
+3169867776,3169868031,DE
+3169868032,3169976319,RO
3169976320,3170111487,RU
3170111488,3170115583,MD
3170115584,3170119679,RU
@@ -64000,17 +75340,32 @@
3170123776,3170127871,DK
3170127872,3170131967,ES
3170131968,3170136063,JO
+3170136064,3170140159,GB
+3170140160,3170172927,RU
+3170172928,3170238463,IR
3170238464,3170246655,DE
3170246656,3170254847,RS
3170254848,3170263039,BA
3170263040,3170271231,CZ
3170271232,3170279423,PL
3170279424,3170287615,RU
+3170287616,3170295807,GB
3170295808,3170303999,RU
3170304000,3170312191,SY
3170312192,3170320383,RU
3170320384,3170328575,JO
+3170328576,3170336767,UA
+3170336768,3170369535,RO
3170369536,3170500607,SA
+3170500608,3170631679,PT
+3170631680,3170664447,PL
+3170664448,3170697215,HR
+3170697216,3170729983,IR
+3170729984,3170762751,AZ
+3170762752,3170795519,RU
+3170795520,3170828287,BG
+3170828288,3170861055,RU
+3170861056,3170893823,RS
3170893824,3179282431,BR
3179282432,3179282943,UY
3179282944,3179283199,MX
@@ -64028,6 +75383,7 @@
3187734528,3187736575,BO
3187736576,3187752959,AR
3187752960,3187761151,CO
+3187761152,3187769343,AR
3187769344,3187802111,CO
3187802112,3187818495,AR
3187818496,3187822591,PY
@@ -64046,10 +75402,13 @@
3187936724,3187936727,HN
3187936728,3187949567,GT
3187949568,3187953663,AN
+3187953664,3187955711,CL
+3187955712,3187957759,CR
3187957760,3187961855,CL
3187965952,3187982335,AN
3187982336,3187998719,CL
3187998720,3188006911,AR
+3188006912,3188015103,CL
3188015104,3188031487,HN
3188031488,3188039679,SV
3188047872,3188051967,CO
@@ -64060,8 +75419,9 @@
3188097024,3188105215,DO
3188105216,3188113407,CO
3188113408,3188117503,HN
+3188117504,3188121599,AR
3188121600,3188125695,TT
-3188129792,3188146175,AR
+3188125696,3188146175,AR
3188146176,3188170751,CO
3188170752,3188174847,CR
3188178944,3188187135,CR
@@ -64069,8 +75429,10 @@
3188203520,3188207615,DO
3188211712,3188228095,CL
3188228096,3188236287,PE
+3188236288,3188237311,PA
+3188237312,3188238335,VE
3188244480,3188260863,CO
-3188260864,3188264959,AR
+3188260864,3188269055,AR
3188269056,3188273151,VE
3188273152,3188275199,PA
3188275200,3188277247,CL
@@ -64088,15 +75450,21 @@
3188473856,3188482047,PE
3188482048,3188490239,AR
3188490240,3188498431,CO
-3188506624,3188513279,AR
+3188498432,3188513279,AR
3188513280,3188513535,US
3188513536,3188523007,AR
3188523008,3188539391,CO
3188539392,3188543487,CL
+3188543488,3188545535,PA
+3188545536,3188547583,AR
3188547584,3188551679,CO
3188555776,3188572159,CL
3188572160,3188576255,CO
-3188580352,3188596735,AR
+3188576256,3188578303,AR
+3188580352,3188597759,AR
+3188597760,3188598783,PA
+3188598784,3188600831,AR
+3188600832,3188604927,CL
3188604928,3188606207,AR
3188606208,3188606463,CL
3188606464,3188609279,AR
@@ -64107,12 +75475,15 @@
3188612096,3188612351,CL
3188612352,3188621311,AR
3188621312,3188625407,GT
-3188629504,3188637695,AR
+3188625408,3188627455,AR
+3188627456,3188628479,CR
+3188628480,3188637695,AR
3188637696,3188645887,PA
3188645888,3188662271,CO
3188670464,3188674559,HN
-3188678656,3188686847,AR
+3188674560,3188686847,AR
3188686848,3188690943,EC
+3188690944,3188695039,CU
3188695040,3188703231,VE
3188703232,3188981759,AR
3188981760,3189178367,CL
@@ -64125,6 +75496,9 @@
3190554624,3190816767,CL
3190816768,3191078911,AR
3191078912,3191087103,CO
+3191087104,3191091199,AR
+3191091200,3191093247,BO
+3191093248,3191095295,AR
3191095296,3191099391,EC
3191103488,3191107583,CO
3191111680,3191128063,PY
@@ -64147,6 +75521,8 @@
3191435776,3191436287,SV
3191436288,3191438335,GT
3191438336,3191439359,SV
+3191439360,3191455743,EC
+3191455744,3191472127,AR
3191472128,3191603199,TT
3191603200,3191608319,MX
3191608320,3191608831,CO
@@ -64162,6 +75538,7 @@
3191639040,3191672063,CO
3191672064,3191672319,AR
3191672320,3191734271,CO
+3191734272,3191799807,SV
3191865344,3191930879,UY
3191930880,3192389631,CO
3192389632,3192913919,VE
@@ -64170,19 +75547,21 @@
3192979456,3193044991,PE
3193044992,3193110527,CL
3193110528,3193143295,CO
+3193143296,3193176063,TT
3193176064,3193307135,CO
3193307136,3193438207,SV
3193438208,3193569279,AN
3193569280,3193634815,CO
+3193634816,3193700351,CL
3193700352,3193716735,HN
3193733120,3193765887,AR
3193765888,3193798655,TT
3193798656,3193806847,CO
-3193815040,3193819135,AR
+3193815040,3193823231,AR
3193823232,3193827327,CL
3193831424,3193864191,DO
3193864192,3193872383,EC
-3193880576,3193888767,VE
+3193880576,3193896959,VE
3193896960,3193929727,CL
3193929728,3193962495,EC
3193962496,3193995263,CL
@@ -64228,6 +75607,9 @@
3194519552,3194535935,PY
3194552320,3194585087,AR
3194585088,3194589183,HN
+3194589184,3194591231,AR
+3194591232,3194592255,PA
+3194592256,3194593279,GY
3194593280,3194595327,AR
3194595328,3194596351,PA
3194596352,3194597375,HT
@@ -64250,7 +75632,6 @@
3194707968,3194716159,AR
3194716160,3194724351,HN
3194724352,3194728447,PA
-3194732544,3194736639,AR
3194740736,3194742783,CL
3194742784,3194744831,EC
3194744832,3194746879,AR
@@ -64268,7 +75649,8 @@
3194863616,3194871807,HN
3194880000,3194896383,DO
3194896384,3194904575,CO
-3194912768,3194929151,CL
+3194912768,3194925055,CL
+3194925056,3194929151,AR
3194929152,3194937343,EC
3194945536,3194953727,GT
3194961920,3194966015,EC
@@ -64277,8 +75659,7 @@
3194976256,3194977279,VE
3194977280,3194978303,AR
3194978304,3194994687,PA
-3194994688,3195002879,AR
-3195011072,3195023359,AR
+3194994688,3195023359,AR
3195023360,3195024383,CL
3195024384,3195025407,UY
3195025408,3195035647,AR
@@ -64287,7 +75668,7 @@
3195068416,3195072511,AN
3195076608,3195084799,CL
3195092992,3195097087,AR
-3195101184,3195105279,CR
+3195101184,3195109375,CR
3195109376,3195125759,AR
3195125760,3195133951,PE
3195142144,3195150335,VE
@@ -64301,8 +75682,8 @@
3195240448,3195256831,HT
3195256832,3195265023,AR
3195273216,3195535359,PE
-3195535360,3195539455,SV
-3195543552,3195547647,PE
+3195535360,3195543551,SV
+3195547648,3195551743,AR
3195551744,3195559935,EC
3195559936,3195564031,AR
3195568128,3195572223,CO
@@ -64315,15 +75696,18 @@
3195641856,3195645951,PY
3195650048,3195654143,GT
3195658240,3195662335,VE
+3195662336,3195666431,AN
3195666432,3195686911,AR
-3195691008,3195695103,DO
+3195691008,3195699199,DO
3195699200,3195703295,AR
3195707392,3195711487,PA
3195715584,3195731967,AR
3195731968,3195736063,EC
3195740160,3195744255,PA
+3195744256,3195748351,EC
3195748352,3195752447,CL
-3195756544,3195760639,AR
+3195756544,3195763711,AR
+3195763712,3195764735,BO
3195764736,3195768831,CR
3195772928,3195777023,VE
3195781120,3195797503,PA
@@ -64333,6 +75717,7 @@
3195809792,3195811839,PE
3195811840,3195813887,AR
3195813888,3195822079,DO
+3195822080,3195830271,CO
3195830272,3195838463,AR
3195838464,3195840511,HN
3195846656,3195852799,AR
@@ -64347,7 +75732,8 @@
3196092416,3196125183,PY
3196125184,3196190719,BO
3196190720,3196207103,HN
-3196256256,3196321791,EC
+3196207104,3196223487,CO
+3196223488,3196321791,EC
3196321792,3196583935,UY
3196583936,3196690687,AR
3196690688,3196690943,UY
@@ -64358,10 +75744,16 @@
3197075456,3197091839,GT
3197108224,3197370367,CO
3197370368,3197501439,GT
-3197501440,3197534207,SV
+3197501440,3197566975,SV
3197566976,3197599743,CL
+3197599744,3197600767,GT
+3197600768,3197601791,CR
+3197601792,3197612031,AR
+3197612032,3197616127,SV
+3197616128,3197632511,CO
3197632512,3197698047,EC
3197698048,3197730815,VE
+3197730816,3197763583,CL
3197763584,3197894655,EC
3197894656,3198156799,CO
3198156800,3198484479,CL
@@ -64408,19 +75800,21 @@
3201875968,3201880063,CO
3201880064,3201888255,AR
3201888256,3201892351,VE
+3201892352,3201925119,AR
+3201925120,3201957887,CL
3201957888,3202088959,PA
3202088960,3202220031,AR
3202220032,3202351103,PE
3202351104,3202875391,AR
3202875392,3203399679,PE
-3203399680,3203432447,CO
+3203399680,3203465215,CO
3203465216,3203476479,CR
3203476480,3203476735,CO
3203476736,3203476991,CR
3203476992,3203477375,CO
3203477376,3203530751,CR
3203530752,3203538943,NI
-3203538944,3203596287,CO
+3203538944,3203661823,CO
3203661824,3203923967,AR
3203923968,3204448255,CO
3221225472,3221560319,US
@@ -64680,14 +76074,44 @@
3223582464,3223582719,NL
3223582720,3223582975,AU
3223583488,3223584767,US
-3223584768,3223650303,SE
+3223584768,3223589119,SE
+3223589120,3223589375,US
+3223589376,3223606527,SE
+3223606528,3223606783,GB
+3223606784,3223607551,SE
+3223607552,3223607807,GB
+3223607808,3223610367,SE
+3223610368,3223610623,IT
+3223610624,3223610879,SE
+3223610880,3223611135,NO
+3223611136,3223611647,SE
+3223611648,3223611903,GB
+3223611904,3223615743,SE
+3223615744,3223615999,GB
+3223616000,3223617535,SE
+3223617536,3223617791,NO
+3223617792,3223620863,SE
+3223620864,3223621119,DK
+3223621120,3223627775,SE
+3223627776,3223628031,DE
+3223628032,3223628287,SE
+3223628288,3223628543,ES
+3223628544,3223630591,SE
+3223630592,3223630847,GB
+3223630848,3223634431,SE
+3223634432,3223634687,US
+3223634688,3223646207,SE
+3223646208,3223646463,IT
+3223646464,3223646975,SE
+3223646976,3223647231,IT
+3223647232,3223650303,SE
3223650304,3223715839,CH
3223715840,3223781375,DK
3223781376,3223823871,US
3223823872,3223824127,AT
3223824128,3223863295,US
3223863552,3223863807,US
-3223864320,3223867647,FI
+3223865344,3223867391,FI
3223871488,3223887871,US
3223898368,3223898623,US
3223902464,3223902719,CA
@@ -64904,7 +76328,6 @@
3224800256,3224816639,FR
3224816640,3224816895,EU
3224816896,3224820735,FR
-3224820736,3224820991,AT
3224820992,3224821247,DE
3224821248,3224822015,US
3224822016,3224822271,SE
@@ -64990,7 +76413,7 @@
3224958208,3225028863,US
3225028864,3225031423,JP
3225031424,3225033727,US
-3225033728,3225035775,LU
+3225033728,3225033983,LU
3225035776,3225037055,US
3225037056,3225051135,FI
3225051136,3225052671,JP
@@ -65219,7 +76642,35 @@
3225876480,3225878527,US
3225878528,3225880319,SE
3225880320,3225880575,US
-3225880576,3225944063,SE
+3225880576,3225881343,SE
+3225881344,3225881599,IT
+3225881600,3225887999,SE
+3225888000,3225888255,GB
+3225888256,3225905407,SE
+3225905408,3225905663,IT
+3225905664,3225913855,SE
+3225913856,3225914111,DE
+3225914112,3225915135,SE
+3225915136,3225915391,DK
+3225915392,3225918463,SE
+3225918464,3225918719,GB
+3225918720,3225920767,SE
+3225920768,3225921023,GB
+3225921024,3225921791,SE
+3225921792,3225922047,GB
+3225922048,3225923839,SE
+3225923840,3225924095,GB
+3225924096,3225930239,SE
+3225930240,3225930495,FR
+3225930496,3225932799,SE
+3225932800,3225933055,IT
+3225933056,3225935359,SE
+3225935360,3225935615,US
+3225935616,3225937407,SE
+3225937408,3225937663,US
+3225937664,3225938431,SE
+3225938432,3225938687,US
+3225938688,3225944063,SE
3225944064,3225977855,TW
3225977856,3225978111,CH
3225978112,3226008831,TW
@@ -65390,7 +76841,6 @@
3226705408,3226705919,US
3226705920,3226706175,FR
3226706176,3226706943,US
-3226707200,3226707455,EU
3226707456,3226715391,TW
3226715392,3226715647,US
3226715648,3226715903,AU
@@ -65532,7 +76982,7 @@
3227014656,3227014911,FI
3227014912,3227017215,US
3227017472,3227017983,DE
-3227018496,3227019007,JP
+3227018752,3227019007,JP
3227019008,3227020287,US
3227020288,3227020543,DE
3227020800,3227022847,US
@@ -65555,9 +77005,7 @@
3227041536,3227042815,US
3227042816,3227043071,IT
3227043072,3227043327,US
-3227043584,3227044863,US
-3227044864,3227045119,EU
-3227045120,3227053567,US
+3227043584,3227053567,US
3227053568,3227053823,GB
3227053824,3227054079,DE
3227054080,3227056639,US
@@ -65751,9 +77199,12 @@
3227806496,3227806527,GB
3227806528,3227806719,FI
3227806720,3227807743,US
-3227807744,3227813375,FI
+3227807744,3227809023,FI
+3227809024,3227809279,IN
+3227809280,3227813375,FI
3227813376,3227813631,US
-3227813632,3227815167,GB
+3227813632,3227813887,MY
+3227813888,3227815167,GB
3227815168,3227815935,US
3227815936,3227816191,GB
3227816192,3227818495,US
@@ -65806,7 +77257,6 @@
3227909632,3227909887,AU
3227910400,3227910655,AT
3227910656,3227911679,US
-3227911680,3227912191,HU
3227912192,3227912447,GB
3227912448,3227912703,ZA
3227912704,3227912959,US
@@ -65824,7 +77274,7 @@
3227933184,3227933695,US
3227933696,3227933951,NZ
3227933952,3227934463,US
-3227934464,3227934719,CH
+3227934464,3227934719,EU
3227934720,3227947519,US
3227947520,3227955711,DE
3227955712,3227964927,US
@@ -66140,9 +77590,17 @@
3229120768,3229151487,US
3229151488,3229151743,SE
3229151744,3229155327,US
-3229155328,3229171455,SE
+3229155328,3229155839,SE
+3229155840,3229156095,ES
+3229156096,3229171455,SE
3229171456,3229171711,MT
-3229171712,3229219583,SE
+3229171712,3229200895,SE
+3229200896,3229201151,DE
+3229201152,3229201663,SE
+3229201664,3229201919,DK
+3229201920,3229205503,SE
+3229205504,3229206015,GB
+3229206016,3229219583,SE
3229219584,3229219839,EE
3229219840,3229220863,SE
3229220864,3229245439,GB
@@ -66195,7 +77653,22 @@
3229391872,3229394943,US
3229394944,3229408255,RU
3229408256,3229412095,US
-3229412096,3229483007,DE
+3229412096,3229470719,DE
+3229470720,3229471231,IE
+3229471232,3229471999,DE
+3229472000,3229472255,IE
+3229472256,3229472767,GB
+3229472768,3229473791,DE
+3229473792,3229474047,GB
+3229474048,3229474303,DE
+3229474304,3229475839,GB
+3229475840,3229478399,DE
+3229478400,3229478655,IE
+3229478656,3229478911,DE
+3229478912,3229480959,IE
+3229480960,3229481471,DE
+3229481472,3229482239,GB
+3229482240,3229483007,IE
3229483008,3229499647,FI
3229499648,3229500671,US
3229548544,3229679615,US
@@ -66213,7 +77686,11 @@
3229705216,3229708287,US
3229745152,3229749759,FI
3229749760,3229750015,BE
-3229750016,3229810687,FI
+3229750016,3229764063,FI
+3229764064,3229764095,AX
+3229764096,3229808639,FI
+3229808640,3229808647,AX
+3229808648,3229810687,FI
3229810688,3229814015,US
3229814016,3229814271,AU
3229814272,3229815807,US
@@ -66349,7 +77826,8 @@
3230093824,3230094079,NL
3230094080,3230094335,CA
3230094336,3230095615,US
-3230095616,3230101503,JP
+3230095616,3230095871,JP
+3230096384,3230101503,JP
3230101504,3230105855,US
3230105856,3230106111,PT
3230106112,3230106879,US
@@ -66545,7 +78023,7 @@
3230827520,3230827775,AT
3230827776,3230828031,NZ
3230828032,3230828543,HU
-3230828544,3230830079,GB
+3230828544,3230828799,GB
3230830080,3230832127,US
3230832128,3230832383,NZ
3230832384,3230832639,US
@@ -66956,11 +78434,7 @@
3231502848,3231503103,PT
3231503104,3231503615,US
3231503616,3231503871,IT
-3231503872,3231504383,US
-3231504640,3231504895,GB
-3231504896,3231505407,US
-3231505408,3231505663,JP
-3231505664,3231506687,US
+3231503872,3231506687,US
3231506688,3231506943,NZ
3231506944,3231507199,US
3231507200,3231507455,BE
@@ -67042,9 +78516,7 @@
3231678464,3231682559,US
3231711232,3231713023,US
3231713024,3231713279,CA
-3231713280,3231713791,US
-3231713792,3231714047,IE
-3231714048,3231715071,US
+3231713280,3231715071,US
3231715072,3231715327,SI
3231715328,3231715583,AU
3231715584,3231716095,US
@@ -67126,36 +78598,128 @@
3231776768,3231793151,US
3231793152,3231793663,BE
3231809536,3231810047,NZ
-3231842304,3231846399,EU
+3231842304,3231843327,RU
+3231843328,3231844351,NO
+3231844352,3231845375,RU
+3231845376,3231846399,ES
3231846400,3231846655,RO
-3231846656,3231907839,EU
+3231846656,3231846911,PT
+3231846912,3231847167,GB
+3231847168,3231847423,UA
+3231847424,3231848447,RU
+3231848448,3231849471,ES
+3231849472,3231850495,RO
+3231850496,3231851519,UA
+3231851520,3231853567,RU
+3231853568,3231855615,PL
+3231855616,3231856639,RS
+3231856640,3231857663,RU
+3231857664,3231858687,PL
+3231858688,3231859711,RU
+3231859712,3231860735,FR
+3231860736,3231861759,SA
+3231861760,3231863807,UA
+3231863808,3231864831,DE
+3231864832,3231865855,RU
+3231865856,3231866879,PL
+3231866880,3231867903,CZ
+3231867904,3231868927,RU
+3231868928,3231869951,LV
+3231869952,3231873023,UA
+3231873024,3231875071,RU
+3231875072,3231876095,PL
+3231876096,3231877119,UA
+3231877120,3231878143,NL
+3231878144,3231879167,UA
+3231879168,3231881215,PL
+3231881216,3231882239,UA
+3231882240,3231883263,RU
+3231883264,3231884287,UA
+3231884288,3231885311,PL
+3231885312,3231886335,DE
+3231886336,3231888383,PL
+3231888384,3231889407,RU
+3231889408,3231890431,RO
+3231890432,3231893503,RU
+3231893504,3231894527,UA
+3231894528,3231895551,RU
+3231895552,3231896575,UA
+3231896576,3231897599,RU
+3231897600,3231898623,IE
+3231898624,3231899647,SE
+3231899648,3231900671,UA
+3231900672,3231901439,DE
+3231901440,3231901695,BG
+3231901696,3231903743,UA
+3231903744,3231905791,RU
+3231905792,3231906047,PL
+3231906048,3231907839,RU
3231907840,3231916031,US
3231916032,3231948799,FI
3231973376,3232038911,AT
-3232038912,3232092671,SE
+3232038912,3232039167,SE
+3232039168,3232039423,DK
+3232039424,3232039679,IT
+3232039680,3232047359,SE
+3232047360,3232048639,GB
+3232048640,3232049151,SE
+3232049152,3232049407,GB
+3232049408,3232051967,SE
+3232051968,3232052991,GB
+3232052992,3232060415,SE
+3232060416,3232060671,IE
+3232060672,3232065791,SE
+3232065792,3232066303,GB
+3232066304,3232066559,SE
+3232066560,3232066815,NO
+3232066816,3232079871,SE
+3232079872,3232080895,GB
+3232080896,3232082687,SE
+3232082688,3232083199,GB
+3232083200,3232083455,SE
+3232083456,3232083711,DE
+3232083712,3232086271,SE
+3232086272,3232087039,GB
+3232087040,3232089087,SE
+3232089088,3232089343,ES
+3232089344,3232090367,SE
+3232090368,3232090623,IT
+3232090624,3232092671,SE
3232092672,3232093183,GB
3232093184,3232093439,US
3232093440,3232094207,GB
3232094208,3232094719,CH
3232094720,3232095231,US
3232095232,3232096255,GB
-3232096256,3232104447,SE
+3232096256,3232097279,SE
+3232097280,3232097535,IT
+3232097536,3232098047,SE
+3232098048,3232098303,FR
+3232098304,3232100095,SE
+3232100096,3232100351,IE
+3232100352,3232101119,GB
+3232101120,3232104447,SE
3232104448,3232107519,DE
-3232107520,3232108543,EU
+3232107520,3232108543,RU
3232108544,3232129023,DE
-3232129024,3232131071,EU
+3232129024,3232130047,RO
+3232130048,3232131071,UA
3232131072,3232133119,DE
-3232133120,3232133631,EU
+3232133120,3232133631,UA
3232133632,3232134143,DE
-3232134144,3232141823,EU
+3232134144,3232137215,EU
+3232137216,3232139263,UA
+3232139264,3232140287,GB
+3232140288,3232141311,FR
+3232141312,3232141823,UA
3232141824,3232156159,DE
-3232156160,3232156671,EU
+3232156160,3232156671,PL
3232156672,3232159743,DE
-3232159744,3232160767,EU
+3232159744,3232160767,PL
3232160768,3232163839,DE
-3232163840,3232165887,EU
+3232163840,3232165887,RU
3232165888,3232169727,DE
-3232169728,3232169983,EU
+3232169728,3232169983,PL
3232169984,3232235519,IT
3232301056,3232309247,US
3232309248,3232313343,SG
@@ -67169,7 +78733,8 @@
3232464896,3232497663,GB
3232497664,3232555007,US
3232555264,3232555775,US
-3232555776,3232560895,JP
+3232555776,3232560127,JP
+3232560384,3232560895,JP
3232560896,3232561663,US
3232561664,3232561919,CA
3232561920,3232562431,US
@@ -67188,7 +78753,23 @@
3232706560,3232706815,US
3232710656,3232718847,US
3232727040,3232759807,US
-3232759808,3232825343,SE
+3232759808,3232774911,SE
+3232774912,3232775167,IE
+3232775168,3232794879,SE
+3232794880,3232795135,DE
+3232795136,3232802559,SE
+3232802560,3232802815,DK
+3232802816,3232803071,SE
+3232803072,3232803327,IE
+3232803328,3232804607,SE
+3232804608,3232804863,IT
+3232804864,3232812031,SE
+3232812032,3232812543,GB
+3232812544,3232812799,SE
+3232812800,3232813055,ES
+3232813056,3232820223,SE
+3232820224,3232820479,IE
+3232820480,3232825343,SE
3233285120,3233285375,US
3233480704,3233484799,US
3233484800,3233488895,ES
@@ -67568,7 +79149,9 @@
3234589440,3234589695,AU
3234589696,3234592511,US
3234592512,3234592767,TH
-3234592768,3234725887,US
+3234592768,3234611199,US
+3234611200,3234615295,A1
+3234615296,3234725887,US
3234726144,3234726399,CA
3234726400,3234726911,US
3234727936,3234733055,US
@@ -67597,10 +79180,7 @@
3234781440,3234781951,CA
3234781952,3234782719,US
3234782720,3234783999,IL
-3234784000,3234794495,US
-3234794752,3234795007,US
-3234795008,3234795263,GB
-3234795264,3234799359,US
+3234784000,3234799359,US
3234799360,3234799615,NL
3234799616,3234799871,US
3234799872,3234800127,AU
@@ -67986,7 +79566,6 @@
3237732864,3237733119,DE
3237733120,3237733631,TH
3237733632,3237733887,AU
-3237733888,3237734143,NZ
3237734144,3237734399,CA
3237734400,3237736447,US
3237740544,3238002687,US
@@ -67995,7 +79574,6 @@
3238007040,3238010879,NL
3238010880,3238017023,CH
3238017024,3238018303,DK
-3238018304,3238018559,TR
3238018560,3238018815,FR
3238018816,3238019071,DE
3238019072,3238035455,PL
@@ -68043,7 +79621,28 @@
3238461440,3238502399,DE
3238502400,3238504447,RU
3238504448,3238526975,DE
-3238526976,3238592511,CH
+3238526976,3238527231,RU
+3238527232,3238542591,CH
+3238542592,3238542847,PL
+3238542848,3238545919,CH
+3238545920,3238546431,RU
+3238546432,3238546943,CH
+3238546944,3238547455,UA
+3238547456,3238548991,CH
+3238548992,3238549503,CZ
+3238549504,3238559231,CH
+3238559232,3238559487,SE
+3238559488,3238562559,CH
+3238562560,3238562815,IR
+3238562816,3238573567,CH
+3238573568,3238574079,PL
+3238574080,3238578943,CH
+3238578944,3238579199,RU
+3238579200,3238589951,CH
+3238589952,3238590207,LT
+3238590208,3238590975,CH
+3238590976,3238591231,SA
+3238591232,3238592511,CH
3238592512,3238593023,GB
3238593024,3238594303,EU
3238594304,3238594559,GB
@@ -68088,6 +79687,12 @@
3238630656,3238632959,GB
3238632960,3238633215,UA
3238633216,3238653951,DK
+3238653952,3238655999,RU
+3238656000,3238656255,GB
+3238656256,3238656511,RU
+3238656512,3238657023,UA
+3238657024,3238657535,AT
+3238657536,3238657791,DK
3238657792,3238658047,AT
3238658048,3238675455,SE
3238675456,3238675711,DK
@@ -68178,7 +79783,6 @@
3239127040,3239127295,PT
3239127296,3239127551,PL
3239127552,3239127807,IL
-3239127808,3239128063,RU
3239128064,3239128319,AT
3239128320,3239128575,IT
3239128576,3239128831,UA
@@ -68250,6 +79854,7 @@
3239173632,3239173887,AT
3239173888,3239174143,PL
3239174144,3239174399,DE
+3239174400,3239174655,RO
3239174656,3239174911,GB
3239174912,3239175167,SI
3239175168,3239175423,UA
@@ -68297,7 +79902,6 @@
3239287808,3239288831,GB
3239288832,3239289855,DE
3239289856,3239290879,PL
-3239290880,3239291903,GB
3239291904,3239292927,BG
3239292928,3239293951,CZ
3239293952,3239294975,DE
@@ -68328,7 +79932,6 @@
3239452416,3239452671,HR
3239452672,3239464959,DE
3239464960,3239465215,IL
-3239465216,3239465471,HR
3239465472,3239465727,AT
3239465728,3239465983,PL
3239465984,3239466239,UA
@@ -68412,7 +80015,7 @@
3239541504,3239541759,FR
3239541760,3239542015,GB
3239542016,3239542271,PL
-3239542272,3239542527,UA
+3239542272,3239542527,RU
3239542528,3239542783,FR
3239542784,3239544831,DE
3239544832,3239545087,GB
@@ -68438,7 +80041,6 @@
3239556608,3239556863,HR
3239556864,3239557119,UA
3239557120,3239567359,DE
-3239567360,3239567615,GB
3239567616,3239567871,UA
3239567872,3239568127,DE
3239568128,3239568383,FR
@@ -68473,7 +80075,6 @@
3239634944,3239635967,RU
3239635968,3239636991,DE
3239636992,3239638015,BG
-3239638016,3239639039,PL
3239639040,3239640063,SI
3239640064,3239641087,DE
3239641088,3239643135,PL
@@ -68576,9 +80177,11 @@
3239762176,3239762431,RU
3239762432,3239762687,DK
3239762688,3239762943,RO
+3239762944,3239763199,SI
3239763200,3239763455,SE
3239763456,3239763967,GB
3239763968,3239772159,DE
+3239772160,3239772415,NL
3239772416,3239772671,GB
3239772672,3239773183,DK
3239773184,3239773439,FR
@@ -68596,12 +80199,11 @@
3239783424,3239783679,DK
3239783680,3239783935,CH
3239783936,3239784191,DE
-3239784192,3239784447,UA
3239784448,3239788543,DE
3239788544,3239789055,EU
-3239789056,3239789567,RU
3239789568,3239790079,FR
3239790080,3239790591,RO
+3239790592,3239791103,LV
3239791104,3239792127,CH
3239792128,3239792639,FR
3239792640,3239793151,UA
@@ -68609,7 +80211,6 @@
3239793664,3239794175,RO
3239794176,3239794687,NL
3239794688,3239795199,GB
-3239795200,3239795711,PL
3239795712,3239796223,IL
3239796224,3239796735,NO
3239796736,3239821311,DE
@@ -68638,6 +80239,7 @@
3239834624,3239835135,AT
3239835136,3239836159,RU
3239836160,3239836671,DK
+3239836672,3239837183,DE
3239837184,3239837695,SE
3239837696,3239837951,PL
3239837952,3239839231,DE
@@ -68662,7 +80264,8 @@
3239859968,3239860223,CA
3239860224,3239860479,DE
3239860480,3239860735,GB
-3239860736,3239861247,DE
+3239860736,3239860991,DE
+3239860992,3239861247,AT
3239861248,3239861503,UA
3239861504,3239861759,PL
3239861760,3239862015,SA
@@ -68712,7 +80315,7 @@
3239895296,3239895551,TR
3239895552,3239895807,PL
3239895808,3239896063,DK
-3239896064,3239896575,DE
+3239896320,3239896575,AT
3239896576,3239896831,PL
3239896832,3239897087,HU
3239897088,3239897343,GB
@@ -68856,7 +80459,7 @@
3240183616,3240183647,CR
3240183648,3240183807,NL
3240183808,3240184319,GB
-3240184320,3240184831,UA
+3240184320,3240184831,RU
3240184832,3240185343,GB
3240185344,3240185855,FR
3240185856,3240187391,RU
@@ -68868,7 +80471,6 @@
3240189952,3240190463,DE
3240190464,3240190975,IT
3240190976,3240191487,RU
-3240191488,3240191999,SE
3240192000,3240192511,UA
3240192512,3240193023,RO
3240193024,3240193535,GB
@@ -68885,7 +80487,7 @@
3240199168,3240199679,HU
3240199680,3240200191,NL
3240200192,3240200703,RO
-3240200704,3240201215,SE
+3240200704,3240201215,GB
3240201216,3240201727,RO
3240201728,3240202239,CH
3240202240,3240202751,RU
@@ -68901,7 +80503,6 @@
3240207872,3240208383,RU
3240208384,3240208895,FR
3240208896,3240209407,GB
-3240209408,3240209919,UA
3240209920,3240210943,PL
3240210944,3240211455,GB
3240211456,3240211967,NL
@@ -68996,7 +80597,7 @@
3240279040,3240279551,CH
3240279552,3240280063,RO
3240280064,3240280191,DE
-3240280192,3240280447,PL
+3240280320,3240280447,PL
3240280448,3240280575,UA
3240280576,3240280703,GB
3240280704,3240280831,RU
@@ -69011,9 +80612,12 @@
3240282112,3240282239,DE
3240282240,3240282367,UA
3240282368,3240282495,RO
-3240282496,3240282879,SE
+3240282624,3240282879,SE
3240282880,3240283007,UA
-3240283008,3240283135,PL
+3240283008,3240283391,PL
+3240283392,3240283647,TR
+3240283648,3240283903,AT
+3240283904,3240284159,DE
3240284160,3240285183,RU
3240285184,3240286207,PL
3240286208,3240287231,UA
@@ -69052,7 +80656,6 @@
3240409344,3240409599,GB
3240409600,3240409855,NL
3240409856,3240410111,DE
-3240410112,3240410367,CH
3240410368,3240410623,AT
3240410624,3240410879,PT
3240410880,3240411135,NO
@@ -69104,7 +80707,6 @@
3240577280,3240577535,RO
3240577536,3240577791,DE
3240577792,3240578559,UA
-3240578560,3240578815,CH
3240578816,3240579071,IL
3240579072,3240587263,GB
3240587264,3240587519,NL
@@ -69212,9 +80814,9 @@
3240740608,3240741119,DE
3240741120,3240741375,AT
3240741376,3240741631,IL
-3240741632,3240741887,SK
3240741888,3240742143,LV
3240742144,3240742399,IT
+3240742400,3240742655,RO
3240742656,3240742911,AT
3240742912,3240743423,IL
3240743424,3240743935,DK
@@ -69278,7 +80880,6 @@
3240813568,3240814591,PL
3240814592,3240818687,IT
3240818688,3240820735,NL
-3240820736,3240820799,EU
3240820800,3240820831,RU
3240820832,3240827135,IT
3240827136,3240827391,FR
@@ -69339,24 +80940,17 @@
3240884224,3240886271,UA
3240886272,3240952071,SE
3240952072,3240952079,IE
-3240952080,3240952087,GB
-3240952088,3240952095,SE
+3240952080,3240952095,SE
3240952096,3240952127,US
-3240952128,3240953471,SE
-3240953472,3240953599,DE
-3240953600,3240954495,SE
+3240952128,3240954495,SE
3240954496,3240954623,DE
3240954624,3240955647,SE
3240955648,3240955903,GB
3240955904,3240961791,SE
3240961792,3240961799,FI
-3240961800,3240968191,SE
-3240968192,3240968447,DE
-3240968448,3240968703,SE
+3240961800,3240968703,SE
3240968704,3240968959,GB
-3240968960,3240969215,SE
-3240969216,3240969231,GB
-3240969232,3240988159,SE
+3240968960,3240988159,SE
3240988160,3240988167,PL
3240988168,3241017343,SE
3241017344,3241017855,AT
@@ -69460,6 +81054,7 @@
3241119488,3241119743,BE
3241119744,3241119999,RO
3241120000,3241120255,UA
+3241120256,3241120511,RU
3241120512,3241120767,GB
3241120768,3241121023,RU
3241121024,3241121279,CH
@@ -69514,7 +81109,9 @@
3241499136,3241499903,BE
3241499904,3241500159,DE
3241500160,3241500671,GB
-3241500672,3241502975,BE
+3241500672,3241501439,BE
+3241501440,3241501951,EU
+3241501952,3241502975,BE
3241502976,3241503231,GR
3241503232,3241503487,FR
3241503488,3241508095,BE
@@ -69527,7 +81124,6 @@
3241803824,3241803831,EU
3241803832,3241803839,GB
3241803840,3241803903,PT
-3241803904,3241804031,UA
3241804032,3241820159,BE
3241820160,3241821695,GB
3241821696,3241822207,GR
@@ -69563,6 +81159,7 @@
3241867008,3241867263,FR
3241867264,3241867519,UA
3241867520,3241867775,PL
+3241867776,3241868031,NO
3241868032,3241868287,RU
3241868288,3241868543,HR
3241868544,3241868799,DE
@@ -69571,7 +81168,9 @@
3241869312,3241934847,PL
3241934848,3242196991,GB
3242196992,3242393599,FI
-3242393600,3242459135,NL
+3242393600,3242394471,NL
+3242394472,3242394479,DE
+3242394480,3242459135,NL
3242459136,3242467327,BG
3242467328,3242475519,HU
3242475520,3242483711,LV
@@ -69804,18 +81403,17 @@
3244823296,3244823551,FR
3244823552,3244823807,GE
3244823808,3244824063,RO
-3244824064,3244824319,UA
+3244824064,3244824319,IR
3244824320,3244824575,SI
3244824576,3244824831,RU
3244824832,3244825087,GB
3244825088,3244825343,DE
-3244825344,3244825599,UA
-3244825600,3244826111,RU
+3244825344,3244826111,RU
3244826112,3244826367,RO
3244826368,3244826623,CH
3244826624,3244826879,DE
3244826880,3244827135,MK
-3244827136,3244827391,RU
+3244827136,3244827391,AT
3244827392,3244827647,GB
3244827648,3244827903,FR
3244827904,3244828159,BE
@@ -70018,7 +81616,7 @@
3244883200,3244883455,UA
3244883456,3244883711,CZ
3244883712,3244883967,NL
-3244883968,3244884223,UA
+3244883968,3244884223,DE
3244884224,3244884479,FR
3244884480,3244884735,IR
3244884736,3244884991,NL
@@ -70093,7 +81691,6 @@
3244903168,3244903423,PL
3244903424,3244903679,FI
3244903680,3244903935,NO
-3244903936,3244904191,TR
3244904192,3244904447,IT
3244904448,3244904703,GR
3244904704,3244904959,FR
@@ -70106,7 +81703,6 @@
3244906752,3244907007,SA
3244907008,3244907263,FR
3244907264,3244907519,RO
-3244907520,3244907775,GB
3244907776,3244908287,RU
3244908288,3244908543,NL
3244908544,3244908799,RU
@@ -70130,7 +81726,6 @@
3244913408,3244913663,SI
3244913664,3244913919,DK
3244913920,3244914431,RU
-3244914432,3244914687,UA
3244914688,3244914943,GB
3244914944,3244915199,UA
3244915200,3244915455,PL
@@ -70165,7 +81760,8 @@
3244922624,3244922879,BG
3244922880,3244923135,UA
3244923136,3244923391,AT
-3244923392,3244923903,LV
+3244923392,3244923647,EU
+3244923648,3244923903,LV
3244923904,3244924159,RU
3244924160,3244924927,CZ
3244924928,3244925183,FI
@@ -70208,7 +81804,6 @@
3244935168,3244935423,NL
3244935424,3244935679,UA
3244935680,3244935935,PL
-3244935936,3244936191,FR
3244936192,3244936959,AT
3244936960,3244937215,KZ
3244937216,3244937471,TR
@@ -70260,6 +81855,7 @@
3244951552,3244952575,FI
3244952576,3244953599,GB
3244953600,3244954623,DE
+3244954624,3244955647,PL
3244955648,3244957695,UA
3244957696,3244958719,EU
3244958720,3244959743,FR
@@ -70297,13 +81893,15 @@
3244999680,3245000703,IQ
3245000704,3245001727,UA
3245001728,3245002751,IL
-3245002752,3245003775,ES
+3245002752,3245003263,PL
+3245003264,3245003519,SE
3245003776,3245004799,RU
3245004800,3245005823,PL
3245005824,3245006847,UA
3245006848,3245007871,DE
3245007872,3245008895,PL
-3245008896,3245011967,RU
+3245008896,3245009919,RU
+3245010944,3245011967,RU
3245011968,3245012991,PL
3245012992,3245014015,UA
3245014016,3245015039,GR
@@ -70385,7 +81983,7 @@
3245093888,3245094911,RO
3245094912,3245095935,UA
3245095936,3245096959,IT
-3245096960,3245099007,CZ
+3245096960,3245099007,EU
3245099008,3245103103,GB
3245103104,3245105151,EU
3245105152,3245105663,GB
@@ -70455,7 +82053,6 @@
3245136384,3245136639,GB
3245136640,3245136895,EU
3245136896,3245137151,PL
-3245137152,3245137407,IT
3245137408,3245137663,DE
3245137664,3245137919,SE
3245137920,3245138431,DK
@@ -70465,7 +82062,6 @@
3245139968,3245140479,CH
3245140480,3245140991,RO
3245140992,3245141503,UA
-3245141504,3245142015,IT
3245142016,3245143039,UA
3245143040,3245144063,GB
3245144064,3245145087,UA
@@ -70503,6 +82099,7 @@
3245168896,3245169151,RU
3245169152,3245169407,IT
3245169408,3245169919,PL
+3245169920,3245170175,PT
3245170176,3245170431,GB
3245170432,3245170687,CH
3245170688,3245171711,DE
@@ -70514,7 +82111,7 @@
3245175296,3245175551,RU
3245175552,3245175807,PL
3245175808,3245176063,GB
-3245176064,3245176319,IT
+3245176064,3245176319,SK
3245176320,3245176575,UA
3245176576,3245176831,FR
3245176832,3245177343,ES
@@ -70546,7 +82143,6 @@
3245200384,3245200639,PL
3245200640,3245200895,GR
3245200896,3245201151,DE
-3245201152,3245201407,GB
3245201408,3245201663,UA
3245201664,3245201919,NO
3245201920,3245202175,SA
@@ -70566,6 +82162,7 @@
3245207552,3245208063,UA
3245208064,3245208575,DE
3245208576,3245209087,PL
+3245209088,3245209599,VG
3245209600,3245210111,UA
3245210112,3245210623,FR
3245210624,3245211135,HU
@@ -70714,8 +82311,7 @@
3245298432,3245298687,UA
3245298688,3245298943,GB
3245298944,3245299199,UA
-3245299200,3245299455,GB
-3245299456,3245299711,CY
+3245299200,3245299711,GB
3245299712,3245299967,DE
3245299968,3245300223,BG
3245300224,3245300479,FR
@@ -70814,7 +82410,9 @@
3245903032,3245903039,GB
3245903040,3245903959,IE
3245903960,3245903967,FR
-3245903968,3245904199,IE
+3245903968,3245904087,IE
+3245904088,3245904095,GB
+3245904096,3245904199,IE
3245904200,3245904207,GB
3245904208,3245906367,IE
3245906368,3245906431,GB
@@ -70876,9 +82474,7 @@
3246417960,3246417967,LV
3246417968,3246418887,GB
3246418888,3246418895,SE
-3246418896,3246475535,GB
-3246475536,3246475551,A2
-3246475552,3246537887,GB
+3246418896,3246537887,GB
3246537888,3246537903,A2
3246537904,3246613503,GB
3246613504,3246614527,HU
@@ -70929,7 +82525,6 @@
3247071488,3247072255,RO
3247072256,3247072511,IE
3247072512,3247072767,BE
-3247072768,3247073023,SE
3247073024,3247073279,RO
3247073280,3247073535,DE
3247073536,3247073791,AT
@@ -71239,9 +82834,7 @@
3247335424,3247336447,FI
3247336448,3247337215,NO
3247337216,3247337471,CH
-3247337472,3247337983,PL
-3247337984,3247338239,FI
-3247338240,3247338495,PL
+3247337472,3247338495,PL
3247338496,3247338751,SI
3247338752,3247339519,GB
3247339520,3247340543,FI
@@ -71259,6 +82852,8 @@
3247347968,3247348223,HU
3247348224,3247348991,FI
3247348992,3247349247,DE
+3247349248,3247349503,FR
+3247349504,3247349759,UA
3247349760,3247353855,SE
3247353856,3247362047,FI
3247362048,3247362303,RO
@@ -71312,7 +82907,9 @@
3247714304,3247716351,CH
3247716352,3247717887,ES
3247717888,3247718399,CH
-3247718400,3247769599,ES
+3247718400,3247742975,ES
+3247742976,3247751167,DE
+3247751168,3247769599,ES
3247769600,3247771647,DE
3247771648,3247775743,ES
3247775744,3247779647,DE
@@ -71332,10 +82929,8 @@
3247825920,3247826943,BE
3247826944,3247828991,CH
3247828992,3247833087,BE
-3247833088,3247865855,RU
3247865856,3247871999,GB
3247872000,3247875327,NL
-3247875328,3247875583,TR
3247875584,3247876095,DE
3247876096,3247876351,PL
3247876352,3247876607,FR
@@ -71351,6 +82946,7 @@
3247901696,3247902719,UA
3247902720,3247903743,GB
3247903744,3247904767,BG
+3247904768,3247905791,RU
3247905792,3247906815,RO
3247906816,3247907839,DE
3247907840,3247908863,PL
@@ -71358,7 +82954,7 @@
3247909888,3247910911,DE
3247910912,3247912959,PL
3247912960,3247913983,UA
-3247913984,3247915007,DE
+3247913984,3247915007,AT
3247915008,3247917055,PL
3247917056,3247918079,NL
3247918080,3247919103,PL
@@ -71386,9 +82982,7 @@
3248226304,3248235007,NO
3248235008,3248235263,PK
3248235264,3248357375,NO
-3248357376,3248370511,DE
-3248370512,3248370519,AT
-3248370520,3248371743,DE
+3248357376,3248371743,DE
3248371744,3248371751,PL
3248371752,3248372239,DE
3248372240,3248372247,AT
@@ -71463,8 +83057,8 @@
3248790784,3248791039,PL
3248791040,3248791295,BE
3248791296,3248791551,DE
-3248791552,3248792479,GB
-3248792480,3248796607,EU
+3248791552,3248792527,GB
+3248792528,3248796607,EU
3248796608,3248796863,GB
3248796864,3248798975,EU
3248798976,3248799231,GB
@@ -71609,7 +83203,8 @@
3249136128,3249137151,RU
3249137152,3249137663,FR
3249137664,3249138175,PL
-3249138176,3249138687,UA
+3249138176,3249138687,RU
+3249138688,3249139199,GB
3249139200,3249139711,RU
3249139712,3249140223,UA
3249140224,3249140735,IT
@@ -71702,7 +83297,7 @@
3249716736,3249717247,UA
3249717248,3249718271,LV
3249718272,3249719295,DE
-3249719296,3249720319,GB
+3249719296,3249720319,IR
3249720320,3249721343,IT
3249721344,3249721599,AT
3249721600,3249721855,BE
@@ -71730,11 +83325,57 @@
3249731584,3249732607,UA
3249732608,3249733631,IT
3249733632,3249799167,CZ
-3249799168,3249931007,SE
+3249799168,3249829887,SE
+3249829888,3249830143,GB
+3249830144,3249830399,SE
+3249830400,3249830655,IT
+3249830656,3249850623,SE
+3249850624,3249850879,GB
+3249850880,3249863679,SE
+3249863680,3249863935,ES
+3249863936,3249865471,SE
+3249865472,3249866751,GB
+3249866752,3249868543,SE
+3249868544,3249868799,DE
+3249868800,3249871103,SE
+3249871104,3249871359,NO
+3249871360,3249871615,SE
+3249871616,3249871871,NO
+3249871872,3249872383,SE
+3249872384,3249872639,GB
+3249872640,3249910783,SE
+3249910784,3249912319,GB
+3249912320,3249931007,SE
3249931008,3249931263,GB
3249931264,3249932031,SE
3249932032,3249934335,GB
-3249934336,3250061311,SE
+3249934336,3249967615,SE
+3249967616,3249967871,GB
+3249967872,3249968127,SE
+3249968128,3249969151,FR
+3249969152,3249971199,SE
+3249971200,3249971455,IT
+3249971456,3249974527,SE
+3249974528,3249974783,ES
+3249974784,3249976063,SE
+3249976064,3249976319,FR
+3249976320,3249976831,SE
+3249976832,3249977087,GB
+3249977088,3249991679,SE
+3249991680,3249991935,US
+3249991936,3249995263,SE
+3249995264,3249995519,GB
+3249995520,3249997055,SE
+3249997056,3249997311,US
+3249997312,3250000127,SE
+3250000128,3250000383,GB
+3250000384,3250007295,SE
+3250007296,3250007551,GB
+3250007552,3250031359,SE
+3250031360,3250031615,US
+3250031616,3250035455,SE
+3250035456,3250035711,US
+3250035712,3250061311,SE
3250061312,3250061635,FI
3250061636,3250061639,AX
3250061640,3250083643,FI
@@ -71804,8 +83445,7 @@
3250357880,3250357887,SE
3250357888,3250357895,DK
3250357920,3250357927,PL
-3250357928,3250357959,CY
-3250357960,3250358015,GB
+3250357952,3250358015,GB
3250358016,3250358527,LB
3250358528,3250358783,HU
3250358784,3250359295,LB
@@ -71818,7 +83458,6 @@
3250372608,3250373375,HU
3250373376,3250373631,GB
3250373632,3250374143,DE
-3250374144,3250374655,TR
3250374656,3250374911,SA
3250374912,3250375679,SE
3250375680,3250376703,GB
@@ -71857,6 +83496,7 @@
3250416128,3250417663,DE
3250417664,3250418175,IT
3250418176,3250418687,DE
+3250418688,3250419199,PL
3250419200,3250419711,NO
3250419712,3250420223,RU
3250420224,3250420735,IR
@@ -71875,11 +83515,13 @@
3250425856,3250426111,LT
3250426112,3250426367,NO
3250426368,3250426623,AT
-3250426624,3250426879,FR
+3250426624,3250426879,BE
3250426880,3250427135,JO
3250427136,3250427391,NL
3250427392,3250429951,DE
-3250429952,3250438143,SI
+3250429952,3250434335,SI
+3250434336,3250434351,AT
+3250434352,3250438143,SI
3250438144,3250438207,FR
3250438208,3250438399,CH
3250438400,3250438431,FR
@@ -71901,7 +83543,6 @@
3250589440,3250589471,IE
3250589472,3250589503,NL
3250589504,3250589567,HR
-3250589568,3250589631,UA
3250589632,3250589695,NO
3250589696,3250593791,CH
3250593792,3250594815,GB
@@ -71932,7 +83573,6 @@
3250692096,3250692351,NO
3250692352,3250692607,NL
3250692608,3250693375,BG
-3250693376,3250694399,IE
3250694400,3250694655,GB
3250694656,3250694911,SK
3250694912,3250695167,NL
@@ -71942,7 +83582,7 @@
3250697728,3250697983,BG
3250697984,3250698239,IT
3250698240,3250698751,GR
-3250698752,3250699775,GB
+3250699264,3250699775,GB
3250699776,3250700287,DE
3250700288,3250708479,UA
3250708480,3250716671,KZ
@@ -71954,7 +83594,6 @@
3250722304,3250724863,GB
3250724864,3250733055,MA
3250733056,3250741247,DZ
-3250741248,3250749439,EU
3250749440,3250749695,GH
3250749696,3250749951,IT
3250749952,3250750463,RO
@@ -72022,6 +83661,7 @@
3251122176,3251122687,CH
3251122688,3251123199,PL
3251123200,3251123711,FR
+3251123712,3251124223,RU
3251124224,3251124735,NL
3251124736,3251125247,FR
3251125248,3251125759,BE
@@ -72174,7 +83814,8 @@
3251175168,3251175423,UA
3251175424,3251176703,FR
3251176704,3251176959,IT
-3251176960,3251177471,FR
+3251176960,3251177215,US
+3251177216,3251177471,FR
3251177472,3251179519,DE
3251179520,3251180031,SE
3251180032,3251180543,PL
@@ -72184,7 +83825,6 @@
3251182080,3251182591,FR
3251182592,3251183103,IT
3251183104,3251183615,RU
-3251183616,3251183871,NO
3251183872,3251184127,CH
3251184128,3251184383,PL
3251184384,3251184639,DK
@@ -72239,7 +83879,7 @@
3251209216,3251210239,GB
3251210240,3251211263,PL
3251211264,3251212287,UA
-3251212288,3251212415,IE
+3251212288,3251212415,PL
3251212416,3251212671,FI
3251212672,3251212799,SE
3251212800,3251212927,FR
@@ -72258,7 +83898,7 @@
3251213696,3251213759,LV
3251213760,3251213823,TR
3251213824,3251213887,GB
-3251213888,3251214015,FI
+3251213952,3251214015,FI
3251214016,3251214079,UA
3251214080,3251214143,FR
3251214144,3251214207,AF
@@ -72274,7 +83914,6 @@
3251215488,3251215615,SE
3251215616,3251215743,TR
3251215744,3251215871,GB
-3251215872,3251215999,CH
3251216000,3251216127,LI
3251216128,3251216255,FI
3251216256,3251216383,RU
@@ -72312,8 +83951,7 @@
3251237888,3251238911,DK
3251238912,3251239935,FR
3251239936,3251240959,US
-3251240960,3251241215,DE
-3251241216,3251243007,GB
+3251240960,3251243007,GB
3251243008,3251245055,BE
3251245056,3251245311,DE
3251245312,3251245567,BE
@@ -72331,12 +83969,7 @@
3251248640,3251248895,DE
3251248896,3251249151,GB
3251249152,3251251199,NL
-3251251200,3251251455,PT
-3251251456,3251251711,GB
-3251251712,3251251967,CH
-3251251968,3251252223,BG
-3251252224,3251252479,AT
-3251252480,3251252735,NL
+3251251200,3251252735,EU
3251252736,3251256831,CH
3251256832,3251257343,GB
3251257344,3251259903,BE
@@ -72344,11 +83977,7 @@
3251260672,3251260927,BE
3251260928,3251261439,FR
3251261440,3251264255,CH
-3251264256,3251264511,BG
-3251264512,3251264767,IT
-3251264768,3251265023,GB
-3251265024,3251265279,ES
-3251265280,3251265535,DE
+3251264256,3251265535,FR
3251265536,3251267839,NL
3251267840,3251268351,GB
3251268352,3251268607,NL
@@ -72460,7 +84089,9 @@
3251734528,3251734783,NL
3251734784,3251765247,FI
3251765248,3251765503,NL
-3251765504,3251774207,FI
+3251765504,3251766663,FI
+3251766664,3251766671,AX
+3251766672,3251774207,FI
3251774208,3251774463,DE
3251774464,3251783423,FI
3251783424,3251783679,GB
@@ -72476,7 +84107,9 @@
3251850496,3251850751,FR
3251850752,3251851007,CH
3251851008,3251896319,FI
-3251896320,3251927991,NO
+3251896320,3251927767,NO
+3251927768,3251927775,SE
+3251927776,3251927991,NO
3251927992,3251927999,NL
3251928000,3252015687,NO
3252015688,3252015695,SE
@@ -72495,11 +84128,11 @@
3252316416,3252316671,FR
3252316672,3252318463,GR
3252318464,3252318719,TR
-3252318720,3252318975,GP
+3252318720,3252318975,MQ
3252318976,3252319231,PL
3252319232,3252319743,AT
3252319744,3252321791,GR
-3252321792,3252322303,DE
+3252321792,3252322303,PL
3252322304,3252323327,NO
3252323328,3252324351,PL
3252324352,3252326399,RU
@@ -72519,6 +84152,11 @@
3252342208,3252342239,GB
3252342240,3252342271,CH
3252342528,3252342543,NO
+3252342544,3252342559,GB
+3252342560,3252342575,IT
+3252342576,3252342591,DE
+3252342592,3252342607,IE
+3252342656,3252342783,IL
3252342784,3252346367,DE
3252346368,3252346623,GB
3252346624,3252355071,GR
@@ -72568,32 +84206,38 @@
3252407584,3252407599,NG
3252407600,3252407615,BJ
3252407616,3252407711,NO
-3252407712,3252407727,NG
-3252407728,3252407751,NO
+3252407712,3252407743,NG
+3252407744,3252407751,NO
3252407752,3252407759,AO
-3252407760,3252407767,NE
-3252407768,3252407775,CD
+3252407760,3252407775,CD
3252407776,3252407791,GH
3252407792,3252407807,NO
3252407808,3252407999,GN
-3252408000,3252408159,NO
+3252408000,3252408063,NO
+3252408064,3252408079,ML
+3252408080,3252408159,NO
3252408160,3252408191,GQ
3252408192,3252408319,NO
3252408320,3252408327,MW
3252408328,3252408335,LT
-3252408336,3252408367,GN
+3252408336,3252408343,GN
+3252408344,3252408351,LT
+3252408352,3252408367,GN
3252408368,3252408375,NG
3252408376,3252408383,LT
3252408384,3252408391,BI
3252408392,3252408415,LT
3252408416,3252408479,NO
3252408480,3252408511,LT
-3252408512,3252408519,AF
-3252408520,3252408639,LT
+3252408512,3252408527,AF
+3252408528,3252408575,LT
+3252408576,3252408607,SO
+3252408608,3252408639,LT
3252408640,3252408671,CF
3252408672,3252408703,SO
3252408704,3252408735,NG
-3252408736,3252408767,LT
+3252408736,3252408751,SO
+3252408752,3252408767,LT
3252408768,3252408783,NG
3252408784,3252408799,LT
3252408800,3252408831,SO
@@ -72603,28 +84247,34 @@
3252408856,3252408863,CM
3252408864,3252408871,LR
3252408872,3252408879,CI
-3252408880,3252409103,LT
+3252408880,3252409023,LT
+3252409024,3252409039,TZ
+3252409040,3252409103,LT
3252409104,3252409111,SD
3252409112,3252409119,LT
3252409120,3252409127,NG
-3252409128,3252409167,LT
+3252409128,3252409151,LT
+3252409152,3252409159,KE
+3252409160,3252409167,LT
3252409168,3252409175,UG
3252409176,3252409183,LT
3252409184,3252409191,UG
3252409192,3252409199,ZW
-3252409200,3252409207,TZ
-3252409208,3252409215,LT
+3252409200,3252409215,TZ
3252409216,3252409223,BW
3252409224,3252409231,LT
3252409232,3252409247,UG
-3252409248,3252409263,LT
-3252409264,3252409271,SO
-3252409272,3252409279,LT
-3252409280,3252409343,SO
+3252409248,3252409263,CD
+3252409264,3252409279,LT
+3252409280,3252409295,SO
+3252409296,3252409303,LT
+3252409304,3252409343,SO
3252409344,3252409375,TD
3252409376,3252409407,LT
3252409408,3252409471,BI
-3252409472,3252409519,LT
+3252409472,3252409503,LT
+3252409504,3252409511,GH
+3252409512,3252409519,LT
3252409520,3252409527,NG
3252409528,3252409535,LT
3252409536,3252409543,BI
@@ -72634,23 +84284,22 @@
3252409632,3252409647,AO
3252409648,3252409727,LT
3252409728,3252409735,LR
-3252409736,3252410375,LT
-3252410376,3252410391,BW
+3252409736,3252409759,LT
+3252409760,3252409775,BI
+3252409776,3252410383,LT
+3252410384,3252410391,BW
3252410392,3252410431,LT
3252410432,3252410463,BI
3252410464,3252410495,LT
3252410496,3252410623,BI
3252410624,3252410751,ZW
-3252410752,3252411135,LT
-3252411136,3252411167,IQ
-3252411168,3252411327,LT
+3252410752,3252411327,LT
3252411328,3252411367,CD
3252411368,3252411375,LT
3252411376,3252411391,CD
3252411392,3252411647,LT
3252411648,3252411679,BI
-3252411680,3252411695,LT
-3252411696,3252411711,UG
+3252411680,3252411711,LT
3252411712,3252411743,NG
3252411744,3252411775,LT
3252411776,3252411783,GH
@@ -72662,8 +84311,7 @@
3252411880,3252411903,CD
3252411904,3252414463,LT
3252414464,3252414479,GH
-3252414480,3252414495,ML
-3252414496,3252414511,LT
+3252414480,3252414511,LT
3252414512,3252414527,MR
3252414528,3252414591,LT
3252414592,3252414599,GH
@@ -72672,28 +84320,30 @@
3252414624,3252414639,TZ
3252414640,3252414647,GH
3252414648,3252414655,NE
-3252414656,3252414719,ER
-3252414720,3252414983,LT
-3252414984,3252415007,IQ
-3252415008,3252415015,LT
-3252415016,3252415127,IQ
+3252414656,3252414991,LT
+3252414992,3252414999,IQ
+3252415000,3252415015,LT
+3252415016,3252415031,IQ
+3252415032,3252415039,LT
+3252415040,3252415095,IQ
+3252415096,3252415103,LT
+3252415104,3252415127,IQ
3252415128,3252415135,LT
-3252415136,3252415167,IQ
-3252415168,3252415199,LT
-3252415200,3252415231,IQ
-3252415232,3252415487,LT
-3252415488,3252415743,IQ
+3252415136,3252415159,IQ
+3252415160,3252415167,BE
+3252415168,3252415231,IQ
+3252415232,3252415743,LT
3252415744,3252415775,GB
3252415776,3252415967,LT
3252415968,3252415999,CM
-3252416000,3252416831,LT
-3252416832,3252416927,GN
+3252416000,3252416895,LT
+3252416896,3252416927,GN
3252416928,3252416959,LT
3252416960,3252417023,GN
3252417024,3252417279,LT
3252417280,3252417287,IQ
-3252417288,3252417375,AF
-3252417376,3252417791,LT
+3252417288,3252417463,AF
+3252417464,3252417791,LT
3252417792,3252417855,NG
3252417856,3252417919,LT
3252417920,3252417935,MW
@@ -72715,26 +84365,17 @@
3252419168,3252419199,CD
3252419200,3252419215,LT
3252419216,3252419247,GN
-3252419248,3252419263,LT
-3252419264,3252419279,TZ
-3252419280,3252419311,LT
+3252419248,3252419311,LT
3252419312,3252419327,ZM
-3252419328,3252419343,GH
-3252419344,3252419359,LT
+3252419328,3252419359,LT
3252419360,3252419423,GH
3252419424,3252419839,LT
3252419840,3252419879,IQ
-3252419880,3252419887,LT
-3252419888,3252419895,IQ
-3252419896,3252419903,LT
-3252419904,3252419911,IQ
-3252419912,3252419919,LT
+3252419880,3252419919,LT
3252419920,3252419927,IQ
3252419928,3252419935,LT
-3252419936,3252419951,IQ
-3252419952,3252419991,LT
-3252419992,3252420007,IQ
-3252420008,3252420031,LT
+3252419936,3252419943,IQ
+3252419944,3252420031,LT
3252420032,3252420055,IQ
3252420056,3252420063,LT
3252420064,3252420071,IQ
@@ -72743,28 +84384,23 @@
3252420120,3252420143,IQ
3252420144,3252420191,LT
3252420192,3252420223,IQ
-3252420224,3252420239,LT
-3252420240,3252420247,IQ
-3252420248,3252420263,LT
-3252420264,3252420271,IQ
-3252420272,3252420367,LT
-3252420368,3252420415,IQ
+3252420224,3252420351,LT
+3252420352,3252420415,IQ
3252420416,3252420431,GB
-3252420432,3252420463,IQ
+3252420432,3252420447,LT
+3252420448,3252420463,IQ
3252420464,3252420471,AF
3252420472,3252420583,LT
3252420584,3252420591,IQ
3252420592,3252421119,LT
-3252421120,3252421631,NO
-3252421632,3252424703,LT
+3252421120,3252423679,NO
+3252423680,3252424703,LT
3252424704,3252424719,GN
3252424720,3252424735,LT
3252424736,3252424767,MA
3252424768,3252424799,LT
3252424800,3252424815,NE
-3252424816,3252424959,LT
-3252424960,3252424967,KE
-3252424968,3252425023,LT
+3252424816,3252425023,LT
3252425024,3252425215,SO
3252425216,3252425343,TD
3252425344,3252425471,LT
@@ -72791,7 +84427,7 @@
3252430520,3252430527,LT
3252430528,3252430543,BF
3252430544,3252430559,BJ
-3252430560,3252430591,BF
+3252430560,3252430591,LT
3252430592,3252430847,GN
3252430848,3252431359,MW
3252431360,3252431871,LT
@@ -72812,21 +84448,25 @@
3252434720,3252434743,GH
3252434744,3252435199,LT
3252435200,3252435247,TZ
-3252435248,3252435295,LT
+3252435248,3252435263,BW
+3252435264,3252435279,ML
+3252435280,3252435295,LT
3252435296,3252435311,TZ
-3252435312,3252435319,LT
+3252435312,3252435319,CF
3252435320,3252435327,MZ
3252435328,3252435343,CD
3252435344,3252435359,BF
-3252435360,3252435375,CD
+3252435360,3252435375,LT
3252435376,3252435415,GN
-3252435416,3252435423,CD
-3252435424,3252435455,LT
+3252435416,3252435423,LT
+3252435424,3252435447,CD
+3252435448,3252435455,LT
3252435456,3252435711,TZ
3252435712,3252435855,GH
3252435856,3252435871,MR
3252435872,3252435887,GH
-3252435888,3252435919,BW
+3252435888,3252435903,LT
+3252435904,3252435919,BW
3252435920,3252435935,BF
3252435936,3252435951,CF
3252435952,3252435967,LT
@@ -72853,18 +84493,14 @@
3252438528,3252438783,CM
3252438784,3252439039,LT
3252439040,3252439055,BJ
-3252439056,3252439071,LT
-3252439072,3252439079,BJ
-3252439080,3252439263,LT
+3252439056,3252439263,LT
3252439264,3252439271,SN
3252439272,3252439287,LT
3252439288,3252439295,SN
3252439296,3252439391,SO
3252439392,3252439807,LT
3252439808,3252439871,SO
-3252439872,3252440063,LT
-3252440064,3252440319,MW
-3252440320,3252444287,LT
+3252439872,3252444287,LT
3252444288,3252444351,TZ
3252444352,3252445183,LT
3252445184,3252445263,GN
@@ -72890,8 +84526,12 @@
3252450912,3252451071,LT
3252451072,3252451327,CH
3252451328,3252451583,LT
-3252451584,3252451599,GM
-3252451600,3252451839,LT
+3252451584,3252451607,GM
+3252451608,3252451631,GW
+3252451632,3252451655,GN
+3252451656,3252451679,SL
+3252451680,3252451695,LR
+3252451696,3252451839,LT
3252451840,3252451855,NO
3252451856,3252451967,LT
3252451968,3252451999,NO
@@ -72899,7 +84539,7 @@
3252452096,3252452127,NO
3252452128,3252452135,LT
3252452136,3252452143,NO
-3252452144,3252452159,LT
+3252452144,3252452159,GB
3252452160,3252452175,NL
3252452176,3252452191,NO
3252452192,3252452215,NL
@@ -72921,7 +84561,7 @@
3252453248,3252453271,NG
3252453272,3252454655,LT
3252454656,3252454911,IQ
-3252454912,3252455167,GB
+3252454912,3252455167,LT
3252455168,3252455295,NG
3252455296,3252455679,LT
3252455680,3252455807,BI
@@ -72931,7 +84571,7 @@
3252456960,3252457471,NG
3252457472,3252460799,LT
3252460800,3252460831,AF
-3252460832,3252460847,KP
+3252460832,3252460847,US
3252460848,3252461055,LT
3252461056,3252461567,NO
3252461568,3252464383,LT
@@ -72941,8 +84581,7 @@
3252465952,3252465983,GH
3252465984,3252466047,LT
3252466048,3252466175,GH
-3252466176,3252473343,LT
-3252473344,3252473855,CD
+3252466176,3252473855,LT
3252473856,3252474879,SO
3252474880,3252475903,LT
3252475904,3252476415,NG
@@ -72970,7 +84609,6 @@
3252510720,3252514815,FR
3252514816,3252515071,SI
3252515072,3252515327,GB
-3252515328,3252515583,DE
3252515584,3252515839,SI
3252515840,3252516095,CH
3252516096,3252516351,FR
@@ -73078,7 +84716,6 @@
3252912896,3252913151,PL
3252913152,3252913407,ES
3252913408,3252913663,FR
-3252913664,3252913919,CZ
3252913920,3252914175,NO
3252914176,3252916223,FR
3252916224,3252920319,DE
@@ -73142,15 +84779,41 @@
3253230592,3253230847,BY
3253230848,3253247999,RU
3253248000,3253248255,DE
-3253248256,3253248511,UZ
-3253248512,3253264383,RU
-3253264384,3253264895,KZ
-3253264896,3253265407,RU
+3253248256,3253265407,RU
3253265408,3253265919,AM
3253265920,3253270527,RU
3253270528,3253271551,BY
3253271552,3253338111,RU
-3253338112,3253469183,SE
+3253338112,3253380863,SE
+3253380864,3253381119,IT
+3253381120,3253383935,SE
+3253383936,3253384191,NO
+3253384192,3253409791,SE
+3253409792,3253410047,GB
+3253410048,3253412351,SE
+3253412352,3253412607,US
+3253412608,3253416447,SE
+3253416448,3253416703,GB
+3253416704,3253428223,SE
+3253428224,3253428479,DE
+3253428480,3253429759,SE
+3253429760,3253430015,ES
+3253430016,3253433087,SE
+3253433088,3253433343,DE
+3253433344,3253434111,SE
+3253434112,3253434367,GB
+3253434368,3253434623,IT
+3253434624,3253434879,SE
+3253434880,3253435135,IT
+3253435136,3253440511,SE
+3253440512,3253440767,FR
+3253440768,3253453311,SE
+3253453312,3253453567,NO
+3253453568,3253454079,SE
+3253454080,3253454335,GB
+3253454336,3253460735,SE
+3253460736,3253460991,IT
+3253460992,3253469183,SE
3253469184,3253471231,AO
3253471232,3253534719,PT
3253534720,3253600255,GB
@@ -73311,7 +84974,6 @@
3253888256,3253888511,BE
3253888512,3253888767,GB
3253888768,3253889023,SE
-3253889024,3253889279,PL
3253889280,3253889535,CH
3253889536,3253889791,DE
3253889792,3253890047,DK
@@ -73354,7 +85016,6 @@
3253968896,3253969407,DE
3253969408,3253969919,AT
3253969920,3253970431,NL
-3253970432,3253970687,DE
3253970688,3253970943,UA
3253970944,3253971967,RS
3253971968,3253972991,RU
@@ -73434,9 +85095,7 @@
3254490368,3254490623,CF
3254490624,3254491135,FR
3254491136,3254491391,DZ
-3254491392,3254491607,GQ
-3254491608,3254491615,FR
-3254491616,3254491647,GQ
+3254491392,3254491647,GQ
3254491648,3254491903,FR
3254491904,3254492031,CM
3254492032,3254492159,FR
@@ -73492,11 +85151,11 @@
3254510564,3254510847,NE
3254510848,3254521855,FR
3254521856,3254522367,GB
-3254522368,3254523665,FR
-3254523666,3254523666,UG
-3254523667,3254523667,CH
-3254523668,3254523668,RO
-3254523669,3254550527,FR
+3254522368,3254523739,FR
+3254523740,3254523740,UG
+3254523741,3254523741,CH
+3254523742,3254523742,RO
+3254523743,3254550527,FR
3254550528,3254550783,US
3254550784,3254551039,IR
3254551040,3254551295,US
@@ -73555,7 +85214,7 @@
3254707712,3254708223,RO
3254708224,3254708735,UA
3254708736,3254709247,RO
-3254709248,3254710271,DE
+3254709248,3254709759,DE
3254710272,3254710783,IT
3254710784,3254711295,RO
3254711296,3254711807,FR
@@ -73582,6 +85241,10 @@
3254784512,3254785279,LT
3254785280,3254785535,KZ
3254785536,3254785791,DK
+3254785792,3254786047,LU
+3254786304,3254786815,AT
+3254786816,3254787071,SM
+3254787072,3254788095,NL
3254796288,3254797311,SE
3254797312,3254798335,RU
3254798336,3254799359,AT
@@ -73593,7 +85256,6 @@
3254804480,3254806527,PL
3254806528,3254807551,UA
3254807552,3254808575,KZ
-3254808576,3254809599,PL
3254809600,3254810623,UA
3254810624,3254811647,RU
3254811648,3254812671,RO
@@ -73652,7 +85314,6 @@
3254827776,3254828031,UA
3254828032,3254828287,DE
3254828288,3254828799,RO
-3254828800,3254829055,BE
3254829056,3254829311,NO
3254829312,3254829567,GB
3254829568,3254829823,NL
@@ -73700,7 +85361,6 @@
3254840320,3254840575,DK
3254840576,3254840831,UA
3254840832,3254841343,GB
-3254841344,3254841599,IT
3254841600,3254841855,IE
3254841856,3254842111,LV
3254842112,3254842367,GB
@@ -73787,7 +85447,9 @@
3255006720,3255006975,A2
3255006976,3255017648,FR
3255017649,3255017649,LB
-3255017650,3255120639,FR
+3255017650,3255087103,FR
+3255087104,3255087359,SG
+3255087360,3255120639,FR
3255120640,3255120895,DE
3255120896,3255123711,FR
3255123712,3255123967,DE
@@ -73940,7 +85602,9 @@
3255252528,3255252543,LU
3255252544,3255252559,BE
3255252560,3255252575,LU
-3255252576,3255255559,BE
+3255252576,3255254847,BE
+3255254848,3255254879,LU
+3255254880,3255255559,BE
3255255560,3255255567,LU
3255255568,3255255599,BE
3255255600,3255255607,LU
@@ -73950,7 +85614,9 @@
3255255752,3255255759,DK
3255255760,3255256319,BE
3255256320,3255256575,LU
-3255256576,3255259327,BE
+3255256576,3255259199,BE
+3255259200,3255259215,LU
+3255259216,3255259327,BE
3255259328,3255259359,LU
3255259360,3255259919,BE
3255259920,3255259927,LU
@@ -73960,17 +85626,21 @@
3255260320,3255260335,LU
3255260336,3255260343,BE
3255260344,3255260347,LU
-3255260348,3255261519,BE
-3255261520,3255261535,LU
+3255260348,3255261471,BE
+3255261472,3255261535,LU
3255261536,3255262799,BE
3255262800,3255262815,LU
3255262816,3255263295,BE
3255263296,3255263327,US
-3255263328,3255265007,BE
+3255263328,3255264543,BE
+3255264544,3255264575,LU
+3255264576,3255265007,BE
3255265008,3255265023,LU
3255265024,3255270431,BE
3255270432,3255270463,FR
-3255270464,3255273855,BE
+3255270464,3255271807,BE
+3255271808,3255271839,LU
+3255271840,3255273855,BE
3255273856,3255273887,LU
3255273888,3255274207,BE
3255274208,3255274239,LU
@@ -73986,7 +85656,9 @@
3255276576,3255276607,LU
3255276608,3255276671,BE
3255276672,3255276703,LU
-3255276704,3255277247,BE
+3255276704,3255276783,BE
+3255276784,3255276799,LU
+3255276800,3255277247,BE
3255277248,3255277255,LU
3255277256,3255277955,BE
3255277956,3255277959,LU
@@ -74105,7 +85777,7 @@
3255366144,3255367167,DK
3255367168,3255367679,RU
3255367680,3255368191,UA
-3255368192,3255368703,LV
+3255368192,3255368703,MD
3255368704,3255369215,CZ
3255369216,3255369727,GB
3255369728,3255370239,LU
@@ -74129,6 +85801,7 @@
3255378944,3255379455,UA
3255379456,3255379967,RU
3255379968,3255380479,GB
+3255380480,3255380991,NL
3255380992,3255381503,CH
3255381504,3255382015,PL
3255382016,3255382527,NL
@@ -74157,7 +85830,7 @@
3255401472,3255412479,DE
3255412480,3255412735,RO
3255412736,3255413247,DE
-3255413248,3255413759,LV
+3255413248,3255413503,LV
3255413760,3255414271,GB
3255414272,3255414527,TR
3255414528,3255414783,LV
@@ -74281,14 +85954,26 @@
3255660544,3255666431,NL
3255666432,3255666687,DE
3255666688,3255697407,NL
-3255697408,3255739647,SE
+3255697408,3255710719,SE
+3255710720,3255710975,ES
+3255710976,3255724543,SE
+3255724544,3255725055,US
+3255725056,3255725311,ES
+3255725312,3255739647,SE
3255739648,3255739903,GB
3255739904,3255743231,SE
3255743232,3255743487,IT
-3255743488,3255745535,SE
+3255743488,3255743743,DE
+3255743744,3255745535,SE
3255745536,3255746047,DK
3255746048,3255762943,SE
-3255762944,3255799039,DE
+3255762944,3255791615,DE
+3255791616,3255792639,UA
+3255792640,3255793663,RU
+3255793664,3255794943,PL
+3255794944,3255795199,RU
+3255795200,3255795711,UA
+3255795712,3255799039,DE
3255799040,3255799295,SE
3255799296,3255800575,DE
3255800576,3255800831,UA
@@ -74353,7 +86038,6 @@
3256413184,3256413695,UA
3256413696,3256414207,PL
3256414208,3256414719,RU
-3256414720,3256415231,DE
3256415232,3256415743,PL
3256415744,3256416255,UA
3256416256,3256416767,RS
@@ -74455,7 +86139,9 @@
3256698880,3256699135,DE
3256699136,3256699391,NL
3256699392,3256700415,GB
-3256700416,3256701183,EU
+3256700416,3256700671,NL
+3256700672,3256700927,FR
+3256700928,3256701183,EU
3256701184,3256701439,BE
3256701440,3256701695,GB
3256701696,3256705279,EU
@@ -74491,7 +86177,6 @@
3256788224,3256788479,RU
3256788480,3256788735,GB
3256788736,3256788991,DE
-3256788992,3256789247,UA
3256789248,3256789503,SE
3256789504,3256789759,UA
3256789760,3256790015,GB
@@ -74587,7 +86272,6 @@
3257401344,3257466879,CH
3257466880,3257467135,DE
3257467136,3257467391,GB
-3257467392,3257467903,NL
3257467904,3257468927,IT
3257468928,3257469183,EU
3257469184,3257469439,IT
@@ -74635,20 +86319,17 @@
3257546688,3257546719,DE
3257546720,3257546751,DK
3257546752,3257548799,IE
-3257548800,3257549055,DE
-3257549056,3257549343,GB
+3257548800,3257549343,GB
3257549344,3257549359,DE
-3257549360,3257549375,GB
-3257549376,3257549423,DE
-3257549424,3257549567,GB
-3257549568,3257549695,DE
+3257549360,3257549407,GB
+3257549408,3257549423,DE
+3257549424,3257549631,GB
+3257549632,3257549695,DE
3257549696,3257549823,GB
3257549824,3257549871,DE
-3257549872,3257549951,GB
-3257549952,3257550095,DE
-3257550096,3257550847,GB
-3257550848,3257551103,DE
-3257551104,3257551631,GB
+3257549872,3257550079,GB
+3257550080,3257550095,DE
+3257550096,3257551631,GB
3257551632,3257551647,DE
3257551648,3257551711,GB
3257551712,3257551807,DE
@@ -74659,8 +86340,8 @@
3257552656,3257552703,GB
3257552704,3257552719,DE
3257552720,3257552895,GB
-3257552896,3257552959,DE
-3257552960,3257553023,GB
+3257552896,3257552927,DE
+3257552928,3257553023,GB
3257553024,3257553039,DE
3257553040,3257553407,GB
3257553408,3257553727,DE
@@ -75641,6 +87322,7 @@
3258085888,3258086143,UA
3258086144,3258086399,AT
3258086400,3258086655,UA
+3258086656,3258086911,PL
3258086912,3258087167,GB
3258087168,3258087423,UA
3258087424,3258087679,RU
@@ -75686,7 +87368,9 @@
3258109952,3258110207,DK
3258110208,3258111487,CZ
3258111488,3258111743,PL
-3258111744,3258121215,CZ
+3258111744,3258118399,CZ
+3258118400,3258118655,UA
+3258118656,3258121215,CZ
3258121216,3258121471,PL
3258121472,3258121727,AT
3258121728,3258121983,UA
@@ -75751,7 +87435,9 @@
3258504192,3258504703,CH
3258504704,3258504959,DE
3258504960,3258505215,IL
-3258505216,3258515455,CH
+3258505216,3258506495,CH
+3258506496,3258506751,DE
+3258506752,3258515455,CH
3258515456,3258580991,FR
3258580992,3258625791,RU
3258625792,3258626047,UA
@@ -75822,7 +87508,9 @@
3258948608,3258949631,RU
3258949632,3258972159,GR
3258972160,3258974207,NO
-3258974208,3259023103,DE
+3258974208,3259006079,DE
+3259006080,3259006111,BE
+3259006112,3259023103,DE
3259023104,3259023107,ES
3259023108,3259031655,DE
3259031656,3259031659,ES
@@ -75841,9 +87529,7 @@
3259035456,3259036031,DE
3259036032,3259036035,ES
3259036036,3259039743,DE
-3259039744,3259062015,PT
-3259062016,3259062271,GW
-3259062272,3259105279,PT
+3259039744,3259105279,PT
3259105280,3259170815,GB
3259170816,3259219967,RU
3259219968,3259220479,BY
@@ -75860,11 +87546,27 @@
3259228160,3259236351,RU
3259236352,3259236863,SE
3259236864,3259237119,CH
-3259237120,3259269375,SE
+3259237120,3259237887,SE
+3259237888,3259238143,FR
+3259238144,3259248127,SE
+3259248128,3259248383,GB
+3259248384,3259258623,SE
+3259258624,3259258879,ES
+3259258880,3259262719,SE
+3259262720,3259262975,DK
+3259262976,3259269375,SE
3259269376,3259269631,FR
-3259269632,3259292415,SE
+3259269632,3259276287,SE
+3259276288,3259276543,ES
+3259276544,3259285759,SE
+3259285760,3259286015,GB
+3259286016,3259290879,SE
+3259290880,3259291135,US
+3259291136,3259292415,SE
3259292416,3259292671,IT
-3259292672,3259301887,SE
+3259292672,3259297535,SE
+3259297536,3259297791,GB
+3259297792,3259301887,SE
3259301888,3259302143,DE
3259302144,3259302399,AE
3259302400,3259303423,CH
@@ -75968,13 +87670,19 @@
3259367424,3259432959,GB
3259432960,3259435263,SE
3259435264,3259435519,IT
-3259435520,3259457279,SE
+3259435520,3259438079,SE
+3259438080,3259438335,ES
+3259438336,3259457279,SE
3259457280,3259457535,IT
3259457536,3259460351,SE
3259460352,3259460607,DE
3259460608,3259465215,SE
3259465216,3259465471,KH
-3259465472,3259492351,SE
+3259465472,3259479807,SE
+3259479808,3259480063,DK
+3259480064,3259480831,SE
+3259480832,3259481087,ES
+3259481088,3259492351,SE
3259492352,3259493375,GB
3259493376,3259498495,SE
3259498496,3259506943,GB
@@ -76058,11 +87766,7 @@
3259657728,3259657887,BE
3259657888,3259657919,GB
3259657920,3259657983,BE
-3259657984,3259660287,GB
-3259660288,3259660295,CH
-3259660296,3259660327,GB
-3259660328,3259660335,CH
-3259660336,3259660543,GB
+3259657984,3259660543,GB
3259660544,3259660799,CH
3259660800,3259695871,GB
3259695872,3259695903,ES
@@ -76070,11 +87774,7 @@
3259696640,3259696895,ES
3259696896,3259701759,GB
3259701760,3259702303,DE
-3259702304,3259751423,GB
-3259751424,3259751431,FR
-3259751432,3259751551,GB
-3259751552,3259751615,FR
-3259751616,3259752191,GB
+3259702304,3259752191,GB
3259752192,3259752447,FR
3259752448,3259760639,GB
3259760640,3259814399,DE
@@ -76111,9 +87811,7 @@
3260021248,3260021759,RU
3260021760,3260022271,GR
3260022272,3260022783,NL
-3260022784,3260237775,GB
-3260237776,3260237791,GR
-3260237792,3260284927,GB
+3260022784,3260284927,GB
3260284928,3260288767,RU
3260288768,3260289023,KZ
3260289024,3260303935,RU
@@ -76169,7 +87867,6 @@
3260587520,3260588031,PL
3260588032,3260596223,DE
3260596224,3260596735,CH
-3260596736,3260597247,RO
3260597248,3260597759,CH
3260597760,3260598271,DE
3260598272,3260598783,RU
@@ -76216,15 +87913,7 @@
3260809216,3260874751,PL
3260874752,3260875775,DK
3260875776,3260876031,GB
-3260876032,3260891391,DK
-3260891392,3260891647,IT
-3260891648,3260891903,NL
-3260891904,3260892159,ES
-3260892160,3260892415,GB
-3260892416,3260892671,FI
-3260892672,3260892927,PT
-3260892928,3260893183,SE
-3260893184,3260893439,AT
+3260876032,3260893439,DK
3260893440,3260894207,SE
3260894208,3260895231,AT
3260895232,3260898303,SE
@@ -76235,7 +87924,6 @@
3260901120,3260903423,DE
3260903424,3260906239,CH
3260906240,3260906495,DE
-3260906496,3260907519,FR
3260907520,3260915711,GB
3260915712,3260923903,UA
3260923904,3261071359,DE
@@ -76261,7 +87949,9 @@
3261472768,3261503487,RO
3261503488,3261503935,MD
3261503936,3261530111,RO
-3261530112,3261570303,SE
+3261530112,3261531903,SE
+3261531904,3261532159,GB
+3261532160,3261570303,SE
3261570304,3261570559,IT
3261570560,3261595647,SE
3261595648,3261661183,NL
@@ -76305,6 +87995,7 @@
3261767680,3261775871,RS
3261775872,3261776383,PL
3261776384,3261777407,RU
+3261777408,3261777663,IR
3261777664,3261777919,KZ
3261777920,3261778431,PL
3261778432,3261778943,RU
@@ -76333,7 +88024,7 @@
3261820928,3261821183,RO
3261821184,3261821439,AT
3261821440,3261821695,NL
-3261821696,3261821951,SI
+3261821696,3261821951,UA
3261821952,3261822207,RU
3261822208,3261822463,UA
3261822464,3261822719,GB
@@ -76396,7 +88087,9 @@
3262034048,3262034119,AX
3262034120,3262034123,FI
3262034124,3262034127,AX
-3262034128,3262034431,FI
+3262034128,3262034175,FI
+3262034176,3262034191,AX
+3262034192,3262034431,FI
3262034432,3262034447,AX
3262034448,3262034455,FI
3262034456,3262034463,AX
@@ -76590,7 +88283,6 @@
3262423040,3262423551,GB
3262423552,3262424063,UA
3262424064,3262424575,IT
-3262424576,3262425087,FR
3262425088,3262425599,RO
3262425600,3262426111,UA
3262426112,3262426623,DE
@@ -76630,8 +88322,7 @@
3262444032,3262444543,AT
3262444544,3262445055,UA
3262445056,3262445567,RO
-3262445568,3262446079,PL
-3262446592,3262447103,PL
+3262445568,3262447103,PL
3262447104,3262447615,GB
3262447616,3262460415,PT
3262460416,3262460543,UA
@@ -76799,7 +88490,7 @@
3262472992,3262472995,DE
3262472996,3262472999,FR
3262473000,3262473003,HU
-3262473004,3262473007,NO
+3262473004,3262473007,DE
3262473008,3262473011,US
3262473012,3262473015,DE
3262473016,3262473019,AR
@@ -77195,8 +88886,7 @@
3262475460,3262475463,FR
3262475464,3262475467,DE
3262475468,3262475471,ES
-3262475472,3262475475,DE
-3262475476,3262475479,ES
+3262475472,3262475479,DE
3262475480,3262475483,US
3262475484,3262475487,IT
3262475488,3262475491,MX
@@ -77723,7 +89413,7 @@
3262478135,3262478135,TR
3262478136,3262478137,HU
3262478138,3262478138,TR
-3262478139,3262478139,MZ
+3262478139,3262478139,DE
3262478140,3262478140,FR
3262478141,3262478143,TR
3262478144,3262478145,DE
@@ -77735,7 +89425,7 @@
3262478151,3262478151,DE
3262478152,3262478152,PL
3262478153,3262478153,TR
-3262478154,3262478154,FR
+3262478154,3262478154,DE
3262478155,3262478155,CU
3262478156,3262478156,TR
3262478157,3262478157,DE
@@ -77804,7 +89494,7 @@
3262478344,3262478344,IT
3262478345,3262478345,CH
3262478346,3262478346,PT
-3262478347,3262478347,AO
+3262478347,3262478347,DE
3262478348,3262478348,DK
3262478349,3262478349,BE
3262478350,3262478350,AT
@@ -78111,7 +89801,7 @@
3262478749,3262478751,FR
3262478752,3262478752,PT
3262478753,3262478753,IE
-3262478754,3262478754,ES
+3262478754,3262478754,DE
3262478755,3262478755,DK
3262478756,3262478756,DE
3262478757,3262478757,AT
@@ -78158,7 +89848,7 @@
3262478801,3262478801,DE
3262478802,3262478802,IT
3262478803,3262478803,ES
-3262478804,3262478804,SK
+3262478804,3262478804,DE
3262478805,3262478806,GR
3262478807,3262478807,CH
3262478808,3262478808,HU
@@ -78495,8 +90185,7 @@
3262479305,3262479307,DE
3262479308,3262479308,DK
3262479309,3262479309,SE
-3262479310,3262479311,DE
-3262479312,3262479312,IT
+3262479310,3262479312,DE
3262479313,3262479313,FR
3262479314,3262479318,DE
3262479319,3262479319,DK
@@ -78848,8 +90537,7 @@
3262479809,3262479809,FR
3262479810,3262479810,NL
3262479811,3262479811,ES
-3262479812,3262479812,GB
-3262479813,3262479816,DE
+3262479812,3262479816,DE
3262479817,3262479817,HU
3262479818,3262479818,DE
3262479819,3262479819,NL
@@ -78917,9 +90605,7 @@
3262479903,3262479903,CH
3262479904,3262479908,DE
3262479909,3262479909,SE
-3262479910,3262479912,DE
-3262479913,3262479913,NO
-3262479914,3262479914,DE
+3262479910,3262479914,DE
3262479915,3262479915,FR
3262479916,3262479917,DE
3262479918,3262479918,GB
@@ -79381,7 +91067,6 @@
3263072256,3263074303,LB
3263074304,3263074815,CH
3263074816,3263075327,RO
-3263075328,3263075839,GB
3263075840,3263076351,SE
3263076352,3263076863,RO
3263076864,3263077375,IT
@@ -79429,7 +91114,6 @@
3263096064,3263096319,PL
3263096320,3263096575,TR
3263096576,3263096831,SA
-3263096832,3263097087,NL
3263097088,3263097343,FR
3263097344,3263097599,DK
3263097600,3263097855,NL
@@ -79458,12 +91142,21 @@
3263138560,3263138815,AT
3263138816,3263168511,DE
3263168512,3263430655,GB
-3263430656,3263436799,SE
+3263430656,3263436543,SE
+3263436544,3263436799,ES
3263436800,3263437311,GB
-3263437312,3263477759,SE
+3263437312,3263458047,SE
+3263458048,3263458303,DE
+3263458304,3263459583,SE
+3263459584,3263459839,FR
+3263459840,3263461631,SE
+3263461632,3263461887,AE
+3263461888,3263477759,SE
3263477760,3263478015,JP
3263478016,3263478271,AU
-3263478272,3263496191,SE
+3263478272,3263478527,SE
+3263478528,3263478783,ES
+3263478784,3263496191,SE
3263496192,3263497983,EU
3263497984,3263498239,GB
3263498240,3263498751,EU
@@ -79617,6 +91310,7 @@
3264015360,3264015615,DK
3264015616,3264015871,UA
3264015872,3264016127,PT
+3264016128,3264016383,UA
3264016384,3264016639,SE
3264016640,3264016895,PL
3264016896,3264017151,GB
@@ -79693,7 +91387,6 @@
3264320000,3264320255,DE
3264320256,3264321023,GB
3264321024,3264321535,DE
-3264321536,3264321791,SE
3264321792,3264322047,RS
3264322048,3264322303,FR
3264322304,3264322559,RO
@@ -79731,9 +91424,7 @@
3264340992,3264341503,PL
3264341504,3264341759,DE
3264341760,3264342015,IT
-3264342016,3264342783,DE
-3264342784,3264343039,ES
-3264343040,3264343295,DE
+3264342016,3264343295,DE
3264343296,3264343551,GB
3264343552,3264343807,RO
3264343808,3264344063,DE
@@ -79793,7 +91484,9 @@
3264431104,3264431615,LI
3264431616,3264446207,CH
3264446208,3264446463,FR
-3264446464,3264463871,CH
+3264446464,3264447743,CH
+3264447744,3264447999,DE
+3264448000,3264463871,CH
3264463872,3264466943,LI
3264466944,3264483071,CH
3264483072,3264483327,LI
@@ -79836,15 +91529,17 @@
3264612352,3264612479,FR
3264612480,3264612511,GB
3264612512,3264612591,FR
-3264612592,3264613119,GB
-3264613120,3264614399,FR
-3264614400,3264614431,GB
+3264612592,3264612607,GB
+3264612608,3264613375,FR
+3264613376,3264614143,NL
+3264614144,3264614399,GB
+3264614400,3264614431,NL
3264614432,3264614447,FR
-3264614448,3264614463,GB
+3264614448,3264614463,NL
3264614464,3264614527,FR
-3264614528,3264614559,GB
+3264614528,3264614559,NL
3264614560,3264614591,FR
-3264614592,3264614623,GB
+3264614592,3264614623,NL
3264614624,3264614655,FR
3264614656,3264615935,GB
3264615936,3264615999,FR
@@ -79862,7 +91557,9 @@
3264616960,3264617215,FR
3264617216,3264617311,GB
3264617312,3264617983,FR
-3264617984,3264618751,GB
+3264617984,3264618239,GB
+3264618240,3264618495,US
+3264618496,3264618751,GB
3264618752,3264619007,FR
3264619008,3264619519,GB
3264619520,3264619551,FR
@@ -79876,7 +91573,9 @@
3264620544,3264620927,FR
3264620928,3264621567,GB
3264621568,3264621823,FR
-3264621824,3264626687,GB
+3264621824,3264622847,GB
+3264622848,3264623103,FR
+3264623104,3264626687,GB
3264626688,3264627711,EE
3264627712,3264628735,GR
3264628736,3264630783,UA
@@ -79895,7 +91594,6 @@
3264652288,3264652799,RU
3264652800,3264653311,PL
3264653312,3264653823,EU
-3264653824,3264654335,RO
3264654336,3264654847,DE
3264654848,3264655359,UA
3264655360,3264655871,GB
@@ -79920,6 +91618,7 @@
3264665600,3264666111,RO
3264666112,3264666623,IL
3264666624,3264667135,UA
+3264667136,3264667647,RU
3264667648,3264668159,BE
3264668160,3264669183,DE
3264669184,3264669695,PL
@@ -80009,21 +91708,23 @@
3264845312,3264845951,DE
3264845952,3264846079,GB
3264846080,3264846207,UG
+3264846208,3264846335,AE
3264846336,3264846463,GB
3264846464,3264846591,NO
3264846592,3264846719,US
3264846720,3264846847,RU
3264846848,3264846911,DK
-3264846912,3264846975,SK
3264846976,3264847103,GB
3264847104,3264847135,FR
3264847136,3264847167,ES
3264847168,3264847199,IE
3264847200,3264847231,NO
+3264847232,3264847263,CH
3264847264,3264847295,LI
3264847360,3264847487,FR
3264847488,3264847615,RU
3264847616,3264847679,PL
+3264847680,3264847743,FI
3264847744,3264847807,BE
3264847808,3264847871,SE
3264847872,3264849919,DE
@@ -80033,7 +91734,6 @@
3264850944,3264851967,IT
3264851968,3264854015,CH
3264854016,3264854527,DE
-3264854528,3264854783,RU
3264854784,3264855039,IT
3264855040,3264855551,CH
3264855552,3264856063,DE
@@ -80048,154 +91748,9 @@
3264872448,3264888831,GB
3264888832,3264897023,RU
3264897024,3264905215,GB
-3264905216,3264906255,CY
-3264906256,3264906263,GR
-3264906264,3264906287,CY
-3264906288,3264906291,GR
-3264906292,3264906295,CY
-3264906296,3264906303,GR
-3264906304,3264906323,CY
-3264906324,3264906327,GR
-3264906328,3264906332,CY
-3264906333,3264906335,GR
-3264906336,3264906339,CY
-3264906340,3264906351,GR
-3264906352,3264906355,CY
-3264906356,3264906359,GR
-3264906360,3264906367,CY
-3264906368,3264906411,GR
-3264906412,3264906423,CY
-3264906424,3264906435,GR
-3264906436,3264906495,CY
-3264906496,3264906623,GR
-3264906624,3264906751,CY
-3264906752,3264906761,GR
-3264906762,3264906879,CY
-3264906880,3264906895,GR
-3264906896,3264906911,CY
-3264906912,3264906919,GR
-3264906920,3264906983,CY
-3264906984,3264906995,GR
-3264906996,3264907139,CY
-3264907140,3264907143,GR
-3264907144,3264907151,CY
-3264907152,3264907155,GR
-3264907156,3264907639,CY
-3264907640,3264907647,GR
-3264907648,3264907663,CY
-3264907664,3264907671,GR
-3264907672,3264907679,CY
-3264907680,3264907683,GR
-3264907684,3264907687,CY
-3264907688,3264907691,GR
-3264907692,3264907695,CY
-3264907696,3264907703,GR
-3264907704,3264907715,CY
-3264907716,3264907727,GR
-3264907728,3264907735,CY
-3264907736,3264907743,GR
-3264907744,3264907755,CY
-3264907756,3264907763,GR
-3264907764,3264907767,CY
-3264907768,3264907775,GR
-3264907776,3264907919,CY
-3264907920,3264907927,GR
-3264907928,3264907935,CY
-3264907936,3264907939,GR
-3264907940,3264907963,CY
-3264907964,3264907971,GR
-3264907972,3264907987,CY
-3264907988,3264907991,GR
-3264907992,3264908007,CY
-3264908008,3264908019,GR
-3264908020,3264908023,CY
-3264908024,3264908031,GR
-3264908032,3264908063,CY
-3264908064,3264908071,GR
-3264908072,3264908095,CY
-3264908096,3264908103,GR
-3264908104,3264908111,CY
-3264908112,3264908119,GR
-3264908120,3264908167,CY
-3264908168,3264908175,GR
-3264908176,3264908183,CY
-3264908184,3264908191,GR
-3264908192,3264908223,CY
-3264908224,3264908255,GR
-3264908256,3264908286,CY
-3264908287,3264908799,GR
+3264905216,3264908799,CY
3264908800,3264909055,GB
-3264909056,3264909311,GR
-3264909312,3264909639,CY
-3264909640,3264909647,GR
-3264909648,3264909655,CY
-3264909656,3264909663,GR
-3264909664,3264910590,CY
-3264910591,3264910591,GR
-3264910592,3264910607,CY
-3264910608,3264910623,GR
-3264910624,3264910655,CY
-3264910656,3264910671,GR
-3264910672,3264910696,CY
-3264910697,3264910699,GR
-3264910700,3264910707,CY
-3264910708,3264910719,GR
-3264910720,3264910815,CY
-3264910816,3264911103,GR
-3264911104,3264911651,CY
-3264911652,3264911655,GR
-3264911656,3264911679,CY
-3264911680,3264911703,GR
-3264911704,3264911743,CY
-3264911744,3264911807,GR
-3264911808,3264912131,CY
-3264912132,3264912135,GR
-3264912136,3264912139,CY
-3264912140,3264912143,GR
-3264912144,3264912147,CY
-3264912148,3264912151,GR
-3264912152,3264912167,CY
-3264912168,3264912183,GR
-3264912184,3264912191,CY
-3264912192,3264912219,GR
-3264912220,3264912223,CY
-3264912224,3264912231,GR
-3264912232,3264912235,CY
-3264912236,3264912239,GR
-3264912240,3264912243,CY
-3264912244,3264912251,GR
-3264912252,3264912263,CY
-3264912264,3264912279,GR
-3264912280,3264912283,CY
-3264912284,3264912287,GR
-3264912288,3264912295,CY
-3264912296,3264912319,GR
-3264912320,3264912655,CY
-3264912656,3264912663,GR
-3264912664,3264912815,CY
-3264912816,3264912839,GR
-3264912840,3264912843,CY
-3264912844,3264912863,GR
-3264912864,3264912879,CY
-3264912880,3264912895,GR
-3264912896,3264913151,CY
-3264913152,3264913183,GR
-3264913184,3264913191,CY
-3264913192,3264913199,GR
-3264913200,3264913223,CY
-3264913224,3264913231,GR
-3264913232,3264913243,CY
-3264913244,3264913263,GR
-3264913264,3264913279,CY
-3264913280,3264913295,GR
-3264913296,3264913299,CY
-3264913300,3264913303,GR
-3264913304,3264913311,CY
-3264913312,3264913327,GR
-3264913328,3264913375,CY
-3264913376,3264913383,GR
-3264913384,3264913399,CY
-3264913400,3264913407,GR
+3264909056,3264913407,CY
3264913408,3264917247,GB
3264917248,3264917375,NL
3264917376,3264921599,GB
@@ -80289,7 +91844,9 @@
3265467520,3265467523,ES
3265467524,3265527055,DE
3265527056,3265527059,ES
-3265527060,3265527807,DE
+3265527060,3265527063,DE
+3265527064,3265527071,SE
+3265527072,3265527807,DE
3265527808,3265569279,GB
3265569280,3265569791,AE
3265569792,3265582335,GB
@@ -80317,14 +91874,12 @@
3265604096,3265604351,SA
3265604352,3265604607,FR
3265604608,3265604863,CH
+3265604864,3265605119,RU
3265605120,3265605375,UA
3265605376,3265605631,CZ
3265605632,3265605887,PL
3265605888,3265606143,FR
-3265606144,3265606399,RU
-3265606400,3265606655,DE
3265606656,3265606911,AT
-3265606912,3265607167,FR
3265607168,3265607423,PL
3265607424,3265607935,DK
3265607936,3265608191,CZ
@@ -80402,7 +91957,7 @@
3265918976,3265919231,NL
3265919232,3265919487,FR
3265919488,3265919743,RU
-3265919744,3265919999,DK
+3265919744,3265919999,DE
3265920000,3265920255,CZ
3265920256,3265920511,TR
3265920512,3265921023,GB
@@ -80488,7 +92043,9 @@
3266445312,3266510847,NL
3266510848,3266543615,ES
3266543616,3266576383,IT
-3266576384,3266634391,DE
+3266576384,3266617327,DE
+3266617328,3266617343,GB
+3266617344,3266634391,DE
3266634392,3266634399,EE
3266634400,3266641919,DE
3266641920,3266707455,PL
@@ -80505,8 +92062,8 @@
3266799616,3266800127,GB
3266800128,3266800319,NL
3266800320,3266800639,GB
-3266800640,3266800703,NL
-3266800704,3266800727,GB
+3266800640,3266800695,NL
+3266800696,3266800727,GB
3266800728,3266800735,NL
3266800736,3266800895,GB
3266800896,3266801215,NL
@@ -80520,10 +92077,10 @@
3266801616,3266801647,NL
3266801648,3266801663,GB
3266801664,3266801919,NL
-3266801920,3266802943,GB
-3266802944,3266803199,NL
-3266803200,3266803727,GB
-3266803728,3266803831,NL
+3266801920,3266803727,GB
+3266803728,3266803751,NL
+3266803752,3266803759,GB
+3266803760,3266803831,NL
3266803832,3266804223,GB
3266804224,3266804479,NL
3266804480,3266804735,GB
@@ -80706,9 +92263,7 @@
3267626240,3267626495,BE
3267626496,3267626751,ES
3267626752,3267627007,RU
-3267627008,3267627167,DE
-3267627168,3267627199,EU
-3267627200,3267627343,DE
+3267627008,3267627343,DE
3267627344,3267627359,EU
3267627360,3267627423,DE
3267627424,3267627431,EU
@@ -80723,9 +92278,11 @@
3267628800,3267629055,HU
3267629056,3267629311,CZ
3267629312,3267629567,DK
-3267629568,3267629759,BE
-3267629760,3267629807,EU
-3267629808,3267629823,BE
+3267629568,3267629711,BE
+3267629712,3267629719,EU
+3267629720,3267629759,BE
+3267629760,3267629791,EU
+3267629792,3267629823,BE
3267629824,3267630079,GR
3267630080,3267630591,GB
3267630592,3267630847,SK
@@ -80800,12 +92357,13 @@
3267644416,3267644671,DE
3267644672,3267644927,SI
3267644928,3267644935,EU
-3267644936,3267644959,BE
+3267644936,3267644943,BE
+3267644944,3267644951,EU
+3267644952,3267644959,BE
3267644960,3267644975,FR
3267644976,3267644983,GB
3267644984,3267645055,BE
-3267645056,3267645183,GB
-3267645184,3267645439,EU
+3267645056,3267645439,EU
3267645440,3267645695,GB
3267645696,3267645951,DE
3267645952,3267646207,DK
@@ -80813,16 +92371,17 @@
3267647488,3267647743,GB
3267647744,3267647999,SI
3267648000,3267648255,DE
-3267648256,3267648431,EU
+3267648256,3267648383,EU
+3267648384,3267648399,BG
+3267648400,3267648415,GB
+3267648416,3267648431,EU
3267648432,3267648447,BE
3267648448,3267648479,FR
3267648480,3267648511,GB
3267648512,3267648767,DE
3267648768,3267649023,NL
3267649024,3267649279,RU
-3267649280,3267649295,DE
-3267649296,3267649311,EU
-3267649312,3267649471,DE
+3267649280,3267649471,DE
3267649472,3267649791,EU
3267649792,3267650303,NL
3267650304,3267650319,EU
@@ -80854,8 +92413,8 @@
3267657488,3267657503,EU
3267657504,3267657567,RO
3267657568,3267657663,EU
-3267657664,3267657679,RO
-3267657680,3267657983,EU
+3267657664,3267657695,RO
+3267657696,3267657983,EU
3267657984,3267658239,GB
3267658240,3267658495,IT
3267658496,3267658751,EU
@@ -80864,24 +92423,29 @@
3267659520,3267659775,IT
3267659776,3267660287,EU
3267660288,3267660543,CH
-3267660544,3267660671,ES
+3267660544,3267660575,ES
+3267660576,3267660591,EU
+3267660592,3267660671,ES
3267660672,3267661311,EU
3267661312,3267661567,SK
-3267661568,3267661679,GB
+3267661568,3267661583,GB
+3267661584,3267661599,EU
+3267661600,3267661679,GB
3267661680,3267661695,EU
3267661696,3267661823,GB
3267661824,3267661847,ES
3267661848,3267661855,EU
3267661856,3267661887,ES
3267661888,3267662023,EU
-3267662024,3267662031,ES
-3267662032,3267662047,EU
+3267662024,3267662039,ES
+3267662040,3267662047,EU
3267662048,3267662079,ES
3267662080,3267662847,EU
3267662848,3267662879,IE
3267662880,3267662887,EU
3267662888,3267662895,GB
-3267662896,3267662951,IE
+3267662896,3267662911,EU
+3267662912,3267662951,IE
3267662952,3267662959,GB
3267662960,3267662991,IE
3267662992,3267663007,EU
@@ -80915,12 +92479,12 @@
3267666544,3267666575,EU
3267666576,3267667199,GB
3267667200,3267667455,NL
-3267667456,3267667967,GB
+3267667456,3267667759,GB
+3267667760,3267667775,EU
+3267667776,3267667967,GB
3267667968,3267670015,EU
3267670016,3267671551,ZA
-3267671552,3267671679,DE
-3267671680,3267671711,EU
-3267671712,3267671807,DE
+3267671552,3267671807,DE
3267671808,3267672063,NO
3267672064,3267672223,DE
3267672224,3267672255,EU
@@ -80929,26 +92493,25 @@
3267672576,3267672831,AT
3267672832,3267672847,FR
3267672848,3267672855,EU
-3267672856,3267672927,FR
-3267672928,3267672943,EU
-3267672944,3267672999,FR
-3267673000,3267673007,EU
-3267673008,3267673015,FR
+3267672856,3267672935,FR
+3267672936,3267672943,EU
+3267672944,3267673015,FR
3267673016,3267673023,EU
3267673024,3267673087,FR
3267673088,3267673439,DE
3267673440,3267673471,EU
-3267673472,3267673479,DE
-3267673480,3267673487,EU
-3267673488,3267673503,DE
+3267673472,3267673503,DE
3267673504,3267673599,EU
3267673600,3267673759,DE
3267673760,3267673807,EU
3267673808,3267673855,DE
3267673856,3267674111,EU
3267674112,3267674127,NL
-3267674128,3267674159,GB
-3267674160,3267674207,BE
+3267674128,3267674143,EU
+3267674144,3267674159,GB
+3267674160,3267674167,BE
+3267674168,3267674175,EU
+3267674176,3267674207,BE
3267674208,3267674239,GB
3267674240,3267674303,BE
3267674304,3267674335,EU
@@ -80988,8 +92551,8 @@
3267680000,3267680255,CZ
3267680256,3267680767,SK
3267680768,3267681279,EU
-3267681280,3267681319,FR
-3267681320,3267681327,EU
+3267681280,3267681311,FR
+3267681312,3267681327,EU
3267681328,3267681503,FR
3267681504,3267681511,EU
3267681512,3267681535,FR
@@ -81004,22 +92567,20 @@
3267682560,3267683335,EU
3267683336,3267683359,PL
3267683360,3267683391,EU
-3267683392,3267683471,PL
-3267683472,3267683519,EU
+3267683392,3267683463,PL
+3267683464,3267683519,EU
3267683520,3267683527,PL
3267683528,3267683535,EU
3267683536,3267683551,PL
3267683552,3267683567,EU
3267683568,3267683575,PL
-3267683576,3267684383,EU
-3267684384,3267684399,GB
-3267684400,3267684407,EU
-3267684408,3267684783,GB
-3267684784,3267684791,EU
-3267684792,3267685119,GB
+3267683576,3267683919,EU
+3267683920,3267683935,PL
+3267683936,3267684383,EU
+3267684384,3267685119,GB
3267685120,3267685375,DE
3267685376,3267685887,NL
-3267685888,3267686399,GB
+3267685888,3267686399,CH
3267686400,3267687935,EU
3267687936,3267688191,IE
3267688192,3267688703,DE
@@ -81035,7 +92596,12 @@
3267690272,3267690495,FR
3267690496,3267691519,FI
3267691520,3267692543,SE
-3267692544,3267711999,FI
+3267692544,3267710959,FI
+3267710960,3267710963,LV
+3267710964,3267710967,NO
+3267710968,3267710971,DK
+3267710972,3267710975,SE
+3267710976,3267711999,FI
3267712000,3267712255,SE
3267712256,3267729311,FI
3267729312,3267729343,AX
@@ -81115,9 +92681,7 @@
3268223232,3268224767,EU
3268224768,3268225023,US
3268225024,3268226367,EU
-3268226368,3268226655,GB
-3268226656,3268226687,EU
-3268226688,3268226815,GB
+3268226368,3268226815,GB
3268226816,3268227327,EU
3268227328,3268227391,GB
3268227392,3268227519,EU
@@ -81171,9 +92735,7 @@
3268238360,3268238367,DE
3268238368,3268238463,GB
3268238464,3268238471,DE
-3268238472,3268238759,GB
-3268238760,3268238767,EU
-3268238768,3268238847,GB
+3268238472,3268238847,GB
3268238848,3268239103,EU
3268239104,3268239359,GB
3268239360,3268239583,EU
@@ -81387,10 +92949,8 @@
3268739072,3268739327,DE
3268739328,3268739583,PL
3268739584,3268739839,DE
-3268739840,3268740095,CH
3268740096,3268740351,IL
3268740352,3268740607,DE
-3268740608,3268740863,UA
3268740864,3268741119,CH
3268741120,3268741375,FR
3268741376,3268741887,LV
@@ -81458,7 +93018,11 @@
3268935680,3269057535,GB
3269057536,3269058047,NL
3269058048,3269066751,GB
-3269066752,3269131555,SE
+3269066752,3269118087,SE
+3269118088,3269118091,GB
+3269118092,3269122343,SE
+3269122344,3269122351,GB
+3269122352,3269131555,SE
3269131556,3269131559,NO
3269131560,3269132287,SE
3269132288,3269197823,GR
@@ -81502,8 +93066,8 @@
3269279488,3269279671,EU
3269279672,3269279679,CH
3269279680,3269279743,EU
-3269279744,3269279999,GB
-3269280000,3269280767,NL
+3269279744,3269280127,GB
+3269280128,3269280767,NL
3269280768,3269281023,GB
3269281024,3269281279,DE
3269281280,3269282047,EU
@@ -81525,7 +93089,8 @@
3269285216,3269285311,EU
3269285312,3269285327,DE
3269285328,3269285343,FR
-3269285344,3269285631,EU
+3269285344,3269285375,GB
+3269285376,3269285631,EU
3269285632,3269285887,DE
3269285888,3269286399,EU
3269286400,3269286463,DE
@@ -81604,7 +93169,9 @@
3269320704,3269321727,GB
3269321728,3269322239,EU
3269322240,3269322495,DE
-3269322496,3269322679,EU
+3269322496,3269322655,EU
+3269322656,3269322671,DE
+3269322672,3269322679,EU
3269322680,3269322683,DE
3269322684,3269322751,EU
3269322752,3269323263,DE
@@ -81837,7 +93404,6 @@
3270653440,3270653695,NL
3270653696,3270653951,GB
3270653952,3270654207,ES
-3270654208,3270654463,EU
3270654464,3270654719,BE
3270654720,3270655231,UA
3270655232,3270655487,IT
@@ -81897,6 +93463,33 @@
3270973952,3270974463,FR
3270974464,3270974975,IT
3270974976,3270975487,NL
+3270975488,3270975743,RU
+3270975744,3270975999,UA
+3270976000,3270976255,FR
+3270976256,3270976511,UA
+3270976512,3270976767,HU
+3270976768,3270977023,UA
+3270977024,3270977279,NL
+3270977280,3270977535,RS
+3270977536,3270977791,RU
+3270977792,3270978047,PL
+3270978048,3270978303,UA
+3270978304,3270979071,FI
+3270979072,3270979327,PL
+3270979328,3270979583,AT
+3270979584,3270979839,LV
+3270979840,3270980095,GB
+3270980096,3270980351,AM
+3270980352,3270980607,RU
+3270980608,3270980863,MD
+3270980864,3270981631,RU
+3270981632,3270981887,IT
+3270982144,3270982399,RU
+3270982400,3270982655,TR
+3270982656,3270982911,UA
+3270982912,3270983167,DK
+3270983168,3270983423,PL
+3270983424,3270983679,NL
3270983680,3270991871,GB
3270991872,3271000063,NL
3271000064,3271008255,RU
@@ -82081,7 +93674,10 @@
3271426304,3271491583,FR
3271491584,3271495679,DK
3271495680,3271495807,SE
-3271495808,3271557119,DK
+3271495808,3271501663,DK
+3271501664,3271501679,DE
+3271501680,3271501695,SE
+3271501696,3271557119,DK
3271557120,3271589887,BE
3271589888,3271688191,NO
3271688192,3271691775,EU
@@ -82090,7 +93686,7 @@
3271692288,3271694847,EU
3271694848,3271695103,GB
3271695104,3271696383,EU
-3271696384,3271698431,DE
+3271696384,3271698431,GB
3271698432,3271704575,EU
3271704576,3271712767,RU
3271712768,3271716863,LV
@@ -82111,6 +93707,7 @@
3271744512,3271745023,AT
3271745024,3271745535,PL
3271745536,3271746047,GB
+3271746048,3271746559,RU
3271746560,3271747071,CH
3271747072,3271747583,KZ
3271747584,3271748095,RU
@@ -82148,7 +93745,6 @@
3271805952,3271806975,UA
3271806976,3271807999,EU
3271808000,3271810047,DE
-3271810048,3271811071,PL
3271811072,3271812095,UA
3271812096,3271813119,ES
3271813120,3271814143,PL
@@ -82161,9 +93757,7 @@
3271821247,3271821247,AT
3271821248,3271847487,DE
3271847488,3271847495,US
-3271847496,3271851879,DE
-3271851880,3271851887,NL
-3271851888,3271884799,DE
+3271847496,3271884799,DE
3271884800,3271901183,UA
3271901184,3271909375,ES
3271909376,3271909887,RO
@@ -82180,7 +93774,6 @@
3271915520,3271916031,NL
3271916032,3271916543,GB
3271916544,3271917055,UA
-3271917056,3271917567,RO
3271917568,3271925759,RU
3271925760,3271926015,DE
3271926016,3271926271,MD
@@ -82223,14 +93816,11 @@
3272040448,3272048639,FR
3272048640,3272056831,NL
3272056832,3272065023,RU
-3272065024,3272065087,NL
-3272065088,3272065151,GB
-3272065152,3272065183,NL
-3272065184,3272065215,GB
+3272065024,3272065215,GB
3272065216,3272065279,NL
3272065280,3272065343,GB
-3272065344,3272065503,NL
-3272065504,3272065535,GB
+3272065344,3272065439,NL
+3272065440,3272065535,GB
3272065536,3272065551,NL
3272065552,3272065559,GB
3272065560,3272065575,NL
@@ -82243,14 +93833,12 @@
3272065824,3272066335,GB
3272066336,3272066431,NL
3272066432,3272066815,GB
-3272066816,3272066879,NL
-3272066880,3272066911,GB
+3272066816,3272066847,NL
+3272066848,3272066911,GB
3272066912,3272066943,NL
3272066944,3272067063,GB
3272067064,3272067071,NL
-3272067072,3272067327,GB
-3272067328,3272067583,NL
-3272067584,3272067615,GB
+3272067072,3272067615,GB
3272067616,3272067647,NL
3272067648,3272067711,GB
3272067712,3272067775,NL
@@ -82260,16 +93848,9 @@
3272067872,3272067887,NL
3272067888,3272067927,GB
3272067928,3272067967,NL
-3272067968,3272068095,GB
-3272068096,3272068351,NL
-3272068352,3272068607,GB
-3272068608,3272068863,NL
-3272068864,3272069119,GB
-3272069120,3272069247,NL
-3272069248,3272069343,GB
+3272067968,3272069343,GB
3272069344,3272069375,IT
-3272069376,3272069439,NL
-3272069440,3272069503,GB
+3272069376,3272069503,GB
3272069504,3272069567,NL
3272069568,3272069599,GB
3272069600,3272069603,NL
@@ -82289,28 +93870,24 @@
3272070624,3272070639,NL
3272070640,3272070647,GB
3272070648,3272070655,NL
-3272070656,3272070911,GB
-3272070912,3272071167,NL
-3272071168,3272071247,GB
+3272070656,3272071247,GB
3272071248,3272071283,NL
3272071284,3272071287,GB
3272071288,3272071295,NL
-3272071296,3272071327,GB
-3272071328,3272071551,NL
-3272071552,3272071615,GB
+3272071296,3272071359,GB
+3272071360,3272071423,NL
+3272071424,3272071615,GB
3272071616,3272071647,NL
-3272071648,3272071935,GB
-3272071936,3272072063,NL
-3272072064,3272072191,GB
-3272072192,3272073215,NL
-3272073216,3272081407,GB
+3272071648,3272072319,GB
+3272072320,3272072959,NL
+3272072960,3272081407,GB
3272081408,3272081919,PT
3272081920,3272082687,CV
3272082688,3272083455,PT
3272083456,3272083711,ST
3272083712,3272084735,PT
3272084736,3272084991,CV
-3272084992,3272085503,GW
+3272084992,3272085503,PT
3272085504,3272086015,AO
3272086016,3272086527,ST
3272086528,3272086655,AO
@@ -82492,7 +94069,9 @@
3272216912,3272216927,DE
3272216928,3272216959,EU
3272216960,3272217007,GB
-3272217008,3272217215,EU
+3272217008,3272217087,EU
+3272217088,3272217151,GB
+3272217152,3272217215,EU
3272217216,3272217279,BE
3272217280,3272217303,DE
3272217304,3272217311,BE
@@ -82618,29 +94197,33 @@
3272358912,3272359935,NL
3272359936,3272368127,RU
3272368128,3272376319,KZ
-3272376320,3272384511,SK
+3272376320,3272376447,SK
+3272376448,3272376479,SR
+3272376480,3272376495,SK
+3272376496,3272376519,SR
+3272376520,3272376735,SK
+3272376736,3272376751,SR
+3272376752,3272384511,SK
3272384512,3272392703,LT
3272392704,3272400895,AT
3272400896,3272400903,EU
3272400904,3272400927,GB
3272400928,3272401023,EU
3272401024,3272401087,GB
-3272401088,3272401183,EU
-3272401184,3272401199,GB
-3272401200,3272401407,EU
+3272401088,3272401279,EU
+3272401280,3272401407,NL
3272401408,3272401919,ES
3272401920,3272401951,GB
-3272401952,3272401983,EU
-3272401984,3272402015,DE
-3272402016,3272402031,EU
+3272401952,3272401967,EU
+3272401968,3272401983,GB
+3272401984,3272402031,DE
3272402032,3272402039,GB
3272402040,3272402047,US
3272402048,3272402079,EU
3272402080,3272402111,SE
3272402112,3272402175,EU
3272402176,3272402191,GB
-3272402192,3272402239,EU
-3272402240,3272402303,GB
+3272402192,3272402303,EU
3272402304,3272402431,FR
3272402432,3272402447,EU
3272402448,3272402455,FR
@@ -82648,14 +94231,13 @@
3272402560,3272402623,GB
3272402624,3272402687,EU
3272402688,3272402815,SE
-3272402816,3272402879,GB
-3272402880,3272403007,EU
+3272402816,3272403007,EU
3272403008,3272403023,FR
3272403024,3272403039,EU
3272403040,3272403055,DE
3272403056,3272403071,NL
3272403072,3272403199,FR
-3272403200,3272403455,EU
+3272403200,3272403455,SE
3272403456,3272404991,FR
3272404992,3272406015,DE
3272406016,3272407039,NL
@@ -82862,6 +94444,37 @@
3272899072,3272899583,GB
3272899584,3272900095,UA
3272900096,3272900607,LV
+3272900608,3272900863,RU
+3272900864,3272901119,AT
+3272901120,3272901375,UA
+3272901376,3272901631,PL
+3272901632,3272901887,AT
+3272901888,3272902143,DE
+3272902144,3272902399,PL
+3272902400,3272902655,RU
+3272902656,3272902911,IR
+3272902912,3272903167,RU
+3272903168,3272903423,PL
+3272903424,3272903679,AT
+3272903680,3272903935,RU
+3272903936,3272904191,GB
+3272904192,3272904447,SI
+3272904448,3272904703,BE
+3272904704,3272904959,NL
+3272904960,3272905215,RO
+3272905216,3272905727,CH
+3272905728,3272905983,UA
+3272905984,3272906239,FI
+3272906240,3272906495,PL
+3272906496,3272906751,EE
+3272906752,3272907007,HU
+3272907008,3272907263,HR
+3272907264,3272907519,UA
+3272907520,3272907775,GB
+3272907776,3272908031,RO
+3272908032,3272908287,CH
+3272908288,3272908543,AT
+3272908544,3272908799,DE
3272908800,3272910847,SK
3272910848,3272911359,NL
3272911360,3272911871,SK
@@ -82901,9 +94514,7 @@
3272936960,3272937087,DE
3272937088,3272937471,GB
3272937472,3272937535,DE
-3272937536,3272937599,GB
-3272937600,3272937631,DE
-3272937632,3272937791,GB
+3272937536,3272937791,GB
3272937792,3272937903,DE
3272937904,3272937919,GB
3272937920,3272937983,DE
@@ -82988,7 +94599,9 @@
3272966976,3272967103,GB
3272967104,3272967167,DE
3272967168,3272967423,GB
-3272967424,3272968703,DE
+3272967424,3272968191,DE
+3272968192,3272968447,GB
+3272968448,3272968703,DE
3272968704,3272968735,GB
3272968736,3272968879,DE
3272968880,3272968927,GB
@@ -83088,9 +94701,11 @@
3273023488,3273024511,PL
3273024512,3273025535,NL
3273025536,3273026559,RU
-3273027584,3273028607,UA
+3273026560,3273028607,UA
3273028608,3273029631,PL
-3273029632,3273030655,DK
+3273029632,3273029887,CH
+3273029888,3273030143,GB
+3273030144,3273030655,RU
3273030656,3273031679,PL
3273031680,3273032191,GB
3273032192,3273033215,UA
@@ -83122,8 +94737,8 @@
3273052040,3273052047,NL
3273052048,3273052063,GR
3273052064,3273052087,IT
-3273052088,3273052111,GR
-3273052112,3273052415,IT
+3273052088,3273052095,DE
+3273052096,3273052415,IT
3273052416,3273052671,GB
3273052672,3273052927,FR
3273052928,3273053183,DE
@@ -83142,9 +94757,7 @@
3273056128,3273056255,HK
3273056256,3273064447,MD
3273064448,3273129983,PT
-3273129984,3273131999,DK
-3273132000,3273132015,NO
-3273132016,3273138175,DK
+3273129984,3273138175,DK
3273138176,3273146367,BG
3273146368,3273148415,RU
3273148416,3273150463,LU
@@ -83207,8 +94820,8 @@
3273326984,3273326987,DE
3273326988,3273326991,EU
3273326992,3273327047,DE
-3273327048,3273327279,EU
-3273327280,3273327287,DE
+3273327048,3273327263,EU
+3273327264,3273327287,DE
3273327288,3273327359,EU
3273327360,3273327423,IE
3273327424,3273327511,GB
@@ -83218,8 +94831,8 @@
3273328512,3273328639,DE
3273328640,3273329199,GB
3273329200,3273329215,DE
-3273329216,3273329311,GB
-3273329312,3273329407,EU
+3273329216,3273329327,GB
+3273329328,3273329407,EU
3273329408,3273329423,GB
3273329424,3273329439,DE
3273329440,3273330175,GB
@@ -83360,7 +94973,8 @@
3273372672,3273372927,GB
3273372928,3273373183,NL
3273373184,3273373455,GB
-3273373456,3273373695,DE
+3273373456,3273373567,DE
+3273373568,3273373695,GB
3273373696,3273375231,EU
3273375232,3273375551,DE
3273375552,3273375743,EU
@@ -83420,9 +95034,7 @@
3273390208,3273390335,EU
3273390336,3273390463,DE
3273390464,3273391103,EU
-3273391104,3273391327,DE
-3273391328,3273391343,EU
-3273391344,3273391359,DE
+3273391104,3273391359,DE
3273391360,3273391871,EU
3273391872,3273392127,DE
3273392128,3273392639,UA
@@ -83455,17 +95067,15 @@
3273438208,3273438719,IL
3273438720,3273439231,PL
3273439232,3273439743,RO
+3273439744,3273440255,DE
3273440256,3273440767,RO
3273440768,3273441279,AT
-3273441280,3273441463,FR
-3273441464,3273441535,GB
-3273441536,3273441607,FR
-3273441608,3273441615,GB
-3273441616,3273441631,FR
-3273441632,3273441647,GB
+3273441280,3273441599,GB
+3273441600,3273441607,FR
+3273441608,3273441647,GB
3273441648,3273441759,FR
-3273441760,3273441791,GB
-3273441792,3273442127,FR
+3273441760,3273442111,GB
+3273442112,3273442127,FR
3273442128,3273442143,GB
3273442144,3273442151,FR
3273442152,3273442303,GB
@@ -83473,14 +95083,12 @@
3273442332,3273442335,GB
3273442336,3273442367,FR
3273442368,3273442431,GB
-3273442432,3273442815,FR
-3273442816,3273443071,GB
+3273442432,3273442559,FR
+3273442560,3273443071,GB
3273443072,3273443080,FR
3273443081,3273443327,GB
3273443328,3273443839,FR
-3273443840,3273444095,GB
-3273444096,3273444351,FR
-3273444352,3273449471,GB
+3273443840,3273449471,GB
3273449472,3273457663,CH
3273457664,3273523199,HR
3273523200,3273588735,DE
@@ -83736,7 +95344,6 @@
3274414336,3274414591,CH
3274414592,3274414847,NL
3274414848,3274415103,IE
-3274415104,3274415359,GR
3274415360,3274415615,GB
3274415616,3274415871,NL
3274415872,3274416127,SI
@@ -83986,7 +95593,7 @@
3274700800,3274701055,UA
3274701056,3274701311,DE
3274701312,3274701567,TJ
-3274701568,3274702079,IT
+3274701568,3274701823,IT
3274702080,3274702335,UA
3274702336,3274702591,SE
3274702592,3274702847,KZ
@@ -84199,7 +95806,7 @@
3274964928,3274964991,GB
3274964992,3275030527,DE
3275030528,3275096063,ES
-3275096064,3275105279,RU
+3275096064,3275104767,RU
3275105280,3275105791,GB
3275105792,3275106303,NL
3275106304,3275106815,RU
@@ -84209,7 +95816,6 @@
3275108352,3275108863,FR
3275108864,3275109375,PL
3275109376,3275109887,UA
-3275109888,3275110399,DE
3275110400,3275110911,NL
3275110912,3275111423,GB
3275111424,3275111935,IT
@@ -84230,7 +95836,8 @@
3275141632,3275142143,GE
3275142144,3275142655,KG
3275142656,3275143167,SE
-3275143168,3275145215,PL
+3275143168,3275144703,PL
+3275144704,3275145215,HR
3275145216,3275153407,RU
3275153408,3275161599,GB
3275161600,3275227135,ES
@@ -84240,7 +95847,9 @@
3275371776,3275372031,TJ
3275372032,3275374591,RU
3275374592,3275382783,GB
-3275382784,3275390975,SE
+3275382784,3275382887,SE
+3275382888,3275382891,NO
+3275382892,3275390975,SE
3275390976,3275399167,GB
3275399168,3275407359,AT
3275407360,3275415551,GB
@@ -84249,40 +95858,42 @@
3275423752,3275423775,EU
3275423776,3275423807,GB
3275423808,3275423871,EU
-3275423872,3275424255,GB
-3275424256,3275425791,EU
-3275425792,3275426687,GB
-3275426688,3275426815,EU
-3275426816,3275427271,GB
+3275423872,3275424871,GB
+3275424872,3275424879,EU
+3275424880,3275424975,GB
+3275424976,3275425791,EU
+3275425792,3275427271,GB
3275427272,3275427279,EU
-3275427280,3275427583,GB
-3275427584,3275427839,EU
-3275427840,3275428375,GB
-3275428376,3275428383,EU
-3275428384,3275428399,GB
-3275428400,3275429887,EU
+3275427280,3275427615,GB
+3275427616,3275427647,EU
+3275427648,3275427711,GB
+3275427712,3275427839,EU
+3275427840,3275428399,GB
+3275428400,3275428415,EU
+3275428416,3275428447,GB
+3275428448,3275429887,EU
3275429888,3275430143,GB
3275430144,3275430271,EU
3275430272,3275430399,GB
3275430400,3275430591,EU
3275430592,3275430623,GB
3275430624,3275431935,EU
-3275431936,3275432703,GB
-3275432704,3275433983,EU
+3275431936,3275432831,GB
+3275432832,3275433983,EU
3275433984,3275437567,GB
3275437568,3275438079,EU
-3275438080,3275438607,GB
-3275438608,3275440127,EU
+3275438080,3275438639,GB
+3275438640,3275438719,EU
+3275438720,3275439103,GB
+3275439104,3275440127,EU
3275440128,3275440639,GB
3275440640,3275442175,EU
3275442176,3275442719,GB
3275442720,3275444223,EU
3275444224,3275444735,GB
3275444736,3275446271,EU
-3275446272,3275446991,GB
-3275446992,3275447007,EU
-3275447008,3275447039,GB
-3275447040,3275448319,EU
+3275446272,3275447103,GB
+3275447104,3275448319,EU
3275448320,3275449519,GB
3275449520,3275449527,FR
3275449528,3275450879,GB
@@ -84291,21 +95902,17 @@
3275451264,3275452415,EU
3275452416,3275454127,GB
3275454128,3275454143,EU
-3275454144,3275454263,GB
-3275454264,3275454271,EU
-3275454272,3275454367,GB
-3275454368,3275454463,EU
-3275454464,3275456415,GB
-3275456416,3275456511,EU
-3275456512,3275457023,GB
+3275454144,3275457023,GB
3275457024,3275457791,FK
3275457792,3275458559,GB
3275458560,3275460095,IE
3275460096,3275460607,EU
3275460608,3275460863,HK
3275460864,3275463523,GB
-3275463524,3275463679,EU
-3275463680,3275464031,GB
+3275463524,3275463527,EU
+3275463528,3275463639,GB
+3275463640,3275463647,EU
+3275463648,3275464031,GB
3275464032,3275464047,IE
3275464048,3275468655,GB
3275468656,3275468671,IE
@@ -84315,10 +95922,8 @@
3275468768,3275468799,IE
3275468800,3275469071,GB
3275469072,3275469087,IE
-3275469088,3275469695,GB
-3275469696,3275469951,EU
-3275469952,3275469983,GB
-3275469984,3275489279,EU
+3275469088,3275472895,GB
+3275472896,3275489279,EU
3275489280,3275497471,GB
3275497472,3275505663,DE
3275505664,3275506175,PL
@@ -84334,14 +95939,16 @@
3275509984,3275510015,PT
3275510016,3275510079,SE
3275510080,3275510143,ES
-3275510208,3275510271,SE
-3275510272,3275510399,IE
+3275510144,3275510207,FI
+3275510336,3275510399,IE
3275510400,3275510463,NL
3275510464,3275510527,GB
3275510528,3275510559,PL
3275510560,3275510591,DE
3275510624,3275510655,EE
3275510656,3275510687,FR
+3275510720,3275510751,GB
+3275510752,3275510783,NL
3275510784,3275510911,RU
3275510912,3275511167,GB
3275511168,3275511295,LV
@@ -84392,7 +95999,6 @@
3275542528,3275543551,DE
3275543552,3275544575,NL
3275544576,3275545599,PL
-3275545600,3275546623,EU
3275546624,3275547647,UA
3275547648,3275548671,RU
3275548672,3275549695,IL
@@ -84580,6 +96186,7 @@
3275628032,3275628543,IL
3275628544,3275629567,RU
3275629568,3275630079,UA
+3275630080,3275630591,RU
3275630592,3275631103,PL
3275631104,3275631615,FR
3275631616,3275632127,DE
@@ -84625,7 +96232,7 @@
3275789312,3275789823,UA
3275789824,3275790335,PL
3275790336,3275790847,MD
-3275790848,3275791359,DK
+3275790848,3275791359,UA
3275791360,3275791871,RU
3275791872,3275792383,PL
3275792384,3275792895,BG
@@ -84647,9 +96254,7 @@
3275808768,3275816959,UA
3275816960,3275818207,CH
3275818208,3275818215,DE
-3275818216,3275881335,CH
-3275881336,3275881343,DE
-3275881344,3275882495,CH
+3275818216,3275882495,CH
3275882496,3275884543,DE
3275884544,3275886591,IT
3275886592,3275888639,PL
@@ -84669,7 +96274,6 @@
3275902720,3275902975,UA
3275902976,3275903231,FR
3275903232,3275903487,GB
-3275903488,3275903999,DE
3275904000,3275904255,RU
3275904256,3275904511,CH
3275904512,3275904767,PL
@@ -84694,7 +96298,6 @@
3275909888,3275910143,SI
3275910144,3275910399,RU
3275910400,3275910655,DK
-3275910656,3275910911,CH
3275910912,3275911167,DE
3275911168,3275911423,FR
3275911424,3275911679,RO
@@ -84711,6 +96314,7 @@
3275914496,3275914751,BG
3275914752,3275915007,RU
3275915008,3275915263,PT
+3275915264,3275915775,SA
3275915776,3275916287,SE
3275916288,3275916799,US
3275916800,3275917311,NL
@@ -84763,9 +96367,7 @@
3275930296,3275931647,ME
3275931648,3275939839,UA
3275939840,3275948031,GB
-3275948032,3275965267,SE
-3275965268,3275965271,FI
-3275965272,3276013567,SE
+3275948032,3276013567,SE
3276013568,3276014087,FR
3276014088,3276014095,GB
3276014096,3276014151,FR
@@ -84774,11 +96376,17 @@
3276014192,3276014207,GB
3276014208,3276014255,FR
3276014256,3276014263,GB
-3276014264,3276014471,FR
+3276014264,3276014335,FR
+3276014336,3276014343,GB
+3276014344,3276014471,FR
3276014472,3276014495,GB
-3276014496,3276014887,FR
+3276014496,3276014775,FR
+3276014776,3276014783,GB
+3276014784,3276014887,FR
3276014888,3276014895,IE
-3276014896,3276015103,FR
+3276014896,3276014943,FR
+3276014944,3276014951,GB
+3276014952,3276015103,FR
3276015104,3276015119,GB
3276015120,3276015199,FR
3276015200,3276015231,GB
@@ -84786,11 +96394,15 @@
3276015248,3276015263,GB
3276015264,3276015295,FR
3276015296,3276015327,GB
-3276015328,3276015415,FR
+3276015328,3276015383,FR
+3276015384,3276015391,GB
+3276015392,3276015415,FR
3276015416,3276015423,GB
3276015424,3276015559,FR
-3276015560,3276015583,GB
-3276015584,3276015879,FR
+3276015560,3276015599,GB
+3276015600,3276015855,FR
+3276015856,3276015863,GB
+3276015864,3276015879,FR
3276015880,3276015887,GB
3276015888,3276016391,FR
3276016392,3276016399,GB
@@ -84832,7 +96444,9 @@
3276018096,3276018127,GB
3276018128,3276018143,FR
3276018144,3276018159,GB
-3276018160,3276018375,FR
+3276018160,3276018239,FR
+3276018240,3276018271,GB
+3276018272,3276018375,FR
3276018376,3276018383,GB
3276018384,3276018431,FR
3276018432,3276018447,GB
@@ -84850,37 +96464,37 @@
3276019136,3276019151,GB
3276019152,3276019463,FR
3276019464,3276019471,GB
-3276019472,3276019503,FR
+3276019472,3276019479,FR
+3276019480,3276019487,GB
+3276019488,3276019503,FR
3276019504,3276019511,GB
3276019512,3276019535,FR
3276019536,3276019543,GB
3276019544,3276019559,FR
3276019560,3276019599,GB
3276019600,3276019639,FR
-3276019640,3276019647,GB
-3276019648,3276019679,FR
+3276019640,3276019663,GB
+3276019664,3276019679,FR
3276019680,3276019687,GB
3276019688,3276019695,FR
3276019696,3276019703,GB
-3276019704,3276019823,FR
+3276019704,3276019711,FR
+3276019712,3276019743,GB
+3276019744,3276019823,FR
3276019824,3276019831,GB
3276019832,3276019839,FR
3276019840,3276019855,GB
3276019856,3276019863,FR
-3276019864,3276019887,GB
-3276019888,3276019919,FR
+3276019864,3276019871,GB
+3276019872,3276019919,FR
3276019920,3276019927,GB
-3276019928,3276020367,FR
-3276020368,3276020383,GB
-3276020384,3276020399,FR
-3276020400,3276020423,GB
-3276020424,3276020431,FR
-3276020432,3276020439,GB
-3276020440,3276020495,FR
-3276020496,3276020511,GB
-3276020512,3276020559,FR
-3276020560,3276020567,GB
-3276020568,3276020623,FR
+3276019928,3276019959,FR
+3276019960,3276019967,GB
+3276019968,3276020407,FR
+3276020408,3276020415,GB
+3276020416,3276020503,FR
+3276020504,3276020511,GB
+3276020512,3276020623,FR
3276020624,3276020631,GB
3276020632,3276020679,FR
3276020680,3276020687,GB
@@ -84892,25 +96506,19 @@
3276020944,3276020991,GB
3276020992,3276021591,FR
3276021592,3276021599,GB
-3276021600,3276021863,FR
-3276021864,3276021871,GB
-3276021872,3276022039,FR
-3276022040,3276022047,GB
-3276022048,3276022087,FR
-3276022088,3276022095,GB
-3276022096,3276022127,FR
+3276021600,3276022127,FR
3276022128,3276022143,GB
3276022144,3276022215,FR
3276022216,3276022223,GB
3276022224,3276022255,FR
3276022256,3276022271,GB
-3276022272,3276022343,FR
-3276022344,3276022351,GB
-3276022352,3276022455,FR
+3276022272,3276022455,FR
3276022456,3276022463,GB
3276022464,3276022479,FR
3276022480,3276022495,GB
-3276022496,3276022519,FR
+3276022496,3276022503,FR
+3276022504,3276022511,GB
+3276022512,3276022519,FR
3276022520,3276022527,GB
3276022528,3276022567,FR
3276022568,3276022639,GB
@@ -84928,9 +96536,7 @@
3276023072,3276023079,GB
3276023080,3276023103,FR
3276023104,3276023279,GB
-3276023280,3276023687,FR
-3276023688,3276023695,GB
-3276023696,3276023727,FR
+3276023280,3276023727,FR
3276023728,3276023743,GB
3276023744,3276023759,FR
3276023760,3276023767,GB
@@ -84943,8 +96549,8 @@
3276023952,3276023959,FR
3276023960,3276023967,GB
3276023968,3276024719,FR
-3276024720,3276024831,GB
-3276024832,3276025111,FR
+3276024720,3276024767,GB
+3276024768,3276025111,FR
3276025112,3276025135,GB
3276025136,3276025151,FR
3276025152,3276025159,GB
@@ -84969,9 +96575,7 @@
3276026224,3276026319,FR
3276026320,3276026351,GB
3276026352,3276026423,FR
-3276026424,3276026431,GB
-3276026432,3276026439,FR
-3276026440,3276026447,GB
+3276026424,3276026447,GB
3276026448,3276026527,FR
3276026528,3276026535,GB
3276026536,3276026543,FR
@@ -85081,16 +96685,20 @@
3276031744,3276032007,FR
3276032008,3276032015,GB
3276032016,3276032023,FR
-3276032024,3276032031,GB
-3276032032,3276032103,FR
+3276032024,3276032047,GB
+3276032048,3276032055,FR
+3276032056,3276032063,GB
+3276032064,3276032103,FR
3276032104,3276032111,GB
-3276032112,3276032271,FR
-3276032272,3276032303,GB
+3276032112,3276032223,FR
+3276032224,3276032255,GB
+3276032256,3276032263,FR
+3276032264,3276032303,GB
3276032304,3276032319,FR
3276032320,3276032343,GB
3276032344,3276032367,FR
-3276032368,3276032383,GB
-3276032384,3276032431,FR
+3276032368,3276032415,GB
+3276032416,3276032431,FR
3276032432,3276032479,GB
3276032480,3276032543,FR
3276032544,3276032559,GB
@@ -85107,8 +96715,8 @@
3276033232,3276033247,FR
3276033248,3276033279,GB
3276033280,3276033535,FR
-3276033536,3276033647,GB
-3276033648,3276033663,FR
+3276033536,3276033655,GB
+3276033656,3276033663,FR
3276033664,3276033695,GB
3276033696,3276033791,FR
3276033792,3276033823,GB
@@ -85120,39 +96728,31 @@
3276033880,3276033887,GB
3276033888,3276033927,FR
3276033928,3276033951,GB
-3276033952,3276036095,FR
-3276036096,3276036103,GB
-3276036104,3276036111,FR
-3276036112,3276036119,GB
-3276036120,3276036191,FR
-3276036192,3276036207,GB
-3276036208,3276036223,FR
-3276036224,3276036255,GB
-3276036256,3276036271,FR
-3276036272,3276036287,GB
-3276036288,3276036303,FR
-3276036304,3276036335,GB
-3276036336,3276036343,FR
-3276036344,3276036351,GB
-3276036352,3276036383,FR
+3276033952,3276036271,FR
+3276036272,3276036279,DE
+3276036280,3276036383,FR
3276036384,3276036415,GB
3276036416,3276036591,FR
3276036592,3276036607,GB
-3276036608,3276037199,FR
+3276036608,3276037127,FR
+3276037128,3276037135,GB
+3276037136,3276037199,FR
3276037200,3276037215,GB
3276037216,3276037359,FR
3276037360,3276037375,GB
-3276037376,3276037695,FR
-3276037696,3276037743,GB
+3276037376,3276037703,FR
+3276037704,3276037743,GB
3276037744,3276037887,FR
3276037888,3276037903,GB
3276037904,3276037959,FR
3276037960,3276037983,GB
3276037984,3276038047,FR
3276038048,3276038111,GB
-3276038112,3276038143,FR
-3276038144,3276038399,GB
-3276038400,3276038703,FR
+3276038112,3276038159,FR
+3276038160,3276038399,GB
+3276038400,3276038663,FR
+3276038664,3276038671,GB
+3276038672,3276038703,FR
3276038704,3276038719,GB
3276038720,3276038735,FR
3276038736,3276038767,GB
@@ -85160,21 +96760,19 @@
3276038800,3276038815,GB
3276038816,3276038847,FR
3276038848,3276038911,GB
-3276038912,3276039199,FR
-3276039200,3276039247,GB
+3276038912,3276038919,FR
+3276038920,3276039167,GB
+3276039168,3276039215,FR
+3276039216,3276039247,GB
3276039248,3276039279,FR
3276039280,3276039295,GB
3276039296,3276039327,FR
3276039328,3276039343,GB
3276039344,3276039391,FR
3276039392,3276039423,GB
-3276039424,3276039551,FR
-3276039552,3276039567,GB
-3276039568,3276039647,FR
+3276039424,3276039647,FR
3276039648,3276039663,GB
-3276039664,3276039943,FR
-3276039944,3276039951,GB
-3276039952,3276039967,FR
+3276039664,3276039967,FR
3276039968,3276040031,GB
3276040032,3276040063,FR
3276040064,3276040095,GB
@@ -85188,7 +96786,9 @@
3276040320,3276040327,GB
3276040328,3276040335,FR
3276040336,3276040367,GB
-3276040368,3276040439,FR
+3276040368,3276040391,FR
+3276040392,3276040399,GB
+3276040400,3276040439,FR
3276040440,3276040495,GB
3276040496,3276040543,FR
3276040544,3276040575,GB
@@ -85208,8 +96808,8 @@
3276041280,3276041311,GB
3276041312,3276041391,FR
3276041392,3276041407,GB
-3276041408,3276041487,FR
-3276041488,3276041503,GB
+3276041408,3276041495,FR
+3276041496,3276041503,GB
3276041504,3276041519,FR
3276041520,3276041535,GB
3276041536,3276041551,FR
@@ -85222,22 +96822,18 @@
3276041920,3276041951,GB
3276041952,3276041967,FR
3276041968,3276041983,GB
-3276041984,3276041999,FR
-3276042000,3276042007,GB
-3276042008,3276042015,FR
-3276042016,3276042047,GB
-3276042048,3276042111,FR
-3276042112,3276042143,GB
+3276041984,3276042047,FR
+3276042048,3276042143,GB
3276042144,3276042175,FR
3276042176,3276042191,GB
3276042192,3276042207,FR
3276042208,3276042239,GB
-3276042240,3276042767,FR
-3276042768,3276042815,GB
+3276042240,3276042775,FR
+3276042776,3276042815,GB
3276042816,3276042831,FR
3276042832,3276042847,GB
-3276042848,3276044303,FR
-3276044304,3276044319,GB
+3276042848,3276044311,FR
+3276044312,3276044319,GB
3276044320,3276044351,FR
3276044352,3276044359,GB
3276044360,3276044367,FR
@@ -85268,10 +96864,8 @@
3276045024,3276045039,GB
3276045040,3276045063,FR
3276045064,3276045071,GB
-3276045072,3276045119,FR
-3276045120,3276045127,GB
-3276045128,3276045135,FR
-3276045136,3276045151,GB
+3276045072,3276045111,FR
+3276045112,3276045151,GB
3276045152,3276045191,FR
3276045192,3276045199,GB
3276045200,3276045223,FR
@@ -85290,9 +96884,9 @@
3276045480,3276045487,GB
3276045488,3276045543,FR
3276045544,3276045551,GB
-3276045552,3276045567,FR
-3276045568,3276045599,GB
-3276045600,3276045631,FR
+3276045552,3276045583,FR
+3276045584,3276045607,GB
+3276045608,3276045631,FR
3276045632,3276045647,GB
3276045648,3276045767,FR
3276045768,3276045783,GB
@@ -85325,10 +96919,7 @@
3276073472,3276073983,SK
3276073984,3276074495,DE
3276074496,3276075007,GB
-3276075008,3276075519,RU
-3276075520,3276076031,DE
-3276076032,3276076543,GB
-3276076544,3276077055,DE
+3276075008,3276077055,DE
3276077056,3276077567,UA
3276077568,3276078079,FR
3276078080,3276078591,RU
@@ -85372,9 +96963,9 @@
3276133376,3276134399,GB
3276134400,3276135423,RU
3276135424,3276136447,UA
+3276136448,3276137471,NL
3276137472,3276138495,PL
3276138496,3276139519,NL
-3276139520,3276140543,IL
3276140544,3276141567,DE
3276141568,3276143615,UA
3276143616,3276144639,GB
@@ -87467,7 +99058,8 @@
3276425472,3276425727,DE
3276425728,3276425983,RU
3276425984,3276426239,IT
-3276426240,3276426751,DK
+3276426240,3276426495,CZ
+3276426496,3276426751,DK
3276426752,3276427007,RO
3276427008,3276427263,PL
3276427264,3276427519,FR
@@ -87511,13 +99103,11 @@
3276474368,3276474623,EU
3276474624,3276474879,GB
3276474880,3276475015,EU
-3276475016,3276475063,IT
-3276475064,3276475071,EU
-3276475072,3276475135,IT
-3276475136,3276475903,EU
-3276475904,3276475951,IT
-3276475952,3276475983,EU
-3276475984,3276476039,IT
+3276475016,3276475039,IT
+3276475040,3276475055,EU
+3276475056,3276475071,IT
+3276475072,3276475903,EU
+3276475904,3276476039,IT
3276476040,3276476047,EU
3276476048,3276476111,IT
3276476112,3276476119,GB
@@ -87535,23 +99125,21 @@
3276479168,3276479199,EU
3276479200,3276479215,FR
3276479216,3276479223,EU
-3276479224,3276479343,FR
-3276479344,3276479351,EU
-3276479352,3276479615,FR
+3276479224,3276479279,FR
+3276479280,3276479343,EU
+3276479344,3276479351,GB
+3276479352,3276479359,EU
+3276479360,3276479615,FR
3276479616,3276479647,EU
3276479648,3276479743,FR
-3276479744,3276480015,EU
-3276480016,3276480095,FR
-3276480096,3276480111,EU
-3276480112,3276480159,FR
+3276479744,3276479999,EU
+3276480000,3276480143,FR
+3276480144,3276480151,EU
+3276480152,3276480159,FR
3276480160,3276480191,EU
-3276480192,3276480271,FR
-3276480272,3276480287,EU
-3276480288,3276480295,FR
-3276480296,3276480303,EU
-3276480304,3276480319,FR
-3276480320,3276480351,EU
-3276480352,3276480375,FR
+3276480192,3276480319,FR
+3276480320,3276480335,EU
+3276480336,3276480375,FR
3276480376,3276480399,EU
3276480400,3276480439,FR
3276480440,3276480455,EU
@@ -87587,25 +99175,33 @@
3276491392,3276491775,CZ
3276491776,3276491847,GB
3276491848,3276491855,EU
-3276491856,3276492055,GB
-3276492056,3276492063,EU
-3276492064,3276492127,GB
+3276491856,3276492047,GB
+3276492048,3276492095,EU
+3276492096,3276492127,GB
3276492128,3276492143,EU
3276492144,3276492151,GB
3276492152,3276492287,EU
-3276492288,3276492487,GB
-3276492488,3276492495,EU
-3276492496,3276493215,GB
+3276492288,3276492831,GB
+3276492832,3276492839,EU
+3276492840,3276493135,GB
+3276493136,3276493151,EU
+3276493152,3276493215,GB
3276493216,3276493247,EU
-3276493248,3276494383,GB
-3276494384,3276494415,EU
-3276494416,3276494591,GB
-3276494592,3276494847,EU
-3276494848,3276495503,GB
+3276493248,3276494367,GB
+3276494368,3276494415,EU
+3276494416,3276494471,GB
+3276494472,3276494479,EU
+3276494480,3276495439,GB
+3276495440,3276495455,EU
+3276495456,3276495503,GB
3276495504,3276495519,EU
-3276495520,3276495679,GB
-3276495680,3276495775,EU
-3276495776,3276496639,GB
+3276495520,3276495543,GB
+3276495544,3276495551,EU
+3276495552,3276495763,GB
+3276495764,3276495767,EU
+3276495768,3276495831,GB
+3276495832,3276495839,EU
+3276495840,3276496639,GB
3276496640,3276496895,EU
3276496896,3276497151,DE
3276497152,3276497215,EU
@@ -87622,9 +99218,7 @@
3276497664,3276497919,DE
3276497920,3276498047,GB
3276498048,3276498303,EU
-3276498304,3276498311,GB
-3276498312,3276498319,EU
-3276498320,3276498431,GB
+3276498304,3276498431,GB
3276498432,3276499199,DE
3276499200,3276499455,EU
3276499456,3276499503,DE
@@ -87632,17 +99226,15 @@
3276499520,3276499615,DE
3276499616,3276499679,EU
3276499680,3276499759,DE
-3276499760,3276499775,EU
-3276499776,3276499791,DE
-3276499792,3276499799,EU
-3276499800,3276499823,DE
+3276499760,3276499791,EU
+3276499792,3276499823,DE
3276499824,3276499935,EU
3276499936,3276499999,DE
3276500000,3276500031,CH
3276500032,3276500095,DE
3276500096,3276500127,EU
-3276500128,3276500159,DE
-3276500160,3276500479,EU
+3276500128,3276500223,DE
+3276500224,3276500479,EU
3276500480,3276500735,DE
3276500736,3276500991,EU
3276500992,3276501023,DE
@@ -87685,8 +99277,8 @@
3276508928,3276509183,EU
3276509184,3276510207,IT
3276510208,3276510719,EU
-3276510720,3276510735,IT
-3276510736,3276510783,EU
+3276510720,3276510751,IT
+3276510752,3276510783,EU
3276510784,3276510815,IT
3276510816,3276510847,EU
3276510848,3276510911,GB
@@ -87726,9 +99318,7 @@
3276517904,3276517951,NL
3276517952,3276518015,EU
3276518016,3276518023,NL
-3276518024,3276518055,EU
-3276518056,3276518063,NL
-3276518064,3276518095,EU
+3276518024,3276518095,EU
3276518096,3276518111,NL
3276518112,3276518127,EU
3276518128,3276518175,NL
@@ -87749,8 +99339,8 @@
3276520192,3276520223,BE
3276520224,3276520255,GB
3276520256,3276520415,BE
-3276520416,3276520431,EU
-3276520432,3276520447,BE
+3276520416,3276520423,EU
+3276520424,3276520447,BE
3276520448,3276520463,EU
3276520464,3276520591,SE
3276520592,3276520607,EU
@@ -87763,19 +99353,21 @@
3276520832,3276520927,SE
3276520928,3276520943,EU
3276520944,3276521215,SE
-3276521216,3276521983,EU
+3276521216,3276521471,EU
+3276521472,3276521487,RO
+3276521488,3276521983,EU
3276521984,3276523519,NL
3276523520,3276523791,EU
3276523792,3276523911,NO
-3276523912,3276523927,EU
-3276523928,3276523951,NO
+3276523912,3276523919,EU
+3276523920,3276523951,NO
3276523952,3276523967,EU
3276523968,3276524031,NO
3276524032,3276524063,EU
3276524064,3276524095,TR
3276524096,3276524191,EU
-3276524192,3276524279,TR
-3276524280,3276524543,EU
+3276524192,3276524287,TR
+3276524288,3276524543,EU
3276524544,3276524799,GB
3276524800,3276524855,PT
3276524856,3276525039,EU
@@ -87786,7 +99378,9 @@
3276525528,3276525535,PL
3276525536,3276525567,HR
3276525568,3276526079,EU
-3276526080,3276526111,CH
+3276526080,3276526087,CH
+3276526088,3276526095,EU
+3276526096,3276526111,CH
3276526112,3276526143,EU
3276526144,3276526159,CH
3276526160,3276526335,EU
@@ -87813,12 +99407,16 @@
3276528368,3276528399,BE
3276528400,3276528447,EU
3276528448,3276528503,BE
-3276528504,3276528559,EU
+3276528504,3276528511,EU
+3276528512,3276528519,BE
+3276528520,3276528559,EU
3276528560,3276528567,BE
3276528568,3276528575,EU
3276528576,3276528719,BE
3276528720,3276528727,EU
-3276528728,3276528799,BE
+3276528728,3276528735,BE
+3276528736,3276528767,EU
+3276528768,3276528799,BE
3276528800,3276528815,GB
3276528816,3276528831,EU
3276528832,3276528895,BE
@@ -87837,8 +99435,8 @@
3276529376,3276529391,EU
3276529392,3276529407,TR
3276529408,3276529663,EU
-3276529664,3276530455,NL
-3276530456,3276530463,EU
+3276529664,3276530447,NL
+3276530448,3276530463,EU
3276530464,3276530495,NL
3276530496,3276530559,EU
3276530560,3276532735,NL
@@ -87858,20 +99456,20 @@
3276533776,3276533791,GB
3276533792,3276533823,EU
3276533824,3276533887,IE
-3276533888,3276533919,EU
-3276533920,3276533951,IE
+3276533888,3276533927,EU
+3276533928,3276533951,IE
3276533952,3276533983,EU
3276533984,3276534015,IE
-3276534016,3276534399,EU
-3276534400,3276534415,GB
+3276534016,3276534271,EU
+3276534272,3276534415,GB
3276534416,3276534431,NL
3276534432,3276534463,GB
3276534464,3276534495,FR
3276534496,3276534543,EU
3276534544,3276534591,NL
3276534592,3276534623,EU
-3276534624,3276534671,NL
-3276534672,3276534687,EU
+3276534624,3276534655,NL
+3276534656,3276534687,EU
3276534688,3276534719,NL
3276534720,3276534783,EU
3276534784,3276534879,NL
@@ -87887,7 +99485,9 @@
3276535104,3276535311,EU
3276535312,3276535319,FI
3276535320,3276535335,EU
-3276535336,3276535359,FI
+3276535336,3276535343,FI
+3276535344,3276535351,EU
+3276535352,3276535359,FI
3276535360,3276535375,EU
3276535376,3276535423,FI
3276535424,3276535551,EU
@@ -87895,8 +99495,8 @@
3276535808,3276536063,FI
3276536064,3276536319,EU
3276536320,3276536430,ES
-3276536431,3276536447,EU
-3276536448,3276536511,ES
+3276536431,3276536439,EU
+3276536440,3276536511,ES
3276536512,3276536583,EU
3276536584,3276536591,HR
3276536592,3276536639,EU
@@ -87907,8 +99507,8 @@
3276536736,3276536743,HU
3276536744,3276536831,EU
3276536832,3276536895,ES
-3276536896,3276536967,EU
-3276536968,3276536991,ES
+3276536896,3276536959,EU
+3276536960,3276536991,ES
3276536992,3276537151,EU
3276537152,3276537215,AT
3276537216,3276537343,EU
@@ -87956,13 +99556,13 @@
3276697088,3276697599,GB
3276697600,3276698111,UA
3276698112,3276699647,RU
-3276700160,3276700671,UA
+3276699648,3276700159,NL
3276700672,3276701183,RO
3276701184,3276701695,RU
3276701696,3276709887,SE
3276709888,3276718079,DE
3276718080,3276726271,IT
-3276726272,3276727295,DE
+3276726272,3276727295,SE
3276727296,3276728319,ES
3276728320,3276729343,UA
3276729344,3276730367,PL
@@ -88341,9 +99941,6 @@
3276799872,3276799999,NL
3276800000,3276824575,GB
3276824576,3276832767,EE
-3276832768,3276834495,GB
-3276834496,3276834503,FR
-3276834504,3276834815,GB
3276836864,3276837887,RU
3276837888,3276838911,EU
3276838912,3276840959,FR
@@ -88383,92 +99980,104 @@
3276869728,3276869855,IT
3276869856,3276869887,GB
3276869888,3276870143,NL
-3276870144,3276871679,IT
+3276870144,3276871423,IT
+3276871424,3276871679,GB
3276871680,3276872479,DE
3276872480,3276872511,GB
3276872512,3276872703,DE
3276872704,3276873727,GB
-3276873728,3276874351,ES
-3276874352,3276874367,GB
-3276874368,3276874751,ES
-3276874752,3276875775,NL
+3276873728,3276874559,ES
+3276874560,3276874751,GB
+3276874752,3276875007,NL
+3276875008,3276875263,CH
+3276875264,3276875775,NL
3276875776,3276876031,GB
3276876032,3276876287,DK
-3276876288,3276876799,GB
-3276876800,3276876823,AT
-3276876824,3276877303,GB
-3276877304,3276877311,AT
-3276877312,3276877535,GB
+3276876288,3276876415,NL
+3276876416,3276876431,GB
+3276876432,3276876541,NL
+3276876542,3276877535,GB
3276877536,3276877551,AT
-3276877552,3276877559,GB
-3276877560,3276877567,AT
-3276877568,3276877815,GB
-3276877816,3276877823,AT
-3276877824,3276877831,BG
-3276877832,3276878079,GB
+3276877552,3276878079,GB
3276878080,3276878335,BG
-3276878336,3276879359,GB
+3276878336,3276878399,GB
+3276878400,3276878847,FR
+3276878848,3276879359,ES
3276879360,3276879423,TR
3276879424,3276879615,GB
3276879616,3276879871,TR
-3276879872,3276880639,DK
-3276880640,3276881919,GB
-3276881920,3276883391,IT
-3276883392,3276883455,GB
-3276883456,3276883839,IT
-3276883840,3276883967,GB
+3276879872,3276880895,DK
+3276880896,3276881151,DE
+3276881152,3276881279,GB
+3276881280,3276881407,DE
+3276881408,3276881919,FR
+3276881920,3276883967,IT
3276883968,3276884487,PL
-3276884488,3276886015,GB
+3276884488,3276884735,GB
+3276884736,3276884991,PL
+3276884992,3276886015,GB
3276886016,3276886271,RO
-3276886272,3276887167,GB
-3276887168,3276888063,DE
+3276886272,3276886943,DE
+3276886944,3276886959,GB
+3276886960,3276886991,DE
+3276886992,3276887047,GB
+3276887048,3276887055,DE
+3276887056,3276887071,GB
+3276887072,3276888063,DE
3276888064,3276888575,GB
-3276888576,3276888831,AT
-3276888832,3276889087,GB
-3276889088,3276890111,AT
+3276888576,3276888831,IT
+3276888832,3276890111,GB
3276890112,3276890135,US
3276890136,3276890143,GB
3276890144,3276890191,US
3276890192,3276890367,GB
3276890368,3276890623,US
3276890624,3276891135,IT
-3276891136,3276891391,GB
+3276891136,3276891391,BE
3276891392,3276892159,US
-3276892160,3276893695,IT
-3276893696,3276894463,GB
-3276894464,3276895999,IT
+3276892160,3276893950,IT
+3276893951,3276893951,GB
+3276893952,3276895999,IT
3276896000,3276896255,CZ
-3276896256,3276896831,BE
+3276896256,3276896767,BE
+3276896768,3276896831,GB
3276896832,3276896847,SE
3276896848,3276896895,GB
3276896896,3276896927,BE
3276896928,3276897023,GB
-3276897024,3276897279,BE
-3276897280,3276898303,GB
+3276897024,3276897663,BE
+3276897664,3276898047,GB
+3276898048,3276898303,CZ
3276898304,3276898775,CH
3276898776,3276898783,GB
3276898784,3276900039,CH
3276900040,3276900047,GB
3276900048,3276900351,CH
3276900352,3276900607,GB
-3276900608,3276900799,CH
-3276900800,3276900863,GB
-3276900864,3276901119,CH
-3276901120,3276901375,GB
-3276901376,3276901391,CH
-3276901392,3276902143,GB
-3276902144,3276902151,CH
+3276900608,3276901503,CH
+3276901504,3276901519,ES
+3276901520,3276901551,CH
+3276901552,3276901559,GB
+3276901560,3276901615,CH
+3276901616,3276901631,GB
+3276901632,3276902151,CH
3276902152,3276902159,GB
-3276902160,3276902175,CH
-3276902176,3276902207,GB
-3276902208,3276902271,CH
-3276902272,3276902399,GB
-3276902400,3276902575,SE
-3276902576,3276902655,GB
-3276902656,3276903422,SE
-3276903423,3276903423,GB
+3276902160,3276902199,CH
+3276902200,3276902399,GB
+3276902400,3276902407,SE
+3276902408,3276902415,GB
+3276902416,3276902583,SE
+3276902584,3276902615,GB
+3276902616,3276902639,SE
+3276902640,3276902655,GB
+3276902656,3276903319,SE
+3276903320,3276903327,GB
+3276903328,3276903359,NO
+3276903360,3276903423,GB
3276903424,3276903935,SE
-3276903936,3276905311,GB
+3276903936,3276904191,GB
+3276904192,3276904447,SE
+3276904448,3276905311,GB
3276905312,3276905319,ES
3276905320,3276905471,GB
3276905472,3276905727,SE
@@ -88477,61 +100086,80 @@
3276906000,3276906003,BE
3276906004,3276906239,GB
3276906240,3276906279,SE
-3276906280,3276906495,GB
-3276906496,3276906863,NL
-3276906864,3276906879,GB
-3276906880,3276907551,NL
-3276907552,3276907775,GB
-3276907776,3276908159,NL
-3276908160,3276908287,GB
-3276908288,3276908543,NL
-3276908544,3276910079,GB
-3276910080,3276910591,NL
-3276910592,3276910967,IT
-3276910968,3276910975,GB
-3276910976,3276912615,IT
+3276906280,3276906287,GB
+3276906288,3276906295,SE
+3276906296,3276906495,GB
+3276906496,3276906623,NL
+3276906624,3276906751,GB
+3276906752,3276906823,NL
+3276906824,3276906831,CH
+3276906832,3276907551,NL
+3276907552,3276907567,BE
+3276907568,3276907643,NL
+3276907644,3276907647,GB
+3276907648,3276907663,NL
+3276907664,3276907679,BE
+3276907680,3276907687,GB
+3276907688,3276908159,NL
+3276908160,3276908175,CH
+3276908176,3276908183,NL
+3276908184,3276908191,GB
+3276908192,3276908207,NL
+3276908208,3276908223,GB
+3276908224,3276909055,NL
+3276909056,3276909567,GB
+3276909568,3276910591,NL
+3276910592,3276912319,IT
+3276912320,3276912383,GB
+3276912384,3276912615,IT
3276912616,3276912623,GB
3276912624,3276913183,IT
3276913184,3276913215,GB
-3276913216,3276913919,IT
+3276913216,3276913359,IT
+3276913360,3276913375,GB
+3276913376,3276913919,IT
3276913920,3276913983,US
-3276913984,3276914687,IT
-3276914688,3276916175,ES
+3276913984,3276914079,IT
+3276914080,3276914095,GB
+3276914096,3276914143,IT
+3276914144,3276914159,GB
+3276914160,3276914687,IT
+3276914688,3276915567,ES
+3276915568,3276915583,NL
+3276915584,3276916079,ES
+3276916080,3276916095,GB
+3276916096,3276916175,ES
3276916176,3276916183,GB
3276916184,3276917231,ES
3276917232,3276917247,GB
3276917248,3276917279,ES
3276917280,3276917287,GB
-3276917288,3276917311,ES
-3276917312,3276917343,GB
+3276917288,3276917327,ES
+3276917328,3276917343,GB
3276917344,3276917887,ES
3276917888,3276918015,GB
3276918016,3276918783,ES
3276918784,3276920551,DE
3276920552,3276920559,GB
3276920560,3276921183,DE
-3276921184,3276921191,GB
-3276921192,3276921239,DE
+3276921184,3276921187,GB
+3276921188,3276921239,DE
3276921240,3276921247,GB
3276921248,3276921279,DE
3276921280,3276921295,GB
-3276921296,3276921303,DE
-3276921304,3276921399,GB
+3276921296,3276921343,DE
+3276921344,3276921399,GB
3276921400,3276921403,DK
3276921404,3276921599,GB
-3276921600,3276921607,DE
-3276921608,3276921727,GB
-3276921728,3276922623,DE
+3276921600,3276922623,DE
3276922624,3276923431,FR
3276923432,3276923439,GB
-3276923440,3276924071,FR
-3276924072,3276924095,GB
-3276924096,3276924351,FR
-3276924352,3276924415,GB
-3276924416,3276925951,FR
-3276925952,3276926207,GB
-3276926208,3276926735,FR
-3276926736,3276931071,GB
+3276923440,3276923447,FR
+3276923448,3276923455,DE
+3276923456,3276924071,FR
+3276924072,3276924079,GB
+3276924080,3276926847,FR
+3276926848,3276931071,GB
3276931072,3276939263,KZ
3276939264,3276955647,DE
3276955648,3276963839,GB
@@ -88563,7 +100191,6 @@
3277179392,3277179647,DE
3277179648,3277180159,BE
3277180160,3277180415,NL
-3277180416,3277180671,GB
3277180672,3277180927,FR
3277180928,3277181183,DE
3277181184,3277181439,PL
@@ -88685,7 +100312,7 @@
3277362688,3277363199,IE
3277363200,3277363711,ES
3277363712,3277364223,RU
-3277364224,3277364735,GB
+3277364224,3277364735,NL
3277364736,3277365247,UA
3277365248,3277365759,NL
3277365760,3277366271,GR
@@ -88700,6 +100327,7 @@
3277370880,3277371391,RO
3277371392,3277371903,RU
3277371904,3277372415,PL
+3277372416,3277372927,IR
3277372928,3277373951,RU
3277373952,3277374463,FR
3277374464,3277375999,RU
@@ -88734,7 +100362,9 @@
3277395968,3277452647,GB
3277452648,3277452655,DK
3277452656,3277455359,GB
-3277455360,3277463551,DE
+3277455360,3277456895,DE
+3277456896,3277457151,CH
+3277457152,3277463551,DE
3277463552,3277463807,GB
3277463808,3277464063,US
3277464064,3277464575,FR
@@ -88823,6 +100453,7 @@
3277710848,3277711359,PL
3277711360,3277711871,NO
3277711872,3277712383,IL
+3277712384,3277712895,PL
3277712896,3277713407,NL
3277713408,3277713919,RU
3277713920,3277714943,DE
@@ -88865,14 +100496,12 @@
3277822208,3277822463,ES
3277822464,3277822719,PL
3277822720,3277822975,RU
-3277822976,3277823231,FR
3277823232,3277823487,UA
3277823488,3277823743,SI
3277823744,3277823999,UA
3277824000,3277824255,TR
3277824256,3277824511,SI
-3277824512,3277824767,UA
-3277824768,3277825023,AT
+3277824512,3277825023,AT
3277825024,3277825279,PL
3277825280,3277825535,UA
3277825536,3277826047,RO
@@ -88907,7 +100536,6 @@
3277836288,3277836799,FI
3277836800,3277837311,UA
3277837312,3277838847,RU
-3277838848,3277839359,BY
3277839360,3277839871,DE
3277839872,3277840383,UA
3277840384,3277840895,FR
@@ -88929,12 +100557,18 @@
3277881344,3277884175,IT
3277884176,3277884191,IR
3277884192,3277885439,IT
-3277885440,3277885951,LB
-3277885952,3277886207,IT
-3277886208,3277886975,IR
-3277886976,3277888255,IT
+3277885440,3277885695,IQ
+3277885696,3277885727,LB
+3277885728,3277885951,IT
+3277885952,3277886463,LB
+3277886464,3277886719,IQ
+3277886720,3277886975,IR
+3277886976,3277887487,IQ
+3277887488,3277888255,IT
3277888256,3277888319,LB
-3277888320,3277889535,IT
+3277888320,3277889023,IT
+3277889024,3277889279,IQ
+3277889280,3277889535,IT
3277889536,3277897727,RU
3277897728,3277905919,IT
3277905920,3277914111,BG
@@ -88965,11 +100599,11 @@
3278116864,3278118399,ES
3278118400,3278119935,SE
3278119936,3278119943,DE
-3278119944,3278119967,SE
-3278119968,3278119975,NO
-3278119976,3278120151,SE
+3278119944,3278120151,SE
3278120152,3278120159,DE
-3278120160,3278161631,SE
+3278120160,3278125055,SE
+3278125056,3278125567,NL
+3278125568,3278161631,SE
3278161632,3278161647,DE
3278161648,3278168111,SE
3278168112,3278168119,DK
@@ -88997,7 +100631,7 @@
3278769152,3278769663,FR
3278769664,3278770175,DE
3278770176,3278770687,DK
-3278770688,3278771199,DE
+3278770688,3278771711,DE
3278771712,3278772223,NL
3278772224,3278772735,BG
3278772736,3278773247,DE
@@ -89241,8 +100875,7 @@
3278939048,3278939055,FR
3278939056,3278939063,DE
3278939064,3278939067,ES
-3278939068,3278939071,IT
-3278939072,3278939075,DE
+3278939068,3278939075,DE
3278939076,3278939079,CH
3278939080,3278939083,DE
3278939084,3278939087,IT
@@ -89353,14 +100986,14 @@
3278939712,3278939715,CY
3278939716,3278939723,TR
3278939724,3278939727,MC
-3278939728,3278939731,TR
+3278939728,3278939731,DE
3278939732,3278939735,AT
3278939736,3278939739,RU
3278939740,3278939743,HU
3278939744,3278939747,GB
3278939748,3278939751,ES
3278939752,3278939755,GR
-3278939756,3278939759,AO
+3278939756,3278939759,DE
3278939760,3278939763,FR
3278939764,3278939767,GR
3278939768,3278939771,ES
@@ -89772,8 +101405,7 @@
3278942180,3278942183,FR
3278942184,3278942187,DK
3278942188,3278942191,IT
-3278942192,3278942199,DE
-3278942200,3278942203,GB
+3278942192,3278942203,DE
3278942204,3278942207,CH
3278942208,3278942211,TW
3278942212,3278942227,AU
@@ -89945,9 +101577,7 @@
3278942836,3278942837,DE
3278942838,3278942838,ES
3278942839,3278942839,FR
-3278942840,3278942841,DE
-3278942842,3278942842,IT
-3278942843,3278942843,DE
+3278942840,3278942843,DE
3278942844,3278942844,ES
3278942845,3278942850,DE
3278942851,3278942851,HU
@@ -90068,7 +101698,7 @@
3278943011,3278943011,DE
3278943012,3278943012,CZ
3278943013,3278943013,IT
-3278943014,3278943014,AT
+3278943014,3278943014,DE
3278943015,3278943016,ES
3278943017,3278943017,FR
3278943018,3278943018,CH
@@ -90403,9 +102033,7 @@
3278943440,3278943440,DK
3278943441,3278943441,IT
3278943442,3278943442,FR
-3278943443,3278943443,DE
-3278943444,3278943444,GB
-3278943445,3278943445,DE
+3278943443,3278943445,DE
3278943446,3278943446,CH
3278943447,3278943447,DE
3278943448,3278943448,FR
@@ -90758,8 +102386,7 @@
3278943889,3278943889,BE
3278943890,3278943890,NL
3278943891,3278943891,ES
-3278943892,3278943892,BE
-3278943893,3278943893,DE
+3278943892,3278943893,DE
3278943894,3278943894,IT
3278943895,3278943895,DE
3278943896,3278943896,PL
@@ -90862,8 +102489,7 @@
3278944016,3278944016,PL
3278944017,3278944017,DE
3278944018,3278944018,BE
-3278944019,3278944019,FR
-3278944020,3278944020,DE
+3278944019,3278944020,DE
3278944021,3278944021,IT
3278944022,3278944022,FR
3278944023,3278944023,AT
@@ -90879,7 +102505,7 @@
3278944036,3278944036,US
3278944037,3278944037,FR
3278944038,3278944038,GB
-3278944039,3278944039,ES
+3278944039,3278944039,DE
3278944040,3278944040,FR
3278944041,3278944041,DE
3278944042,3278944042,FR
@@ -91378,9 +103004,7 @@
3278945833,3278945833,GB
3278945834,3278945834,NL
3278945835,3278945835,CH
-3278945836,3278945838,DE
-3278945839,3278945839,CZ
-3278945840,3278945840,DE
+3278945836,3278945840,DE
3278945841,3278945841,CH
3278945842,3278945844,DE
3278945845,3278945845,ES
@@ -91505,7 +103129,6 @@
3279053312,3279053823,DE
3279053824,3279054335,NL
3279054336,3279054847,GB
-3279054848,3279055359,PL
3279055360,3279055871,SA
3279055872,3279056383,TR
3279056384,3279056895,GB
@@ -91521,13 +103144,7 @@
3279077376,3279078399,ES
3279078400,3279078655,IT
3279078656,3279078911,FR
-3279078912,3279081215,ES
-3279081216,3279081231,DE
-3279081232,3279083583,ES
-3279083584,3279083599,NL
-3279083600,3279083807,ES
-3279083808,3279083839,NL
-3279083840,3279084543,ES
+3279078912,3279084543,ES
3279084544,3279085567,IT
3279085568,3279090687,NL
3279090688,3279090943,DE
@@ -91698,8 +103315,8 @@
3279568896,3279577087,IT
3279577088,3279585279,BE
3279585280,3279585919,DE
-3279585920,3279585951,GB
-3279585952,3279585991,DE
+3279585920,3279585983,GB
+3279585984,3279585991,DE
3279585992,3279585999,GB
3279586000,3279586303,DE
3279586304,3279586559,GB
@@ -91744,9 +103361,15 @@
3279601664,3279609855,CZ
3279609856,3279618047,RU
3279618048,3279683583,UA
-3279683584,3279752959,DE
+3279683584,3279723215,DE
+3279723216,3279723223,A2
+3279723224,3279744391,DE
+3279744392,3279744399,PL
+3279744400,3279752959,DE
3279752960,3279753215,CH
-3279753216,3279897583,DE
+3279753216,3279840663,DE
+3279840664,3279840671,A2
+3279840672,3279897583,DE
3279897584,3279897591,GB
3279897592,3279946751,DE
3279946752,3279947775,SE
@@ -91761,7 +103384,35 @@
3279958016,3279972351,RU
3279972352,3279974399,AT
3279974400,3279976447,PL
-3279976448,3279986687,RU
+3279976448,3279978495,RU
+3279978496,3279978751,SI
+3279978752,3279979007,NL
+3279979008,3279979263,RO
+3279979264,3279979519,SA
+3279979520,3279979775,BG
+3279979776,3279980031,RU
+3279980032,3279980287,BG
+3279980288,3279980543,PL
+3279980544,3279980799,RO
+3279980800,3279981055,RU
+3279981056,3279981311,GB
+3279981312,3279981567,UA
+3279981568,3279981823,PL
+3279981824,3279982079,SI
+3279982080,3279982335,PL
+3279982336,3279982591,FR
+3279982592,3279982847,DE
+3279982848,3279983103,IL
+3279983104,3279983615,FR
+3279983616,3279983871,PL
+3279983872,3279984127,FR
+3279984128,3279984383,AT
+3279984384,3279984639,RO
+3279984640,3279985151,RU
+3279985152,3279985407,PL
+3279985408,3279985663,CZ
+3279985664,3279985919,DE
+3279985920,3279986687,RU
3279986688,3279987199,NL
3279987200,3279987711,RU
3279987712,3279988223,RO
@@ -91906,23 +103557,19 @@
3280347136,3280355327,NO
3280355328,3280371711,GR
3280371712,3280379903,CH
-3280379904,3280388127,FR
-3280388128,3280388159,GB
+3280379904,3280388095,FR
+3280388096,3280388159,GB
3280388160,3280388191,FR
-3280388192,3280388223,GB
-3280388224,3280388759,FR
-3280388760,3280388767,GB
-3280388768,3280388799,FR
-3280388800,3280388831,GB
-3280388832,3280390655,FR
-3280390656,3280390719,GB
+3280388192,3280388735,GB
+3280388736,3280388759,FR
+3280388760,3280390719,GB
3280390720,3280390751,FR
3280390752,3280390783,GB
3280390784,3280390815,FR
3280390816,3280390879,GB
3280390880,3280390911,FR
-3280390912,3280391167,GB
-3280391168,3280391551,FR
+3280390912,3280391423,GB
+3280391424,3280391551,FR
3280391552,3280391583,GB
3280391584,3280391743,FR
3280391744,3280391775,GB
@@ -91950,8 +103597,8 @@
3280393152,3280393343,GB
3280393344,3280393375,FR
3280393376,3280393407,GB
-3280393408,3280393535,FR
-3280393536,3280393599,GB
+3280393408,3280393503,FR
+3280393504,3280393599,GB
3280393600,3280393631,FR
3280393632,3280393695,GB
3280393696,3280393727,FR
@@ -91962,7 +103609,9 @@
3280394496,3280394527,GB
3280394528,3280394559,FR
3280394560,3280394623,GB
-3280394624,3280395519,FR
+3280394624,3280394751,FR
+3280394752,3280395263,GB
+3280395264,3280395519,FR
3280395520,3280395647,GB
3280395648,3280395839,FR
3280395840,3280396031,GB
@@ -91985,10 +103634,8 @@
3280458752,3280459775,RU
3280459776,3280460799,DK
3280460800,3280462847,DE
-3280462848,3280463871,DK
3280463872,3280466943,RU
3280466944,3280467967,UA
-3280467968,3280468991,GB
3280468992,3280470015,CY
3280470016,3280535551,PL
3280535552,3280568319,GB
@@ -92022,7 +103669,7 @@
3280583424,3280583679,RU
3280583680,3280583935,PS
3280583936,3280584191,PL
-3280584192,3280584447,RO
+3280584192,3280584447,KW
3280584448,3280584703,DE
3280584704,3280585215,UA
3280585216,3280585727,DK
@@ -92036,7 +103683,7 @@
3280589312,3280590335,DE
3280590336,3280590847,NL
3280590848,3280591359,DE
-3280591360,3280592383,GB
+3280591872,3280592383,GB
3280592384,3280592895,TR
3280592896,3280593407,DE
3280593408,3280593919,UA
@@ -92060,9 +103707,7 @@
3280625664,3280633855,MD
3280633856,3280635807,BG
3280635808,3280635815,DE
-3280635816,3280638207,BG
-3280638208,3280638463,A2
-3280638464,3280642047,BG
+3280635816,3280642047,BG
3280642048,3280650239,UA
3280650240,3280650495,RO
3280650496,3280650751,UA
@@ -92126,9 +103771,7 @@
3280796672,3280797695,CZ
3280797696,3280810783,CH
3280810784,3280810799,DE
-3280810800,3280844292,CH
-3280844293,3280844295,GB
-3280844296,3280863231,CH
+3280810800,3280863231,CH
3280863232,3280928767,TR
3280928768,3280928768,GB
3280928769,3280928769,DE
@@ -92194,8 +103837,8 @@
3280929552,3280929583,DE
3280929584,3280929599,GB
3280929600,3280929615,DE
-3280929616,3280929631,GB
-3280929632,3280929641,DE
+3280929616,3280929639,GB
+3280929640,3280929641,DE
3280929642,3280929642,GB
3280929643,3280929645,DE
3280929646,3280929647,GB
@@ -92386,8 +104029,10 @@
3280933632,3280933647,DE
3280933648,3280933687,GB
3280933688,3280933699,DE
-3280933700,3280933703,GB
-3280933704,3280933855,DE
+3280933700,3280933711,GB
+3280933712,3280933807,DE
+3280933808,3280933823,GB
+3280933824,3280933855,DE
3280933856,3280934219,GB
3280934220,3280934243,DE
3280934244,3280934655,GB
@@ -92665,14 +104310,12 @@
3280948640,3280948719,GB
3280948720,3280948735,DE
3280948736,3280949503,GB
-3280949504,3280950015,DE
-3280950016,3280950655,GB
+3280949504,3280949759,DE
+3280949760,3280950655,GB
3280950656,3280950687,DE
3280950688,3280951039,GB
-3280951040,3280951807,DE
-3280951808,3280951819,GB
-3280951820,3280951831,DE
-3280951832,3280952067,GB
+3280951040,3280952063,DE
+3280952064,3280952067,GB
3280952068,3280952079,DE
3280952080,3280952087,GB
3280952088,3280952095,DE
@@ -92692,8 +104335,10 @@
3280952352,3280952359,DE
3280952360,3280952383,GB
3280952384,3280952559,DE
-3280952560,3280952575,GB
-3280952576,3280952623,DE
+3280952560,3280952591,GB
+3280952592,3280952607,DE
+3280952608,3280952615,GB
+3280952616,3280952623,DE
3280952624,3280952631,GB
3280952632,3280952687,DE
3280952688,3280952695,GB
@@ -92740,8 +104385,12 @@
3280954368,3280954495,DE
3280954496,3280955391,GB
3280955392,3280955419,DE
-3280955420,3280955423,GB
-3280955424,3280955791,DE
+3280955420,3280955487,GB
+3280955488,3280955503,DE
+3280955504,3280955519,GB
+3280955520,3280955647,DE
+3280955648,3280955663,GB
+3280955664,3280955791,DE
3280955792,3280955799,GB
3280955800,3280956143,DE
3280956144,3280956415,GB
@@ -92784,9 +104433,13 @@
3280958880,3280958915,DE
3280958916,3280958919,GB
3280958920,3280958927,DE
-3280958928,3280958975,GB
-3280958976,3280959199,DE
-3280959200,3280959487,GB
+3280958928,3280958943,GB
+3280958944,3280959111,DE
+3280959112,3280959119,GB
+3280959120,3280959199,DE
+3280959200,3280959263,GB
+3280959264,3280959279,DE
+3280959280,3280959487,GB
3280959488,3280959711,DE
3280959712,3280959743,GB
3280959744,3280959935,DE
@@ -93102,8 +104755,8 @@
3280981001,3280981001,DE
3280981002,3280981039,GB
3280981040,3280981055,DE
-3280981056,3280981087,GB
-3280981088,3280981111,DE
+3280981056,3280981095,GB
+3280981096,3280981111,DE
3280981112,3280981135,GB
3280981136,3280981151,DE
3280981152,3280981179,GB
@@ -93596,22 +105249,20 @@
3281339392,3281339647,PL
3281339648,3281339903,GB
3281339904,3281340159,UA
-3281340160,3281340415,SA
3281340416,3281340927,RO
3281340928,3281341183,DE
3281341184,3281341439,AT
3281341440,3281341695,DE
3281341696,3281341951,PL
3281341952,3281342207,DK
-3281342208,3281342463,GB
3281342464,3281343231,DE
3281343232,3281343487,FI
3281343488,3281343743,GB
3281343744,3281343999,TR
+3281344000,3281344255,FR
3281344256,3281344511,RU
3281344512,3281344767,UA
3281344768,3281345023,RU
-3281345024,3281345279,UA
3281345280,3281345535,SA
3281345536,3281345791,CH
3281345792,3281346047,RU
@@ -93635,7 +105286,7 @@
3281351168,3281351423,UA
3281351424,3281351679,AT
3281351680,3281351935,TR
-3281351936,3281352191,DE
+3281351936,3281352191,UA
3281352192,3281352447,PL
3281352448,3281352703,RO
3281352704,3281352959,DE
@@ -93648,6 +105299,9 @@
3281354752,3281359071,SE
3281359072,3281359103,AN
3281359104,3281371135,SE
+3281371136,3281372159,RS
+3281372160,3281372671,RU
+3281372672,3281373183,PL
3281373184,3281375231,RU
3281375232,3281377279,ES
3281377280,3281379327,AT
@@ -93749,12 +105403,10 @@
3282119424,3282119679,KZ
3282119680,3282149455,RU
3282149456,3282149471,KG
-3282149472,3282149599,RU
-3282149600,3282149631,GB
-3282149632,3282173951,RU
+3282149472,3282173951,RU
3282173952,3282174463,UA
3282174464,3282174975,GB
-3282174976,3282177023,RU
+3282175488,3282177023,RU
3282177024,3282177535,GB
3282177536,3282178047,KZ
3282178048,3282178559,PL
@@ -93782,22 +105434,15 @@
3282206720,3282223103,CH
3282223104,3282231295,BE
3282231296,3282239487,DE
-3282239488,3282242223,SE
-3282242224,3282242227,NO
-3282242228,3282284543,SE
-3282284544,3282284551,FI
-3282284552,3282284567,SE
-3282284568,3282284575,FR
-3282284576,3282284579,FI
+3282239488,3282284567,SE
+3282284568,3282284579,FI
3282284580,3282284591,SE
-3282284592,3282284595,FR
+3282284592,3282284595,FI
3282284596,3282284599,SE
-3282284600,3282284603,FR
+3282284600,3282284603,FI
3282284604,3282284735,SE
3282284736,3282284783,FI
-3282284784,3282286975,SE
-3282286976,3282287007,FI
-3282287008,3282287615,SE
+3282284784,3282287615,SE
3282287616,3282287759,FI
3282287760,3282305023,SE
3282305024,3282370559,PL
@@ -93873,7 +105518,7 @@
3282743040,3282743295,CH
3282743296,3282743551,CY
3282743552,3282743807,SI
-3282743808,3282744063,MD
+3282743808,3282744063,BG
3282744064,3282744319,UA
3282744320,3282744575,SA
3282744576,3282744831,LT
@@ -93925,7 +105570,6 @@
3283210752,3283211263,PL
3283211264,3283211775,GB
3283211776,3283212287,NL
-3283212288,3283212799,RU
3283212800,3283213311,BG
3283213312,3283213823,ES
3283213824,3283214335,UA
@@ -94015,7 +105659,7 @@
3283485184,3283485439,DE
3283485440,3283485695,UA
3283485696,3283485951,GB
-3283485952,3283486207,SE
+3283485952,3283486207,US
3283486208,3283486463,AT
3283486464,3283486719,UA
3283486720,3283486975,RU
@@ -94052,7 +105696,6 @@
3283495680,3283495935,NL
3283495936,3283496191,BG
3283496192,3283496447,DE
-3283496448,3283496703,FR
3283496704,3283496959,LV
3283496960,3283497215,DE
3283497216,3283497471,GB
@@ -94119,15 +105762,11 @@
3283550624,3283550655,FR
3283550656,3283550719,GB
3283550720,3283552255,AT
-3283552256,3283552279,IT
-3283552280,3283552287,EU
-3283552288,3283552319,IT
+3283552256,3283552319,IT
3283552320,3283552351,EU
-3283552352,3283552415,IT
-3283552416,3283552447,EU
-3283552448,3283552495,IT
-3283552496,3283552511,EU
-3283552512,3283552575,IT
+3283552352,3283552431,IT
+3283552432,3283552447,EU
+3283552448,3283552575,IT
3283552576,3283552639,DE
3283552640,3283552671,IT
3283552672,3283552703,CH
@@ -94293,8 +105932,7 @@
3283584032,3283584063,DE
3283584064,3283584127,IE
3283584128,3283585023,ZA
-3283585024,3283585031,EU
-3283585032,3283585279,ES
+3283585024,3283585279,ES
3283585280,3283585535,ZA
3283585536,3283585679,ES
3283585680,3283585695,IE
@@ -94311,7 +105949,8 @@
3283586504,3283586559,EU
3283586560,3283586815,FR
3283586816,3283587071,DE
-3283587072,3283587231,NL
+3283587072,3283587199,EU
+3283587200,3283587231,NL
3283587232,3283587327,EU
3283587328,3283587335,NL
3283587336,3283587343,GB
@@ -94342,15 +105981,12 @@
3283588480,3283588543,AT
3283588544,3283588607,GB
3283588608,3283589119,BE
-3283589120,3283589151,EU
-3283589152,3283589791,DK
+3283589120,3283589791,DK
3283589792,3283589823,DE
3283589824,3283589839,EU
3283589840,3283589887,DE
3283589888,3283590143,DK
-3283590144,3283590159,EU
-3283590160,3283590167,SE
-3283590168,3283590175,EU
+3283590144,3283590175,EU
3283590176,3283590207,SE
3283590208,3283590271,EU
3283590272,3283590319,SE
@@ -94465,7 +106101,7 @@
3283635200,3283635711,GB
3283635712,3283636223,RU
3283636224,3283636735,UA
-3283636736,3283637247,PL
+3283636736,3283637759,PL
3283637760,3283638271,UA
3283638272,3283638783,PL
3283638784,3283639295,RU
@@ -94583,6 +106219,7 @@
3283960832,3283961855,KZ
3283961856,3283962879,RU
3283962880,3283963903,PL
+3283963904,3283964927,BG
3283964928,3283966975,PL
3283966976,3283967999,DE
3283968000,3283969023,UA
@@ -94682,11 +106319,11 @@
3284025440,3284025471,DE
3284025472,3284025535,GB
3284025536,3284025567,DE
-3284025568,3284026111,GB
-3284026112,3284026479,DE
+3284025568,3284026399,GB
+3284026400,3284026479,DE
3284026480,3284026495,GB
-3284026496,3284026623,DE
-3284026624,3284026815,GB
+3284026496,3284026559,DE
+3284026560,3284026815,GB
3284026816,3284026879,DE
3284026880,3284027231,GB
3284027232,3284027359,DE
@@ -94702,15 +106339,15 @@
3284028912,3284028927,DE
3284028928,3284029215,GB
3284029216,3284029311,DE
-3284029312,3284029695,GB
-3284029696,3284029791,DE
-3284029792,3284029951,GB
-3284029952,3284030463,DE
+3284029312,3284029759,GB
+3284029760,3284029791,DE
+3284029792,3284030207,GB
+3284030208,3284030463,DE
3284030464,3284030655,GB
3284030656,3284030687,DE
-3284030688,3284030975,GB
-3284030976,3284031167,DE
-3284031168,3284031551,GB
+3284030688,3284031039,GB
+3284031040,3284031103,DE
+3284031104,3284031551,GB
3284031552,3284031615,DE
3284031616,3284031743,GB
3284031744,3284032031,DE
@@ -94728,6 +106365,7 @@
3284041984,3284042239,SI
3284042240,3284042495,GB
3284042496,3284042751,AT
+3284042752,3284043007,RU
3284043008,3284043263,DE
3284043264,3284043519,EE
3284043520,3284043775,DE
@@ -94746,7 +106384,6 @@
3284047104,3284047359,DK
3284047360,3284047615,DE
3284047616,3284047871,NL
-3284047872,3284048127,HU
3284048128,3284048383,DK
3284048384,3284048639,GB
3284048640,3284049151,FR
@@ -94768,7 +106405,7 @@
3284079616,3284080127,DE
3284080128,3284080639,BE
3284080640,3284081151,UA
-3284081152,3284081663,CH
+3284081152,3284081663,DE
3284081664,3284082175,IE
3284082176,3284082687,NO
3284082688,3284083199,RU
@@ -94791,7 +106428,7 @@
3284092416,3284092927,GB
3284092928,3284093439,UA
3284093440,3284093951,IR
-3284093952,3284094463,RU
+3284093952,3284094975,RU
3284094976,3284095487,UA
3284095488,3284095999,RU
3284096000,3284096511,IT
@@ -94850,9 +106487,10 @@
3284125184,3284125695,RO
3284125696,3284126207,UA
3284126208,3284127231,CZ
-3284127232,3284127743,NL
+3284127232,3284127743,HK
3284127744,3284128255,RU
3284128256,3284128767,GB
+3284128768,3284129279,SE
3284129280,3284129791,UA
3284129792,3284130303,DE
3284130304,3284130815,GB
@@ -94957,9 +106595,7 @@
3284811776,3284819967,KE
3284819968,3284820479,GB
3284820480,3284820495,DE
-3284820496,3284822527,GB
-3284822528,3284822783,DE
-3284822784,3284823519,GB
+3284820496,3284823519,GB
3284823520,3284823527,DE
3284823528,3284825343,GB
3284825344,3284825359,DE
@@ -94976,7 +106612,9 @@
3284869632,3284869887,IT
3284869888,3284872959,DE
3284872960,3284873471,IT
-3284873472,3284926463,DE
+3284873472,3284913919,DE
+3284913920,3284914175,GB
+3284914176,3284926463,DE
3284926464,3284991999,NO
3284992000,3285057535,PL
3285057536,3285065727,IT
@@ -95062,7 +106700,6 @@
3285388288,3285389311,CH
3285389312,3285390335,FI
3285390336,3285391359,RU
-3285391360,3285392383,AM
3285392384,3285393407,RU
3285393408,3285394431,AT
3285394432,3285396479,RU
@@ -95087,7 +106724,7 @@
3285419008,3285420031,SE
3285420032,3285424127,UA
3285424128,3285425151,RO
-3285425152,3285427199,UA
+3285426176,3285427199,UA
3285427200,3285428223,GB
3285428224,3285429247,RU
3285429248,3285430271,UA
@@ -95109,21 +106746,16 @@
3285453056,3285453119,EU
3285453120,3285453415,GB
3285453416,3285453423,EU
-3285453424,3285454047,GB
-3285454048,3285454079,EU
-3285454080,3285454175,GB
-3285454176,3285454207,EU
-3285454208,3285454847,GB
-3285454848,3285455695,DE
-3285455696,3285455711,EU
-3285455712,3285455743,DE
+3285453424,3285454847,GB
+3285454848,3285455103,EU
+3285455104,3285455743,DE
3285455744,3285455871,EU
3285455872,3285455887,DE
3285455888,3285455895,EU
3285455896,3285455903,GB
3285455904,3285455935,EU
-3285455936,3285456015,DE
-3285456016,3285456031,EU
+3285455936,3285456023,DE
+3285456024,3285456031,EU
3285456032,3285456255,DE
3285456256,3285456287,EU
3285456288,3285456351,DE
@@ -95131,19 +106763,16 @@
3285456384,3285456639,DE
3285456640,3285456703,DK
3285456704,3285456735,EU
-3285456736,3285456743,DK
-3285456744,3285456751,EU
-3285456752,3285456767,DK
+3285456736,3285456767,DK
3285456768,3285456831,EU
3285456832,3285456871,DK
3285456872,3285456879,EU
3285456880,3285456895,DK
3285456896,3285456959,GB
3285456960,3285456975,EU
-3285456976,3285457023,GB
-3285457024,3285457055,EU
-3285457056,3285457151,GB
-3285457152,3285457183,SE
+3285456976,3285457151,GB
+3285457152,3285457167,EU
+3285457168,3285457183,SE
3285457184,3285457231,EU
3285457232,3285457247,SE
3285457248,3285457279,EU
@@ -95152,17 +106781,13 @@
3285457664,3285457759,IT
3285457760,3285457791,EU
3285457792,3285457919,IT
-3285457920,3285457951,GB
-3285457952,3285457983,EU
-3285457984,3285458095,GB
-3285458096,3285458103,EU
-3285458104,3285458111,GB
-3285458112,3285458175,EU
+3285457920,3285458127,GB
+3285458128,3285458175,EU
3285458176,3285458943,GB
3285458944,3285458975,DK
3285458976,3285459007,EU
-3285459008,3285459071,DK
-3285459072,3285459119,EU
+3285459008,3285459079,DK
+3285459080,3285459119,EU
3285459120,3285459327,DK
3285459328,3285459391,EU
3285459392,3285459535,DK
@@ -95198,9 +106823,7 @@
3285461992,3285461999,GB
3285462000,3285462007,NL
3285462008,3285462015,EU
-3285462016,3285462175,DE
-3285462176,3285462191,EU
-3285462192,3285462207,DE
+3285462016,3285462207,DE
3285462208,3285462223,GB
3285462224,3285462367,DE
3285462368,3285462399,EU
@@ -95209,9 +106832,7 @@
3285462544,3285462655,DE
3285462656,3285462783,EU
3285462784,3285462831,AT
-3285462832,3285462839,EU
-3285462840,3285462847,AT
-3285462848,3285462951,EU
+3285462832,3285462951,EU
3285462952,3285462959,AT
3285462960,3285463007,EU
3285463008,3285463039,AT
@@ -95221,20 +106842,22 @@
3285463136,3285463295,EU
3285463296,3285463311,FR
3285463312,3285463319,BE
-3285463320,3285463327,FR
-3285463328,3285463359,EU
+3285463320,3285463359,EU
3285463360,3285463455,BE
-3285463456,3285463519,EU
+3285463456,3285463487,EU
+3285463488,3285463503,GB
+3285463504,3285463519,EU
3285463520,3285463615,BE
3285463616,3285463647,FR
-3285463648,3285463663,EU
-3285463664,3285463743,BE
+3285463648,3285463663,BE
+3285463664,3285463671,EU
+3285463672,3285463743,BE
3285463744,3285463775,EU
3285463776,3285463839,BE
3285463840,3285463855,EU
3285463856,3285463991,BE
-3285463992,3285464015,EU
-3285464016,3285464063,BE
+3285463992,3285464031,EU
+3285464032,3285464063,BE
3285464064,3285464071,EU
3285464072,3285464095,BE
3285464096,3285464127,GB
@@ -95253,12 +106876,14 @@
3285465216,3285465231,DK
3285465232,3285465247,EU
3285465248,3285465343,DK
-3285465344,3285465663,EU
-3285465664,3285465727,DE
+3285465344,3285465631,EU
+3285465632,3285465727,DE
3285465728,3285465855,EU
3285465856,3285465903,DE
3285465904,3285465911,EU
-3285465912,3285466367,DE
+3285465912,3285465951,DE
+3285465952,3285465983,EU
+3285465984,3285466367,DE
3285466368,3285466447,CH
3285466448,3285466455,EU
3285466456,3285466463,CH
@@ -95268,9 +106893,7 @@
3285466624,3285466879,AT
3285466880,3285466895,BG
3285466896,3285466911,EU
-3285466912,3285466943,BG
-3285466944,3285466951,EU
-3285466952,3285466959,BG
+3285466912,3285466959,BG
3285466960,3285466983,EU
3285466984,3285467007,BG
3285467008,3285467015,EU
@@ -95279,7 +106902,9 @@
3285467136,3285467391,DE
3285467392,3285467663,EU
3285467664,3285467679,DE
-3285467680,3285467831,EU
+3285467680,3285467711,EU
+3285467712,3285467823,DE
+3285467824,3285467831,EU
3285467832,3285467839,DE
3285467840,3285467935,EU
3285467936,3285467951,DE
@@ -95287,38 +106912,35 @@
3285467960,3285467967,EU
3285467968,3285468511,DE
3285468512,3285468575,EU
-3285468576,3285468591,DE
-3285468592,3285468599,EU
-3285468600,3285468615,DE
-3285468616,3285468623,GB
-3285468624,3285468639,EU
-3285468640,3285469695,DE
+3285468576,3285468599,DE
+3285468600,3285468607,EU
+3285468608,3285468615,DE
+3285468616,3285468623,EU
+3285468624,3285469695,DE
3285469696,3285469727,EU
3285469728,3285471007,DE
3285471008,3285471039,EU
-3285471040,3285471055,DE
-3285471056,3285471103,EU
+3285471040,3285471071,DE
+3285471072,3285471103,EU
3285471104,3285471743,DE
3285471744,3285471807,EU
3285471808,3285471871,DE
3285471872,3285471935,EU
-3285471936,3285471967,DE
-3285471968,3285471999,EU
-3285472000,3285472127,DE
+3285471936,3285472127,DE
3285472128,3285472159,EU
3285472160,3285472175,DE
3285472176,3285472183,EU
3285472184,3285472223,DE
3285472224,3285472255,EU
3285472256,3285472287,DE
-3285472288,3285472367,EU
+3285472288,3285472319,EU
+3285472320,3285472351,DE
+3285472352,3285472367,EU
3285472368,3285472511,DE
3285472512,3285473327,EU
3285473328,3285473343,DE
3285473344,3285473439,EU
-3285473440,3285473527,DE
-3285473528,3285473535,EU
-3285473536,3285473567,DE
+3285473440,3285473567,DE
3285473568,3285473583,EU
3285473584,3285473591,GB
3285473592,3285473599,DE
@@ -95326,19 +106948,19 @@
3285473632,3285473663,DE
3285473664,3285473791,EU
3285473792,3285474047,DE
-3285474048,3285474079,EU
-3285474080,3285474095,DE
-3285474096,3285474175,EU
-3285474176,3285474231,DE
-3285474232,3285474239,EU
-3285474240,3285474271,DE
+3285474048,3285474095,EU
+3285474096,3285474111,DE
+3285474112,3285474175,EU
+3285474176,3285474271,DE
3285474272,3285474303,EU
3285474304,3285474319,DE
3285474320,3285474335,EU
-3285474336,3285474815,DE
+3285474336,3285474367,DE
+3285474368,3285474383,EU
+3285474384,3285474815,DE
3285474816,3285475071,EU
-3285475072,3285475127,DE
-3285475128,3285475143,EU
+3285475072,3285475135,DE
+3285475136,3285475143,EU
3285475144,3285475167,DE
3285475168,3285475199,EU
3285475200,3285475207,DE
@@ -95347,7 +106969,9 @@
3285475328,3285475623,EU
3285475624,3285475647,AT
3285475648,3285475679,EU
-3285475680,3285475711,AT
+3285475680,3285475695,AT
+3285475696,3285475703,EU
+3285475704,3285475711,AT
3285475712,3285475775,EU
3285475776,3285475783,AT
3285475784,3285475807,EU
@@ -95364,11 +106988,9 @@
3285476896,3285477023,EU
3285477024,3285477087,AT
3285477088,3285477151,EU
-3285477152,3285477263,IT
-3285477264,3285477279,EU
-3285477280,3285477319,IT
-3285477320,3285477335,EU
-3285477336,3285477343,IT
+3285477152,3285477319,IT
+3285477320,3285477327,EU
+3285477328,3285477343,IT
3285477344,3285477359,EU
3285477360,3285477375,IT
3285477376,3285477631,FR
@@ -95418,27 +107040,28 @@
3285485640,3285485647,SK
3285485648,3285485727,EU
3285485728,3285485743,SK
-3285485744,3285485799,EU
+3285485744,3285485751,EU
+3285485752,3285485759,SK
+3285485760,3285485799,EU
3285485800,3285485815,SK
3285485816,3285486591,EU
3285486592,3285487103,IT
3285487104,3285487359,HU
-3285487360,3285487391,NL
-3285487392,3285487423,EU
+3285487360,3285487375,NL
+3285487376,3285487423,EU
3285487424,3285487487,GB
3285487488,3285487615,EU
3285487616,3285487679,NL
3285487680,3285487743,EU
3285487744,3285488127,NL
-3285488128,3285488895,EU
-3285488896,3285489663,GB
+3285488128,3285488639,EU
+3285488640,3285489663,GB
3285489664,3285490175,EU
3285490176,3285490319,RU
3285490320,3285490335,EU
3285490336,3285490463,RU
3285490464,3285490495,EU
-3285490496,3285490511,RU
-3285490512,3285490519,EU
+3285490496,3285490519,RU
3285490520,3285490527,LT
3285490528,3285490535,LV
3285490536,3285490543,RU
@@ -95455,38 +107078,28 @@
3285492696,3285492735,GB
3285492736,3285493759,EU
3285493760,3285493775,ES
-3285493776,3285493783,EU
-3285493784,3285493791,ES
-3285493792,3285493807,EU
-3285493808,3285493887,ES
-3285493888,3285493967,EU
-3285493968,3285493983,ES
-3285493984,3285493991,GB
-3285493992,3285493999,EU
+3285493776,3285493791,EU
+3285493792,3285493887,ES
+3285493888,3285493951,EU
+3285493952,3285493983,ES
+3285493984,3285493999,EU
3285494000,3285494015,ES
3285494016,3285494079,IT
3285494080,3285494111,EU
3285494112,3285494783,IT
3285494784,3285495807,EU
3285495808,3285496319,DE
-3285496320,3285496335,ES
-3285496336,3285496351,EU
-3285496352,3285496383,ES
-3285496384,3285496463,EU
-3285496464,3285496471,ES
-3285496472,3285496479,EU
-3285496480,3285496495,ES
+3285496320,3285496383,ES
+3285496384,3285496447,EU
+3285496448,3285496471,ES
+3285496472,3285496495,EU
3285496496,3285496527,FR
3285496528,3285496543,EU
3285496544,3285496575,FR
3285496576,3285496607,EU
-3285496608,3285496815,DE
-3285496816,3285496831,EU
-3285496832,3285497855,DE
+3285496608,3285497855,DE
3285497856,3285497887,EU
-3285497888,3285498031,DE
-3285498032,3285498047,EU
-3285498048,3285498079,DE
+3285497888,3285498079,DE
3285498080,3285498095,EU
3285498096,3285498111,DE
3285498112,3285498367,IT
@@ -95505,9 +107118,7 @@
3285500288,3285500415,CZ
3285500416,3285500927,GB
3285500928,3285501183,DK
-3285501184,3285501311,CZ
-3285501312,3285501319,EU
-3285501320,3285501327,CZ
+3285501184,3285501327,CZ
3285501328,3285501335,EU
3285501336,3285501343,CZ
3285501344,3285501375,GB
@@ -96392,7 +108003,8 @@
3285766656,3285767679,UA
3285767680,3285768191,FR
3285768192,3285768703,RU
-3285768704,3285769215,CH
+3285768704,3285768959,RO
+3285768960,3285769215,PL
3285769216,3285769727,DE
3285769728,3285770239,RO
3285770240,3285770495,NL
@@ -96439,13 +108051,15 @@
3285910304,3285910335,GB
3285910336,3285910399,ES
3285910400,3285910407,IT
-3285910408,3285910463,GB
+3285910408,3285910431,GB
+3285910432,3285910463,NG
3285910464,3285910527,ES
3285910528,3285911551,GB
3285911552,3285912575,EU
3285912576,3285913087,GB
3285913088,3285913215,ES
-3285913216,3285913343,EU
+3285913216,3285913231,GB
+3285913232,3285913343,EU
3285913344,3285913599,GB
3285913600,3285915647,EU
3285915648,3285915903,GB
@@ -96457,7 +108071,8 @@
3285916712,3285916719,CY
3285916720,3285916735,ES
3285916736,3285916799,GB
-3285916800,3285917183,EU
+3285916800,3285916927,EU
+3285916928,3285917183,GB
3285917184,3285917439,ES
3285917440,3285917695,YE
3285917696,3285918719,EU
@@ -96467,9 +108082,7 @@
3285919488,3285919743,UA
3285919744,3285921791,QA
3285921792,3285921823,CZ
-3285921824,3285921919,EU
-3285921920,3285921983,GB
-3285921984,3285922111,EU
+3285921824,3285922111,GB
3285922112,3285922175,FR
3285922176,3285922183,GB
3285922184,3285922191,RU
@@ -96490,7 +108103,14 @@
3285926408,3285926415,ES
3285926416,3285926431,GB
3285926432,3285926463,CH
-3285926464,3285926847,EU
+3285926464,3285926511,GB
+3285926512,3285926639,EU
+3285926640,3285926671,GB
+3285926672,3285926687,EU
+3285926688,3285926719,IN
+3285926720,3285926783,EU
+3285926784,3285926815,GB
+3285926816,3285926847,EU
3285926848,3285926911,GB
3285926912,3285927423,DE
3285927424,3285927679,GB
@@ -96502,11 +108122,12 @@
3285928224,3285928255,DE
3285928256,3285928271,GB
3285928272,3285928287,DE
-3285928288,3285928447,EU
+3285928288,3285928319,GB
+3285928320,3285928447,EU
3285928448,3285928959,ES
3285928960,3285929983,EU
-3285929984,3285930495,GB
-3285930496,3285930559,EU
+3285929984,3285930511,GB
+3285930512,3285930559,EU
3285930560,3285930575,ES
3285930576,3285930623,GB
3285930624,3285930631,BE
@@ -96515,7 +108136,8 @@
3285930656,3285930671,NL
3285930672,3285930679,BE
3285930680,3285930687,DE
-3285930688,3285930751,EU
+3285930688,3285930719,GB
+3285930720,3285930751,EU
3285930752,3285931007,GB
3285931008,3285932031,EU
3285932032,3285932287,NL
@@ -96540,22 +108162,22 @@
3285938944,3285938951,NG
3285938952,3285938959,NL
3285938960,3285938975,US
-3285938976,3285939039,ES
-3285939040,3285939199,EU
+3285938976,3285939071,ES
+3285939072,3285939199,EU
3285939200,3285939711,ES
3285939712,3285940223,EU
-3285940224,3285940735,ES
-3285940736,3285941247,GB
+3285940224,3285940479,ES
+3285940480,3285941247,GB
3285941248,3285942655,EU
3285942656,3285942783,IR
3285942784,3285943039,ES
3285943040,3285943295,SE
3285943296,3285943551,ES
-3285943552,3285943559,DK
-3285943560,3285943567,EU
+3285943552,3285943567,GB
3285943568,3285943575,ES
3285943576,3285943583,DE
-3285943584,3285943679,EU
+3285943584,3285943631,GB
+3285943632,3285943679,EU
3285943680,3285943807,GB
3285943808,3285944319,EU
3285944320,3285944831,US
@@ -96563,8 +108185,8 @@
3285945344,3285945599,ES
3285945600,3285945663,EU
3285945664,3285945695,FR
-3285945696,3285945727,GB
-3285945728,3285945855,EU
+3285945696,3285945743,GB
+3285945744,3285945855,EU
3285945856,3285946111,GB
3285946112,3285946367,ES
3285946368,3285946879,GB
@@ -96580,21 +108202,27 @@
3285949696,3285949823,ES
3285949824,3285949855,EU
3285949856,3285949887,ES
-3285949888,3285949951,EU
+3285949888,3285949903,GB
+3285949904,3285949951,EU
3285949952,3285950463,ES
3285950464,3285950719,GB
3285950720,3285950783,US
-3285950784,3285950975,EU
+3285950784,3285950799,GB
+3285950800,3285950959,EU
+3285950960,3285950975,GB
3285950976,3285951231,NL
3285951232,3285951487,IT
-3285951488,3285951615,EU
+3285951488,3285951503,GB
+3285951504,3285951615,EU
3285951616,3285951647,GB
3285951648,3285951679,ES
-3285951680,3285951743,EU
+3285951680,3285951695,GB
+3285951696,3285951743,EU
3285951744,3285951999,GB
3285952000,3285952255,IT
3285952256,3285952511,SA
-3285952512,3285955583,EU
+3285952512,3285953535,CA
+3285953536,3285955583,EU
3285955584,3285955839,DE
3285955840,3285956095,ES
3285956096,3285956351,FR
@@ -96603,7 +108231,11 @@
3285956864,3285957631,PT
3285957632,3285957887,PL
3285957888,3285958143,GB
-3285958144,3285958847,EU
+3285958144,3285958655,EU
+3285958656,3285958671,GB
+3285958672,3285958783,EU
+3285958784,3285958799,GB
+3285958800,3285958847,EU
3285958848,3285958895,NL
3285958896,3285959039,GB
3285959040,3285959167,DE
@@ -96612,7 +108244,8 @@
3285959936,3285960191,ES
3285960192,3285960447,FR
3285960448,3285960703,GB
-3285960704,3285962751,EU
+3285960704,3285961727,CA
+3285961728,3285962751,EU
3285962752,3285963775,DE
3285963776,3285964287,GB
3285964288,3285964799,FR
@@ -96623,7 +108256,10 @@
3285967616,3285968383,BE
3285968384,3285968639,ES
3285968640,3285968895,PL
-3285968896,3285971199,EU
+3285968896,3285971007,EU
+3285971008,3285971023,GB
+3285971024,3285971183,EU
+3285971184,3285971199,GB
3285971200,3285971455,FR
3285971456,3285971711,DE
3285971712,3285971967,GB
@@ -96631,7 +108267,13 @@
3285972224,3285972479,EU
3285972480,3285972735,PL
3285972736,3285972991,FR
-3285972992,3285975039,GB
+3285972992,3285973095,GB
+3285973096,3285973247,EU
+3285973248,3285973767,GB
+3285973768,3285973791,EU
+3285973792,3285973823,GB
+3285973824,3285974015,EU
+3285974016,3285975039,GB
3285975040,3286106111,FR
3286106112,3286106687,EE
3286106688,3286106691,FI
@@ -96673,7 +108315,6 @@
3286313984,3286314495,CH
3286314496,3286315007,IL
3286315008,3286315519,UA
-3286315520,3286316031,DE
3286316032,3286316543,UA
3286316544,3286317055,NL
3286317056,3286317567,RU
@@ -96757,7 +108398,7 @@
3286423808,3286424063,CZ
3286424064,3286424319,LV
3286424320,3286424575,FR
-3286424576,3286424831,UA
+3286424576,3286424831,RU
3286424832,3286425087,TR
3286425088,3286425343,RU
3286425344,3286425599,IT
@@ -96781,7 +108422,6 @@
3286654976,3286655231,UA
3286655232,3286655487,KZ
3286655488,3286655743,LT
-3286655744,3286655999,UA
3286656000,3286656255,CH
3286656256,3286656511,RU
3286656512,3286656767,GR
@@ -96863,7 +108503,76 @@
3286790912,3286791679,GB
3286791680,3286791935,AT
3286791936,3286794239,GB
-3286794240,3286892543,DE
+3286794240,3286795263,DE
+3286795264,3286795519,LR
+3286795520,3286795775,DE
+3286795776,3286796031,LR
+3286796032,3286796287,DE
+3286796288,3286796543,LR
+3286796544,3286796799,DE
+3286796800,3286797055,RO
+3286797056,3286797311,DE
+3286797312,3286797567,HU
+3286797568,3286798847,DE
+3286798848,3286799359,IT
+3286799360,3286801407,DE
+3286801408,3286801663,NL
+3286801664,3286802943,DE
+3286802944,3286803199,AU
+3286803200,3286805503,DE
+3286805504,3286806527,GB
+3286806528,3286808063,DE
+3286808064,3286808575,GR
+3286808576,3286809087,EG
+3286809088,3286809599,DE
+3286809600,3286809855,GB
+3286809856,3286810111,PT
+3286810112,3286812927,DE
+3286812928,3286813183,PT
+3286813184,3286813695,EG
+3286813696,3286813951,DE
+3286813952,3286814207,AU
+3286814208,3286814719,HU
+3286814720,3286819839,DE
+3286819840,3286820863,NZ
+3286820864,3286826751,DE
+3286826752,3286827007,IT
+3286827008,3286827263,DE
+3286827264,3286827519,GB
+3286827520,3286832127,DE
+3286832128,3286832895,GB
+3286832896,3286835711,DE
+3286835712,3286836223,ES
+3286836224,3286836479,IT
+3286836480,3286836735,DE
+3286836736,3286836991,IT
+3286836992,3286837247,DE
+3286837248,3286839295,GB
+3286839296,3286839807,DE
+3286839808,3286840319,ES
+3286840320,3286841087,DE
+3286841088,3286841343,IT
+3286841344,3286842623,DE
+3286842624,3286843391,IT
+3286843392,3286844415,IE
+3286844416,3286844671,IT
+3286844672,3286847487,DE
+3286847488,3286848511,GB
+3286848512,3286849535,DE
+3286849536,3286849791,IT
+3286849792,3286851583,DE
+3286851584,3286852607,IE
+3286852608,3286855679,DE
+3286855680,3286857727,IE
+3286857728,3286864895,DE
+3286864896,3286865151,IT
+3286865152,3286872063,DE
+3286872064,3286879231,IE
+3286879232,3286882303,DE
+3286882304,3286883327,IE
+3286883328,3286888447,DE
+3286888448,3286889471,IE
+3286889472,3286892543,DE
3286892544,3286893055,LI
3286893056,3286893567,RU
3286893568,3286894591,UA
@@ -97061,9 +108770,7 @@
3287219712,3287220223,SE
3287220224,3287259375,RU
3287259376,3287259383,DK
-3287259384,3287267191,RU
-3287267192,3287267201,KZ
-3287267202,3287271119,RU
+3287259384,3287271119,RU
3287271120,3287271127,UZ
3287271128,3287285759,RU
3287285760,3287416831,NL
@@ -97099,11 +108806,12 @@
3287448064,3287448575,GB
3287448576,3287449087,PL
3287449088,3287449599,BG
+3287449600,3287450111,PL
3287450112,3287450623,DK
3287450624,3287451135,SE
3287451136,3287451647,PL
3287451648,3287452159,ES
-3287452160,3287452671,FR
+3287452160,3287452671,PL
3287452672,3287453183,CH
3287453184,3287454207,RU
3287454208,3287454719,SE
@@ -97146,7 +108854,6 @@
3287468032,3287469055,UA
3287469056,3287471103,DE
3287471104,3287472127,GB
-3287472128,3287473151,FI
3287473152,3287474175,GB
3287474176,3287476223,DE
3287476224,3287477247,PL
@@ -97155,16 +108862,11 @@
3287479296,3287480319,RO
3287480320,3287481343,AT
3287481344,3287482367,PL
-3287482368,3287499279,DE
-3287499280,3287499287,FR
-3287499288,3287499295,US
-3287499296,3287499439,DE
+3287482368,3287499439,DE
3287499440,3287499471,GB
3287499472,3287499487,DE
3287499488,3287499503,GB
-3287499504,3287501359,DE
-3287501360,3287501367,NL
-3287501368,3287507983,DE
+3287499504,3287507983,DE
3287507984,3287507991,FR
3287507992,3287515375,DE
3287515376,3287515383,CZ
@@ -97178,9 +108880,7 @@
3287541088,3287541095,CZ
3287541096,3287542815,DE
3287542816,3287542831,US
-3287542832,3287544647,DE
-3287544648,3287544655,CH
-3287544656,3287548927,DE
+3287542832,3287548927,DE
3287548928,3287549439,UA
3287549440,3287549951,SE
3287549952,3287550463,UA
@@ -97245,7 +108945,7 @@
3287664896,3287665151,GB
3287665152,3287665407,NO
3287665408,3287665919,PL
-3287666176,3287666431,RU
+3287665920,3287666431,RU
3287666432,3287666687,DK
3287666688,3287666943,SI
3287666944,3287667199,CZ
@@ -97258,6 +108958,7 @@
3287668736,3287668991,SI
3287668992,3287669247,PL
3287669248,3287669503,LI
+3287669504,3287669759,MD
3287669760,3287670015,RO
3287670016,3287670271,UA
3287670272,3287670527,PL
@@ -97329,9 +109030,7 @@
3287713612,3287713615,FR
3287713616,3287713623,GB
3287713624,3287713667,FR
-3287713668,3287713711,GB
-3287713712,3287713727,FR
-3287713728,3287713775,GB
+3287713668,3287713775,GB
3287713776,3287713791,FR
3287713792,3287714047,GB
3287714048,3287715071,FR
@@ -97363,7 +109062,7 @@
3287736832,3287737343,LV
3287737344,3287737855,GB
3287737856,3287738367,FR
-3287738368,3287738879,GB
+3287738368,3287738879,CH
3287738880,3287739391,DE
3287739392,3287739903,NL
3287739904,3287740415,PT
@@ -97453,14 +109152,12 @@
3287950080,3287950335,DE
3287950336,3287950591,UA
3287950592,3287950847,PL
-3287950848,3287951103,DE
3287951104,3287951359,HU
3287951360,3287951615,FR
3287951616,3287951871,CH
3287951872,3287952127,RU
3287952128,3287952383,UA
-3287952384,3287953151,CH
-3287953152,3287953407,IL
+3287952384,3287953407,CH
3287953408,3287953663,DE
3287953664,3287953919,GB
3287953920,3287954175,DE
@@ -97532,9 +109229,7 @@
3288401152,3288401407,RU
3288401408,3288401663,SA
3288401664,3288401919,MU
-3288401920,3288403711,ZA
-3288403712,3288403967,MU
-3288403968,3288406527,ZA
+3288401920,3288406527,ZA
3288406528,3288407039,KE
3288407040,3288408063,NA
3288408064,3288413183,ZA
@@ -97569,8 +109264,8 @@
3288436224,3288436479,US
3288436480,3288436735,EG
3288436736,3288440831,ZA
-3288440832,3288441103,VC
-3288441104,3288442879,BB
+3288440832,3288441343,VC
+3288441344,3288442879,BB
3288442880,3288443135,KN
3288443136,3288443647,VC
3288443648,3288444927,BB
@@ -97712,6 +109407,7 @@
3290118400,3290120191,US
3290120192,3290128383,MU
3290128384,3290136575,ZW
+3290136576,3290169343,NG
3290169344,3290171135,ZA
3290171136,3290171391,SZ
3290171392,3290171647,ZA
@@ -97776,6 +109472,20 @@
3291203328,3291203583,ZW
3291203584,3291203839,ZA
3291203840,3291204095,EG
+3291204096,3291204351,KE
+3291204352,3291204863,ZA
+3291204864,3291205119,KE
+3291205120,3291205631,GH
+3291205632,3291206143,ZA
+3291206144,3291206399,AO
+3291206400,3291206911,KE
+3291207168,3291207423,MG
+3291207424,3291207679,NG
+3291207680,3291207935,BW
+3291207936,3291208447,KE
+3291208448,3291208703,EG
+3291208704,3291208959,KE
+3291208960,3291209215,TZ
3291217920,3291230207,ZA
3291230208,3291234303,GH
3291234304,3291242495,ZA
@@ -97849,7 +109559,7 @@
3291437568,3291437823,NA
3291437824,3291439103,ZA
3291447296,3291463679,CI
-3291742208,3292004351,ZA
+3291480064,3292528639,ZA
3300917248,3300921343,MU
3300925440,3300929535,MG
3300933632,3300950015,MU
@@ -97925,6 +109635,9 @@
3302535168,3302536191,UG
3302536192,3302537215,GH
3302537216,3302538239,NG
+3302538240,3302539263,GH
+3302551552,3302552063,EG
+3302552064,3302552575,KE
3302552576,3302552831,TZ
3302552832,3302553087,KE
3302553088,3302553343,EG
@@ -97949,7 +109662,10 @@
3302753616,3302760447,NG
3302760448,3302768639,ZA
3302768640,3302776831,NG
-3302809600,3302817791,NG
+3302776832,3302785023,ZW
+3302801408,3302805503,NG
+3302805504,3302809599,MW
+3302813696,3302817791,NG
3302817792,3302883327,EG
3302883328,3302948863,MA
3302948864,3302949119,MU
@@ -97970,18 +109686,59 @@
3302953728,3302953983,AO
3302953984,3302954239,SD
3302954240,3302954495,KE
-3302987264,3302987775,MU
+3302954496,3302955007,ZA
+3302955008,3302955263,LS
+3302955264,3302955519,UG
3305111552,3307208703,TN
+3307208704,3309305855,EG
+3309305856,3312451583,ZA
+3312451584,3312975871,DZ
+3312975872,3313500159,EG
3313500160,3313762303,MA
+3313762304,3314024447,EG
+3314024448,3314286591,KE
+3314286592,3314548735,DZ
3315597312,3316121599,EG
3316121600,3316645887,ZA
3316645888,3317170175,KE
3317694464,3318218751,EG
3318218752,3318743039,DZ
+3319398400,3319529471,MZ
+3319529472,3319537663,ZM
+3319537664,3319545855,UG
+3319545856,3319554047,SO
+3319554048,3319562239,KE
+3319562240,3319570431,LS
+3319570432,3319578623,GH
+3319578624,3319595007,ZM
+3319595008,3319611391,ZA
+3319611392,3319619583,GH
+3319619584,3319627775,ZA
+3319652352,3319660543,ZW
+3319660544,3319791615,EG
3319791616,3320053759,MU
-3320053760,3320315903,ZA
3320578048,3320643583,ZA
-3321886720,3321888767,MU
+3320643584,3320709119,KE
+3320709120,3320840191,ZA
+3321364480,3321430015,KE
+3321430016,3321495551,MZ
+3321495552,3321561087,TZ
+3321561088,3321593855,SD
+3321626624,3321692159,SD
+3321692160,3321708543,NG
+3321708544,3321724927,GH
+3321724928,3321757695,MA
+3321757696,3321790463,KE
+3321790464,3321806847,LS
+3321806848,3321823231,SD
+3321823232,3321839615,NG
+3321839616,3321855999,GH
+3321856000,3321860095,CV
+3321860096,3321864191,ZA
+3321864192,3321868287,NG
+3321868288,3321872383,CG
+3321872384,3321876479,GM
+3321876480,3321880575,NG
3321954304,3321970687,US
3322019840,3322023935,US
3322023936,3322028031,CL
@@ -98004,7 +109761,8 @@
3322675200,3322683391,US
3322683392,3322691583,BR
3322740736,3322773503,US
-3322806272,3322875903,US
+3322806272,3322871807,US
+3322873856,3322875903,US
3322875904,3322888191,AU
3322937344,3322945535,US
3323003136,3323003391,JP
@@ -98068,7 +109826,13 @@
3323461632,3323659263,US
3323659264,3323660543,NZ
3323662336,3323674623,US
-3323723776,3324051455,US
+3323723776,3324011007,US
+3324011008,3324011263,KN
+3324011264,3324019711,US
+3324019712,3324019967,KN
+3324019968,3324036351,US
+3324036352,3324047615,KN
+3324047616,3324051455,US
3324051456,3324182527,CA
3324182528,3324256255,US
3324256256,3324259327,SA
@@ -98079,7 +109843,9 @@
3324379136,3324380159,CA
3324380160,3324391423,US
3324395520,3324399615,US
-3324411904,3324579839,US
+3324411904,3324470271,US
+3324470272,3324471295,GB
+3324471296,3324579839,US
3324579840,3324583935,NZ
3324583936,3324588031,CL
3324592128,3324596223,US
@@ -98402,7 +110168,32 @@
3330778880,3330779135,GB
3330779136,3330791423,US
3330791424,3330791679,CA
-3330791680,3331102463,US
+3330791680,3330883583,US
+3330883584,3330884351,NL
+3330884352,3330884863,US
+3330884864,3330885119,GB
+3330885120,3330888063,US
+3330888064,3330888127,NL
+3330888128,3330888191,US
+3330888192,3330888703,AU
+3330888704,3330888959,US
+3330888960,3330889215,CH
+3330889216,3330889471,GB
+3330889472,3330890239,JP
+3330890240,3330890751,BE
+3330890752,3330891263,GB
+3330891264,3330892287,US
+3330892288,3330892543,FR
+3330892544,3330893567,US
+3330893568,3330893823,NL
+3330893824,3330894079,CA
+3330894080,3330894591,GB
+3330894592,3330894847,DE
+3330894848,3330897919,US
+3330897920,3330898175,CA
+3330898176,3330898431,DE
+3330898432,3330898943,FR
+3330898944,3331102463,US
3331102464,3331102719,CA
3331102720,3331194879,US
3331194880,3331260415,AU
@@ -98444,8 +110235,8 @@
3333012992,3333029887,CA
3333029888,3333212415,US
3333212416,3333212927,A1
-3333212928,3333213119,US
-3333213120,3333213439,A1
+3333212928,3333213055,US
+3333213056,3333213439,A1
3333213440,3333213695,US
3333213696,3333214079,A1
3333214080,3333385983,US
@@ -98670,9 +110461,7 @@
3339093504,3339094015,NL
3339094016,3339142655,US
3339142656,3339142911,NL
-3339142912,3339145727,US
-3339145728,3339145983,NL
-3339145984,3339146239,US
+3339142912,3339146239,US
3339146496,3339147007,US
3339147008,3339147775,CA
3339147776,3339148031,MS
@@ -98690,17 +110479,25 @@
3339179008,3339180031,US
3339180032,3339181055,CA
3339181056,3339184127,US
-3339184128,3339186175,CA
+3339184128,3339184639,CA
+3339184640,3339184895,US
+3339184896,3339186175,CA
3339186176,3339669503,US
3339669504,3339671807,CA
3339672576,3339673599,US
3339681792,3339747327,US
-3339747328,3339748351,CA
+3339747328,3339747583,CA
+3339747584,3339747839,FR
+3339747840,3339748351,CA
3339748352,3339753471,US
3339753472,3339754495,CA
3339754496,3339760639,US
3339760640,3339761663,CA
-3339761664,3339923455,US
+3339761664,3339778303,US
+3339778304,3339778367,GB
+3339778368,3339778431,US
+3339778432,3339778495,CY
+3339778496,3339923455,US
3339923456,3339927551,CA
3339943936,3339952127,US
3339952128,3339956223,CA
@@ -98784,8 +110581,7 @@
3340926160,3340926175,AR
3340926176,3340926199,US
3340926200,3340926207,DE
-3340926208,3340926215,US
-3340926216,3340926223,BO
+3340926208,3340926223,US
3340926224,3340926231,PT
3340926232,3340926247,CA
3340926248,3340926255,AR
@@ -98868,11 +110664,17 @@
3341778944,3341807615,US
3341807616,3341808639,CA
3341808640,3341828095,US
-3341844480,3341863935,US
+3341844480,3341854079,US
+3341854080,3341854207,SG
+3341854208,3341854551,US
+3341854552,3341854559,SG
+3341854560,3341863935,US
3341863936,3341864959,AG
3341864960,3341867007,US
3341867008,3341869055,CA
-3341869056,3342139391,US
+3341869056,3341873151,US
+3341873152,3341875199,A1
+3341875200,3342139391,US
3342139392,3342204927,CH
3342204928,3342483455,US
3342499840,3342505983,US
@@ -98885,26 +110687,104 @@
3342526464,3342528511,CA
3342528512,3342548991,US
3342565376,3342567423,CA
-3342567424,3342578687,US
+3342567424,3342569471,US
+3342569472,3342569727,CR
+3342569728,3342579711,US
3342579712,3342581759,CA
+3342581760,3342595071,US
+3342595072,3342595839,CA
+3342595840,3342596095,FR
+3342596096,3342598143,US
3342598144,3342603263,CA
3342603264,3342604799,US
3342604800,3342605311,CA
3342605312,3342605567,US
3342605568,3342663679,CA
-3342663680,3343319295,US
+3342663680,3343007743,US
+3343024128,3343046915,US
+3343046916,3343046919,GB
+3343046920,3343046927,IT
+3343046928,3343046939,US
+3343046940,3343046943,RU
+3343046944,3343046947,KW
+3343046948,3343046951,PT
+3343046952,3343046955,US
+3343046956,3343046959,IT
+3343046960,3343046963,BE
+3343046964,3343046967,US
+3343046968,3343046971,NL
+3343046972,3343046979,US
+3343046980,3343046983,GB
+3343046984,3343046987,US
+3343046988,3343046991,CA
+3343046992,3343046999,US
+3343047000,3343047003,RU
+3343047004,3343047011,US
+3343047012,3343047015,AU
+3343047016,3343047039,US
+3343047040,3343047047,CA
+3343047048,3343047079,US
+3343047080,3343047087,GR
+3343047088,3343047111,US
+3343047112,3343047127,SG
+3343047128,3343047143,US
+3343047144,3343047159,IT
+3343047160,3343047327,US
+3343047328,3343047343,IT
+3343047344,3343047423,US
+3343047424,3343047439,RU
+3343047440,3343047455,UA
+3343047456,3343047471,IE
+3343047472,3343047519,US
+3343047520,3343047535,IN
+3343047536,3343047599,US
+3343047600,3343047615,GB
+3343047616,3343047687,US
+3343047688,3343047695,CA
+3343047696,3343047727,US
+3343047728,3343047735,CA
+3343047736,3343047743,US
+3343047744,3343047751,AU
+3343047752,3343047759,BR
+3343047760,3343047791,US
+3343047792,3343047799,PL
+3343047800,3343047847,US
+3343047848,3343047855,IT
+3343047856,3343047863,US
+3343047864,3343047871,RU
+3343047872,3343047879,AU
+3343047880,3343047903,US
+3343047904,3343047911,AR
+3343047912,3343047935,US
+3343047936,3343047967,CA
+3343047968,3343055871,US
+3343055872,3343056895,CA
+3343056896,3343167487,US
+3343167488,3343169535,CA
+3343169536,3343171583,US
+3343171584,3343172607,BM
+3343172608,3343172735,US
+3343172736,3343172751,HK
+3343172752,3343319295,US
3343319296,3343364095,CA
3343364096,3343365119,US
3343365632,3343372543,CA
3343373312,3343376383,US
3343380480,3343384575,CA
-3343384576,3343922175,US
-3343922176,3343922303,PA
-3343922304,3343922975,US
+3343384576,3343922975,US
3343922976,3343923007,PA
3343923008,3343923135,US
3343923136,3343923199,HK
-3343923200,3344171007,US
+3343923200,3344140287,US
+3344140288,3344141311,CA
+3344141312,3344144383,US
+3344144384,3344146431,CA
+3344146432,3344154623,US
+3344154624,3344156671,GD
+3344156672,3344158719,CA
+3344158720,3344166911,US
+3344166912,3344168959,CA
+3344168960,3344171007,US
3344171008,3344255999,CA
3344256000,3344257023,US
3344261120,3344268543,CA
@@ -98920,11 +110800,23 @@
3344299776,3344300543,CA
3344300544,3344300799,US
3344300800,3344302079,CA
-3344302080,3344486399,US
+3344302080,3344406527,US
+3344406528,3344408575,CA
+3344408576,3344429055,US
+3344429056,3344431103,CA
+3344431104,3344486399,US
3344486400,3344488447,NL
3344488448,3344633855,US
3344633856,3344637951,CH
3344637952,3344642047,US
+3344662528,3344670719,US
+3344670720,3344671743,GP
+3344671744,3344676863,US
+3344676864,3344678911,CA
+3344678912,3344681983,US
+3344681984,3344685055,CA
+3344685056,3344694271,US
+3344694272,3344695295,CA
3344695296,3344937471,US
3344937472,3344937983,EG
3344937984,3344938239,US
@@ -98934,8 +110826,26 @@
3344955648,3344964607,US
3344964608,3344965631,CA
3344965632,3344969727,US
-3345022976,3345367039,US
-3345416192,3345418239,US
+3344990208,3345007615,US
+3345007616,3345008639,CA
+3345008640,3345010687,US
+3345010688,3345011711,CA
+3345011712,3345301503,US
+3345317888,3345327103,US
+3345327104,3345328127,CA
+3345328128,3345333247,US
+3345333248,3345334271,MF
+3345334272,3345339391,US
+3345339392,3345340415,CA
+3345340416,3345367039,US
+3345383424,3345384447,CA
+3345384448,3345390591,US
+3345390592,3345391615,CA
+3345391616,3345398783,US
+3345398784,3345399807,BS
+3345399808,3345401855,PR
+3345401856,3345403903,CA
+3345403904,3345418239,US
3345418240,3345419519,NL
3345419520,3345422847,US
3345423360,3345424383,TC
@@ -98977,12 +110887,55 @@
3345666592,3345666639,NO
3345666640,3345667103,US
3345667104,3345667119,IN
-3345667120,3346282495,US
+3345667120,3346219007,US
+3346235392,3346241535,US
+3346241536,3346243583,CA
+3346243584,3346282495,US
3346282496,3346284543,PR
-3346333696,3346923519,US
+3346300928,3346323455,US
+3346323456,3346325503,CA
+3346325504,3346327551,US
+3346327552,3346328575,CA
+3346328576,3346481151,US
+3346497536,3346498559,CA
+3346498560,3346499583,US
+3346499584,3346501631,VI
+3346501632,3346506047,US
+3346506048,3346506055,CA
+3346506056,3346510271,US
+3346510272,3346510335,IL
+3346510336,3346520063,US
+3346520064,3346521087,CA
+3346521088,3346522347,US
+3346522348,3346522350,BD
+3346522351,3346522401,US
+3346522402,3346522404,IN
+3346522405,3346522691,US
+3346522692,3346522704,PT
+3346522705,3346522773,US
+3346522774,3346522783,PT
+3346522784,3346523113,US
+3346523114,3346523121,TH
+3346523122,3346523135,US
+3346523136,3346523391,BO
+3346523392,3346523647,RU
+3346523648,3346523903,US
+3346523904,3346524159,FR
+3346524160,3346525183,CA
+3346525184,3346528255,US
+3346528256,3346529279,PR
+3346529280,3346530303,CA
+3346530304,3346923519,US
3346923520,3346989055,CA
3346989056,3347005439,US
-3347054592,3349268479,US
+3347021824,3347022847,CA
+3347022848,3347030527,US
+3347030528,3347030783,IN
+3347030784,3347033087,US
+3347033088,3347034111,CA
+3347034112,3347039231,US
+3347039232,3347040255,DM
+3347040256,3349268479,US
3349268480,3349268991,CA
3349268992,3349273087,US
3349273088,3349273343,CA
@@ -98999,7 +110952,17 @@
3349608448,3349609215,US
3349609216,3349610495,CA
3349610496,3349614591,US
-3349676032,3349987327,US
+3349643264,3349644287,CA
+3349644288,3349645311,US
+3349645312,3349647359,CA
+3349647360,3349649407,US
+3349649408,3349653503,CA
+3349653504,3349692415,US
+3349708800,3349731327,US
+3349731328,3349733375,CA
+3349733376,3349739519,US
+3349739520,3349740543,CA
+3349740544,3349987327,US
3349987328,3349996543,BM
3349996544,3349997055,KY
3349997056,3350003711,BM
@@ -99016,6 +110979,7 @@
3350470656,3350475775,US
3350475776,3350476799,CA
3350476800,3350478847,US
+3350495232,3350511615,US
3350528000,3350593535,US
3350593536,3350609919,CA
3350614016,3350618111,US
@@ -99027,10 +110991,8 @@
3350862080,3350864639,CL
3350864640,3350953983,US
3350986752,3350994943,US
-3350994944,3350995199,CA
-3350995200,3350997503,US
-3350997504,3350997759,CA
-3350997760,3350999039,US
+3350994944,3350998015,CA
+3350998016,3350999039,US
3351052288,3351068671,US
3351117824,3351232511,US
3351232512,3351232767,IL
@@ -99146,7 +111108,9 @@
3351524352,3351642111,US
3351642112,3351698431,CA
3351698432,3351904255,US
-3351904256,3351969791,CA
+3351912448,3351927551,CA
+3351927552,3351927807,US
+3351927808,3351969791,CA
3351969792,3352035327,IL
3352035328,3352036351,CA
3352036352,3352046591,US
@@ -99157,7 +111121,9 @@
3352066048,3352067071,CA
3352067072,3352068095,US
3352068096,3352069119,CA
-3352069120,3352082431,US
+3352069120,3352069919,US
+3352069920,3352069935,CO
+3352069936,3352082431,US
3352082432,3352083455,JM
3352083456,3352088575,US
3352088576,3352090623,CA
@@ -99560,7 +111526,6 @@
3356157952,3356158207,CL
3356158208,3356158463,MX
3356158464,3356158719,CL
-3356158720,3356158975,AR
3356158976,3356159743,CL
3356159744,3356160255,MX
3356160256,3356160511,GT
@@ -99692,9 +111657,16 @@
3356379648,3356380159,AR
3356380160,3356380927,CL
3356380928,3356381183,DO
-3356381184,3356389375,CL
+3356381184,3356381439,CL
+3356381440,3356381695,PA
+3356381696,3356381951,UY
+3356381952,3356382207,EC
+3356382208,3356389375,CL
3356389376,3356389887,CO
-3356389888,3356391423,CL
+3356389888,3356390399,CL
+3356390400,3356390655,AR
+3356390656,3356391167,CL
+3356391168,3356391423,PA
3356391424,3356393471,CO
3356393472,3356413183,CL
3356413184,3356413951,CO
@@ -99706,9 +111678,19 @@
3356493824,3356495871,ZA
3356495872,3356499967,AR
3356499968,3356508159,MX
-3356508160,3356514303,AR
+3356508160,3356508671,AR
+3356508672,3356509183,CR
+3356509184,3356510207,VE
+3356510208,3356511999,AR
+3356512000,3356512255,CO
+3356512256,3356514303,AR
3356514304,3356514559,US
-3356516352,3356557311,AR
+3356514560,3356514815,AR
+3356516352,3356520447,AR
+3356520448,3356521471,CL
+3356521472,3356521727,AR
+3356521728,3356522495,CO
+3356522496,3356557311,AR
3356557312,3356819455,BR
3356819456,3356884991,CO
3356884992,3356950527,CL
@@ -100123,6 +112105,7 @@
3359481856,3359498239,AR
3359498240,3359501311,PY
3359501312,3359502335,SR
+3359502336,3359504383,AR
3359506432,3359508479,US
3359508480,3359514623,VE
3359514624,3359516671,GT
@@ -100405,7 +112388,7 @@
3362529280,3362533375,PA
3362537472,3362545663,AR
3362545664,3362549759,PE
-3362549760,3362551807,AR
+3362549760,3362553855,AR
3362553856,3362557951,PY
3362562048,3362563071,BZ
3362563072,3362563199,PA
@@ -100483,13 +112466,14 @@
3363471360,3363487743,CR
3363487744,3363504127,CO
3363504128,3363512319,PE
-3363520512,3363553791,AR
+3363512320,3363553791,AR
3363553792,3363554047,PE
3363554048,3363557375,AR
3363561472,3363565567,CO
3363569664,3363577855,PA
3363577856,3363586047,CL
3363586048,3363594239,BZ
+3363594240,3363598335,AR
3363602432,3363610623,AN
3363610624,3363614719,CO
3363618816,3363622911,UY
@@ -100508,6 +112492,11 @@
3363733504,3363831807,AR
3363831808,3378511871,BR
3378511872,3383754751,MX
+3384279040,3384410111,CO
+3384541184,3384672255,CL
+3384672256,3384688639,HN
+3384688640,3384705023,CO
+3384705024,3384737791,PA
3384737792,3385851903,CR
3385851904,3386114047,VE
3386114048,3386245119,AR
@@ -100601,6 +112590,7 @@
3389016576,3389017087,AU
3389017088,3389017343,JP
3389017344,3389017855,HK
+3389017856,3389018111,VN
3389018112,3389018367,PG
3389018368,3389018623,ID
3389018624,3389019135,AU
@@ -100684,6 +112674,7 @@
3389195776,3389196287,HK
3389196288,3389197567,AU
3389197568,3389197823,IN
+3389197824,3389198079,ID
3389198080,3389198335,IN
3389198336,3389202431,NZ
3389202432,3389210623,AU
@@ -100774,10 +112765,10 @@
3389412352,3389412863,NZ
3389412864,3389413119,AU
3389413120,3389413375,NZ
-3389413376,3389413887,AP
+3389413376,3389413887,CN
3389413888,3389414143,TH
3389414144,3389414655,AU
-3389414656,3389414911,NZ
+3389414656,3389414911,CN
3389414912,3389415167,HK
3389415168,3389415423,KR
3389415424,3389415935,VN
@@ -100827,12 +112818,15 @@
3389528576,3389529087,JP
3389529088,3389529599,ID
3389529600,3389529855,PH
-3389529856,3389530111,AP
+3389529856,3389530111,HK
3389530112,3389532159,AU
3389532160,3389533183,SG
3389533184,3389534207,NZ
3389534208,3389538303,JP
-3389538304,3389541375,TH
+3389538304,3389538559,AU
+3389538560,3389540351,TH
+3389540352,3389541375,KH
+3389541376,3389541631,AU
3389541632,3389541887,JP
3389541888,3389542399,TH
3389542400,3389543423,JP
@@ -100859,7 +112853,7 @@
3389607424,3389607679,AU
3389607680,3389608191,VN
3389608192,3389608447,TH
-3389608448,3389608703,AP
+3389608448,3389608703,HK
3389608704,3389608959,AU
3389608960,3389609215,VN
3389609216,3389609471,ID
@@ -100893,11 +112887,13 @@
3389789696,3389790719,AU
3389790720,3389790975,BN
3389790976,3389791231,JP
-3389791232,3389791999,AP
+3389791232,3389791743,AU
+3389791744,3389791999,JP
3389792000,3389801983,AU
3389801984,3389802239,NZ
3389802240,3389802751,AU
3389802752,3389803263,TH
+3389803264,3389803519,ID
3389803520,3389806079,NZ
3389806080,3389807359,AU
3389807360,3389807615,NZ
@@ -100908,6 +112904,7 @@
3389809152,3389809919,AU
3389809920,3389810175,IN
3389810176,3389810431,AU
+3389810432,3389810687,IN
3389810688,3389811199,NZ
3389811200,3389811711,AU
3389811712,3389811967,NZ
@@ -100937,7 +112934,9 @@
3389936896,3389937663,PH
3389937664,3389937919,CN
3389937920,3389938175,AU
-3389939456,3389939711,AU
+3389938176,3389938687,KR
+3389938688,3389939199,ID
+3389939200,3389939711,AU
3389939712,3389940223,NZ
3389940224,3389940479,AU
3389940480,3389940991,NZ
@@ -100958,19 +112957,22 @@
3389950976,3389951743,NZ
3389951744,3389953279,AU
3389953280,3389953535,NZ
-3389953792,3389954303,AU
+3389953536,3389954303,AU
3389954304,3389954815,SG
3389954816,3389956607,AU
3389956608,3389957375,TH
3389957376,3389957631,KR
3389957632,3389957887,AU
3389957888,3389958399,NZ
-3389958400,3389970431,AU
+3389958400,3389969663,AU
+3389969664,3389969919,CN
+3389969920,3389970431,AU
3389970432,3389971199,NZ
3389971200,3389971967,AU
3389971968,3389972223,HK
3389972224,3389972479,AU
-3389972480,3389973759,NZ
+3389972480,3389972735,IN
+3389972736,3389973759,NZ
3389973760,3389975295,AU
3389975296,3389976319,CN
3389976320,3389979647,AU
@@ -101063,14 +113065,25 @@
3390832640,3390963711,TH
3390963712,3391094783,KR
3391094784,3391356927,JP
-3391356928,3391469055,NZ
+3391356928,3391414783,NZ
+3391414784,3391415039,AU
+3391415040,3391441407,NZ
+3391441408,3391441663,PH
+3391441664,3391444479,NZ
+3391444480,3391444991,VN
+3391444992,3391453183,NZ
+3391453184,3391453439,ID
+3391453440,3391469055,NZ
3391469056,3391469311,AU
3391469312,3391487999,NZ
3391488000,3391492095,CN
3391492096,3391496191,HK
3391496192,3391500287,SG
3391500288,3391504383,PK
-3391504384,3391524863,CN
+3391504384,3391523583,CN
+3391523584,3391523839,AU
+3391523840,3391524863,CN
+3391524864,3391525375,AU
3391525376,3391525887,CN
3391525888,3391526143,AU
3391526144,3391526655,CN
@@ -101113,7 +113126,7 @@
3391725568,3391733759,TH
3391733760,3391734015,IN
3391734016,3391734783,AU
-3391734784,3391736831,JP
+3391735808,3391736831,JP
3391736832,3391737855,IN
3391737856,3391741951,JP
3391741952,3391744959,IN
@@ -101168,7 +113181,11 @@
3391909888,3391910911,IO
3391910912,3391911935,AU
3391911936,3391913983,HK
-3391913984,3391920127,TH
+3391913984,3391915519,TH
+3391915520,3391915775,AU
+3391915776,3391916287,TH
+3391916288,3391916543,VN
+3391916544,3391920127,TH
3391920128,3391930367,AU
3391930368,3391946751,TH
3391946752,3391947007,DE
@@ -101218,7 +113235,7 @@
3392086016,3392094207,AU
3392094208,3392098559,ID
3392098560,3392098815,AU
-3392098816,3392099327,PH
+3392098816,3392099327,CN
3392099328,3392100095,AU
3392100096,3392100351,VN
3392100352,3392100607,ID
@@ -101245,9 +113262,15 @@
3392143360,3392208895,JP
3392208896,3392286975,NZ
3392286976,3392287231,US
-3392287232,3392295935,NZ
+3392287232,3392287743,NZ
+3392287744,3392288767,NP
+3392288768,3392295935,NZ
3392295936,3392296191,AU
-3392296192,3392339967,NZ
+3392296192,3392324607,NZ
+3392324608,3392325119,AU
+3392325120,3392325631,NZ
+3392325632,3392326655,ID
+3392326656,3392339967,NZ
3392339968,3392340991,NP
3392340992,3392344063,JP
3392344064,3392348159,ID
@@ -101255,6 +113278,7 @@
3392354304,3392356351,ID
3392356352,3392364543,NP
3392364544,3392372735,ID
+3392372736,3392380927,HK
3392380928,3392385023,AU
3392385024,3392389119,BD
3392389120,3392401407,ID
@@ -101363,7 +113387,7 @@
3392670848,3392671743,HK
3392671744,3392675839,JP
3392675840,3392681983,NZ
-3392681984,3392682239,AP
+3392681984,3392682239,SG
3392682240,3392682495,VN
3392682496,3392683007,IN
3392683008,3392684031,AU
@@ -101379,6 +113403,7 @@
3392765952,3392782335,TH
3392782336,3392790527,HK
3392790528,3392794623,JP
+3392794624,3392798719,CN
3392798720,3392798975,LA
3392798976,3392799231,JP
3392799232,3392799487,PH
@@ -101392,7 +113417,7 @@
3392815104,3392819199,ID
3392819200,3392823295,MY
3392823296,3392824319,KH
-3392824320,3392824831,AU
+3392824320,3392824575,AU
3392824832,3392825343,IN
3392825344,3392826367,JP
3392826368,3392827391,PH
@@ -101414,7 +113439,7 @@
3392864512,3392864767,AU
3392864768,3392865279,IN
3392865280,3392866303,NU
-3392868352,3392880639,AU
+3392866304,3392880639,AU
3392880640,3392888831,PK
3392888832,3392892927,AU
3392892928,3392897023,JP
@@ -101430,7 +113455,7 @@
3392922624,3392922879,IN
3392922880,3392923135,AU
3392923136,3392923391,BN
-3392923392,3392923647,AP
+3392923392,3392923647,IN
3392923648,3392924159,CN
3392924160,3392924671,JP
3392924672,3392924927,PH
@@ -101452,6 +113477,7 @@
3392944128,3392945151,MY
3392945152,3392946175,IN
3392946176,3392954367,AU
+3392954368,3392956415,CN
3392956416,3392958463,VN
3392958464,3392962559,CN
3392962560,3392970751,IN
@@ -101474,7 +113500,7 @@
3393021440,3393021695,IN
3393021696,3393021951,HK
3393021952,3393022463,ID
-3393022464,3393022975,AP
+3393022464,3393022975,SG
3393022976,3393023231,PH
3393023232,3393023487,AU
3393023488,3393023743,SG
@@ -101496,6 +113522,7 @@
3393069056,3393077247,AU
3393077248,3393085439,IN
3393085440,3393089535,LA
+3393089536,3393090559,CN
3393090560,3393091071,IN
3393091072,3393093631,FJ
3393093632,3393101823,AU
@@ -101506,10 +113533,11 @@
3393123328,3393123583,IN
3393123584,3393123839,NZ
3393123840,3393124351,IN
+3393124352,3393125375,CN
3393125376,3393125631,IN
3393125632,3393125887,JP
3393125888,3393126143,AU
-3393126144,3393126399,FJ
+3393126144,3393126399,CN
3393126400,3393134591,HK
3393134592,3393146879,AU
3393146880,3393150975,PK
@@ -101574,6 +113602,7 @@
3393593344,3393597439,MN
3393597440,3393601535,ID
3393601536,3393609727,NP
+3393609728,3393613823,CN
3393613824,3393617919,AS
3393617920,3393618431,AU
3393618432,3393618687,NZ
@@ -101639,6 +113668,7 @@
3393814528,3393815551,HK
3393815552,3393816575,KR
3393816576,3393818623,JP
+3393818624,3393822719,AU
3393822720,3393830911,PH
3393830912,3393835007,NZ
3393835008,3393839103,JP
@@ -101661,8 +113691,7 @@
3393859328,3393859583,JP
3393859584,3393860095,AU
3393860096,3393860607,HK
-3393860608,3393860863,AU
-3393860864,3393861631,IN
+3393860608,3393861631,IN
3393861632,3393861887,VN
3393861888,3393862143,AU
3393862144,3393862655,VN
@@ -101755,6 +113784,7 @@
3394284352,3394285567,SG
3394285568,3394289663,AU
3394289664,3394290687,HK
+3394290688,3394293759,CN
3394293760,3394297855,ID
3394297856,3394306047,TH
3394306048,3394307071,HK
@@ -101786,6 +113816,7 @@
3394501632,3394507263,HK
3394507264,3394507775,JP
3394507776,3394508799,PH
+3394508800,3394510847,CN
3394510848,3394514943,BD
3394514944,3394519039,JP
3394519040,3394521087,BD
@@ -101823,6 +113854,7 @@
3394697472,3394697727,PK
3394697728,3394697983,AU
3394697984,3394698239,IN
+3394698240,3394699263,CN
3394699264,3394700287,HK
3394700288,3394707455,AU
3394707456,3394715647,IN
@@ -101865,7 +113897,7 @@
3394838528,3394846719,NZ
3394846720,3394850815,IN
3394850816,3394854911,JP
-3394855936,3394856959,AP
+3394855936,3394856959,AU
3394856960,3394859007,IN
3394859008,3394860031,JP
3394860032,3394860543,ID
@@ -101889,6 +113921,9 @@
3394905088,3394905343,BN
3394905344,3394906111,AU
3394906112,3394906367,IN
+3394906368,3394906623,AU
+3394906624,3394907135,IN
+3394907136,3394908159,NZ
3394908160,3394910207,AU
3394910208,3394912255,PH
3394912256,3394920447,PF
@@ -101920,6 +113955,7 @@
3394971648,3394973695,SG
3394973696,3394977791,JP
3394977792,3394985983,IN
+3394985984,3394990079,CN
3394990080,3394994175,JP
3394994176,3394995199,CN
3394995200,3394998271,IN
@@ -101965,6 +114001,25 @@
3395166208,3395170303,AU
3395170304,3395174399,JP
3395174400,3395174911,AU
+3395174912,3395175167,NP
+3395175168,3395175679,IN
+3395175680,3395175935,AU
+3395175936,3395176191,SG
+3395176192,3395176703,AU
+3395176704,3395176959,TH
+3395176960,3395177215,IN
+3395177216,3395177471,HK
+3395177472,3395177983,TH
+3395177984,3395178495,AU
+3395178496,3395178751,ID
+3395178752,3395179007,MH
+3395179008,3395179263,VN
+3395179264,3395180031,ID
+3395180032,3395180287,JP
+3395180288,3395180543,HK
+3395180544,3395181055,VN
+3395181056,3395181567,HK
+3395181568,3395182591,CN
3395182592,3395190783,SG
3395190784,3395198975,JP
3395198976,3395203071,MY
@@ -102013,7 +114068,6 @@
3397070848,3397074943,PH
3397074944,3397083135,HK
3397083136,3397087231,CN
-3397087232,3397091327,JP
3397091328,3397099519,GU
3397099520,3397103615,HK
3397103616,3397105663,LA
@@ -102022,7 +114076,7 @@
3397115904,3397119999,ID
3397120000,3397124095,PK
3397124096,3397128191,JP
-3397130240,3397131263,CN
+3397128192,3397131263,CN
3397131264,3397132287,HK
3397132288,3397136383,AU
3397136384,3397140479,JP
@@ -102056,8 +114110,7 @@
3397213184,3397213439,IN
3397213440,3397213695,AU
3397213696,3397214207,ID
-3397214208,3397214719,AP
-3397214720,3397215231,AU
+3397214208,3397215231,AU
3397215232,3397215743,ID
3397215744,3397216255,PH
3397216256,3397216767,AU
@@ -102110,7 +114163,9 @@
3397349376,3397363711,CN
3397363712,3397365759,HK
3397365760,3397369855,JP
-3397369856,3397386239,CN
+3397369856,3397374463,CN
+3397374464,3397374975,AU
+3397374976,3397386239,CN
3397386240,3397394431,GU
3397394432,3397402623,PH
3397402624,3397410815,GU
@@ -102166,7 +114221,6 @@
3397525504,3397526527,AU
3397526528,3397527039,VN
3397527040,3397527295,AU
-3397527296,3397527551,JP
3397527552,3397528575,IN
3397528576,3397530623,AU
3397530624,3397531647,ID
@@ -102274,6 +114328,7 @@
3397963776,3397971967,CN
3397971968,3397974015,LA
3397974016,3397975039,IN
+3397975040,3397976063,AU
3397976064,3397984255,ID
3397984256,3397992447,JP
3397992448,3398004735,AU
@@ -102288,6 +114343,7 @@
3398033664,3398033919,ID
3398033920,3398034943,IN
3398034944,3398035199,ID
+3398035200,3398035455,CN
3398035456,3398037503,IN
3398037504,3398039551,NZ
3398039552,3398040575,IN
@@ -102340,6 +114396,7 @@
3398481920,3398483967,LA
3398483968,3398488063,MY
3398488064,3398492159,TW
+3398492160,3398500351,JP
3398500352,3398504447,ID
3398504448,3398508543,JP
3398508544,3398565887,TW
@@ -102356,6 +114413,7 @@
3398612992,3398613503,PH
3398613504,3398613759,NZ
3398613760,3398614015,AU
+3398614016,3398615039,CN
3398615040,3398619135,IN
3398619136,3398621183,AU
3398621184,3398623231,HK
@@ -102490,13 +114548,15 @@
3398647296,3398647551,TW
3398647552,3398647807,AP
3398647808,3398668287,AU
+3398668288,3398672383,CN
3398672384,3398680575,PK
3398680576,3398684671,ID
3398684672,3398688767,JP
3398688768,3398705151,ID
+3398705152,3398709247,CN
3398709248,3398711295,AU
3398711296,3398713343,BD
-3398721536,3398729727,CN
+3398713344,3398729727,CN
3398729728,3398737919,AU
3398737920,3398742015,SG
3398742016,3398746111,TH
@@ -102515,7 +114575,7 @@
3398828032,3398829055,KH
3398829056,3398830079,IN
3398830080,3398831103,KH
-3398831104,3398832127,AP
+3398831104,3398832127,JP
3398832128,3398836223,CN
3398836224,3398840319,ID
3398840320,3398842367,JP
@@ -102525,6 +114585,7 @@
3398852608,3398860799,NZ
3398860800,3398873087,ID
3398873088,3398877183,KR
+3398877184,3398881279,CN
3398881280,3398885375,SG
3398885376,3398894591,ID
3398894592,3398895615,TH
@@ -102620,6 +114681,7 @@
3399332864,3399333375,HK
3399333376,3399335423,MY
3399335424,3399335935,IN
+3399335936,3399344127,CN
3399344128,3399352319,JP
3399352320,3399389183,ID
3399389184,3399393279,KR
@@ -102677,10 +114739,12 @@
3399614464,3399622655,MY
3399622656,3399626751,ID
3399626752,3399630847,IN
-3399630848,3399631871,AU
+3399630848,3399631615,AU
+3399631616,3399631871,CN
3399631872,3399632895,SG
3399632896,3399633407,NZ
3399633408,3399633663,AU
+3399633664,3399633919,CN
3399633920,3399634943,TH
3399634944,3399639039,JP
3399639040,3399643135,AU
@@ -102705,6 +114769,7 @@
3399752704,3399753727,NZ
3399753728,3399761919,IN
3399761920,3399770111,JP
+3399770112,3399778303,CN
3399778304,3399786495,IN
3399786496,3399794687,PH
3399794688,3399798783,AU
@@ -102807,7 +114872,7 @@
3400183808,3400187903,JP
3400187904,3400191999,AU
3400192000,3400194047,JP
-3400194048,3400196095,CN
+3400194048,3400204287,CN
3400204288,3400212479,ID
3400212480,3400220671,MY
3400220672,3400221055,NC
@@ -102819,10 +114884,12 @@
3400245248,3400253439,AU
3400253440,3400257535,MY
3400257536,3400259583,HK
+3400259584,3400261631,CN
3400261632,3400263679,JP
3400263680,3400263935,AU
3400263936,3400264191,ID
3400264192,3400264447,IN
+3400264448,3400264703,CN
3400264704,3400265215,ID
3400265216,3400265471,AU
3400265472,3400265727,IN
@@ -102849,7 +114916,7 @@
3400341504,3400343551,AU
3400343552,3400351743,TW
3400351744,3400359935,ID
-3400359936,3400368127,JP
+3400359936,3400364031,JP
3400368128,3400388607,AU
3400388608,3400392703,TH
3400392704,3400400895,CN
@@ -103106,6 +115173,7 @@
3400536064,3400548351,JP
3400548352,3400581119,TH
3400581120,3400589311,SG
+3400589312,3400597503,CN
3400597504,3400605695,HK
3400605696,3400607743,JP
3400607744,3400608767,AU
@@ -103158,16 +115226,18 @@
3400826880,3400835071,CN
3400835072,3400839167,HK
3400839168,3400847359,JP
+3400847360,3400849407,CN
3400849408,3400851455,MN
-3400851456,3400867839,AU
-3400876032,3400884223,AU
+3400851456,3400884223,AU
3400884224,3400888319,JP
3400888320,3400892415,CN
3400892416,3400925183,HK
3400925184,3400933375,TH
+3400933376,3400937471,CN
3400937472,3400941567,ID
3400941568,3400966143,AU
3400966144,3400974335,ID
+3400974336,3400982527,CN
3400982528,3400990719,HK
3400990720,3400998911,ID
3400998912,3401003007,PH
@@ -103177,6 +115247,7 @@
3401015296,3401023487,AU
3401023488,3401056255,TH
3401056256,3401383935,MY
+3401383936,3401400319,CN
3401400320,3401404415,AU
3401404416,3401408511,CN
3401408512,3401416703,HK
@@ -103184,10 +115255,12 @@
3401420800,3401424895,JP
3401424896,3401428991,NZ
3401428992,3401431039,JP
+3401431040,3401433087,CN
3401433088,3401441279,JP
3401441280,3401449471,IN
3401449472,3401515007,MY
3401515008,3401515263,DE
+3401515264,3401515519,AU
3401515520,3401516031,ID
3401516032,3401519103,AU
3401519104,3401523199,JP
@@ -103208,23 +115281,61 @@
3404857956,3404857966,JP
3404857967,3404857967,IN
3404857968,3405774847,JP
-3405774848,3406071807,AU
+3405774848,3405795583,AU
+3405795584,3405796095,CN
+3405796096,3405846783,AU
+3405846784,3405847039,ID
+3405847040,3405934591,AU
+3405934592,3405936639,CN
+3405936640,3406005247,AU
+3406005248,3406005503,HK
+3406005504,3406071807,AU
3406071808,3406073855,US
3406073856,3406077951,AU
3406077952,3406078207,TH
-3406078208,3406327039,AU
+3406078208,3406109695,AU
+3406109696,3406109951,NZ
+3406109952,3406205951,AU
+3406205952,3406206463,ID
+3406206464,3406271231,AU
+3406271232,3406271487,CN
+3406271488,3406277375,AU
+3406277376,3406277631,ID
+3406277632,3406327039,AU
3406327040,3406327295,IN
-3406327296,3406384639,AU
+3406327296,3406327807,CN
+3406327808,3406328831,AU
+3406328832,3406329343,IN
+3406329344,3406331647,AU
+3406331648,3406331903,VN
+3406331904,3406343167,AU
+3406343168,3406343423,VN
+3406343424,3406350591,AU
+3406350592,3406350847,IN
+3406350848,3406380799,AU
+3406380800,3406381055,CN
+3406381056,3406382591,AU
+3406382592,3406383103,CN
+3406383104,3406384639,AU
3406384640,3406385151,SG
3406385152,3406409727,AU
3406409728,3406411775,NZ
3406411776,3406434303,AU
3406434304,3406436351,MY
-3406436352,3406542847,AU
+3406436352,3406445055,AU
+3406445056,3406445311,MY
+3406445312,3406512383,AU
+3406512384,3406512639,IN
+3406512640,3406514687,AU
+3406514688,3406514943,TH
+3406514944,3406521343,AU
+3406521344,3406522367,CN
+3406522368,3406542847,AU
3406542848,3406543103,SG
3406543104,3406565887,AU
3406565888,3406566143,PH
3406566144,3406566399,AU
+3406566400,3406566911,ID
3406566912,3406591487,AU
3406591488,3406591743,NP
3406591744,3406617599,AU
@@ -103233,7 +115344,9 @@
3406618112,3406618623,IN
3406618624,3406625023,AU
3406625024,3406625279,NF
-3406625280,3406669823,AU
+3406625280,3406637055,AU
+3406637056,3406637311,IN
+3406637312,3406669823,AU
3406669824,3406670847,IN
3406670848,3406696959,AU
3406696960,3406697215,IN
@@ -103245,30 +115358,57 @@
3406739200,3406739455,ID
3406739456,3406746623,AU
3406746624,3406746879,HK
-3406746880,3406865663,AU
+3406746880,3406832127,AU
+3406832128,3406832383,PK
+3406832384,3406865663,AU
3406865664,3406865919,IN
-3406865920,3406946815,AU
+3406865920,3406884607,AU
+3406884608,3406884863,HK
+3406884864,3406894335,AU
+3406894336,3406894591,ID
+3406894592,3406896895,AU
+3406896896,3406897151,IN
+3406897152,3406923775,AU
+3406923776,3406924031,CN
+3406924032,3406938623,AU
+3406938624,3406938879,IN
+3406938880,3406946815,AU
3406946816,3406947071,KR
3406947072,3406950399,AU
3406950400,3406951423,NF
-3406951424,3406961151,AU
+3406951424,3406952703,AU
+3406952704,3406952959,PH
+3406952960,3406961151,AU
3406961152,3406961407,IN
3406961408,3406967295,AU
3406967296,3406967551,CN
-3406967552,3406989567,AU
+3406967552,3406967807,IN
+3406967808,3406989567,AU
3406989568,3406989823,IN
3406989824,3407020287,AU
3407020288,3407020543,SG
3407020544,3407020799,AU
3407020800,3407021055,IN
3407021056,3407021311,ID
-3407021312,3407045887,AU
+3407021312,3407027711,AU
+3407027712,3407027967,CN
+3407027968,3407045887,AU
3407045888,3407046143,HK
3407046144,3407057663,AU
3407057664,3407057919,JP
-3407057920,3407096831,AU
+3407057920,3407058175,AU
+3407058176,3407058431,CN
+3407058432,3407059967,AU
+3407059968,3407060223,CN
+3407060224,3407078399,AU
+3407078400,3407079423,CN
+3407079424,3407085311,AU
+3407085312,3407085567,CN
+3407085568,3407096831,AU
3407096832,3407097087,JP
-3407097088,3407112447,AU
+3407097088,3407101183,AU
+3407101184,3407101439,CN
+3407101440,3407112447,AU
3407112448,3407112703,SG
3407112704,3407152895,AU
3407152896,3407153151,IN
@@ -103308,79 +115448,202 @@
3407159232,3407159239,NZ
3407159240,3407159263,AU
3407159264,3407159295,NZ
-3407159296,3407243263,AU
+3407159296,3407161599,AU
+3407161600,3407161855,CN
+3407161856,3407162367,TH
+3407162368,3407170047,AU
+3407170048,3407170559,ID
+3407170560,3407240959,AU
+3407240960,3407241215,CN
+3407241216,3407243263,AU
3407243264,3407243775,HK
-3407243776,3407268863,AU
+3407243776,3407250175,AU
+3407250176,3407250431,CN
+3407250432,3407268863,AU
3407268864,3407269119,US
-3407269120,3407367167,AU
+3407269120,3407294207,AU
+3407294208,3407294463,CN
+3407294464,3407310847,AU
+3407310848,3407311103,CN
+3407311104,3407315455,AU
+3407315456,3407315711,CN
+3407315712,3407326207,AU
+3407326208,3407326463,CN
+3407326464,3407328767,AU
+3407328768,3407329023,CN
+3407329024,3407329791,AU
+3407330048,3407330303,CN
+3407330304,3407360511,AU
+3407360512,3407361023,ID
+3407361024,3407362047,AU
+3407362048,3407362303,CN
+3407362304,3407367167,AU
3407367168,3407367679,ID
3407367680,3407367935,AU
-3407368192,3407369983,AU
+3407367936,3407368447,CN
+3407368448,3407369983,AU
3407369984,3407370239,IN
-3407370240,3407498495,AU
+3407370240,3407370751,AU
+3407370752,3407371007,CN
+3407371008,3407386623,AU
+3407386624,3407386879,CN
+3407386880,3407388927,AU
+3407388928,3407389183,CN
+3407389184,3407398655,AU
+3407398656,3407398911,CN
+3407398912,3407440383,AU
+3407440384,3407440639,CN
+3407440640,3407464191,AU
+3407464192,3407464447,CN
+3407464448,3407466495,AU
+3407466496,3407470591,CN
+3407470592,3407475199,AU
+3407475200,3407475455,CN
+3407475456,3407495423,AU
+3407495424,3407495679,CN
+3407495680,3407498495,AU
3407498496,3407498751,PK
-3407498752,3407524607,AU
+3407498752,3407499263,AU
+3407499264,3407499519,CN
+3407499520,3407504895,AU
+3407504896,3407505407,CN
+3407505408,3407508223,AU
+3407508224,3407508479,CN
+3407508480,3407523071,AU
+3407523072,3407523327,CN
+3407523328,3407524607,AU
3407524608,3407524863,NZ
-3407524864,3407602943,AU
+3407524864,3407545855,AU
+3407545856,3407546367,ID
+3407546368,3407546879,AU
+3407546880,3407547135,CN
+3407547136,3407574271,AU
+3407574272,3407574527,CN
+3407574528,3407575807,AU
+3407575808,3407576063,CN
+3407576064,3407602943,AU
3407602944,3407603199,JP
3407603200,3407604479,AU
3407604480,3407604735,IN
3407604736,3407608715,AU
3407608716,3407608736,JP
-3407608737,3407682047,AU
+3407608737,3407642623,AU
+3407642624,3407643135,TH
+3407643136,3407675903,AU
+3407675904,3407676159,CN
+3407676160,3407678975,AU
+3407678976,3407679231,CN
+3407679232,3407682047,AU
3407682048,3407682559,ID
-3407682560,3407732223,AU
+3407682560,3407682815,CN
+3407682816,3407701759,AU
+3407701760,3407702015,CN
+3407702016,3407704063,AU
+3407704064,3407704319,CN
+3407704320,3407727871,AU
+3407727872,3407728127,CN
+3407728128,3407729151,AU
+3407729152,3407729407,CN
+3407729408,3407732223,AU
3407732224,3407732479,HK
-3407732480,3407750655,AU
+3407732480,3407747839,AU
+3407747840,3407748095,CN
+3407748096,3407750655,AU
3407750656,3407751167,SG
3407751168,3407753215,AU
3407753216,3407753727,HK
-3407753728,3407785471,AU
+3407753728,3407779839,AU
+3407779840,3407780095,CN
+3407780096,3407780863,AU
+3407780864,3407781119,CN
+3407781120,3407785471,AU
3407785472,3407785727,NZ
-3407785728,3407801343,AU
+3407785728,3407790591,AU
+3407790592,3407790847,CN
+3407790848,3407797247,AU
+3407797248,3407797503,CN
+3407797504,3407801087,AU
+3407801088,3407801343,CN
3407801344,3407801855,ID
3407801856,3407805951,AU
3407805952,3407806463,ID
-3407806464,3407814655,AU
+3407806464,3407808511,AU
+3407808512,3407809023,IN
+3407809024,3407814655,AU
3407814656,3407815167,HK
-3407815168,3407828991,AU
+3407815168,3407824127,AU
+3407824128,3407824383,CN
+3407824384,3407828991,AU
3407828992,3407829503,US
3407829504,3407837183,AU
3407837184,3407837439,US
-3407837440,3407848447,AU
+3407837440,3407847935,AU
+3407847936,3407848191,CN
+3407848192,3407848447,AU
3407848448,3407848959,ID
-3407848960,3407866367,AU
+3407848960,3407862783,AU
+3407862784,3407863039,CN
+3407863040,3407866367,AU
3407866368,3407866623,GB
3407866624,3407873023,AU
3407873024,3407873535,IN
-3407873536,3407928575,AU
+3407873536,3407877119,AU
+3407877120,3407877375,CN
+3407877376,3407887871,AU
+3407887872,3407888127,CN
+3407888128,3407905279,AU
+3407905280,3407905535,CN
+3407905536,3407907839,AU
+3407907840,3407908095,CN
+3407908096,3407919615,AU
+3407919616,3407920127,CN
+3407920128,3407928575,AU
3407928576,3407928831,IN
-3407928832,3407985919,AU
+3407928832,3407977471,AU
+3407977472,3407977727,CN
+3407977728,3407985919,AU
3407985920,3407986175,KH
3407986176,3407987711,AU
3407987712,3407987967,PH
3407987968,3407988223,AU
3407988224,3407988735,IN
-3407988736,3407998975,AU
+3407988736,3407989759,AU
+3407989760,3407990015,CN
+3407990016,3407994879,AU
+3407994880,3407995135,CN
+3407995136,3407997183,AU
+3407997184,3407997439,CN
+3407997440,3407998975,AU
3407998976,3407999231,TH
-3407999232,3408012543,AU
+3407999232,3408009983,AU
+3408009984,3408010239,CN
+3408010240,3408012543,AU
3408012544,3408012799,MN
-3408012800,3408023807,AU
+3408012800,3408020735,AU
+3408020736,3408020991,CN
+3408020992,3408023807,AU
3408023808,3408024063,JP
-3408024064,3408032767,AU
+3408024064,3408031999,AU
+3408032000,3408032255,CN
+3408032256,3408032767,AU
3408032768,3408033279,IN
3408033280,3408033791,ID
3408033792,3408039935,AU
3408039936,3408040191,VN
3408040192,3408040703,AU
+3408040704,3408040959,CN
3408040960,3408041983,AU
3408041984,3408042495,SG
3408042496,3408042751,HK
-3408042752,3408066047,AU
+3408042752,3408064511,AU
+3408064512,3408064767,CN
+3408064768,3408066047,AU
3408066048,3408066303,PH
3408066304,3409396479,AU
3409396480,3409396735,PH
-3409396736,3409418495,AU
+3409396736,3409409023,AU
+3409409024,3409409535,CN
+3409409536,3409418495,AU
3409418496,3409418751,PL
3409418752,3409420287,AU
3409420288,3409420543,IN
@@ -103388,9 +115651,21 @@
3409423616,3409423871,IN
3409423872,3409425663,AU
3409425664,3409425919,AP
-3409425920,3409491711,AU
+3409425920,3409429503,AU
+3409429504,3409429759,CN
+3409429760,3409435135,AU
+3409435136,3409435391,CN
+3409435392,3409466623,AU
+3409466624,3409466879,CN
+3409466880,3409475839,AU
+3409475840,3409476095,CN
+3409476096,3409488127,AU
+3409488128,3409488383,CN
+3409488384,3409491711,AU
3409491712,3409491967,SG
-3409491968,3409503999,AU
+3409491968,3409498111,AU
+3409498112,3409498879,CN
+3409498880,3409503999,AU
3409504000,3409504255,HK
3409504256,3409505023,AU
3409505024,3409505279,US
@@ -103402,26 +115677,45 @@
3409510368,3409510383,IN
3409510384,3409516543,AU
3409516544,3409517055,ID
-3409517056,3409547519,AU
+3409517056,3409520383,AU
+3409520384,3409520639,CN
+3409520640,3409522175,AU
+3409522176,3409522431,CN
+3409522432,3409547519,AU
3409547520,3409547775,NZ
-3409547776,3409802831,AU
+3409547776,3409550591,AU
+3409550592,3409550847,CN
+3409550848,3409567231,AU
+3409567232,3409567487,CN
+3409567488,3409574143,AU
+3409574144,3409574399,CN
+3409574400,3409802831,AU
3409802832,3409802847,MT
3409802848,3409838335,AU
3409838336,3409838591,MY
+3409838592,3409838847,CN
3409838848,3409876991,AU
3409876992,3409878015,TH
3409878016,3409882111,AU
3409882112,3409883135,IN
3409883136,3409887999,AU
3409888000,3409888255,SG
-3409888256,3409969151,AU
+3409888256,3409896447,AU
+3409896448,3409897471,CN
+3409897472,3409897983,AU
+3409897984,3409898239,CN
+3409898240,3409901055,AU
+3409901056,3409901311,CN
+3409901312,3409969151,AU
3409969152,3410755583,TW
3410755584,3410771967,AU
3410771968,3410780159,JP
3410780160,3410788351,BD
3410788352,3410792447,IN
3410792448,3410796543,BD
+3410796544,3410797567,CN
3410797568,3410798591,JP
+3410798592,3410799615,CN
3410799616,3410800639,SG
3410800640,3410804735,IN
3410804736,3410821119,PH
@@ -103442,6 +115736,7 @@
3410888704,3410890751,SG
3410890752,3410894847,AU
3410894848,3410898943,HK
+3410898944,3410903039,CN
3410903040,3410911231,HK
3410911232,3410915327,TH
3410915328,3410919423,ID
@@ -103468,8 +115763,10 @@
3411019776,3411021823,ID
3411021824,3411023871,MY
3411023872,3411025919,JP
+3411025920,3411030015,CN
3411030016,3411032063,NC
3411032064,3411032319,TH
+3411032320,3411032575,CN
3411032576,3411033087,AU
3411033088,3411034111,NZ
3411034112,3411050495,HK
@@ -103480,6 +115777,7 @@
3411062784,3411063231,HK
3411063232,3411063295,PK
3411063296,3411083263,HK
+3411083264,3411085311,CN
3411085312,3411086335,KR
3411086336,3411087359,JP
3411087360,3411091455,CN
@@ -103492,12 +115790,12 @@
3411128320,3411130367,HK
3411130368,3411132415,ID
3411132416,3411144703,PK
-3411144704,3411146751,JP
3411146752,3411147775,ID
3411147776,3411149311,HK
3411149312,3411149823,MV
3411149824,3411150847,IN
3411150848,3411152895,HK
+3411152896,3411154943,CN
3411154944,3411156991,JP
3411156992,3411161087,PH
3411161088,3411165183,PK
@@ -103516,7 +115814,6 @@
3411212800,3411213311,IN
3411213312,3411215359,HK
3411215360,3411216383,AU
-3411216384,3411218431,JP
3411218432,3411220479,PG
3411220480,3411226623,ID
3411226624,3411228671,IO
@@ -103559,6 +115856,7 @@
3411472384,3411475199,JP
3411475200,3411475455,AU
3411475456,3411475967,HK
+3411475968,3411476479,CN
3411476480,3411509247,AU
3411509248,3411542015,PH
3411542016,3411550207,IN
@@ -103673,6 +115971,7 @@
3411608576,3411608831,IN
3411608832,3411609087,AU
3411609088,3411609599,HK
+3411609600,3411611647,CN
3411611648,3411615743,ID
3411615744,3411623935,JP
3411623936,3411640319,AU
@@ -103680,6 +115979,7 @@
3411641344,3411641599,IN
3411641600,3411641855,HK
3411641856,3411642367,IN
+3411642368,3411643391,CN
3411643392,3411644415,VN
3411644416,3411644927,AU
3411644928,3411645951,ID
@@ -103690,6 +115990,7 @@
3411673088,3411674111,CN
3411674112,3411674623,IN
3411674624,3411675135,HK
+3411675136,3411676159,CN
3411676160,3411677183,PK
3411677184,3411679231,JP
3411679232,3411681279,AU
@@ -103862,7 +116163,7 @@
3412253696,3412254719,JP
3412254720,3412262911,NR
3412262912,3412264959,JP
-3412267008,3412271103,CN
+3412264960,3412271103,CN
3412271104,3412273151,NZ
3412273152,3412275199,IN
3412275200,3412279295,PK
@@ -103888,12 +116189,13 @@
3412327936,3412328191,HK
3412328192,3412328447,WS
3412328448,3412336639,AU
-3412336640,3412340735,CN
+3412336640,3412342783,CN
3412342784,3412343039,AU
3412343040,3412343295,IN
3412343296,3412343551,AP
3412343552,3412344319,AU
3412344320,3412344575,SG
+3412344576,3412344831,CN
3412344832,3412348927,IN
3412348928,3412361215,CN
3412361216,3412369407,AP
@@ -103908,16 +116210,19 @@
3412451328,3412594687,AU
3412594688,3412596735,IN
3412596736,3412598783,MV
+3412598784,3412602879,CN
3412602880,3412606975,NC
3412606976,3412615167,PH
3412615168,3412656127,JP
3412656128,3412672511,HK
3412672512,3412680703,JP
+3412680704,3412697087,CN
3412697088,3412705279,IN
3412705280,3412713471,AU
3412713472,3412721663,TW
3412721664,3412787199,MY
3412787200,3412803583,TW
+3412803584,3412819967,CN
3412819968,3412852735,TH
3412852736,3412918271,AU
3412918272,3412926463,KR
@@ -103932,10 +116237,13 @@
3413032960,3413037055,AU
3413037056,3413041151,IN
3413041152,3413043199,JP
-3413043200,3413044223,AU
+3413043200,3413043711,AU
+3413043712,3413043967,CN
+3413043968,3413044223,AU
3413044224,3413045247,AP
3413045248,3413047295,IN
3413047296,3413098495,AU
+3413098496,3413102591,JP
3413102592,3413106687,TW
3413106688,3413110783,PH
3413110784,3413112831,JP
@@ -103943,6 +116251,7 @@
3413113856,3413133311,JP
3413133312,3413135359,BD
3413135360,3413139455,HK
+3413139456,3413147647,AU
3413147648,3413155839,IN
3413155840,3413164031,SG
3413164032,3413172223,BD
@@ -103973,6 +116282,7 @@
3413557248,3413565439,CN
3413565440,3413569535,TW
3413569536,3413569791,SG
+3413569792,3413570047,CN
3413570048,3413570303,KH
3413570304,3413570559,AU
3413570560,3413571583,PH
@@ -103987,7 +116297,9 @@
3413576704,3413576959,AU
3413576960,3413577215,ID
3413577216,3413577727,AU
-3413577728,3413579775,AP
+3413577728,3413579007,AP
+3413579008,3413579263,AU
+3413579264,3413579775,JP
3413579776,3413582847,CN
3413582848,3413583871,VN
3413583872,3413584127,JP
@@ -104001,8 +116313,7 @@
3413587968,3413588223,NZ
3413588224,3413588479,MY
3413588480,3413593087,VN
-3413593088,3413593343,AU
-3413593344,3413593599,AP
+3413593088,3413593599,AU
3413593600,3413593855,SG
3413593856,3413594111,KH
3413594112,3413595135,CN
@@ -104010,11 +116321,12 @@
3413595392,3413595647,CN
3413595648,3413595903,AU
3413595904,3413596159,HK
-3413596160,3413596671,AP
-3413596672,3413597183,NP
-3413597184,3413597695,AP
+3413596160,3413597183,NP
+3413597184,3413597695,AU
3413597696,3413597951,TW
3413597952,3413602303,AU
+3413602304,3413602559,ID
+3413602560,3413639167,CN
3413639168,3413704703,SG
3413704704,3413737471,MY
3413737472,3413753855,TH
@@ -104055,7 +116367,9 @@
3414171648,3414179839,CN
3414179840,3414188031,ID
3414188032,3414196223,CN
+3414196224,3414204415,AU
3414204416,3414220799,KR
+3414220800,3414222847,CN
3414222848,3414223871,AU
3414223872,3414224895,KR
3414224896,3414226943,VN
@@ -104063,6 +116377,7 @@
3414227968,3414230015,PK
3414230016,3414230527,PH
3414230528,3414231039,KR
+3414231040,3414233087,CN
3414233088,3414245375,AU
3414245376,3414253567,HK
3414253568,3414261759,JP
@@ -104108,7 +116423,7 @@
3414667264,3414669311,ID
3414669312,3414670335,AU
3414670336,3414670591,IN
-3414670592,3414670847,AP
+3414670592,3414670847,SG
3414670848,3414671359,MY
3414671360,3415080959,JP
3415080960,3415083007,MY
@@ -104144,6 +116459,7 @@
3415228416,3415236607,KH
3415236608,3415244799,IN
3415244800,3415277567,TH
+3415277568,3415285759,CN
3415285760,3415293951,AU
3415293952,3415302143,HK
3415302144,3415306239,AU
@@ -104163,7 +116479,9 @@
3415441408,3415474175,AU
3415474176,3415490559,CN
3415490560,3415491583,PK
+3415491584,3415495679,CN
3415495680,3415496191,ID
+3415496192,3415496703,CN
3415496704,3415497727,MY
3415497728,3415497983,TW
3415497984,3415498751,AU
@@ -104177,6 +116495,7 @@
3415605248,3415752703,TH
3415752704,3415760895,CN
3415760896,3415769087,NZ
+3415769088,3415777279,CN
3415777280,3415785471,KR
3415785472,3415793663,JP
3415793664,3415801855,AU
@@ -104222,8 +116541,10 @@
3416274944,3416276991,ID
3416276992,3416285183,HK
3416285184,3416287231,VN
+3416287232,3416289279,CN
3416289280,3416293375,NZ
3416293376,3416293631,ID
+3416293632,3416293887,CN
3416293888,3416294399,PH
3416294400,3416295423,AU
3416295424,3416295679,IN
@@ -104232,6 +116553,7 @@
3416296448,3416297471,KR
3416297472,3416301567,TW
3416301568,3416309759,PH
+3416309760,3416317951,CN
3416317952,3416326143,TW
3416326144,3416327167,VN
3416327168,3416328191,HK
@@ -104242,7 +116564,7 @@
3416338688,3416339967,SG
3416339968,3416342527,IN
3416342528,3416371199,AU
-3416371200,3416371711,AP
+3416371200,3416371711,PH
3416371712,3416371967,VN
3416371968,3416372223,IN
3416372224,3416372479,CN
@@ -104463,6 +116785,7 @@
3416489775,3416489783,AU
3416489784,3416489787,JP
3416489788,3416489983,AU
+3416489984,3416506367,VN
3416506368,3416514559,TW
3416514560,3416522751,IN
3416522752,3416588287,AU
@@ -104487,6 +116810,7 @@
3416727552,3416735743,JP
3416735744,3416752127,PH
3416752128,3416784895,NZ
+3416784896,3416793087,CN
3416793088,3416801279,AU
3416801280,3416817663,JP
3416817664,3416850431,HK
@@ -104520,7 +116844,7 @@
3416922112,3416922367,AU
3416922368,3416922623,IN
3416922624,3416923135,VN
-3416923136,3416924159,AP
+3416923136,3416924159,HK
3416924160,3416928255,JP
3416928256,3416928511,IN
3416928512,3416928767,HK
@@ -104528,6 +116852,7 @@
3416929280,3416930303,JP
3416930304,3416930559,NZ
3416930560,3416930815,AU
+3416930816,3416931327,CN
3416931328,3416932351,IN
3416932352,3416936447,PK
3416936448,3416938495,AU
@@ -104567,6 +116892,7 @@
3417137152,3417145343,KR
3417145344,3417178111,NZ
3417178112,3417179135,PH
+3417179136,3417179391,CN
3417179392,3417179647,ID
3417179648,3417179903,IN
3417179904,3417180159,CN
@@ -104601,7 +116927,7 @@
3417289728,3417291263,IN
3417291264,3417291775,AU
3417291776,3417292799,KR
-3417292800,3417309183,CN
+3417292800,3417333759,CN
3417333760,3417337855,AU
3417337856,3417338367,IN
3417338368,3417338879,HK
@@ -104659,6 +116985,7 @@
3418157056,3418161663,BD
3418161664,3418162431,AU
3418162432,3418162687,IN
+3418162688,3418163199,CN
3418163200,3418165247,PH
3418165248,3418167295,MY
3418167296,3418167551,IN
@@ -104672,6 +116999,7 @@
3418184192,3418184959,IN
3418184960,3418185727,AU
3418185728,3418189823,PK
+3418189824,3418190847,CN
3418190848,3418191871,TH
3418191872,3418192895,ID
3418192896,3418193919,AU
@@ -104679,6 +117007,7 @@
3418202112,3418206207,HK
3418206208,3418208255,IN
3418208256,3418210303,LK
+3418210304,3418218495,CN
3418218496,3418227711,BD
3418227712,3418228735,TW
3418228736,3418230783,BD
@@ -104866,6 +117195,7 @@
3418453760,3418456063,HK
3418456064,3418472447,IN
3418472448,3418480639,AU
+3418480640,3418488831,CN
3418488832,3418505215,AU
3418505216,3418506831,JP
3418506832,3418506879,ID
@@ -104937,17 +117267,21 @@
3418513232,3418513407,JP
3418513408,3418517503,IN
3418517504,3418519551,MN
+3418519552,3418521599,CN
3418521600,3418524574,HK
3418524575,3418524606,CN
3418524607,3418524638,TH
3418524639,3418554367,HK
+3418554368,3418570751,VN
+3418570752,3418578943,CN
3418578944,3418583039,TH
+3418583040,3418585087,CN
3418585088,3418586111,TH
3418586112,3418586367,AU
3418586368,3418586623,SG
3418586624,3418586879,PK
3418586880,3418587135,AU
-3418619904,3418621951,CN
+3418587136,3418623999,CN
3418624000,3418626047,JP
3418626048,3418628095,KI
3418628096,3418636287,AU
@@ -105005,13 +117339,12 @@
3418955776,3418959871,TW
3418959872,3418960383,BD
3418960384,3418960895,ID
-3418960896,3418961919,SG
+3418960896,3418961919,JP
3418961920,3418962943,VN
3418962944,3418963967,IN
3418963968,3418988543,AU
3418988544,3418992639,ID
3418992640,3418993919,SG
-3418993920,3418994175,MN
3418994176,3418994431,MY
3418994432,3418994687,AU
3418994688,3418995711,MY
@@ -105040,6 +117373,7 @@
3419357184,3419411455,CN
3419411456,3419411711,HK
3419411712,3419411967,NZ
+3419411968,3419412223,HK
3419412224,3419412479,JP
3419412480,3419414527,PH
3419414528,3419422719,CN
@@ -105059,7 +117393,7 @@
3419512832,3419516927,AU
3419516928,3419517951,JP
3419517952,3419518975,VN
-3419518976,3419519999,TW
+3419518976,3419519999,JP
3419520000,3419520767,ID
3419520768,3419521023,TH
3419521024,3419529215,AU
@@ -105101,8 +117435,9 @@
3419877632,3419877887,KH
3419877888,3419878143,ID
3419878144,3419878399,IN
+3419878400,3419879423,GU
3419879424,3419880447,JP
-3419880448,3419881471,MY
+3419880448,3419881471,MM
3419881472,3419897855,PH
3419897856,3419899903,JP
3419899904,3419900159,FR
@@ -105119,6 +117454,7 @@
3419906048,3419914239,PK
3419914240,3419922431,KR
3419922432,3419924479,JP
+3419924480,3419926527,CN
3419926528,3419930623,HK
3419930624,3419971583,JP
3419971584,3419979775,KR
@@ -105294,6 +117630,7 @@
3420372992,3420377087,HK
3420377088,3420389375,JP
3420389376,3420393471,US
+3420393472,3420395519,CN
3420395520,3420397567,JP
3420397568,3420401663,KH
3420401664,3420411903,JP
@@ -105312,9 +117649,7 @@
3420437504,3420438527,IN
3420438528,3420454911,HK
3420454912,3422552063,KR
-3422552064,3422717439,US
-3422717440,3422717695,A1
-3422717696,3422848511,US
+3422552064,3422848511,US
3422848512,3422848767,GB
3422848768,3422955519,US
3422955520,3422956799,FR
@@ -105334,14 +117669,22 @@
3423161480,3423161487,HK
3423161488,3423161613,US
3423161614,3423161621,CA
-3423161622,3423182847,US
+3423161622,3423162159,US
+3423162160,3423162167,MX
+3423162168,3423162303,US
+3423162304,3423162311,GB
+3423162312,3423162367,US
+3423162368,3423163391,CA
+3423163392,3423182847,US
3423182848,3423183199,CA
3423183200,3423183231,BM
3423183232,3423183263,CA
-3423183264,3423183295,BM
-3423183296,3423183743,CA
+3423183264,3423183279,EE
+3423183280,3423183743,CA
3423183744,3423183871,EE
-3423183872,3423184175,CA
+3423183872,3423183935,CA
+3423183936,3423183967,EE
+3423183968,3423184175,CA
3423184176,3423184191,US
3423184192,3423184207,CA
3423184208,3423184215,EE
@@ -105372,14 +117715,12 @@
3423236096,3423238143,JM
3423238144,3423258623,US
3423258624,3423260671,CA
-3423262720,3423264831,US
+3423260672,3423264831,US
3423264832,3423264863,NG
3423264864,3423265247,US
3423265248,3423265263,EC
3423265264,3423266815,US
-3423268864,3423269135,CA
-3423269136,3423269151,US
-3423269152,3423269887,CA
+3423268864,3423269887,CA
3423269888,3423285247,US
3423285248,3423285527,CA
3423285528,3423285535,NL
@@ -105401,7 +117742,9 @@
3423286208,3423286527,CA
3423286528,3423286655,GB
3423286656,3423287295,CA
-3423287296,3423303679,US
+3423287296,3423291983,US
+3423291984,3423291991,IL
+3423291992,3423303679,US
3423303680,3423304703,CA
3423304704,3423311871,US
3423311872,3423313151,VI
@@ -105417,7 +117760,9 @@
3423339376,3423339383,DE
3423339384,3423340399,US
3423340400,3423340407,AU
-3423340408,3423341511,US
+3423340408,3423341015,US
+3423341016,3423341023,CA
+3423341024,3423341511,US
3423341512,3423341519,PE
3423341520,3423341543,US
3423341544,3423341551,GB
@@ -105438,7 +117783,9 @@
3423343152,3423343167,RO
3423343168,3423343327,US
3423343328,3423343343,AU
-3423343344,3423344767,US
+3423343344,3423344007,US
+3423344008,3423344023,CA
+3423344024,3423344767,US
3423344768,3423344791,PK
3423344792,3423344807,CA
3423344808,3423344991,US
@@ -105453,7 +117800,8 @@
3423345432,3423345439,GT
3423345440,3423345503,US
3423345504,3423345535,AU
-3423345536,3423345583,US
+3423345536,3423345551,CA
+3423345552,3423345583,US
3423345584,3423345591,JO
3423345592,3423345623,US
3423345624,3423345631,GB
@@ -105463,9 +117811,12 @@
3423346128,3423346143,CA
3423346144,3423346319,US
3423346320,3423346327,DK
-3423346328,3423346487,US
+3423346328,3423346431,US
+3423346432,3423346447,GB
+3423346448,3423346487,US
3423346488,3423346495,AE
-3423346496,3423346831,US
+3423346496,3423346503,SA
+3423346504,3423346831,US
3423346832,3423346847,IM
3423346848,3423346943,US
3423346944,3423346951,CA
@@ -105478,13 +117829,19 @@
3423347448,3423347455,CA
3423347456,3423347503,US
3423347504,3423347519,DE
-3423347520,3423347783,US
+3423347520,3423347639,US
+3423347640,3423347663,GB
+3423347664,3423347783,US
3423347784,3423347791,SA
3423347792,3423347823,US
3423347824,3423347831,FR
-3423347832,3423347919,US
+3423347832,3423347879,US
+3423347880,3423347903,CA
+3423347904,3423347919,US
3423347920,3423347927,AU
-3423347928,3423348007,US
+3423347928,3423347951,US
+3423347952,3423347959,TH
+3423347960,3423348007,US
3423348008,3423348023,GB
3423348024,3423348071,US
3423348072,3423348095,AU
@@ -105506,19 +117863,28 @@
3423350720,3423350727,CA
3423350728,3423350735,US
3423350736,3423350743,SA
-3423350744,3423351831,US
+3423350744,3423351551,US
+3423351552,3423351615,PR
+3423351616,3423351831,US
3423351832,3423351839,AU
-3423351840,3423352047,US
+3423351840,3423352023,US
+3423352024,3423352047,CA
3423352048,3423352063,GB
-3423352064,3423352255,US
+3423352064,3423352071,US
+3423352072,3423352079,CA
+3423352080,3423352255,US
3423352256,3423352271,CA
3423352272,3423352439,US
3423352440,3423352447,IL
-3423352448,3423352503,US
+3423352448,3423352495,US
+3423352496,3423352503,CA
3423352504,3423352511,IL
3423352512,3423352679,US
3423352680,3423352687,NL
-3423352688,3423353031,US
+3423352688,3423352695,US
+3423352696,3423352703,MX
+3423352704,3423352711,BR
+3423352712,3423353031,US
3423353032,3423353039,AU
3423353040,3423353143,US
3423353144,3423353151,KH
@@ -105528,15 +117894,19 @@
3423353352,3423353367,PA
3423353368,3423353471,US
3423353472,3423353479,KH
-3423353480,3423353543,US
+3423353480,3423353503,US
+3423353504,3423353511,GB
+3423353512,3423353543,US
3423353544,3423353551,IN
3423353552,3423353791,US
3423353792,3423353807,GB
-3423353808,3423353919,US
+3423353808,3423353855,US
+3423353856,3423353871,CA
+3423353872,3423353919,US
3423353920,3423353927,BB
3423353928,3423354031,US
3423354032,3423354039,IL
-3423354040,3423354047,US
+3423354040,3423354047,PT
3423354048,3423354063,PK
3423354064,3423354095,US
3423354096,3423354103,CA
@@ -105546,18 +117916,30 @@
3423354336,3423354359,PE
3423354360,3423354583,US
3423354584,3423354591,AU
-3423354592,3423354655,US
+3423354592,3423354623,GB
+3423354624,3423354655,US
3423354656,3423354663,AE
-3423354664,3423354783,US
+3423354664,3423354719,US
+3423354720,3423354727,BR
+3423354728,3423354783,US
3423354784,3423354791,PA
-3423354792,3423357111,US
+3423354792,3423356087,US
+3423356088,3423356119,BR
+3423356120,3423356287,US
+3423356288,3423356319,CA
+3423356320,3423356383,US
+3423356384,3423356399,IN
+3423356400,3423357111,US
3423357112,3423357127,AE
-3423357128,3423357311,US
-3423357312,3423357319,CO
-3423357320,3423357511,US
+3423357128,3423357511,US
3423357512,3423357519,DE
-3423357520,3423357527,CO
-3423357528,3423363463,US
+3423357520,3423357839,US
+3423357840,3423357855,IN
+3423357856,3423357863,US
+3423357864,3423357871,AE
+3423357872,3423361023,US
+3423361024,3423361279,AU
+3423361280,3423363463,US
3423363464,3423363471,AU
3423363472,3423363487,CA
3423363488,3423363511,US
@@ -105570,15 +117952,21 @@
3423365776,3423365783,CA
3423365784,3423365903,US
3423365904,3423365911,AE
-3423365912,3423366223,US
+3423365912,3423366127,US
+3423366128,3423366135,SA
+3423366136,3423366223,US
3423366224,3423366239,AU
-3423366240,3423366351,US
+3423366240,3423366295,US
+3423366296,3423366303,CA
+3423366304,3423366351,US
3423366352,3423366367,AU
3423366368,3423366479,US
3423366480,3423366495,IT
3423366496,3423366703,US
3423366704,3423366711,GB
-3423366712,3423366991,US
+3423366712,3423366855,US
+3423366856,3423366871,BR
+3423366872,3423366991,US
3423366992,3423366999,CA
3423367000,3423367223,US
3423367224,3423367231,AU
@@ -105640,13 +118028,11 @@
3423401184,3423401191,RU
3423401192,3423402943,US
3423402944,3423402951,RU
-3423402952,3423412223,US
-3423414272,3423416319,US
+3423402952,3423416319,US
+3423416320,3423417343,CA
3423417344,3423417470,US
3423417471,3423417480,AU
-3423417481,3423417975,US
-3423417976,3423417995,RO
-3423417996,3423462655,US
+3423417481,3423462655,US
3423462656,3423462671,CA
3423462672,3423473663,US
3423473664,3423474655,CA
@@ -105674,9 +118060,7 @@
3423493912,3423493919,TT
3423493920,3423493967,US
3423493968,3423493975,AT
-3423493976,3423498079,US
-3423498080,3423498087,CA
-3423498088,3423533055,US
+3423493976,3423533055,US
3423533056,3423535103,AI
3423535104,3423540087,US
3423540088,3423540095,HN
@@ -105688,8 +118072,7 @@
3423544512,3423544543,CA
3423544544,3423544551,US
3423544552,3423545343,CA
-3423545344,3423549439,US
-3423551488,3423554183,US
+3423545344,3423554183,US
3423554184,3423554191,CA
3423554192,3423554271,US
3423554272,3423554279,GB
@@ -105698,8 +118081,8 @@
3423554768,3423571967,US
3423571968,3423574015,PR
3423574016,3423582207,US
-3423582208,3423584343,CA
-3423584344,3423584351,US
+3423582208,3423584335,CA
+3423584336,3423584351,US
3423584352,3423584359,AU
3423584360,3423584367,CA
3423584368,3423584375,US
@@ -105707,23 +118090,19 @@
3423584424,3423584431,US
3423584432,3423584447,CA
3423584448,3423584455,US
-3423584456,3423584503,CA
-3423584504,3423584511,US
-3423584512,3423584687,CA
+3423584456,3423584687,CA
3423584688,3423584703,US
3423584704,3423584719,CA
3423584720,3423584735,US
3423584736,3423584751,CA
3423584752,3423584767,US
3423584768,3423585535,CA
-3423585536,3423585551,IR
+3423585536,3423585551,MY
3423585552,3423585631,CA
3423585632,3423585647,US
3423585648,3423585775,CA
-3423585776,3423585791,IR
-3423585792,3423585879,CA
-3423585880,3423585887,US
-3423585888,3423585895,CA
+3423585776,3423585791,MY
+3423585792,3423585895,CA
3423585896,3423585903,NL
3423585904,3423585911,CA
3423585912,3423585919,ES
@@ -105735,7 +118114,7 @@
3423586016,3423586031,US
3423586032,3423586039,NZ
3423586040,3423586159,CA
-3423586160,3423586167,IR
+3423586160,3423586167,MY
3423586168,3423586303,CA
3423586304,3423589151,US
3423589152,3423589159,GB
@@ -105769,19 +118148,39 @@
3423651840,3423651967,CA
3423651968,3423651999,US
3423652000,3423653887,CA
-3423653888,3423797247,US
-3423797248,3423827711,CA
+3423653888,3423705599,US
+3423705600,3423705855,CA
+3423705856,3423797503,US
+3423797504,3423801087,CA
+3423801088,3423801343,US
+3423801344,3423823359,CA
+3423823360,3423823871,US
+3423823872,3423827711,CA
3423827712,3423827967,US
-3423827968,3423848447,CA
+3423827968,3423830271,CA
+3423830272,3423830527,US
+3423830528,3423838719,CA
+3423838720,3423838975,US
+3423838976,3423848447,CA
3423848448,3423849471,KN
-3423849984,3423858175,CA
+3423849984,3423850495,CA
+3423850496,3423850751,US
+3423850752,3423854335,CA
+3423854336,3423854591,US
+3423854592,3423858175,CA
3423858176,3423858687,US
-3423858688,3423862783,CA
-3423862784,3424334847,US
+3423858688,3423858943,CA
+3423858944,3423859455,US
+3423859456,3423859711,CA
+3423859712,3423859967,US
+3423859968,3423862527,CA
+3423862528,3424334847,US
3424334848,3424335871,CA
3424335872,3424378879,US
3424378880,3424379135,PR
-3424379136,3424493823,US
+3424379136,3424412415,US
+3424412416,3424412671,CA
+3424412672,3424493823,US
3424493824,3424494079,CA
3424494080,3424494335,US
3424494592,3425173503,US
@@ -105793,7 +118192,9 @@
3425830816,3425830831,US
3425830832,3425855231,CA
3425855232,3425855487,US
-3425855488,3425869167,CA
+3425855488,3425864711,CA
+3425864712,3425864719,US
+3425864720,3425869167,CA
3425869168,3425869183,US
3425869184,3425875391,CA
3425875392,3425875407,US
@@ -105812,17 +118213,20 @@
3426013184,3426013439,IL
3426013440,3426387967,US
3426387968,3426388991,MX
-3426388992,3426646015,US
+3426388992,3426617855,US
+3426618368,3426618687,US
+3426618688,3426618703,NZ
+3426618704,3426618735,US
+3426618736,3426618751,NZ
+3426618752,3426618911,US
+3426618912,3426619071,NZ
+3426619072,3426619167,US
+3426619168,3426619231,NZ
+3426619232,3426646015,US
3426646016,3426647039,CA
-3426647040,3426680831,US
-3426680832,3426682111,KN
-3426682112,3426682367,US
-3426682368,3426682879,KN
-3426682880,3426683647,US
-3426683648,3426683903,KN
-3426683904,3426684159,US
-3426684160,3426684415,KN
-3426684416,3426744319,US
+3426647040,3426729471,US
+3426729472,3426729983,CA
+3426729984,3426744319,US
3426744320,3426746367,CA
3426746368,3427127295,US
3427127296,3427127551,CA
@@ -105830,7 +118234,9 @@
3427128064,3427128831,US
3427129344,3427618303,US
3427618304,3427618559,CA
-3427618560,3427729407,US
+3427618560,3427647743,US
+3427648000,3427648511,CA
+3427648512,3427729407,US
3427729408,3427729663,CA
3427729664,3427730431,US
3427730432,3427730687,BE
@@ -105871,8 +118277,7 @@
3427750912,3427751423,US
3427751424,3427751519,BE
3427751520,3427752447,US
-3427752448,3427752703,NL
-3427752704,3427752959,GB
+3427752448,3427752959,GB
3427752960,3427753215,US
3427753216,3427753471,JP
3427753472,3427753727,FI
@@ -105931,8 +118336,7 @@
3427773696,3427773951,FR
3427773952,3427774719,US
3427774720,3427775231,DE
-3427775232,3427775999,US
-3427776000,3427776511,HK
+3427775232,3427776511,US
3427776512,3427776767,CZ
3427776768,3427777023,US
3427777024,3427777279,NL
@@ -106043,7 +118447,9 @@
3428587776,3428588287,CA
3428588288,3428588543,US
3428588544,3428589055,CA
-3428589056,3428591623,US
+3428589056,3428589311,US
+3428589312,3428589567,CA
+3428589568,3428591623,US
3428591624,3428591663,CA
3428591664,3428591679,US
3428591680,3428591695,CA
@@ -106138,8 +118544,8 @@
3428606384,3428606415,US
3428606416,3428606431,CA
3428606432,3428606463,US
-3428606464,3428606559,CA
-3428606560,3428606655,US
+3428606464,3428606591,CA
+3428606592,3428606655,US
3428606656,3428606687,CA
3428606688,3428606911,US
3428606912,3428606975,IS
@@ -106147,8 +118553,8 @@
3428607744,3428607871,CA
3428607872,3428607999,US
3428608000,3428609023,CA
-3428609024,3428610303,US
-3428610304,3428611071,CA
+3428609024,3428610047,US
+3428610048,3428611071,CA
3428611072,3428611583,US
3428611584,3428611839,CA
3428611840,3428612607,US
@@ -106164,8 +118570,8 @@
3428623616,3428623871,US
3428623872,3428624639,CA
3428624640,3428625407,US
-3428625408,3428627199,CA
-3428627200,3428630015,US
+3428625408,3428628223,CA
+3428628224,3428630015,US
3428630016,3428634623,CA
3428634624,3428634879,US
3428634880,3428635135,CA
@@ -106215,7 +118621,7 @@
3428646016,3428646079,CA
3428646080,3428646143,US
3428646144,3428646911,CA
-3428646912,3428739327,US
+3428679680,3428739327,US
3428739328,3428739343,GB
3428739344,3428743167,US
3428743168,3428744191,CA
@@ -106243,7 +118649,9 @@
3429411584,3429411839,DE
3429411840,3429500927,US
3429500928,3429502975,A2
-3429502976,3429775359,US
+3429502976,3429774599,US
+3429774600,3429774607,BD
+3429774608,3429775359,US
3429775360,3429777407,TC
3429777408,3429892095,US
3429892096,3429957631,CA
@@ -106262,9 +118670,13 @@
3430468864,3430468871,PR
3430468872,3430701055,US
3430701056,3430702079,CA
-3430702080,3430705151,US
+3430702080,3430703871,US
+3430703872,3430704127,PR
+3430704128,3430705151,US
3430705152,3430706175,MX
-3430706176,3430747903,US
+3430706176,3430722303,US
+3430722304,3430722559,CA
+3430722560,3430747903,US
3430747904,3430748159,CA
3430748160,3430749951,US
3430749952,3430750207,CA
@@ -106306,23 +118718,39 @@
3430807296,3430807551,CA
3430807552,3430809087,US
3430809088,3430809343,CA
-3430809344,3430812159,US
+3430809344,3430812671,US
3430812672,3430813183,MX
3430813184,3430842367,US
3430842368,3430842879,DO
3430842880,3430845439,US
3430845440,3430845951,MX
-3430845952,3431114495,US
+3430845952,3430849535,US
+3430849536,3430850047,CA
+3430850048,3431114495,US
3431114496,3431114751,CA
-3431114752,3431467519,US
+3431114752,3431468031,US
3431468032,3431469055,CA
-3431469056,3431596031,US
-3431596032,3431613439,CA
+3431469056,3431596287,US
+3431596288,3431602687,CA
+3431602688,3431602943,US
+3431602944,3431613439,CA
3431613440,3431613695,US
-3431613696,3431657471,CA
+3431613696,3431620095,CA
+3431620096,3431620351,US
+3431620352,3431621375,CA
+3431621376,3431622399,US
+3431622400,3431622655,CA
+3431622656,3431622911,US
+3431622912,3431624703,CA
+3431624704,3431624959,US
+3431624960,3431638783,CA
+3431638784,3431639039,US
+3431639040,3431641855,CA
+3431641856,3431642623,US
+3431642624,3431657471,CA
3431657472,3431658495,US
-3431658496,3431661567,CA
-3431661568,3431745023,US
+3431658496,3431661311,CA
+3431661312,3431745023,US
3431745024,3431745279,BE
3431745280,3431745791,US
3431745792,3431746047,GB
@@ -106340,7 +118768,7 @@
3431759616,3431759871,DE
3431759872,3431783431,US
3431783432,3431783435,NL
-3431783436,3432003839,US
+3431783436,3432004607,US
3432004608,3432005631,CA
3432005632,3432009215,US
3432009216,3432009471,PR
@@ -106378,19 +118806,33 @@
3432572800,3432572927,DO
3432572928,3432585215,US
3432585216,3432585727,MX
-3432586240,3432660991,US
+3432585728,3432613631,US
+3432613632,3432613887,CA
+3432613888,3432634111,US
+3432634112,3432634367,CA
+3432634368,3432660991,US
3432660992,3432662527,DE
3432662528,3432662531,PT
3432662532,3432663039,DE
-3432663040,3432806655,US
+3432663040,3432689151,US
+3432689152,3432689663,CA
+3432689664,3432807423,US
3432807424,3432808447,CA
3432808448,3433581312,US
3433581313,3433581567,CA
-3433581568,3433955327,US
-3433955328,3433981951,CA
+3433581568,3433955583,US
+3433955584,3433964799,CA
+3433964800,3433965055,US
+3433965056,3433967359,CA
+3433967360,3433967615,US
+3433967616,3433981951,CA
3433981952,3433983999,US
-3433984000,3434020863,CA
-3434020864,3434096063,US
+3433984000,3434012671,CA
+3434012672,3434012927,US
+3434012928,3434014719,CA
+3434014720,3434015231,US
+3434015232,3434020607,CA
+3434020608,3434096063,US
3434096064,3434096079,AU
3434096080,3434097919,US
3434097920,3434097983,GB
@@ -106444,17 +118886,21 @@
3434917376,3434917887,AG
3434917888,3435069439,US
3435069440,3435134975,CA
-3435134976,3435507711,US
+3435134976,3435271423,US
+3435271424,3435271679,CA
+3435271680,3435507711,US
3435507712,3435511807,CA
-3435511808,3436249087,US
-3436249088,3436255743,CA
+3435511808,3435518463,US
+3435518464,3435518527,GI
+3435518528,3436249343,US
+3436249344,3436255743,CA
3436255744,3436256255,US
3436256256,3436282367,CA
3436282368,3436282623,US
3436282624,3436289791,CA
3436289792,3436290047,US
-3436290048,3436314623,CA
-3436314624,3436476415,US
+3436290048,3436314367,CA
+3436314368,3436476415,US
3436476416,3436478463,AW
3436478464,3436492799,US
3436492800,3436493055,NL
@@ -106493,7 +118939,9 @@
3437332480,3437332735,US
3437332736,3437334015,CA
3437334016,3437334271,US
-3437334272,3437336063,CA
+3437334272,3437334783,CA
+3437334784,3437335551,US
+3437335552,3437336063,CA
3437336064,3437336319,US
3437336320,3437341695,CA
3437341696,3437341951,US
@@ -106578,7 +119026,9 @@
3437756160,3437756415,IE
3437756416,3437772799,US
3437772800,3437776895,CA
-3437776896,3437789863,US
+3437776896,3437789847,US
+3437789848,3437789855,IN
+3437789856,3437789863,US
3437789864,3437789871,AU
3437789872,3437790143,US
3437790144,3437790159,CA
@@ -106600,7 +119050,9 @@
3437792280,3437792287,SE
3437792288,3437792415,US
3437792416,3437792423,AU
-3437792424,3437792735,US
+3437792424,3437792527,US
+3437792528,3437792535,MX
+3437792536,3437792735,US
3437792736,3437792743,CA
3437792744,3437792775,US
3437792776,3437792783,CA
@@ -106727,7 +119179,9 @@
3437805232,3437805239,FR
3437805240,3437805271,US
3437805272,3437805279,IL
-3437805280,3437815807,US
+3437805280,3437814623,US
+3437814624,3437814631,CA
+3437814632,3437815807,US
3437815808,3437815815,IN
3437815816,3437815991,US
3437815992,3437815999,CA
@@ -106750,7 +119204,9 @@
3437817648,3437817663,FR
3437817664,3437817855,US
3437817856,3437817983,BD
-3437817984,3437819871,US
+3437817984,3437819471,US
+3437819472,3437819479,IL
+3437819480,3437819871,US
3437819872,3437819887,FR
3437819888,3437821823,US
3437821824,3437821887,BD
@@ -106793,13 +119249,19 @@
3438550448,3438550463,US
3438550464,3438552271,CA
3438552272,3438552287,US
-3438552288,3438570031,CA
+3438552288,3438559647,CA
+3438559648,3438559679,US
+3438559680,3438570031,CA
3438570032,3438570039,MY
-3438570040,3438590975,CA
+3438570040,3438570495,CA
+3438570496,3438570527,US
+3438570528,3438590975,CA
3438590976,3438591231,TC
3438591232,3438592255,CA
3438592256,3438592263,US
-3438592264,3438600319,CA
+3438592264,3438592527,CA
+3438592528,3438592535,US
+3438592536,3438600319,CA
3438600320,3438600351,US
3438600352,3438608383,CA
3438608384,3438813183,US
@@ -106961,7 +119423,9 @@
3448563016,3448563031,GB
3448563032,3448569055,US
3448569056,3448569087,MX
-3448569088,3449001245,US
+3448569088,3448569735,US
+3448569736,3448569743,GB
+3448569744,3449001245,US
3449001246,3449001246,MC
3449001247,3449159679,US
3449159680,3449160703,CA
@@ -107187,8 +119651,8 @@
3451371776,3451482111,US
3451482112,3451486207,CA
3451486208,3451506687,US
-3451506688,3451507199,BR
-3451507200,3451715583,US
+3451506688,3451507711,BR
+3451507712,3451715583,US
3451715584,3451737343,CA
3451737344,3451737599,US
3451737600,3451744255,CA
@@ -107304,7 +119768,11 @@
3453039168,3453039183,AU
3453039184,3453039199,US
3453039200,3453039215,CA
-3453039216,3453091839,US
+3453039216,3453039623,US
+3453039624,3453039631,AU
+3453039632,3453039919,US
+3453039920,3453039935,AU
+3453039936,3453091839,US
3453091840,3453101055,CA
3453101056,3453101311,US
3453101312,3453139455,CA
@@ -107543,7 +120011,12 @@
3453555712,3453555767,GB
3453555768,3453599999,US
3453600000,3453600767,GB
-3453600768,3453607935,US
+3453600768,3453601863,US
+3453601864,3453601871,GB
+3453601872,3453601879,CH
+3453601880,3453602175,US
+3453602176,3453602183,GB
+3453602184,3453607935,US
3453607936,3453608959,KN
3453608960,3453609983,LC
3453609984,3453610495,AG
@@ -107595,9 +120068,9 @@
3454703136,3454703143,IN
3454703144,3454703255,US
3454703256,3454703263,CA
-3454703264,3454703807,US
-3454703808,3454703823,AF
-3454703824,3454705151,US
+3454703264,3454703647,US
+3454703648,3454703663,CA
+3454703664,3454705151,US
3454705152,3454705215,GB
3454705216,3454708927,US
3454708928,3454708991,IN
@@ -107772,9 +120245,7 @@
3456303104,3456311295,JP
3456311296,3456892927,US
3456892928,3456958463,CA
-3456958464,3457040383,US
-3457040384,3457040639,A1
-3457040640,3457246367,US
+3456958464,3457246367,US
3457246368,3457246383,SE
3457246384,3457312191,US
3457312192,3457312255,IE
@@ -107814,7 +120285,9 @@
3457859840,3457860095,CA
3457860096,3457862847,US
3457862848,3457862911,CA
-3457862912,3458141631,US
+3457862912,3458084927,US
+3458084928,3458084935,CA
+3458084936,3458141631,US
3458141632,3458141655,GB
3458141656,3458143863,US
3458143864,3458143871,AE
@@ -107828,7 +120301,11 @@
3458144112,3458144119,CA
3458144120,3458144415,US
3458144416,3458144423,DE
-3458144424,3458195455,US
+3458144424,3458145727,US
+3458145728,3458145735,DE
+3458145736,3458145743,US
+3458145744,3458145759,DE
+3458145760,3458195455,US
3458195456,3458196479,SG
3458196480,3458765631,US
3458765632,3458765695,CA
@@ -107876,7 +120353,7 @@
3459266624,3459266655,KN
3459266656,3459267327,AG
3459267328,3459267583,AI
-3459267584,3459267839,LC
+3459267584,3459267839,AG
3459267840,3459268095,DM
3459268096,3459268607,AG
3459268608,3459273727,US
@@ -107995,7 +120472,8 @@
3459373312,3459375103,CL
3459375104,3459376127,VE
3459376128,3459448831,US
-3459448832,3459450623,CA
+3459448832,3459449087,PR
+3459449088,3459450623,CA
3459450624,3459450879,US
3459450880,3459455487,CA
3459455488,3459455743,US
@@ -108015,7 +120493,9 @@
3459731456,3459735551,CA
3459735552,3459745535,US
3459745536,3459745791,IT
-3459745792,3460104703,US
+3459745792,3459850431,US
+3459850432,3459850495,CA
+3459850496,3460104703,US
3460104704,3460105215,MX
3460105216,3460108895,US
3460108896,3460108903,FI
@@ -108026,8 +120506,8 @@
3460113048,3460114431,US
3460114432,3460116479,SR
3460116480,3460161535,US
-3460161536,3460163583,PR
-3460163584,3460374527,US
+3460161536,3460165631,PR
+3460165632,3460374527,US
3460374528,3460375551,MX
3460375552,3460453631,US
3460453632,3460453887,BS
@@ -108039,14 +120519,18 @@
3460854832,3460854847,VE
3460854848,3460854911,US
3460854912,3460854943,GB
-3460854944,3460855247,US
+3460854944,3460855015,US
+3460855016,3460855031,AU
+3460855032,3460855195,US
+3460855196,3460855199,AU
+3460855200,3460855247,US
3460855248,3460855255,AU
3460855256,3460855263,VE
3460855264,3460855271,US
3460855272,3460855279,GB
3460855280,3460855287,CA
3460855288,3460855311,US
-3460855312,3460855319,CA
+3460855312,3460855319,NL
3460855320,3460855463,US
3460855464,3460855471,SA
3460855472,3460855495,US
@@ -108055,20 +120539,21 @@
3460855536,3460855543,MX
3460855544,3460855551,AU
3460855552,3460855631,US
-3460855632,3460855647,IT
+3460855632,3460855647,CA
3460855648,3460855703,US
3460855704,3460855711,AU
3460855712,3460855743,US
3460855744,3460855775,CA
3460855776,3460855807,US
3460855808,3460855815,GB
-3460855816,3460855823,NZ
-3460855824,3460855855,US
+3460855816,3460855855,US
3460855856,3460855863,GB
3460855864,3460855871,US
3460855872,3460855879,GB
3460855880,3460855887,GU
-3460855888,3460856007,US
+3460855888,3460855991,US
+3460855992,3460855999,GB
+3460856000,3460856007,US
3460856008,3460856015,CA
3460856016,3460856119,US
3460856120,3460856127,GB
@@ -108079,21 +120564,28 @@
3460856216,3460856223,GB
3460856224,3460856287,US
3460856288,3460856295,IN
-3460856296,3460856383,US
+3460856296,3460856351,US
+3460856352,3460856355,TZ
+3460856356,3460856383,US
3460856384,3460856399,GB
3460856400,3460856447,US
3460856448,3460856495,GB
3460856496,3460856559,US
3460856560,3460856575,CA
-3460856576,3460856607,US
-3460856608,3460856639,NZ
+3460856576,3460856623,US
+3460856624,3460856639,NZ
3460856640,3460856815,US
3460856816,3460856831,NZ
3460856832,3460857055,US
3460857056,3460857087,NZ
3460857088,3460857151,US
3460857152,3460857183,CA
-3460857184,3460857431,US
+3460857184,3460857343,US
+3460857344,3460857359,CA
+3460857360,3460857367,US
+3460857368,3460857375,PL
+3460857376,3460857383,GB
+3460857384,3460857431,US
3460857432,3460857439,VE
3460857440,3460857463,US
3460857464,3460857471,GB
@@ -108448,9 +120940,15 @@
3461286336,3461286399,US
3461286400,3461286463,FR
3461286464,3461286471,GB
-3461286472,3461330943,US
+3461286472,3461286503,US
+3461286504,3461286511,GB
+3461286512,3461286519,US
+3461286520,3461286543,GB
+3461286544,3461330943,US
3461330944,3461331199,SG
-3461331200,3461331295,US
+3461331200,3461331247,US
+3461331248,3461331263,SG
+3461331264,3461331295,US
3461331296,3461331311,SG
3461331312,3461331327,US
3461331328,3461331551,SG
@@ -108472,7 +120970,9 @@
3461514752,3461516287,CA
3461516288,3461516543,IL
3461516544,3461517055,CA
-3461517056,3461554175,US
+3461517056,3461532607,US
+3461532608,3461532623,CA
+3461532624,3461554175,US
3461554176,3461556223,CA
3461558272,3461597887,US
3461597888,3461597951,CO
@@ -108570,15 +121070,22 @@
3462571664,3462571671,CA
3462571672,3462593791,US
3462593792,3462594559,GN
-3462594560,3462633727,US
+3462594560,3462633471,US
+3462633472,3462633727,SG
3462633728,3462633799,BV
3462633800,3462633823,US
3462633824,3462633855,SG
-3462633856,3462634247,US
+3462633856,3462633983,US
+3462633984,3462634239,SG
+3462634240,3462634247,US
3462634248,3462634271,SG
3462634272,3462634367,AE
3462634368,3462634495,SG
-3462634496,3462889479,US
+3462634496,3462634751,US
+3462634752,3462635007,SG
+3462635008,3462635263,US
+3462635264,3462635519,SG
+3462635520,3462889479,US
3462889480,3462889487,GB
3462889488,3462991183,US
3462991184,3462991191,CA
@@ -108629,8 +121136,8 @@
3464128000,3464128255,DE
3464128256,3464129535,US
3464129536,3464130047,DE
-3464130048,3464167423,US
-3464167424,3464171775,CA
+3464130048,3464167679,US
+3464167680,3464171775,CA
3464171776,3464172031,US
3464172032,3464180735,CA
3464180736,3464184487,US
@@ -108640,13 +121147,18 @@
3464185760,3464185791,PR
3464185792,3464190463,US
3464190464,3464190719,CA
-3464190720,3464191799,US
+3464190720,3464191775,US
+3464191776,3464191783,ES
+3464191784,3464191799,US
3464191800,3464191807,AF
3464191808,3464191815,US
3464191816,3464191823,CA
3464191824,3464191831,US
-3464191832,3464191847,CA
-3464191848,3464195543,US
+3464191832,3464191839,CA
+3464191840,3464191911,US
+3464191912,3464191919,ES
+3464191920,3464191927,SG
+3464191928,3464195543,US
3464195544,3464195551,IT
3464195552,3464195887,US
3464195888,3464195895,PR
@@ -108658,7 +121170,7 @@
3464196160,3464196175,US
3464196176,3464196183,AU
3464196184,3464196191,IT
-3464196192,3464208383,US
+3464196192,3464200191,US
3464208384,3464216575,CA
3464216576,3464309903,US
3464309904,3464309911,CA
@@ -108670,18 +121182,28 @@
3464340480,3464341503,CA
3464341504,3464341759,US
3464341760,3464341775,JP
-3464341776,3464341823,US
+3464341776,3464341783,AU
+3464341784,3464341807,US
+3464341808,3464341815,JP
+3464341816,3464341823,US
3464341824,3464341831,PT
-3464341832,3464342543,US
+3464341832,3464341871,US
+3464341872,3464341879,VN
+3464341880,3464341895,US
+3464341896,3464341903,GB
+3464341904,3464341927,US
+3464341928,3464341935,CV
+3464341936,3464341951,US
+3464341952,3464341959,CZ
+3464341960,3464342543,US
3464342544,3464342559,SE
-3464342560,3464342703,US
+3464342560,3464342567,US
+3464342568,3464342575,PT
+3464342576,3464342703,US
3464342704,3464342711,JP
-3464342712,3464342871,US
-3464342872,3464342879,ZA
+3464342712,3464342879,US
3464342880,3464342887,GB
-3464342888,3464343111,US
-3464343112,3464343119,CN
-3464343120,3464343215,US
+3464342888,3464343215,US
3464343216,3464343223,CA
3464343224,3464343239,US
3464343240,3464343247,MX
@@ -108751,7 +121273,8 @@
3465177088,3465179135,PE
3465179136,3465412607,US
3465412608,3465412871,HK
-3465412872,3465412927,US
+3465412872,3465412895,GB
+3465412896,3465412927,US
3465412928,3465413055,HK
3465413056,3465413119,US
3465413120,3465413127,HK
@@ -108759,7 +121282,21 @@
3465413376,3465413383,HK
3465413384,3465462783,US
3465462784,3465463039,GB
-3465463040,3465510911,US
+3465463040,3465463279,US
+3465463280,3465463295,GB
+3465463296,3465466687,US
+3465466688,3465466703,GB
+3465466704,3465466879,US
+3465466880,3465466975,GB
+3465466976,3465467071,US
+3465467072,3465467079,GB
+3465467080,3465468079,US
+3465468080,3465468087,GB
+3465468088,3465468351,US
+3465468352,3465468367,FI
+3465468368,3465468383,US
+3465468384,3465468399,GB
+3465468400,3465510911,US
3465510912,3465543679,JP
3465543680,3465982991,US
3465982992,3465983007,GB
@@ -108785,7 +121322,9 @@
3466283328,3466283391,CA
3466283392,3466286103,US
3466286104,3466286111,DE
-3466286112,3466313727,US
+3466286112,3466290687,US
+3466290688,3466290943,CH
+3466290944,3466313727,US
3466313728,3466317823,CA
3466317824,3466489855,US
3466489856,3466490111,CA
@@ -108805,7 +121344,9 @@
3466756096,3466772479,CA
3466772480,3466846207,US
3466846208,3466854399,CA
-3466854400,3467051007,US
+3466854400,3466958079,US
+3466958080,3466958335,CA
+3466958336,3467051007,US
3467051008,3467116543,CA
3467116544,3467145351,US
3467145352,3467145359,DE
@@ -109135,9 +121676,7 @@
3468128256,3468296191,US
3468296192,3468309503,CA
3468309504,3468309759,US
-3468309760,3468319999,CA
-3468320000,3468320255,US
-3468320256,3468320351,CA
+3468309760,3468320351,CA
3468320352,3468320383,US
3468320384,3468361727,CA
3468361728,3468427359,US
@@ -109202,9 +121741,7 @@
3468628512,3468628607,US
3468628608,3468628927,CA
3468628928,3468628991,US
-3468628992,3468629311,CA
-3468629312,3468629319,US
-3468629320,3468631583,CA
+3468628992,3468631583,CA
3468631584,3468631615,US
3468631616,3468631679,CA
3468631680,3468631695,US
@@ -109242,18 +121779,19 @@
3469901824,3470131199,US
3470131200,3470137343,AG
3470137344,3470139391,VG
-3470139392,3470143487,US
-3470147584,3470148095,US
+3470139392,3470148095,US
3470148096,3470148351,CA
3470148352,3470148863,US
3470148864,3470149119,CA
3470149120,3470150655,US
3470150656,3470150911,CA
-3470150912,3470151935,US
-3470151936,3470152703,CA
-3470152704,3470153983,US
-3470153984,3470154239,CA
-3470154240,3470184454,US
+3470150912,3470151295,US
+3470151296,3470151359,CA
+3470151360,3470151679,US
+3470151680,3470152703,CA
+3470152704,3470152959,US
+3470152960,3470152975,CA
+3470152976,3470184454,US
3470184455,3470184458,LK
3470184459,3470184460,RU
3470184461,3470184476,US
@@ -109727,64 +122265,65 @@
3470188522,3470188541,HK
3470188542,3470192639,US
3470192640,3470196735,CA
-3470196736,3470360631,US
-3470360632,3470360639,CA
+3470196736,3470360623,US
+3470360624,3470360639,CA
3470360640,3470360687,US
3470360688,3470360695,AF
3470360696,3470360799,US
3470360800,3470360807,CA
-3470360808,3470361039,US
+3470360808,3470360815,US
+3470360816,3470360823,AU
+3470360824,3470361039,US
3470361040,3470361055,CA
-3470361056,3470361655,US
-3470361656,3470361671,CA
+3470361056,3470361487,US
+3470361488,3470361495,SG
+3470361496,3470361663,US
+3470361664,3470361671,CA
3470361672,3470361703,US
3470361704,3470361711,AF
-3470361712,3470361935,US
-3470361936,3470361951,CA
-3470361952,3470361983,US
-3470361984,3470361991,CA
-3470361992,3470362111,US
+3470361712,3470362111,US
3470362112,3470362119,CA
3470362120,3470362127,AU
3470362128,3470362135,US
3470362136,3470362143,NL
3470362144,3470362159,US
3470362160,3470362167,AF
-3470362168,3470362263,US
+3470362168,3470362175,US
+3470362176,3470362191,CA
+3470362192,3470362263,US
3470362264,3470362271,NZ
3470362272,3470362319,US
3470362320,3470362335,AF
3470362336,3470362455,US
-3470362456,3470362479,CA
-3470362480,3470362495,US
-3470362496,3470362503,CA
-3470362504,3470362559,US
+3470362456,3470362471,CA
+3470362472,3470362487,US
+3470362488,3470362495,ES
+3470362496,3470362559,US
3470362560,3470362623,CA
-3470362624,3470362783,US
-3470362784,3470362791,AF
-3470362792,3470362847,US
-3470362848,3470362895,CA
-3470362896,3470363295,US
-3470363296,3470363303,BR
-3470363304,3470363391,US
-3470363392,3470363399,MX
-3470363400,3470363407,GB
-3470363408,3470363423,US
-3470363424,3470363455,CA
-3470363456,3470363535,US
+3470362624,3470362791,US
+3470362792,3470362799,SG
+3470362800,3470362847,US
+3470362848,3470362855,AR
+3470362856,3470362895,US
+3470362896,3470362911,AU
+3470362912,3470363423,US
+3470363424,3470363439,CA
+3470363440,3470363535,US
3470363536,3470363543,CA
-3470363544,3470363551,AF
-3470363552,3470363559,US
+3470363544,3470363555,AF
+3470363556,3470363559,US
3470363560,3470363567,CA
-3470363568,3470363871,US
-3470363872,3470363879,CA
-3470363880,3470363967,US
+3470363568,3470363903,US
+3470363904,3470363919,CA
+3470363920,3470363967,US
3470363968,3470363983,CA
3470363984,3470364415,US
3470364416,3470364479,CA
-3470364480,3470364495,HN
+3470364480,3470364495,US
3470364496,3470364503,CA
-3470364504,3470458879,US
+3470364504,3470364655,US
+3470364656,3470364663,CA
+3470364664,3470458879,US
3470458880,3470475263,KR
3470475264,3470558207,US
3470558208,3470559231,HK
@@ -109797,9 +122336,8 @@
3470643648,3470645511,US
3470645512,3470645519,GB
3470645520,3470645527,FR
-3470645528,3470645535,BR
-3470645536,3470645559,US
-3470645560,3470645567,IT
+3470645528,3470645559,US
+3470645560,3470645567,RU
3470645568,3470645575,CA
3470645576,3470645583,US
3470645584,3470645591,FR
@@ -109808,7 +122346,8 @@
3470645632,3470645655,US
3470645656,3470645663,RU
3470645664,3470645687,US
-3470645688,3470645703,ES
+3470645688,3470645695,ES
+3470645696,3470645703,NL
3470645704,3470645731,US
3470645732,3470645735,AU
3470645736,3470645739,CN
@@ -109864,8 +122403,7 @@
3470646608,3470646623,ZA
3470646624,3470646631,DE
3470646632,3470646639,BR
-3470646640,3470646663,US
-3470646664,3470646671,PL
+3470646640,3470646671,US
3470646672,3470646679,BR
3470646680,3470646687,CA
3470646688,3470646703,US
@@ -109888,8 +122426,8 @@
3470646912,3470646919,RU
3470646920,3470646935,US
3470646936,3470646943,CA
-3470646944,3470646959,BR
-3470646960,3470646983,US
+3470646944,3470646951,BR
+3470646952,3470646983,US
3470646984,3470646991,AR
3470646992,3470646999,CN
3470647000,3470651391,US
@@ -109935,8 +122473,7 @@
3470659488,3470659519,IL
3470659520,3470659567,US
3470659568,3470659575,BR
-3470659576,3470659583,DE
-3470659584,3470659711,US
+3470659576,3470659711,US
3470659712,3470659719,BD
3470659720,3470659735,US
3470659736,3470659743,AU
@@ -110029,11 +122566,7 @@
3470754304,3470754559,PE
3470754560,3470755839,US
3470755840,3470756095,ZA
-3470756096,3470757887,US
-3470757888,3470760959,KN
-3470760960,3470761215,US
-3470761216,3470761727,KN
-3470761728,3470761983,US
+3470756096,3470761983,US
3470761984,3470762751,CA
3470762752,3470762759,NL
3470762760,3470767871,CA
@@ -110139,7 +122672,9 @@
3474548224,3474548479,JP
3474548480,3474623599,US
3474623600,3474623615,CA
-3474623616,3475112191,US
+3474623616,3475029927,US
+3475029928,3475029935,CA
+3475029936,3475112191,US
3475112192,3475113215,CA
3475113216,3475115007,US
3475115008,3475120127,CA
@@ -110166,7 +122701,9 @@
3475745536,3475752703,US
3475752704,3475752959,AN
3475752960,3475881983,US
-3475881984,3475883487,CA
+3475881984,3475883007,CA
+3475883008,3475883039,US
+3475883040,3475883487,CA
3475883488,3475883519,US
3475883520,3475884031,CA
3475884032,3475884287,US
@@ -110203,7 +122740,9 @@
3476451376,3476455423,CA
3476455424,3476718616,US
3476718617,3476718617,IN
-3476718618,3476720363,US
+3476718618,3476720125,US
+3476720126,3476720126,GB
+3476720127,3476720363,US
3476720364,3476720367,LV
3476720368,3476720377,US
3476720378,3476720381,PT
@@ -110226,19 +122765,23 @@
3476722192,3476722207,BE
3476722208,3476722239,IT
3476722240,3476722255,SA
-3476722256,3476722271,US
-3476722272,3476722319,IT
+3476722256,3476722287,US
+3476722288,3476722319,IT
3476722320,3476722527,US
3476722528,3476722543,AU
3476722544,3476722591,US
3476722592,3476722607,GB
-3476722608,3476722759,US
+3476722608,3476722719,US
+3476722720,3476722727,CO
+3476722728,3476722759,US
3476722760,3476722767,IN
3476722768,3476722775,US
3476722776,3476722783,GB
3476722784,3476723263,US
3476723264,3476723271,NL
-3476723272,3476725183,US
+3476723272,3476723670,US
+3476723671,3476723674,GB
+3476723675,3476725183,US
3476725184,3476725215,ZA
3476725216,3476725247,US
3476725248,3476725255,CA
@@ -110252,9 +122795,23 @@
3476725400,3476725415,CA
3476725416,3476725423,US
3476725424,3476725431,GB
-3476725432,3476732373,US
+3476725432,3476731909,US
+3476731910,3476731913,IN
+3476731914,3476732049,US
+3476732050,3476732053,IN
+3476732054,3476732073,US
+3476732074,3476732077,IN
+3476732078,3476732113,US
+3476732114,3476732117,IN
+3476732118,3476732341,US
+3476732342,3476732345,MX
+3476732346,3476732373,US
3476732374,3476732377,MX
-3476732378,3476881407,US
+3476732378,3476733603,US
+3476733604,3476733604,MX
+3476733605,3476733913,US
+3476733914,3476733914,MX
+3476733915,3476881407,US
3476881408,3476946943,CA
3476946944,3477161503,US
3477161504,3477161519,TN
@@ -110262,19 +122819,25 @@
3477161552,3477161567,TN
3477161568,3477161615,US
3477161616,3477161623,TN
-3477161624,3477161631,US
-3477161632,3477161663,TN
-3477161664,3477161775,US
+3477161624,3477161775,US
3477161776,3477161791,TN
3477161792,3477311871,US
3477311872,3477312255,A1
3477312256,3477312511,US
3477312512,3477313023,A1
-3477313024,3478114303,US
+3477313024,3477313279,US
+3477313280,3477313535,A1
+3477313536,3478114303,US
3478114304,3478118399,PE
3478118400,3478192127,US
3478192128,3478257663,CA
-3478257664,3478294527,US
+3478257664,3478261855,US
+3478261856,3478261887,SG
+3478261888,3478261903,US
+3478261904,3478261935,SG
+3478261936,3478262271,US
+3478262272,3478262279,SG
+3478262280,3478294527,US
3478294528,3478294543,GB
3478294544,3478323391,US
3478323392,3478323399,CA
@@ -110320,7 +122883,9 @@
3479290744,3479290751,EC
3479290752,3479290767,US
3479290768,3479290783,CA
-3479290784,3479291263,US
+3479290784,3479291071,US
+3479291072,3479291087,CA
+3479291088,3479291263,US
3479291264,3479291287,CA
3479291288,3479291671,US
3479291672,3479291679,CA
@@ -110371,13 +122936,16 @@
3479294664,3479294671,AU
3479294672,3479294775,US
3479294776,3479294783,CA
-3479294784,3479295015,US
+3479294784,3479294911,US
+3479294912,3479294919,CA
+3479294920,3479295015,US
3479295016,3479295023,MY
3479295024,3479295071,US
3479295072,3479295079,CR
3479295080,3479295095,US
3479295096,3479295103,PR
-3479295104,3479295359,US
+3479295104,3479295111,CA
+3479295112,3479295359,US
3479295360,3479295367,AU
3479295368,3479295519,US
3479295520,3479295527,CA
@@ -110385,7 +122953,9 @@
3479295584,3479295591,NL
3479295592,3479295703,US
3479295704,3479295735,MY
-3479295736,3479296007,US
+3479295736,3479295767,US
+3479295768,3479295775,MY
+3479295776,3479296007,US
3479296008,3479296015,CA
3479296016,3479296071,US
3479296072,3479296079,GB
@@ -110477,7 +123047,9 @@
3479923072,3479923079,US
3479923080,3479961599,CA
3479961600,3480223743,US
-3480223744,3480226959,CA
+3480223744,3480226415,CA
+3480226416,3480226423,US
+3480226424,3480226959,CA
3480226960,3480226967,US
3480226968,3480227455,CA
3480227456,3480227463,US
@@ -110487,7 +123059,9 @@
3480256512,3480284159,US
3480284160,3480284671,CA
3480284672,3480444927,US
-3480444928,3480446335,CA
+3480444928,3480446231,CA
+3480446232,3480446239,US
+3480446240,3480446335,CA
3480446336,3480446463,US
3480446464,3480446575,CA
3480446576,3480446583,ES
@@ -110687,9 +123261,7 @@
3482775552,3482778375,PR
3482778376,3482778383,US
3482778384,3482779647,PR
-3482779648,3482864191,US
-3482864192,3482864255,A1
-3482864256,3482910719,US
+3482779648,3482910719,US
3482910720,3482927103,CA
3482927104,3483296004,US
3483296005,3483296005,BE
@@ -110722,7 +123294,11 @@
3483877376,3483893759,CA
3483893760,3484013055,US
3484013056,3484013567,DE
-3484013568,3484450815,US
+3484013568,3484438527,US
+3484438528,3484438783,ZM
+3484438784,3484439551,US
+3484439552,3484439807,ZM
+3484439808,3484450815,US
3484450816,3484451839,CA
3484451840,3484451871,US
3484451872,3484455263,CA
@@ -110823,9 +123399,7 @@
3484472184,3484472199,US
3484472200,3484472223,CA
3484472224,3484472263,US
-3484472264,3484472311,CA
-3484472312,3484472319,US
-3484472320,3484472839,CA
+3484472264,3484472839,CA
3484472840,3484472855,US
3484472856,3484473007,CA
3484473008,3484473015,US
@@ -110835,11 +123409,11 @@
3484473048,3484473055,US
3484473056,3484473087,CA
3484473088,3484473151,US
-3484473152,3484473343,CA
-3484473344,3484473727,US
+3484473152,3484473599,CA
+3484473600,3484473727,US
3484473728,3484473791,CA
-3484473792,3484474111,US
-3484474112,3484477183,CA
+3484473792,3484473855,US
+3484473856,3484477183,CA
3484477184,3484477695,US
3484477696,3484478207,CA
3484478208,3484478719,US
@@ -111029,7 +123603,7 @@
3486612992,3486613247,US
3486613248,3486613759,GB
3486613760,3486614015,ES
-3486614016,3486614271,DE
+3486614016,3486614271,US
3486614272,3486614527,GB
3486614528,3486614783,US
3486614784,3486615039,FR
@@ -111167,7 +123741,17 @@
3487203072,3487203327,DK
3487203328,3487236095,US
3487236096,3487301631,CA
-3487301632,3487766527,US
+3487301632,3487507327,US
+3487507328,3487507335,CA
+3487507336,3487507343,US
+3487507344,3487507359,CA
+3487507360,3487507375,US
+3487507376,3487507391,CA
+3487507392,3487559711,US
+3487559712,3487559743,AU
+3487559744,3487559855,US
+3487559856,3487559871,AU
+3487559872,3487766527,US
3487766528,3487768575,CA
3487768576,3487842303,US
3487842304,3487858687,CA
@@ -111282,9 +123866,7 @@
3490732432,3490732447,CA
3490732448,3490786047,US
3490786048,3490786303,PR
-3490786304,3490796799,US
-3490796800,3490797055,CA
-3490797056,3490879231,US
+3490786304,3490879231,US
3490879232,3490879487,PR
3490879488,3490922495,US
3490922496,3490924543,CO
@@ -111314,7 +123896,9 @@
3491637248,3491637759,CO
3491637760,3491651583,US
3491651584,3491659775,VI
-3491659776,3491736063,US
+3491659776,3491712927,US
+3491712928,3491712959,TW
+3491712960,3491736063,US
3491736064,3491736319,PR
3491736320,3491743743,US
3491743744,3491745791,CO
@@ -111324,7 +123908,9 @@
3491780608,3491781631,EC
3491781632,3491826687,US
3491826688,3491826943,AN
-3491826944,3491921663,US
+3491826944,3491832575,US
+3491832576,3491832583,PR
+3491832584,3491921663,US
3491921664,3491921919,PR
3491921920,3491955711,US
3491955712,3491956735,CO
@@ -111363,7 +123949,9 @@
3492646624,3492646639,IL
3492646640,3492669695,US
3492669696,3492671487,PA
-3492671488,3492795775,US
+3492671488,3492730415,US
+3492730416,3492730431,CA
+3492730432,3492795775,US
3492795776,3492795903,AR
3492795904,3492827391,US
3492827392,3492827423,CA
@@ -111374,7 +123962,13 @@
3492827520,3492827647,AU
3492827648,3492827903,US
3492827904,3492827967,AU
-3492827968,3493018639,US
+3492827968,3492924991,US
+3492924992,3492925007,DE
+3492925008,3492947087,US
+3492947088,3492947103,DE
+3492947104,3492963087,US
+3492963088,3492963103,FR
+3492963104,3493018639,US
3493018640,3493018655,AE
3493018656,3493069055,US
3493069056,3493069311,A2
@@ -111393,18 +123987,13 @@
3493081600,3493082623,PY
3493082624,3493089023,US
3493089024,3493089279,A2
-3493089280,3493091327,US
-3493091328,3493092351,BO
-3493092352,3493092607,NA
-3493092608,3493138207,US
+3493089280,3493138207,US
3493138208,3493138239,DE
3493138240,3493141279,US
3493141280,3493141311,CY
3493141312,3493244927,US
3493244928,3493249023,PR
-3493249024,3493728959,US
-3493728960,3493728991,A2
-3493728992,3493866495,US
+3493249024,3493866495,US
3493866496,3493867519,VG
3493867520,3493874687,US
3493874688,3493875711,BM
@@ -111416,7 +124005,9 @@
3493901024,3493901031,HK
3493901032,3493901311,US
3493901312,3493901567,AE
-3493901568,3493901599,IL
+3493901568,3493901579,US
+3493901580,3493901583,TT
+3493901584,3493901599,VG
3493901600,3493901759,US
3493901760,3493901767,AE
3493901768,3493901791,US
@@ -111425,17 +124016,18 @@
3493901952,3493901983,CA
3493901984,3493902215,US
3493902216,3493902223,CA
-3493902224,3493903551,US
+3493902224,3493902295,US
+3493902296,3493902303,NG
+3493902304,3493903551,US
3493903552,3493903567,KW
-3493903568,3493906431,US
-3493906944,3493907199,US
-3493907200,3493907231,GB
-3493907232,3493907263,US
-3493907328,3493914111,US
-3493914112,3493914367,CA
-3493914368,3493936127,US
+3493903568,3493914239,US
+3493914240,3493914367,CA
+3493914368,3493916671,US
+3493918720,3493936127,US
3493936128,3493937151,CA
-3493937152,3493982207,US
+3493937152,3493980159,US
+3493980160,3493981183,CA
+3493981184,3493982207,US
3493982208,3493984255,CA
3493984256,3493986303,US
3493986304,3493986623,CA
@@ -111457,14 +124049,15 @@
3494044672,3494045695,CA
3494045696,3494049791,US
3494049792,3494051839,CA
-3494051840,3494072319,US
-3494074368,3494075391,US
+3494051840,3494075391,US
3494075392,3494076415,CA
3494076416,3494088703,US
3494088704,3494090751,CA
3494090752,3494094847,US
3494094848,3494095871,CA
-3494095872,3494101319,US
+3494095872,3494101089,US
+3494101090,3494101097,JM
+3494101098,3494101319,US
3494101320,3494101327,GB
3494101328,3494101377,US
3494101378,3494101385,JM
@@ -111472,26 +124065,23 @@
3494101408,3494101415,CO
3494101416,3494101429,US
3494101430,3494101437,GB
-3494101438,3494102623,US
+3494101438,3494102481,US
+3494102482,3494102489,CA
+3494102490,3494102623,US
3494102624,3494102639,SB
-3494102640,3494102735,US
-3494102736,3494102751,VI
-3494102752,3494109540,US
-3494109541,3494109548,GB
-3494109549,3494109697,US
-3494109698,3494109722,GB
-3494109723,3494109795,US
-3494109796,3494109825,LB
-3494109826,3494109859,US
-3494109860,3494109869,GB
-3494109870,3494109925,US
+3494102640,3494102687,US
+3494102688,3494102701,PE
+3494102702,3494102703,US
+3494102704,3494102711,CA
+3494102712,3494102735,US
+3494102736,3494102743,VI
+3494102744,3494109925,US
3494109926,3494109942,CA
3494109943,3494110091,US
3494110092,3494110109,CA
3494110110,3494110145,US
3494110146,3494110161,CA
-3494110162,3494114303,US
-3494115328,3494115471,US
+3494110162,3494115471,US
3494115472,3494115487,AU
3494115488,3494115495,US
3494115496,3494115503,CA
@@ -111537,11 +124127,7 @@
3494197561,3494197569,FR
3494197570,3494197604,CA
3494197605,3494197614,US
-3494197615,3494197617,CA
-3494197618,3494197632,US
-3494197633,3494197684,CA
-3494197685,3494197694,US
-3494197695,3494197760,CA
+3494197615,3494197760,CA
3494197761,3494197777,AE
3494197778,3494197953,CA
3494197954,3494197967,US
@@ -111599,9 +124185,7 @@
3494291744,3494291751,GB
3494291752,3494291903,US
3494291904,3494291967,GB
-3494291968,3494295039,US
-3494295040,3494295551,UM
-3494295552,3494299663,US
+3494291968,3494299663,US
3494299664,3494299679,TH
3494299680,3494299687,US
3494299688,3494299695,SC
@@ -111609,9 +124193,7 @@
3494299728,3494299735,SC
3494299736,3494300367,US
3494300368,3494300383,TW
-3494300384,3494300927,US
-3494300928,3494301055,TW
-3494301056,3494301247,US
+3494300384,3494301247,US
3494301248,3494301311,SG
3494301312,3494301439,US
3494301440,3494301695,TW
@@ -111651,9 +124233,25 @@
3494361088,3494362111,CA
3494362112,3494380543,US
3494380544,3494381567,CA
-3494381568,3494409215,US
+3494381568,3494410239,US
3494410240,3494412287,CA
-3494412288,3494418951,US
+3494412288,3494418511,US
+3494418512,3494418527,GB
+3494418528,3494418575,US
+3494418576,3494418591,AU
+3494418592,3494418623,CA
+3494418624,3494418631,BE
+3494418632,3494418639,US
+3494418640,3494418655,AU
+3494418656,3494418711,US
+3494418712,3494418719,CO
+3494418720,3494418727,AU
+3494418728,3494418735,US
+3494418736,3494418743,NZ
+3494418744,3494418855,US
+3494418856,3494418863,GR
+3494418864,3494418871,CA
+3494418872,3494418951,US
3494418952,3494418959,CA
3494418960,3494419007,US
3494419008,3494419039,ID
@@ -111682,8 +124280,8 @@
3494420224,3494420239,BO
3494420240,3494420415,US
3494420416,3494420447,CA
-3494420448,3494424575,US
-3494424576,3494425599,CA
+3494420448,3494422527,US
+3494422528,3494425599,CA
3494425600,3494427199,US
3494427200,3494427215,CA
3494427216,3494428223,US
@@ -111698,21 +124296,29 @@
3494438032,3494438063,GP
3494438064,3494438071,KN
3494438072,3494438143,GP
-3494438144,3494438399,VC
+3494438144,3494438399,DM
3494438400,3494438655,KN
3494438656,3494438911,DM
3494438912,3494439935,CA
-3494439936,3494449151,US
-3494449152,3494451199,CA
+3494439936,3494449287,US
+3494449288,3494449311,CA
+3494449312,3494449439,US
+3494449440,3494449663,CA
+3494449664,3494449695,US
+3494449696,3494450431,CA
+3494450432,3494450471,US
+3494450472,3494450479,CA
+3494450480,3494450495,US
+3494450496,3494451199,CA
3494451200,3494454128,US
3494454129,3494454158,PH
3494454159,3494455295,US
3494455296,3494456319,CA
-3494456320,3494457779,US
+3494456320,3494457368,US
+3494457369,3494457379,GB
+3494457380,3494457779,US
3494457780,3494457787,GB
-3494457788,3494458121,US
-3494458122,3494458185,PH
-3494458186,3494458201,US
+3494457788,3494458201,US
3494458202,3494458211,FR
3494458212,3494458231,US
3494458232,3494458255,DE
@@ -111720,13 +124326,14 @@
3494459392,3494460415,CA
3494460416,3494464511,US
3494464512,3494465535,CA
-3494465536,3494467583,US
-3494469632,3494501023,US
+3494465536,3494501023,US
3494501024,3494501039,AU
3494501040,3494510591,US
3494510592,3494512639,CA
-3494512640,3494513135,US
-3494513136,3494513151,NO
+3494512640,3494512895,US
+3494512896,3494512911,NO
+3494512912,3494512919,US
+3494512920,3494513151,NO
3494513152,3494516735,US
3494516736,3494517759,CA
3494517760,3494539263,US
@@ -111816,7 +124423,7 @@
3494744064,3494744399,US
3494744400,3494744407,AU
3494744408,3494744703,US
-3494744704,3494744711,DK
+3494744704,3494744711,DE
3494744712,3494745151,US
3494745152,3494745159,AU
3494745160,3494745303,US
@@ -111829,7 +124436,9 @@
3494745952,3494745959,GB
3494745960,3494746019,US
3494746020,3494746023,AU
-3494746024,3494757375,US
+3494746024,3494747135,US
+3494747136,3494748159,CA
+3494748160,3494757375,US
3494757376,3494758399,CA
3494758400,3494763007,US
3494763008,3494763015,ES
@@ -111869,24 +124478,19 @@
3494852608,3494854655,CA
3494854656,3494861087,US
3494861088,3494861095,CA
-3494861096,3494861111,US
-3494861112,3494861119,AU
-3494861120,3494862639,US
+3494861096,3494862639,US
3494862640,3494862647,JP
-3494862648,3494862815,US
-3494862816,3494862823,AU
-3494862824,3494862847,US
-3494862848,3494863615,VC
-3494863616,3494863871,DM
+3494862648,3494862847,US
+3494862848,3494863871,DM
3494863872,3494866943,US
3494866944,3494867967,CA
3494867968,3494893567,US
3494893568,3494894591,CA
-3494894592,3494906367,US
-3494906368,3494906431,IL
-3494906432,3494917119,US
-3494917120,3494918143,CA
-3494918144,3494928383,US
+3494894592,3494906455,US
+3494906456,3494906463,GB
+3494906464,3494917119,US
+3494917120,3494917631,CA
+3494917632,3494928383,US
3494928384,3494930431,CA
3494930432,3494935746,US
3494935747,3494935747,GB
@@ -111898,13 +124502,17 @@
3494936515,3494936515,GB
3494936516,3494938623,US
3494938624,3494939647,CA
-3494939648,3494950655,US
+3494939648,3494949889,US
+3494949890,3494949952,GB
+3494949953,3494949972,US
+3494949973,3494950142,GB
+3494950143,3494950655,US
3494950656,3494950911,PH
3494950912,3494964223,US
3494964224,3494965247,PR
3494965248,3494968319,US
3494968320,3494972415,CA
-3494972416,3494978559,US
+3494972416,3494979583,US
3494979584,3494981631,CA
3494981632,3495000063,US
3495000064,3495001087,CA
@@ -111918,7 +124526,9 @@
3495014449,3495014456,SG
3495014457,3495023615,US
3495023616,3495024639,CA
-3495024640,3495065599,US
+3495024640,3495057407,US
+3495057408,3495059455,CA
+3495059456,3495065599,US
3495065600,3495066623,CA
3495066624,3495068031,US
3495068032,3495068047,PL
@@ -111934,9 +124544,7 @@
3495098368,3495100415,CA
3495100416,3495120895,US
3495120896,3495122943,AG
-3495122944,3495136455,US
-3495136456,3495136463,IN
-3495136464,3495136471,US
+3495122944,3495136471,US
3495136472,3495136479,AR
3495136480,3495136495,US
3495136496,3495136503,IN
@@ -111946,39 +124554,69 @@
3495153664,3495155711,CA
3495155712,3495157039,US
3495157040,3495157047,SE
-3495157048,3495164239,US
+3495157048,3495159807,US
+3495159808,3495159815,ES
+3495159816,3495159839,US
+3495159840,3495159847,BR
+3495159848,3495159871,US
+3495159872,3495159879,AE
+3495159880,3495159895,US
+3495159896,3495159903,IN
+3495159904,3495160111,US
+3495160112,3495160119,NZ
+3495160120,3495160303,US
+3495160304,3495160319,TR
+3495160320,3495160367,US
+3495160368,3495160383,ZA
+3495160384,3495160447,US
+3495160448,3495160455,BR
+3495160456,3495160463,US
+3495160464,3495160479,TR
+3495160480,3495160511,CA
+3495160512,3495160535,US
+3495160536,3495160543,BR
+3495160544,3495160863,US
+3495160864,3495160895,TR
+3495160896,3495161055,US
+3495161056,3495161087,TR
+3495161088,3495161151,US
+3495161152,3495161167,TR
+3495161168,3495161599,US
+3495161600,3495161855,BR
+3495161856,3495164239,US
3495164240,3495164247,CA
-3495164248,3495190527,US
+3495164248,3495187199,US
+3495187200,3495187455,IM
+3495187456,3495192575,US
3495192576,3495193599,CA
3495193600,3495215103,US
3495215104,3495217151,VI
3495217152,3495219199,VC
-3495219200,3495235663,US
-3495235664,3495235671,BR
+3495219200,3495235671,US
3495235672,3495235679,AU
-3495235680,3495235687,BR
+3495235680,3495235687,US
3495235688,3495235695,IN
3495235696,3495235703,FR
-3495235704,3495235775,US
-3495235776,3495235783,MY
+3495235704,3495235783,US
3495235784,3495235791,HR
-3495235792,3495235799,US
-3495235800,3495235807,ES
-3495235808,3495235823,US
+3495235792,3495235823,US
3495235824,3495235831,GB
3495235832,3495235903,US
3495235904,3495235911,CA
-3495235912,3495235991,US
-3495235992,3495235999,CA
-3495236000,3495236015,US
-3495236016,3495236023,GB
-3495236024,3495236111,US
-3495236112,3495236119,CZ
-3495236120,3495236135,US
-3495236136,3495236143,CR
-3495236144,3495236367,US
+3495235912,3495235975,US
+3495235976,3495235983,VN
+3495235984,3495235999,US
+3495236000,3495236007,HK
+3495236008,3495236015,US
+3495236016,3495236031,GB
+3495236032,3495236247,US
+3495236248,3495236255,AZ
+3495236256,3495236367,US
3495236368,3495236375,CA
-3495236376,3495251967,US
+3495236376,3495236423,US
+3495236424,3495236431,SG
+3495236432,3495236439,IN
+3495236440,3495251967,US
3495251968,3495254015,CA
3495254016,3495260159,US
3495260160,3495261183,CA
@@ -111986,14 +124624,38 @@
3495276288,3495276351,IN
3495276352,3495286783,US
3495286784,3495288831,CA
-3495288832,3495331839,US
+3495288832,3495292927,US
+3495292928,3495292943,GB
+3495292944,3495292959,US
+3495292960,3495292975,PH
+3495292976,3495293071,US
+3495293072,3495293087,CA
+3495293088,3495293167,US
+3495293168,3495293183,IN
+3495293184,3495293359,US
+3495293360,3495293375,IN
+3495293376,3495293487,US
+3495293488,3495293503,GB
+3495293504,3495293663,US
+3495293664,3495293679,GB
+3495293680,3495293727,US
+3495293728,3495293743,GB
+3495293744,3495293759,US
+3495293760,3495293791,AU
+3495293792,3495308447,US
+3495308448,3495308463,HK
+3495308464,3495308607,US
+3495308608,3495308671,IL
+3495308672,3495331839,US
3495331840,3495332863,A2
3495332864,3495333887,CA
3495333888,3495349247,US
3495349248,3495350271,CA
3495350272,3495358463,US
3495358464,3495359487,CA
-3495359488,3495362623,US
+3495359488,3495361023,US
+3495361024,3495361055,CA
+3495361056,3495362623,US
3495362624,3495362631,BD
3495362632,3495362639,AR
3495362640,3495362711,US
@@ -112054,15 +124716,27 @@
3495441920,3495441935,PL
3495441936,3495442319,US
3495442320,3495442335,PL
-3495442336,3495454719,US
-3495454720,3495456767,CA
+3495442336,3495455743,US
+3495455744,3495456767,CA
3495456768,3495463935,US
3495463936,3495464959,CA
3495464960,3495475199,US
-3495475200,3495477247,CA
+3495475200,3495475711,CA
+3495475712,3495476223,EE
+3495476224,3495477247,CA
3495477248,3495478271,US
3495478272,3495479295,CA
-3495479296,3495505919,US
+3495479296,3495485599,US
+3495485600,3495485615,GB
+3495485616,3495485631,US
+3495485632,3495485663,VG
+3495485664,3495486079,US
+3495486080,3495486143,PA
+3495486144,3495486207,US
+3495486208,3495486239,AI
+3495486240,3495486335,US
+3495486336,3495486399,VG
+3495486400,3495505919,US
3495505920,3495507967,CA
3495507968,3495515135,US
3495515136,3495516159,CA
@@ -112084,13 +124758,22 @@
3495547472,3495547479,GB
3495547480,3495547605,US
3495547606,3495547606,BD
-3495547607,3495548205,US
+3495547607,3495547633,US
+3495547634,3495547635,CO
+3495547636,3495548126,US
+3495548127,3495548129,NO
+3495548130,3495548205,US
3495548206,3495548207,ID
-3495548208,3495548544,US
+3495548208,3495548437,US
+3495548438,3495548438,ES
+3495548439,3495548544,US
3495548545,3495548545,BD
-3495548546,3495548549,US
+3495548546,3495548548,US
+3495548549,3495548549,ES
3495548550,3495548550,BD
-3495548551,3495548586,US
+3495548551,3495548558,US
+3495548559,3495548559,ES
+3495548560,3495548586,US
3495548587,3495548588,LK
3495548589,3495548635,US
3495548636,3495548637,BD
@@ -112122,17 +124805,15 @@
3495620608,3495622655,CA
3495622656,3495653375,US
3495653376,3495654399,CA
-3495655424,3495657551,US
+3495654400,3495657551,US
3495657552,3495657567,GB
-3495657568,3495658015,US
-3495658016,3495658023,IN
-3495658024,3495658319,US
-3495658320,3495658327,IN
-3495658328,3495673855,US
+3495657568,3495658527,US
+3495658528,3495658559,FR
+3495658560,3495673855,US
3495673856,3495674623,GP
3495674624,3495674879,MF
-3495674880,3495686143,US
-3495687168,3495688191,US
+3495674880,3495675903,VG
+3495675904,3495688191,US
3495688192,3495689215,CA
3495689216,3495694335,US
3495694336,3495696383,CA
@@ -112140,7 +124821,8 @@
3495703552,3495704575,CA
3495704576,3495718911,US
3495718912,3495719151,A2
-3495719152,3495720959,CA
+3495719152,3495719423,CA
+3495719424,3495720959,A2
3495720960,3495724031,US
3495724032,3495724735,CA
3495724736,3495724799,US
@@ -112150,23 +124832,17 @@
3495741440,3495749631,US
3495749632,3495749735,CA
3495749736,3495749745,US
-3495749746,3495749767,CA
-3495749768,3495749777,US
-3495749778,3495749785,CA
+3495749746,3495749785,CA
3495749786,3495749829,GB
3495749830,3495749908,CA
3495749909,3495749933,GB
-3495749934,3495749941,CA
-3495749942,3495749951,US
-3495749952,3495749959,CA
+3495749934,3495749959,CA
3495749960,3495749990,GB
3495749991,3495749991,CA
3495749992,3495750021,GB
3495750022,3495750026,CA
3495750027,3495750051,US
-3495750052,3495750074,CA
-3495750075,3495750109,GB
-3495750110,3495750189,CA
+3495750052,3495750189,CA
3495750190,3495750204,PA
3495750205,3495750267,CA
3495750268,3495750277,US
@@ -112182,7 +124858,9 @@
3495781376,3495812879,US
3495812880,3495812895,GB
3495812896,3495815167,US
-3495815168,3495815615,CA
+3495815168,3495815407,CA
+3495815408,3495815411,US
+3495815412,3495815615,CA
3495815616,3495815619,US
3495815620,3495817215,CA
3495817216,3495828479,US
@@ -112196,12 +124874,12 @@
3495859652,3495862271,US
3495862272,3495864319,CA
3495864320,3495864831,DM
-3495864832,3495865343,GP
-3495865344,3495865599,CA
-3495865600,3495865631,BD
-3495865632,3495866207,CA
-3495866208,3495866239,BD
-3495866240,3495866359,CA
+3495864832,3495865343,MF
+3495865344,3495865439,CA
+3495865440,3495865471,BD
+3495865472,3495866047,CA
+3495866048,3495866079,US
+3495866080,3495866359,CA
3495866360,3495866363,US
3495866364,3495866367,CA
3495866368,3495868415,VC
@@ -112246,12 +124924,14 @@
3496873984,3496878079,A2
3496878080,3496882175,CA
3496882176,3496886399,US
-3496886400,3496886463,TR
+3496886400,3496886407,TR
+3496886408,3496886423,US
+3496886424,3496886431,TR
+3496886432,3496886447,US
+3496886448,3496886463,TR
3496886464,3496886495,US
3496886496,3496886503,CA
-3496886504,3496886511,US
-3496886512,3496886527,GB
-3496886528,3496886607,US
+3496886504,3496886607,US
3496886608,3496886623,CA
3496886624,3496886655,US
3496886656,3496886671,IN
@@ -112259,9 +124939,7 @@
3496886712,3496886727,AU
3496886728,3496886823,US
3496886824,3496886831,IN
-3496886832,3496886919,US
-3496886920,3496886927,PK
-3496886928,3496886935,US
+3496886832,3496886935,US
3496886936,3496886943,PK
3496886944,3496887135,US
3496887136,3496887167,AU
@@ -112280,8 +124958,7 @@
3496887552,3496887559,TR
3496887560,3496887575,US
3496887576,3496887583,AU
-3496887584,3496887615,US
-3496887616,3496887623,AT
+3496887584,3496887623,US
3496887624,3496887631,MY
3496887632,3496887639,RU
3496887640,3496887655,US
@@ -112292,8 +124969,7 @@
3496887808,3496887935,AU
3496887936,3496887975,US
3496887976,3496887983,AU
-3496887984,3496887999,US
-3496888000,3496888063,IN
+3496887984,3496888063,US
3496888064,3496888095,AU
3496888096,3496888103,PT
3496888104,3496888111,GB
@@ -112420,7 +125096,15 @@
3497156864,3497156879,NL
3497156880,3497156983,US
3497156984,3497157006,DZ
-3497157007,3497161607,US
+3497157007,3497157375,US
+3497157376,3497158655,A2
+3497158656,3497160191,US
+3497160192,3497160351,NL
+3497160352,3497161215,US
+3497161216,3497161343,HK
+3497161344,3497161375,US
+3497161376,3497161407,HK
+3497161408,3497161607,US
3497161608,3497161615,NO
3497161616,3497161703,US
3497161704,3497161711,GB
@@ -112437,7 +125121,18 @@
3497161920,3497161927,US
3497161928,3497161935,GB
3497161936,3497161943,MT
-3497161944,3497163311,US
+3497161944,3497162495,US
+3497162496,3497162751,GB
+3497162752,3497163007,NL
+3497163008,3497163039,US
+3497163040,3497163047,ES
+3497163048,3497163103,US
+3497163104,3497163111,NO
+3497163112,3497163135,US
+3497163136,3497163151,GB
+3497163152,3497163167,US
+3497163168,3497163175,GB
+3497163176,3497163311,US
3497163312,3497163319,NO
3497163320,3497163351,US
3497163352,3497163359,ES
@@ -112454,9 +125149,14 @@
3497163664,3497163679,DK
3497163680,3497163695,US
3497163696,3497163703,DK
-3497163704,3497164287,US
+3497163704,3497163711,ES
+3497163712,3497164287,US
3497164288,3497164295,GB
-3497164296,3497164799,US
+3497164296,3497164463,US
+3497164464,3497164479,ES
+3497164480,3497164487,US
+3497164488,3497164495,ES
+3497164496,3497164799,US
3497164800,3497181183,CA
3497181184,3497226295,US
3497226296,3497226303,SG
@@ -112494,15 +125194,15 @@
3497447424,3497451519,CA
3497451520,3497713415,US
3497713416,3497713423,EC
-3497713424,3497717759,US
+3497713424,3497713543,US
+3497713544,3497713551,CA
+3497713552,3497717759,US
3497717760,3497719807,A2
3497719808,3497719839,MR
3497719840,3497721343,A2
3497721344,3497721599,NG
3497721600,3497721855,A2
-3497721856,3497739327,US
-3497739328,3497739351,IN
-3497739352,3497739679,US
+3497721856,3497739679,US
3497739680,3497739687,CA
3497739688,3497820159,US
3497820160,3497852927,CA
@@ -112564,7 +125264,10 @@
3500016384,3500016639,KN
3500016640,3500016895,AG
3500016896,3500017151,DM
-3500017152,3500019711,AG
+3500017152,3500018943,AG
+3500018944,3500019199,LC
+3500019200,3500019455,AG
+3500019456,3500019711,LC
3500019712,3500076415,US
3500076416,3500076543,SG
3500076544,3500126207,US
@@ -112601,12 +125304,21 @@
3500809992,3500809999,CA
3500810000,3500810247,US
3500810248,3500810255,CA
-3500810256,3500921279,US
+3500810256,3500812175,US
+3500812176,3500812183,GB
+3500812184,3500921279,US
3500921280,3500921311,AU
-3500921312,3501181703,US
+3500921312,3501146951,US
+3501146952,3501146959,CA
+3501146960,3501146975,GB
+3501146976,3501147039,US
+3501147040,3501147071,CA
+3501147072,3501181703,US
3501181704,3501181711,AU
3501181712,3501181727,KR
-3501181728,3501182975,US
+3501181728,3501181743,US
+3501181744,3501181791,JP
+3501181792,3501182975,US
3501182976,3501183007,SG
3501183008,3501183023,US
3501183024,3501183047,SG
@@ -112771,7 +125483,9 @@
3506058816,3506058823,AF
3506058824,3506135263,US
3506135264,3506135295,GB
-3506135296,3506177967,US
+3506135296,3506161975,US
+3506161976,3506161983,AF
+3506161984,3506177967,US
3506177968,3506177983,DE
3506177984,3506192639,US
3506192640,3506192895,A2
@@ -112795,15 +125509,9 @@
3507101920,3507101935,IL
3507101936,3507290111,US
3507290112,3507355647,AR
-3507355648,3507479079,US
-3507479080,3507479080,CA
-3507479081,3507479108,US
-3507479109,3507479109,CA
-3507479110,3507482153,US
-3507482154,3507482155,CA
-3507482156,3507485103,US
-3507485104,3507485119,CA
-3507485120,3507540015,US
+3507355648,3507470335,US
+3507470336,3507486719,CA
+3507486720,3507540015,US
3507540016,3507540031,IN
3507540032,3507585023,US
3507585024,3507598911,CA
@@ -113556,9 +126264,7 @@
3509775649,3509775664,CA
3509775665,3509775792,US
3509775793,3509775870,CA
-3509775871,3509775871,US
-3509775872,3509775879,RU
-3509775880,3509775903,US
+3509775871,3509775903,US
3509775904,3509775919,AU
3509775920,3509775943,US
3509775944,3509775951,IT
@@ -113573,14 +126279,11 @@
3509776120,3509777159,US
3509777160,3509777167,CN
3509777168,3509777175,RU
-3509777176,3509777207,US
-3509777208,3509777215,IN
+3509777176,3509777215,US
3509777216,3509777223,TH
3509777224,3509777271,US
3509777272,3509777279,IT
-3509777280,3509777327,US
-3509777328,3509777335,GB
-3509777336,3509777449,US
+3509777280,3509777449,US
3509777450,3509777545,ID
3509777546,3509777584,US
3509777585,3509777648,ID
@@ -113588,17 +126291,19 @@
3509778400,3509778431,NL
3509778432,3509778703,US
3509778704,3509778711,CA
-3509778712,3509778903,US
+3509778712,3509778847,US
+3509778848,3509778855,CO
+3509778856,3509778903,US
3509778904,3509778911,RU
3509778912,3509778919,US
3509778920,3509778927,GB
3509778928,3509779007,US
3509779008,3509779039,IN
-3509779040,3509821911,US
-3509821912,3509821919,BM
-3509821920,3509822335,US
+3509779040,3509822335,US
3509822336,3509822351,DE
-3509822352,3509829503,US
+3509822352,3509826047,US
+3509826048,3509826303,CN
+3509826304,3509829503,US
3509829504,3509829535,GB
3509829536,3509830287,US
3509830288,3509830295,BE
@@ -113648,7 +126353,11 @@
3509837752,3509837759,GB
3509837760,3509846015,US
3509846016,3509977087,CA
-3510042624,3510239231,US
+3509977088,3509993471,US
+3509993472,3509997567,CA
+3509997568,3510005759,US
+3510005760,3510009855,CA
+3510009856,3510239231,US
3510239232,3510240703,CA
3510240704,3510240735,AM
3510240736,3510240767,CA
@@ -113698,7 +126407,11 @@
3510327296,3510328319,AG
3510328320,3510328575,KN
3510328576,3510328831,MS
-3510328832,3510329599,AG
+3510328832,3510329279,AG
+3510329280,3510329295,MS
+3510329296,3510329303,AG
+3510329304,3510329311,MS
+3510329312,3510329599,AG
3510329600,3510329855,MS
3510329856,3510331391,AG
3510331392,3510332415,DM
@@ -114097,17 +126810,13 @@
3510844416,3510844927,CA
3510844928,3510846527,US
3510846528,3510846559,CA
-3510846560,3510886271,US
-3510886272,3510886399,BR
-3510886400,3510897442,US
+3510846560,3510897442,US
3510897443,3510897443,IE
3510897444,3510935551,US
3510935552,3510943743,CA
3510943744,3511129087,US
-3511129088,3511129183,CA
-3511129184,3511129199,US
-3511129200,3511131135,CA
-3511131136,3511132159,US
+3511129088,3511131135,CA
+3511131136,3511140351,US
3511140352,3511156735,CA
3511156736,3511331199,US
3511331200,3511331231,CA
@@ -114129,8 +126838,7 @@
3512011808,3512011823,TW
3512011824,3512011855,US
3512011856,3512011871,SE
-3512011872,3512011903,IN
-3512011904,3512012095,US
+3512011872,3512012095,US
3512012096,3512012159,GB
3512012160,3512012175,MX
3512012176,3512012255,US
@@ -114141,9 +126849,7 @@
3512013648,3512013663,CA
3512013664,3512013679,US
3512013680,3512013695,GR
-3512013696,3512013791,US
-3512013792,3512013823,IN
-3512013824,3512016543,US
+3512013696,3512016543,US
3512016544,3512016559,IT
3512016560,3512016575,US
3512016576,3512016591,TW
@@ -114183,9 +126889,7 @@
3512020096,3512020223,ES
3512020224,3512020479,US
3512020480,3512020511,GB
-3512020512,3512020543,US
-3512020544,3512020607,CA
-3512020608,3512021503,US
+3512020512,3512021503,US
3512021504,3512021759,GB
3512021760,3512022335,US
3512022336,3512022399,ES
@@ -114260,9 +126964,7 @@
3512222272,3512222335,KN
3512222336,3512222463,AG
3512222464,3512222975,AI
-3512222976,3512223231,AG
-3512223232,3512223487,LC
-3512223488,3512223743,AG
+3512222976,3512223743,AG
3512223744,3512225791,ZA
3512225792,3512227839,PR
3512227840,3512229887,ZW
@@ -114333,9 +127035,13 @@
3512269824,3512270847,US
3512270848,3512336383,CA
3512336384,3512369151,US
-3512369152,3512385535,CA
+3512369152,3512378435,CA
+3512378436,3512378436,US
+3512378437,3512385535,CA
3512385536,3512397823,US
-3512397824,3512401919,CA
+3512397824,3512399375,CA
+3512399376,3512399383,US
+3512399384,3512401919,CA
3512401920,3512418303,US
3512418304,3512451071,CA
3512451072,3512467455,PR
@@ -114803,9 +127509,11 @@
3514007552,3514040319,CA
3514040320,3514367999,US
3514368000,3514433535,CA
-3514433536,3514583479,US
-3514583480,3514583487,PA
-3514583488,3514587511,US
+3514433536,3514583535,US
+3514583536,3514583543,JE
+3514583544,3514585359,US
+3514585360,3514585375,GB
+3514585376,3514587511,US
3514587512,3514587519,PA
3514587520,3514589439,US
3514589440,3514589695,GT
@@ -114853,6 +127561,11 @@
3515456704,3515456767,JP
3515456768,3515596799,US
3515596800,3515613183,CA
+3515613184,3515686911,US
+3515686912,3515695103,CA
+3515695104,3515711487,US
+3515711488,3515731967,CA
+3515731968,3515736063,US
3515744256,3515793351,US
3515793352,3515793359,MO
3515793360,3515867151,US
@@ -114878,6 +127591,7 @@
3515956400,3515965439,US
3515965440,3515973631,CA
3515973632,3515990015,US
+3515990016,3516006399,CA
3516006400,3516039167,US
3516039168,3516071935,CA
3516071936,3516139007,US
@@ -114898,11 +127612,12 @@
3516355664,3516355679,CA
3516355680,3516357631,US
3516357632,3516357887,MY
-3516357888,3516358143,US
-3516358144,3516358399,CA
+3516357888,3516358399,CA
3516358400,3516366847,US
3516366848,3516370943,CA
-3516370944,3516514303,US
+3516370944,3516394239,US
+3516394240,3516394247,IS
+3516394248,3516514303,US
3516514304,3516530687,CA
3516530688,3516899327,US
3516899328,3516899839,A2
@@ -114938,7 +127653,9 @@
3517100620,3517100635,CA
3517100636,3517100648,US
3517100649,3517100668,CA
-3517100669,3517100811,US
+3517100669,3517100720,US
+3517100721,3517100730,CA
+3517100731,3517100811,US
3517100812,3517100829,GB
3517100830,3517101597,US
3517101598,3517101613,GB
@@ -115061,8 +127778,8 @@
3517416712,3517416727,US
3517416728,3517416735,CA
3517416736,3517416743,US
-3517416744,3517416775,CA
-3517416776,3517416783,US
+3517416744,3517416767,CA
+3517416768,3517416783,US
3517416784,3517416791,CA
3517416792,3517416799,US
3517416800,3517416823,CA
@@ -115181,9 +127898,7 @@
3517437136,3517437143,US
3517437144,3517437151,CA
3517437152,3517437175,US
-3517437176,3517438015,CA
-3517438016,3517438079,US
-3517438080,3517438143,CA
+3517437176,3517438143,CA
3517438144,3517438207,US
3517438208,3517438463,CA
3517438464,3517438527,US
@@ -115223,9 +127938,7 @@
3517446912,3517447167,US
3517447168,3517447727,CA
3517447728,3517447743,US
-3517447744,3517447759,CA
-3517447760,3517447767,US
-3517447768,3517447783,CA
+3517447744,3517447783,CA
3517447784,3517447791,US
3517447792,3517447847,CA
3517447848,3517447863,US
@@ -115235,8 +127948,8 @@
3517523184,3517523671,US
3517523672,3517523679,KY
3517523680,3517523935,US
-3517523936,3517523951,BZ
-3517523952,3517524175,US
+3517523936,3517523943,BZ
+3517523944,3517524175,US
3517524176,3517524183,GT
3517524184,3517524191,VI
3517524192,3517524431,US
@@ -115249,18 +127962,22 @@
3517597184,3517597695,US
3517597696,3517598207,SE
3517598208,3517598463,IE
-3517598464,3517598591,SE
+3517598464,3517598527,SE
+3517598528,3517598559,FR
+3517598560,3517598591,SE
3517598592,3517599231,US
3517599232,3517599263,BG
-3517599264,3517600767,SE
+3517599264,3517599359,SE
+3517599360,3517599487,US
+3517599488,3517600767,SE
3517600768,3517601279,US
3517601280,3517602047,SE
3517602048,3517602303,DE
3517602304,3517602559,US
3517602560,3517602623,SE
3517602624,3517602815,US
-3517602816,3517603327,SE
-3517603328,3517603615,US
+3517602816,3517603071,SE
+3517603072,3517603615,US
3517603616,3517603647,DE
3517603648,3517603711,US
3517603712,3517603775,SE
@@ -115274,8 +127991,8 @@
3517605376,3517605775,SE
3517605776,3517605791,US
3517605792,3517605887,SE
-3517605888,3517606207,US
-3517606208,3517606271,SE
+3517605888,3517606143,US
+3517606144,3517606271,SE
3517606272,3517606399,US
3517606400,3517606911,SE
3517606912,3517607935,US
@@ -115283,7 +128000,9 @@
3517608192,3517608447,US
3517608448,3517608703,GB
3517608704,3517609743,US
-3517609744,3517609855,SE
+3517609744,3517609759,SE
+3517609760,3517609791,US
+3517609792,3517609855,SE
3517609856,3517610047,US
3517610048,3517610191,SE
3517610192,3517610199,US
@@ -115291,7 +128010,7 @@
3517610240,3517610495,US
3517610496,3517611263,IE
3517611264,3517611295,SE
-3517611296,3517611303,US
+3517611296,3517611303,DE
3517611304,3517611311,CA
3517611312,3517611367,SE
3517611368,3517611383,US
@@ -115349,10 +128068,7 @@
3518759408,3518759423,CY
3518759424,3518760511,US
3518760512,3518760575,AU
-3518760576,3518760647,HU
-3518760648,3518760655,US
-3518760656,3518760703,HU
-3518760704,3518762495,US
+3518760576,3518762495,US
3518762496,3518762751,GB
3518762752,3518764671,US
3518764672,3518764703,NL
@@ -115360,9 +128076,7 @@
3518765312,3518765567,CA
3518765568,3518766879,US
3518766880,3518766911,TH
-3518766912,3518892223,US
-3518892224,3518892231,CL
-3518892232,3518892415,US
+3518766912,3518892415,US
3518892416,3518892423,GB
3518892424,3518894439,US
3518894440,3518894447,TR
@@ -115373,27 +128087,21 @@
3518896216,3518896223,CA
3518896224,3518896231,US
3518896232,3518896239,CN
-3518896240,3518896895,US
-3518896896,3518896903,GB
-3518896904,3518897119,US
+3518896240,3518897119,US
3518897120,3518897127,IT
-3518897128,3518898143,US
-3518898144,3518898151,BR
-3518898152,3518903191,US
+3518897128,3518903191,US
3518903192,3518903199,JP
-3518903200,3518903871,US
-3518903872,3518903879,PK
-3518903880,3518903927,US
+3518903200,3518903927,US
3518903928,3518903935,RU
3518903936,3518904015,US
3518904016,3518904031,EG
-3518904032,3518911743,US
+3518904032,3518905599,US
+3518905600,3518905855,GB
+3518905856,3518911743,US
3518911744,3518911999,GB
3518912000,3518912511,US
3518912512,3518912767,IN
-3518912768,3518921447,US
-3518921448,3518921455,CN
-3518921456,3518929535,US
+3518912768,3518929535,US
3518929536,3518929599,CA
3518929600,3518995695,US
3518995696,3518995703,GB
@@ -115413,15 +128121,13 @@
3519381504,3519397887,CA
3519397888,3519406079,US
3519406080,3519406143,IT
-3519406144,3519406207,US
-3519406208,3519406215,SA
-3519406216,3519406255,US
+3519406144,3519406255,US
3519406256,3519406263,SA
3519406264,3519406295,US
3519406296,3519406303,TH
3519406304,3519406335,US
-3519406336,3519406359,DE
-3519406360,3519406375,US
+3519406336,3519406351,DE
+3519406352,3519406375,US
3519406376,3519406383,IT
3519406384,3519406391,IN
3519406392,3519406407,GB
@@ -115481,12 +128187,15 @@
3519412736,3519412751,RU
3519412752,3519412799,US
3519412800,3519412815,RU
-3519412816,3519413759,US
+3519412816,3519412999,US
+3519413000,3519413007,CY
+3519413008,3519413759,US
3519413760,3519414271,CA
-3519414272,3519417087,US
+3519414272,3519417071,US
+3519417072,3519417075,PT
+3519417076,3519417087,US
3519417088,3519417151,IT
-3519417152,3519417183,DE
-3519417184,3519420767,US
+3519417152,3519420767,US
3519420768,3519420775,HK
3519420776,3519422495,US
3519422496,3519422527,CA
@@ -115497,41 +128206,17 @@
3519578368,3519578623,NA
3519578624,3519578879,US
3519578880,3519579135,CA
-3519579136,3519579583,US
-3519579584,3519579591,CR
-3519579592,3519579967,US
+3519579136,3519579967,US
3519579968,3519579983,CY
-3519579984,3519579991,CR
-3519579992,3519580031,US
-3519580032,3519580047,CY
-3519580048,3519580063,CR
-3519580064,3519583999,US
-3519584000,3519584255,CA
-3519584256,3519586047,US
-3519586048,3519586559,GB
-3519586560,3519586815,US
-3519586816,3519587007,GB
-3519587008,3519587071,AG
-3519587072,3519588351,US
-3519588352,3519588367,CR
-3519588368,3519588391,US
-3519588392,3519588399,CR
-3519588400,3519588447,US
-3519588448,3519588463,CR
-3519588464,3519588639,US
+3519579984,3519586303,US
+3519586304,3519586559,GB
+3519586560,3519587039,US
+3519587040,3519587071,AG
+3519587072,3519588639,US
3519588640,3519588671,GB
-3519588672,3519588687,US
-3519588688,3519588703,CY
-3519588704,3519590655,US
+3519588672,3519590655,US
3519590656,3519590911,CA
-3519590912,3519590927,GB
-3519590928,3519590943,EE
-3519590944,3519590959,AG
-3519590960,3519591071,US
-3519591072,3519591087,IM
-3519591088,3519591167,US
-3519591168,3519591423,GB
-3519591424,3519603204,US
+3519590912,3519603204,US
3519603205,3519603212,VN
3519603213,3519603255,US
3519603256,3519603265,BR
@@ -115571,9 +128256,7 @@
3519879768,3519879775,US
3519879776,3519879807,CA
3519879808,3519879815,US
-3519879816,3519879863,CA
-3519879864,3519879871,US
-3519879872,3519880767,CA
+3519879816,3519880767,CA
3519880768,3519880831,DE
3519880832,3519881375,CA
3519881376,3519881407,US
@@ -115589,8 +128272,8 @@
3520020656,3520020663,US
3520020664,3520020719,CA
3520020720,3520020727,US
-3520020728,3520020983,CA
-3520020984,3520021015,US
+3520020728,3520020991,CA
+3520020992,3520021015,US
3520021016,3520021055,CA
3520021056,3520021071,US
3520021072,3520021183,CA
@@ -115601,21 +128284,19 @@
3520021384,3520021415,US
3520021416,3520021471,CA
3520021472,3520021479,US
-3520021480,3520021487,CA
-3520021488,3520021503,US
+3520021480,3520021495,CA
+3520021496,3520021503,US
3520021504,3520021687,CA
3520021688,3520021695,US
3520021696,3520021839,CA
3520021840,3520021847,US
-3520021848,3520021863,CA
-3520021864,3520021871,US
-3520021872,3520021895,CA
+3520021848,3520021895,CA
3520021896,3520021903,US
3520021904,3520021911,CA
-3520021912,3520021935,US
-3520021936,3520021943,CA
-3520021944,3520021951,US
-3520021952,3520021967,CA
+3520021912,3520021919,US
+3520021920,3520021927,CA
+3520021928,3520021935,US
+3520021936,3520021967,CA
3520021968,3520021975,US
3520021976,3520021983,CA
3520021984,3520021991,US
@@ -115642,16 +128323,16 @@
3520022936,3520023047,CA
3520023048,3520023063,US
3520023064,3520023087,CA
-3520023088,3520023119,US
+3520023088,3520023103,US
+3520023104,3520023111,CA
+3520023112,3520023119,US
3520023120,3520023127,CA
3520023128,3520023135,US
3520023136,3520023151,CA
3520023152,3520023159,US
3520023160,3520023383,CA
3520023384,3520023415,US
-3520023416,3520023647,CA
-3520023648,3520023655,US
-3520023656,3520023879,CA
+3520023416,3520023879,CA
3520023880,3520023887,US
3520023888,3520023911,CA
3520023912,3520023919,US
@@ -115659,13 +128340,11 @@
3520024216,3520024231,US
3520024232,3520024487,CA
3520024488,3520024495,US
-3520024496,3520024799,CA
-3520024800,3520024815,US
+3520024496,3520024807,CA
+3520024808,3520024815,US
3520024816,3520025191,CA
3520025192,3520025199,US
-3520025200,3520025239,CA
-3520025240,3520025247,US
-3520025248,3520025295,CA
+3520025200,3520025295,CA
3520025296,3520025303,US
3520025304,3520025343,CA
3520025344,3520025359,US
@@ -115677,15 +128356,13 @@
3520025624,3520025631,US
3520025632,3520025639,CA
3520025640,3520025647,US
-3520025648,3520025767,CA
-3520025768,3520025775,US
-3520025776,3520025791,CA
+3520025648,3520025791,CA
3520025792,3520025799,US
3520025800,3520026671,CA
3520026672,3520026679,US
-3520026680,3520026719,CA
-3520026720,3520026727,US
-3520026728,3520026783,CA
+3520026680,3520026703,CA
+3520026704,3520026711,US
+3520026712,3520026783,CA
3520026784,3520026791,US
3520026792,3520026895,CA
3520026896,3520026903,US
@@ -115703,9 +128380,7 @@
3520027440,3520027447,US
3520027448,3520027711,CA
3520027712,3520027727,US
-3520027728,3520027783,CA
-3520027784,3520027791,US
-3520027792,3520027815,CA
+3520027728,3520027815,CA
3520027816,3520027823,US
3520027824,3520027839,CA
3520027840,3520027887,US
@@ -115723,8 +128398,8 @@
3520028544,3520028551,US
3520028552,3520028655,CA
3520028656,3520028671,US
-3520028672,3520028687,CA
-3520028688,3520028711,US
+3520028672,3520028695,CA
+3520028696,3520028711,US
3520028712,3520029167,CA
3520029168,3520029175,IL
3520029176,3520030719,CA
@@ -115847,14 +128522,14 @@
3520075456,3520075471,CA
3520075472,3520075743,US
3520075744,3520075775,NL
-3520075776,3520078911,US
+3520075776,3520078031,US
+3520078032,3520078047,BS
+3520078048,3520078911,US
3520078912,3520078927,AU
3520078928,3520078943,EC
3520078944,3520081455,US
3520081456,3520081471,BR
-3520081472,3520081743,US
-3520081744,3520081759,VG
-3520081760,3520082151,US
+3520081472,3520082151,US
3520082152,3520082167,CA
3520082168,3520086271,US
3520086272,3520086527,CA
@@ -115862,9 +128537,7 @@
3520086960,3520086975,CA
3520086976,3520088447,US
3520088448,3520088463,ES
-3520088464,3520092991,US
-3520092992,3520093007,IL
-3520093008,3520095455,US
+3520088464,3520095455,US
3520095456,3520095471,NL
3520095472,3520097135,US
3520097136,3520097151,CA
@@ -115874,7 +128547,9 @@
3520100032,3520100039,LB
3520100040,3520101839,US
3520101840,3520101855,CA
-3520101856,3520112975,US
+3520101856,3520101919,US
+3520101920,3520101927,BR
+3520101928,3520112975,US
3520112976,3520112991,ES
3520112992,3520114399,US
3520114400,3520114407,VG
@@ -115922,23 +128597,34 @@
3520999424,3521003519,CA
3521003520,3521003583,US
3521003584,3521003647,IL
-3521003648,3521007103,US
-3521007104,3521007111,IN
-3521007112,3521011743,US
+3521003648,3521005319,US
+3521005320,3521005327,GB
+3521005328,3521009663,US
+3521009664,3521009671,AR
+3521009672,3521011719,US
+3521011720,3521011727,BR
+3521011728,3521011735,AU
+3521011736,3521011743,US
3521011744,3521011751,PK
-3521011752,3521011759,GB
-3521011760,3521011791,US
-3521011792,3521011799,CA
-3521011800,3521011967,US
+3521011752,3521011759,US
+3521011760,3521011767,GB
+3521011768,3521011791,US
+3521011792,3521011799,NZ
+3521011800,3521011807,BR
+3521011808,3521011967,US
3521011968,3521011975,IL
-3521011976,3521013559,US
-3521013560,3521013567,GB
-3521013568,3521013951,US
+3521011976,3521013951,US
3521013952,3521013959,AU
3521013960,3521014127,US
3521014128,3521014135,GR
3521014136,3521014143,CA
-3521014144,3521028095,US
+3521014144,3521014655,US
+3521014656,3521014671,HK
+3521014672,3521014687,US
+3521014688,3521014703,GB
+3521014704,3521018495,US
+3521018496,3521018511,IN
+3521018512,3521028095,US
3521028096,3521032191,CA
3521032192,3521044479,US
3521044480,3521048575,CA
@@ -115995,16 +128681,18 @@
3521377408,3521377439,IT
3521377440,3521835903,US
3521835904,3521835967,CA
-3521835968,3521836351,US
-3521836352,3521836415,IL
-3521836416,3521836687,US
+3521835968,3521836687,US
3521836688,3521836703,GB
3521836704,3521904639,US
3521904640,3521921023,JM
3521921024,3521933321,US
3521933322,3521933329,PK
3521933330,3521933345,MA
-3521933346,3521933413,US
+3521933346,3521933357,US
+3521933358,3521933365,AE
+3521933366,3521933389,US
+3521933390,3521933397,AE
+3521933398,3521933413,US
3521933414,3521933421,IN
3521933422,3521933429,MA
3521933430,3521933437,CA
@@ -116013,15 +128701,15 @@
3521933506,3521933537,GB
3521933538,3521933577,US
3521933578,3521933585,EG
-3521933586,3521933589,US
-3521933590,3521933597,IN
-3521933598,3521933605,US
+3521933586,3521933605,US
3521933606,3521933613,AE
3521933614,3521933621,US
3521933622,3521933629,IN
3521933630,3521933645,US
-3521933646,3521933653,GB
-3521933654,3521933725,US
+3521933646,3521933653,PE
+3521933654,3521933661,US
+3521933662,3521933669,MA
+3521933670,3521933725,US
3521933726,3521933733,GB
3521933734,3521933741,US
3521933742,3521933785,GB
@@ -116029,15 +128717,20 @@
3521933834,3521933841,EG
3521933842,3521933929,US
3521933930,3521933937,IN
-3521933938,3521933981,US
+3521933938,3521933945,GB
+3521933946,3521933981,US
3521933982,3521933989,IN
3521933990,3521934089,US
3521934090,3521934097,EG
-3521934098,3521934169,US
+3521934098,3521934137,US
+3521934138,3521934145,GR
+3521934146,3521934169,US
3521934170,3521934177,EG
3521934178,3521934421,US
3521934422,3521934429,EG
-3521934430,3521934477,US
+3521934430,3521934437,US
+3521934438,3521934445,IN
+3521934446,3521934477,US
3521934478,3521934485,ID
3521934486,3521934509,US
3521934510,3521934517,IN
@@ -116045,18 +128738,50 @@
3521934736,3521934743,EG
3521934744,3521934768,US
3521934769,3521934776,MA
-3521934777,3521935237,US
-3521935238,3521935245,EG
-3521935246,3521965055,US
+3521934777,3521935310,US
+3521935311,3521935318,EG
+3521935319,3521935717,US
+3521935718,3521935725,IN
+3521935726,3521935993,US
+3521935994,3521936025,EG
+3521936026,3521936162,US
+3521936163,3521936194,EG
+3521936195,3521936243,US
+3521936244,3521936251,IN
+3521936252,3521936291,US
+3521936292,3521936299,IN
+3521936300,3521936393,US
+3521936394,3521936425,EG
+3521936426,3521936669,US
+3521936670,3521936677,PK
+3521936678,3521936766,US
+3521936767,3521936774,PE
+3521936775,3521936827,US
+3521936828,3521936860,EG
+3521936861,3521936957,US
+3521936958,3521936965,PE
+3521936966,3521936969,US
+3521936970,3521936977,PK
+3521936978,3521936993,US
+3521936994,3521937001,LK
+3521937002,3521937005,US
+3521937006,3521937013,EG
+3521937014,3521937017,US
+3521937018,3521937025,SG
+3521937026,3521937161,US
+3521937162,3521937252,EG
+3521937253,3521937260,US
+3521937261,3521937406,EG
+3521937407,3521965055,US
3521965056,3521966079,DE
-3521966080,3522029439,US
+3521966080,3521989631,US
+3521989632,3521989887,A2
+3521989888,3522029439,US
3522029440,3522029503,FI
3522029504,3522029567,CA
3522029568,3522029823,US
3522029824,3522029855,A1
-3522029856,3522031871,US
-3522031872,3522032127,AT
-3522032128,3522034447,US
+3522029856,3522034447,US
3522034448,3522034463,GB
3522034464,3522101247,US
3522101248,3522109439,CA
@@ -116067,19 +128792,20 @@
3522121216,3522121471,US
3522121472,3522121983,LY
3522121984,3522122239,AW
-3522122240,3522131711,US
+3522122240,3522131615,US
+3522131616,3522131647,BR
+3522131648,3522131711,US
3522131712,3522131743,GB
-3522131744,3522131775,DE
-3522131776,3522131807,BR
-3522131808,3522132479,US
+3522131744,3522132479,US
3522132480,3522132543,CO
-3522132544,3522132575,US
-3522132576,3522132607,UA
+3522132544,3522132607,US
3522132608,3522132639,CA
3522132640,3522132671,BO
3522132672,3522132703,BR
3522132704,3522132735,LK
-3522132736,3522133599,US
+3522132736,3522133023,US
+3522133024,3522133055,BR
+3522133056,3522133599,US
3522133600,3522133631,JP
3522133632,3522133639,US
3522133640,3522133647,DE
@@ -116094,13 +128820,13 @@
3522195456,3522199551,CA
3522199552,3522759591,US
3522759592,3522759599,CA
-3522759600,3522763263,US
-3522763264,3522763519,CA
-3522763520,3522854911,US
+3522759600,3522854911,US
3522854912,3522859999,CA
3522860000,3522860031,IN
3522860032,3522871295,CA
-3522871296,3522937855,US
+3522871296,3522902015,US
+3522902016,3522903039,CA
+3522903040,3522937855,US
3522937856,3522938367,GB
3522938368,3523215359,US
3523215360,3523223551,AU
@@ -116111,10 +128837,13 @@
3523297280,3523317759,PH
3523317760,3523330047,JP
3523330048,3523338239,AU
-3523340288,3523341311,AP
+3523338240,3523340287,MY
+3523340288,3523341311,AU
+3523341312,3523342335,JP
3523342336,3523346431,BD
3523346432,3523354623,CN
3523354624,3523362815,KR
+3523362816,3523379199,VN
3523379200,3523395583,PK
3523395584,3523411967,JP
3523411968,3523477503,HK
@@ -116397,6 +129126,7 @@
3528396800,3528400895,AU
3528400896,3528404991,JP
3528404992,3528407039,NZ
+3528407040,3528409087,AU
3528409088,3528425471,CN
3528425472,3528445951,JP
3528445952,3528450047,ID
@@ -116423,7 +129153,6 @@
3528884224,3528908799,TH
3528908800,3528912895,VN
3528912896,3528933375,AU
-3528933376,3528949759,JP
3528949760,3528966143,CN
3528966144,3528974335,KR
3528974336,3528978431,JP
@@ -116476,7 +129205,7 @@
3536945152,3536977919,TW
3536977920,3537010687,IN
3537010688,3537027071,ID
-3537027072,3537043455,KR
+3537027072,3537047551,KR
3537047552,3537049599,ID
3537049600,3537051647,HK
3537051648,3537059839,JP
@@ -116495,7 +129224,8 @@
3539337216,3539353599,NZ
3539353600,3539402751,TH
3539402752,3539435519,JP
-3539435520,3539468287,AU
+3539435520,3539464191,AU
+3539464192,3539468287,ID
3539468288,3541303295,JP
3541303296,3541565439,TW
3541565440,3541696511,MY
@@ -116532,7 +129262,7 @@
3556851712,3556868095,UA
3556868096,3556876287,GB
3556876288,3556884479,NL
-3556884480,3556900863,RU
+3556892672,3556900863,RU
3556900864,3556909055,GB
3556909056,3556925439,DE
3556925440,3556933631,PL
@@ -116544,17 +129274,27 @@
3556974592,3556982783,ES
3556982784,3556984623,DE
3556984624,3556984639,FR
-3556984640,3556990975,DE
+3556984640,3556984647,DE
+3556984648,3556984651,FR
+3556984652,3556984655,DE
+3556984656,3556984719,FR
+3556984720,3556985127,DE
+3556985128,3556985135,ES
+3556985136,3556985207,DE
+3556985208,3556985215,ES
+3556985216,3556985663,DE
+3556985664,3556985671,HU
+3556985672,3556990975,DE
3556990976,3556999167,UA
3556999168,3557007359,RU
-3557007360,3557015551,GB
+3557007360,3557015551,IT
3557015552,3557023743,DE
3557023744,3557023879,BE
3557023880,3557023903,GB
3557023904,3557023999,BE
3557024000,3557024255,GB
-3557024256,3557025279,BE
-3557025280,3557025791,GB
+3557024256,3557024767,BE
+3557024768,3557025791,GB
3557025792,3557026047,BE
3557026048,3557026303,GB
3557026304,3557026815,BE
@@ -116567,17 +129307,13 @@
3557028032,3557028063,GB
3557028064,3557028095,BE
3557028096,3557028351,GB
-3557028352,3557028543,BE
-3557028544,3557028607,GB
-3557028608,3557028735,BE
+3557028352,3557028735,BE
3557028736,3557028799,GB
3557028800,3557028911,BE
3557028912,3557028927,GB
3557028928,3557029059,BE
3557029060,3557029071,GB
-3557029072,3557029567,BE
-3557029568,3557029631,GB
-3557029632,3557029887,BE
+3557029072,3557029887,BE
3557029888,3557029951,GB
3557029952,3557030079,BE
3557030080,3557030143,GB
@@ -116585,9 +129321,7 @@
3557030720,3557030751,GB
3557030752,3557030767,BE
3557030768,3557030783,GB
-3557030784,3557030975,BE
-3557030976,3557031039,GB
-3557031040,3557031807,BE
+3557030784,3557031807,BE
3557031808,3557031935,GB
3557031936,3557033575,IT
3557033576,3557033583,GB
@@ -116623,8 +129357,8 @@
3557174528,3557174783,IR
3557174784,3557175039,AE
3557175040,3557176063,IR
-3557176064,3557176319,IT
-3557176320,3557176619,NE
+3557176064,3557176575,IT
+3557176576,3557176619,NE
3557176620,3557176831,IT
3557176832,3557177023,IQ
3557177024,3557177199,IT
@@ -116640,7 +129374,9 @@
3557244928,3557253119,IT
3557253120,3557261311,RU
3557261312,3557277695,DE
-3557277696,3557280334,NL
+3557277696,3557278710,NL
+3557278711,3557278714,CH
+3557278715,3557280334,NL
3557280335,3557280336,IN
3557280337,3557285887,NL
3557285888,3557294079,RU
@@ -116648,18 +129384,22 @@
3557302272,3557310463,UA
3557310464,3557326847,ES
3557326848,3557335039,DE
-3557335040,3557335391,BE
+3557335040,3557335295,BE
+3557335296,3557335327,EU
+3557335328,3557335391,BE
3557335392,3557335455,EU
3557335456,3557335951,BE
3557335952,3557335967,LU
-3557335968,3557336191,BE
+3557335968,3557336063,BE
+3557336064,3557336127,EU
+3557336128,3557336191,BE
3557336192,3557336255,EU
3557336256,3557336319,BE
3557336320,3557336575,EU
-3557336576,3557336655,BE
-3557336656,3557336703,EU
-3557336704,3557336767,BE
-3557336768,3557338111,EU
+3557336576,3557336671,BE
+3557336672,3557336703,EU
+3557336704,3557336831,BE
+3557336832,3557338111,EU
3557338112,3557338367,BE
3557338368,3557338495,EU
3557338496,3557339175,BE
@@ -116667,16 +129407,16 @@
3557339184,3557339199,BE
3557339200,3557339215,EU
3557339216,3557339223,BE
-3557339224,3557339231,EU
-3557339232,3557339267,BE
+3557339224,3557339239,EU
+3557339240,3557339247,BE
+3557339248,3557339259,EU
+3557339260,3557339267,BE
3557339268,3557339271,EU
3557339272,3557340159,BE
3557340160,3557340191,EU
3557340192,3557340927,BE
3557340928,3557341183,EU
-3557341184,3557341439,BE
-3557341440,3557341471,EU
-3557341472,3557341527,BE
+3557341184,3557341527,BE
3557341528,3557341535,EU
3557341536,3557341551,BE
3557341552,3557341559,EU
@@ -116684,9 +129424,7 @@
3557341568,3557341663,EU
3557341664,3557341695,BE
3557341696,3557341951,EU
-3557341952,3557342479,BE
-3557342480,3557342495,EU
-3557342496,3557342511,BE
+3557341952,3557342511,BE
3557342512,3557342527,EU
3557342528,3557342543,BE
3557342544,3557342559,EU
@@ -116695,8 +129433,12 @@
3557342720,3557343231,BE
3557343232,3557351423,DE
3557351424,3557359615,RU
-3557359616,3557359743,GB
-3557359744,3557359871,JE
+3557359616,3557359647,GB
+3557359648,3557359655,JE
+3557359656,3557359671,GB
+3557359672,3557359695,JE
+3557359696,3557359703,GB
+3557359704,3557359871,JE
3557359872,3557360055,GB
3557360056,3557360063,JE
3557360064,3557360406,GB
@@ -116711,19 +129453,19 @@
3557360536,3557360543,JE
3557360544,3557360559,GB
3557360560,3557360575,JE
-3557360576,3557360623,GB
-3557360624,3557360639,JE
-3557360640,3557360680,GB
+3557360576,3557360680,GB
3557360681,3557360687,JE
-3557360688,3557360815,GB
-3557360816,3557360895,JE
+3557360688,3557360875,GB
+3557360876,3557360879,JE
+3557360880,3557360887,GB
+3557360888,3557360895,JE
3557360896,3557360927,GB
3557360928,3557360943,JE
3557360944,3557360959,GB
3557360960,3557360967,JE
3557360968,3557361055,GB
-3557361056,3557361151,JE
-3557361152,3557361159,GB
+3557361056,3557361087,JE
+3557361088,3557361159,GB
3557361160,3557361167,JE
3557361168,3557361183,GB
3557361184,3557361215,JE
@@ -116740,17 +129482,17 @@
3557361984,3557362047,GB
3557362048,3557362431,JE
3557362432,3557362687,GB
-3557362688,3557363455,JE
-3557363456,3557363471,GB
+3557362688,3557363199,JE
+3557363200,3557363471,GB
3557363472,3557363479,JE
3557363480,3557363655,GB
3557363656,3557363663,JE
3557363664,3557363671,GB
3557363672,3557363679,JE
-3557363680,3557363687,GB
-3557363688,3557363783,JE
-3557363784,3557363791,GB
-3557363792,3557364223,JE
+3557363680,3557364103,GB
+3557364104,3557364107,JE
+3557364108,3557364143,GB
+3557364144,3557364223,JE
3557364224,3557364479,GB
3557364480,3557364495,JE
3557364496,3557364527,GB
@@ -116776,18 +129518,20 @@
3557365104,3557365111,GB
3557365112,3557365119,JE
3557365120,3557365183,GB
-3557365184,3557365247,JE
-3557365248,3557365423,GB
+3557365184,3557365375,JE
+3557365376,3557365423,GB
3557365424,3557365503,JE
3557365504,3557365511,GB
3557365512,3557365519,JE
3557365520,3557365551,GB
-3557365552,3557365559,JE
-3557365560,3557365631,GB
+3557365552,3557365567,JE
+3557365568,3557365631,GB
3557365632,3557365695,JE
-3557365696,3557365847,GB
-3557365848,3557365863,JE
-3557365864,3557365887,GB
+3557365696,3557365807,GB
+3557365808,3557365823,JE
+3557365824,3557365847,GB
+3557365848,3557365871,JE
+3557365872,3557365887,GB
3557365888,3557365895,JE
3557365896,3557365911,GB
3557365912,3557365919,JE
@@ -116869,9 +129613,26 @@
3557834752,3557842943,IR
3557842944,3557851135,FI
3557851136,3557859327,HU
-3557859328,3557860831,SE
+3557859328,3557859839,SE
+3557859840,3557860095,NO
+3557860096,3557860159,SE
+3557860160,3557860167,DK
+3557860168,3557860607,SE
+3557860608,3557860623,FI
+3557860624,3557860831,SE
3557860832,3557860847,FI
-3557860848,3557867519,SE
+3557860848,3557860863,SE
+3557860864,3557861119,NO
+3557861120,3557863887,SE
+3557863888,3557863903,NO
+3557863904,3557863919,FI
+3557863920,3557864287,SE
+3557864288,3557864303,DK
+3557864304,3557864311,SE
+3557864312,3557864319,FI
+3557864320,3557864799,SE
+3557864800,3557864831,FI
+3557864832,3557867519,SE
3557867520,3557875711,RU
3557875712,3557883903,DE
3557883904,3557892095,RU
@@ -116922,14 +129683,78 @@
3558154624,3558154751,CI
3558154752,3558154879,CM
3558154880,3558155007,SD
-3558155008,3558155135,A2
+3558155008,3558155023,MM
+3558155024,3558155027,NG
+3558155028,3558155031,AF
+3558155032,3558155039,DE
+3558155040,3558155047,MR
+3558155048,3558155055,A2
+3558155056,3558155059,AF
+3558155060,3558155063,DE
+3558155064,3558155103,A2
+3558155104,3558155119,DE
+3558155120,3558155135,A2
3558155136,3558155263,SD
3558155264,3558155391,ET
-3558155392,3558155519,A2
+3558155392,3558155399,A2
+3558155400,3558155407,KE
+3558155408,3558155423,A2
+3558155424,3558155431,MM
+3558155432,3558155487,A2
+3558155488,3558155503,SO
+3558155504,3558155511,A2
+3558155512,3558155515,DE
+3558155516,3558155519,A2
3558155520,3558156031,SD
-3558156032,3558156032,A2
-3558156033,3558156287,KG
-3558156288,3558162431,A2
+3558156032,3558156287,KG
+3558156288,3558156375,GB
+3558156376,3558156383,AF
+3558156384,3558156391,A2
+3558156392,3558156399,DK
+3558156400,3558156455,AF
+3558156456,3558156471,KE
+3558156472,3558156479,A2
+3558156480,3558156511,GB
+3558156512,3558156527,NP
+3558156528,3558156543,A2
+3558156544,3558156671,KN
+3558156672,3558156927,SM
+3558156928,3558157183,AF
+3558157184,3558157311,SM
+3558157312,3558157319,A2
+3558157320,3558157327,DE
+3558157328,3558157335,SL
+3558157336,3558157375,A2
+3558157376,3558157391,UG
+3558157392,3558157407,AF
+3558157408,3558157439,SD
+3558157440,3558157567,SZ
+3558157568,3558157583,A2
+3558157584,3558157599,MM
+3558157600,3558157727,SD
+3558157728,3558157759,SO
+3558157760,3558157791,A2
+3558157792,3558158079,SL
+3558158080,3558158207,GB
+3558158208,3558158239,SC
+3558158240,3558158327,A2
+3558158328,3558158331,SC
+3558158332,3558158335,A2
+3558158336,3558158847,SE
+3558158848,3558159359,DE
+3558159360,3558159519,AF
+3558159520,3558159807,A2
+3558159808,3558159839,DE
+3558159840,3558159871,A2
+3558159872,3558160127,SL
+3558160128,3558160383,DE
+3558160384,3558161151,A2
+3558161152,3558161407,AF
+3558161408,3558162143,A2
+3558162144,3558162175,SO
+3558162176,3558162207,BI
+3558162208,3558162303,A2
+3558162304,3558162431,BI
3558162432,3558170623,DE
3558170624,3558178815,GB
3558178816,3558187007,BG
@@ -116953,9 +129778,7 @@
3558196368,3558196415,IT
3558196416,3558196543,ES
3558196544,3558196607,IT
-3558196608,3558196719,ES
-3558196720,3558196727,IT
-3558196728,3558196735,ES
+3558196608,3558196735,ES
3558196736,3558203391,US
3558203392,3558211583,ES
3558211584,3558219775,GB
@@ -116999,9 +129822,7 @@
3558288488,3558288639,US
3558288640,3558288671,BE
3558288672,3558288687,DE
-3558288688,3558288703,BE
-3558288704,3558288719,GB
-3558288720,3558288895,BE
+3558288688,3558288895,BE
3558288896,3558289111,FR
3558289112,3558289119,GB
3558289120,3558289151,FR
@@ -117040,17 +129861,21 @@
3558291264,3558291279,AT
3558291280,3558291295,GB
3558291296,3558291455,CH
-3558291456,3558292223,GB
+3558291456,3558291459,DE
+3558291460,3558291463,GB
+3558291464,3558291471,DE
+3558291472,3558292223,GB
3558292224,3558292287,SE
3558292288,3558292543,NL
3558292544,3558292607,GB
3558292608,3558292735,NL
3558292736,3558292863,GB
-3558292864,3558293143,NL
+3558292864,3558292871,CH
+3558292872,3558293119,NL
+3558293120,3558293143,CH
3558293144,3558293151,GB
-3558293152,3558293199,NL
-3558293200,3558293247,GB
-3558293248,3558293503,NL
+3558293152,3558293247,NL
+3558293248,3558293503,GB
3558293504,3558301695,RU
3558301696,3558310319,DE
3558310320,3558310327,CH
@@ -117312,13 +130137,7 @@
3558785024,3558801407,IS
3558801408,3558809599,TR
3558809600,3558817791,ES
-3558817792,3558821655,AT
-3558821656,3558821663,DE
-3558821664,3558821795,AT
-3558821796,3558821799,DE
-3558821800,3558821823,AT
-3558821824,3558821831,DE
-3558821832,3558825983,AT
+3558817792,3558825983,AT
3558825984,3558827807,CY
3558827808,3558827815,A2
3558827816,3558828287,CY
@@ -117403,7 +130222,9 @@
3559088376,3559088379,GB
3559088380,3559089023,BE
3559089024,3559089027,GB
-3559089028,3559089351,BE
+3559089028,3559089079,BE
+3559089080,3559089087,GB
+3559089088,3559089351,BE
3559089352,3559089359,GB
3559089360,3559089407,BE
3559089408,3559089411,GB
@@ -117419,22 +130240,17 @@
3559089608,3559089611,GB
3559089612,3559089623,BE
3559089624,3559089627,GB
-3559089628,3559089631,BE
-3559089632,3559089639,FR
+3559089628,3559089639,BE
3559089640,3559089643,GB
3559089644,3559089655,BE
3559089656,3559089659,GB
3559089660,3559090071,BE
3559090072,3559090079,NL
-3559090080,3559090127,BE
-3559090128,3559090135,GB
-3559090136,3559090439,BE
+3559090080,3559090439,BE
3559090440,3559090443,GB
3559090444,3559090463,BE
3559090464,3559090467,GB
-3559090468,3559090471,BE
-3559090472,3559090479,GB
-3559090480,3559090483,BE
+3559090468,3559090483,BE
3559090484,3559090487,GB
3559090488,3559090587,BE
3559090588,3559090591,GB
@@ -117444,9 +130260,7 @@
3559090776,3559090779,GB
3559090780,3559090803,BE
3559090804,3559090807,GB
-3559090808,3559090831,BE
-3559090832,3559090839,GB
-3559090840,3559090863,BE
+3559090808,3559090863,BE
3559090864,3559090871,GB
3559090872,3559090895,BE
3559090896,3559090899,GB
@@ -117458,9 +130272,7 @@
3559091012,3559091015,GB
3559091016,3559091087,BE
3559091088,3559091091,GB
-3559091092,3559091159,BE
-3559091160,3559091167,GB
-3559091168,3559091203,BE
+3559091092,3559091203,BE
3559091204,3559091207,GB
3559091208,3559091211,BE
3559091212,3559091215,GB
@@ -117470,25 +130282,29 @@
3559091424,3559091427,GB
3559091428,3559091439,BE
3559091440,3559091447,ES
-3559091448,3559091507,BE
+3559091448,3559091495,BE
+3559091496,3559091503,GB
+3559091504,3559091507,BE
3559091508,3559091511,GB
-3559091512,3559091535,BE
-3559091536,3559091543,GB
+3559091512,3559091527,BE
+3559091528,3559091543,GB
3559091544,3559091571,BE
3559091572,3559091575,GB
3559091576,3559091591,BE
3559091592,3559091615,GB
3559091616,3559091631,BE
3559091632,3559091639,LU
-3559091640,3559091855,BE
-3559091856,3559091863,GB
-3559091864,3559092159,BE
+3559091640,3559091815,BE
+3559091816,3559091823,GB
+3559091824,3559092159,BE
3559092160,3559092160,GB
3559092161,3559092222,BE
3559092223,3559092223,GB
-3559092224,3559092295,BE
-3559092296,3559092303,GB
-3559092304,3559092399,BE
+3559092224,3559092287,BE
+3559092288,3559092303,GB
+3559092304,3559092311,BE
+3559092312,3559092319,GB
+3559092320,3559092399,BE
3559092400,3559092407,GB
3559092408,3559092735,BE
3559092736,3559092739,GB
@@ -117528,9 +130344,13 @@
3559093216,3559093219,GB
3559093220,3559093239,BE
3559093240,3559093243,GB
-3559093244,3559093567,BE
+3559093244,3559093511,BE
+3559093512,3559093535,GB
+3559093536,3559093567,BE
3559093568,3559093599,IT
-3559093600,3559093687,BE
+3559093600,3559093663,BE
+3559093664,3559093671,GB
+3559093672,3559093687,BE
3559093688,3559093699,GB
3559093700,3559094019,BE
3559094020,3559094023,GB
@@ -117601,6 +130421,7 @@
3559096320,3559103231,RO
3559103232,3559103487,GB
3559103488,3559104511,RO
+3559104512,3559112703,RU
3559112704,3559120895,IT
3559120896,3559129087,GB
3559129088,3559137279,BG
@@ -117608,17 +130429,13 @@
3559145472,3559153663,ES
3559153664,3559161855,GB
3559161856,3559161887,FR
-3559161888,3559161919,GB
-3559161920,3559161983,SE
-3559161984,3559162047,GB
+3559161888,3559162047,GB
3559162048,3559162079,BE
3559162080,3559163903,GB
3559163904,3559163935,FR
3559163936,3559163999,GB
3559164000,3559164031,NL
-3559164032,3559164087,GB
-3559164088,3559164095,SE
-3559164096,3559164151,GB
+3559164032,3559164151,GB
3559164152,3559164159,IT
3559164160,3559166335,GB
3559166336,3559166351,CH
@@ -117638,8 +130455,8 @@
3559174944,3559174951,IT
3559174952,3559174975,GB
3559174976,3559174983,DE
-3559174984,3559175071,GB
-3559175072,3559175095,FR
+3559174984,3559175079,GB
+3559175080,3559175095,FR
3559175096,3559175127,GB
3559175128,3559175135,DE
3559175136,3559175143,FR
@@ -117653,6 +130470,7 @@
3559186432,3559194623,RU
3559194624,3559202815,SE
3559202816,3559211007,DE
+3559211008,3559219199,SK
3559219200,3559227391,SE
3559227392,3559235583,DK
3559235584,3559243775,DE
@@ -117670,7 +130488,8 @@
3559288832,3559289855,AZ
3559289856,3559292927,RU
3559292928,3559301119,JO
-3559301120,3559309311,GB
+3559301120,3559303167,DE
+3559303168,3559309311,US
3559309312,3559317503,PL
3559317504,3559325695,FI
3559325696,3559333887,IT
@@ -117698,31 +130517,28 @@
3559490688,3559490719,ES
3559490720,3559490751,NL
3559490752,3559490783,ES
-3559490784,3559490791,CH
+3559490784,3559490791,NL
3559490792,3559490799,BE
-3559490800,3559491135,NL
-3559491136,3559491199,ES
-3559491200,3559491327,NL
-3559491328,3559491359,ES
-3559491360,3559491439,NL
+3559490800,3559490815,NL
+3559490816,3559491071,ES
+3559491072,3559491135,NL
+3559491136,3559491167,ES
+3559491168,3559491439,NL
3559491440,3559491455,ES
3559491456,3559491647,NL
3559491648,3559491711,ES
3559491712,3559491727,NL
3559491728,3559491735,ES
-3559491736,3559491839,NL
-3559491840,3559491871,ES
+3559491736,3559491871,NL
3559491872,3559491903,GB
-3559491904,3559491967,ES
-3559491968,3559492003,NL
+3559491904,3559491999,ES
+3559492000,3559492003,NL
3559492004,3559492007,ES
3559492008,3559492013,NL
3559492014,3559492015,ES
3559492016,3559492023,NL
3559492024,3559492031,ES
-3559492032,3559493151,NL
-3559493152,3559493167,ES
-3559493168,3559493247,NL
+3559492032,3559493247,NL
3559493248,3559493279,ES
3559493280,3559493311,GB
3559493312,3559493349,NL
@@ -117778,7 +130594,9 @@
3559727104,3559735295,NL
3559735296,3559743487,BG
3559743488,3559745535,IT
-3559745536,3559747583,DE
+3559745536,3559746099,DE
+3559746100,3559746103,GB
+3559746104,3559747583,DE
3559747584,3559751679,DK
3559751680,3559759871,IT
3559759872,3559768063,NO
@@ -117786,7 +130604,9 @@
3559776256,3559792639,RU
3559792640,3559800831,SA
3559800832,3559809023,IT
-3559809024,3559817215,DE
+3559809024,3559815595,DE
+3559815596,3559815599,NL
+3559815600,3559817215,DE
3559817216,3559825407,GB
3559825408,3559833599,IT
3559833600,3559849983,RU
@@ -117798,9 +130618,7 @@
3559877968,3559882751,LT
3559882752,3559890943,AZ
3559890944,3559899135,CH
-3559899136,3559899391,UA
-3559899392,3559899395,EE
-3559899396,3559899487,UA
+3559899136,3559899487,UA
3559899488,3559899519,EE
3559899520,3559899903,UA
3559899904,3559899907,EE
@@ -117845,22 +130663,24 @@
3559902056,3559902071,UA
3559902072,3559902079,EE
3559902080,3559902175,UA
-3559902176,3559902187,EE
-3559902188,3559902191,UA
-3559902192,3559902207,EE
-3559902208,3559902975,UA
-3559902976,3559903231,EE
-3559903232,3559903487,UA
-3559903488,3559903551,EE
-3559903552,3559903743,UA
-3559903744,3559904023,EE
-3559904024,3559904255,UA
-3559904256,3559904511,EE
-3559904512,3559904607,UA
-3559904608,3559904639,EE
-3559904640,3559905019,UA
+3559902176,3559902183,EE
+3559902184,3559902191,UA
+3559902192,3559902215,EE
+3559902216,3559902223,UA
+3559902224,3559902239,EE
+3559902240,3559902431,UA
+3559902432,3559902463,EE
+3559902464,3559902975,UA
+3559902976,3559903999,EE
+3559904000,3559904015,UA
+3559904016,3559904023,EE
+3559904024,3559904127,UA
+3559904128,3559904815,EE
+3559904816,3559905019,UA
3559905020,3559905031,EE
-3559905032,3559905055,UA
+3559905032,3559905047,UA
+3559905048,3559905051,EE
+3559905052,3559905055,UA
3559905056,3559905139,EE
3559905140,3559905143,DE
3559905144,3559905151,UA
@@ -117870,21 +130690,24 @@
3559905226,3559905231,UA
3559905232,3559905247,EE
3559905248,3559905255,UA
-3559905256,3559905297,EE
+3559905256,3559905263,EE
+3559905264,3559905271,UA
+3559905272,3559905297,EE
3559905298,3559905299,UA
3559905300,3559905317,EE
3559905318,3559905319,LT
-3559905320,3559905323,EE
-3559905324,3559905535,UA
+3559905320,3559905323,UA
+3559905324,3559905331,EE
+3559905332,3559905535,UA
3559905536,3559905623,EE
3559905624,3559905631,UA
-3559905632,3559905975,EE
-3559905976,3559905983,UA
-3559905984,3559906257,EE
+3559905632,3559905695,EE
+3559905696,3559905703,UA
+3559905704,3559905903,EE
+3559905904,3559905911,UA
+3559905912,3559906257,EE
3559906258,3559906259,UA
-3559906260,3559906799,EE
-3559906800,3559906815,UA
-3559906816,3559906975,EE
+3559906260,3559906975,EE
3559906976,3559907071,UA
3559907072,3559907327,EE
3559907328,3559915519,FR
@@ -117997,11 +130820,11 @@
3560710144,3560718335,CH
3560718336,3560726527,GM
3560726528,3560734719,DK
-3560734720,3560742623,DE
-3560742624,3560742631,GB
-3560742632,3560742911,DE
+3560734720,3560742911,DE
3560742912,3560751103,AT
-3560751104,3560767487,DE
+3560751104,3560761856,DE
+3560761857,3560761857,A2
+3560761858,3560767487,DE
3560767488,3560832791,NL
3560832792,3560832799,BE
3560832800,3560833023,NL
@@ -118048,8 +130871,7 @@
3560939656,3560939659,CH
3560939660,3560939663,DE
3560939664,3560939667,DK
-3560939668,3560939675,DE
-3560939676,3560939679,PL
+3560939668,3560939679,DE
3560939680,3560939683,IT
3560939684,3560939687,AT
3560939688,3560939691,ES
@@ -118310,9 +131132,7 @@
3560940996,3560940999,DK
3560941000,3560941003,ES
3560941004,3560941007,PL
-3560941008,3560941011,DE
-3560941012,3560941015,FR
-3560941016,3560941019,DE
+3560941008,3560941019,DE
3560941020,3560941023,IT
3560941024,3560941027,FR
3560941028,3560941031,CH
@@ -118338,8 +131158,7 @@
3560941124,3560941127,FR
3560941128,3560941131,DE
3560941132,3560941135,GB
-3560941136,3560941139,ES
-3560941140,3560941147,DE
+3560941136,3560941147,DE
3560941148,3560941151,IT
3560941152,3560941155,DK
3560941156,3560941159,ES
@@ -118733,8 +131552,8 @@
3560943076,3560943079,ES
3560943080,3560943095,DE
3560943096,3560943099,PL
-3560943100,3560943109,DE
-3560943110,3560943111,ES
+3560943100,3560943110,DE
+3560943111,3560943111,ES
3560943112,3560943113,DE
3560943114,3560943115,ES
3560943116,3560943116,DK
@@ -118800,7 +131619,7 @@
3560943189,3560943192,DE
3560943193,3560943193,ES
3560943194,3560943194,AT
-3560943195,3560943195,PL
+3560943195,3560943195,DE
3560943196,3560943197,IT
3560943198,3560943198,DE
3560943199,3560943199,PT
@@ -119461,13 +132280,13 @@
3560944648,3560944651,TR
3560944652,3560944655,HU
3560944656,3560944659,TR
-3560944660,3560944663,MZ
+3560944660,3560944663,DE
3560944664,3560944667,FR
3560944668,3560944671,TR
3560944672,3560944675,KZ
3560944676,3560944679,GR
3560944680,3560944687,TR
-3560944688,3560944691,FR
+3560944688,3560944691,DE
3560944692,3560944695,SA
3560944696,3560944699,TR
3560944700,3560944703,CU
@@ -120010,7 +132829,14 @@
3560951112,3560951115,FR
3560951116,3560951119,SE
3560951120,3560951123,CZ
-3560951124,3560951195,SE
+3560951124,3560951127,GB
+3560951128,3560951131,SE
+3560951132,3560951135,ES
+3560951136,3560951143,SE
+3560951144,3560951147,BR
+3560951148,3560951155,SE
+3560951156,3560951159,US
+3560951160,3560951195,SE
3560951196,3560951199,DK
3560951200,3560951203,SE
3560951204,3560951207,AE
@@ -120034,13 +132860,17 @@
3560951408,3560951423,SE
3560951424,3560951427,NL
3560951428,3560951431,DK
-3560951432,3560951440,SE
+3560951432,3560951435,SE
+3560951436,3560951439,DK
+3560951440,3560951440,SE
3560951441,3560951442,JP
3560951443,3560951444,SE
3560951445,3560951446,HU
3560951447,3560951447,SE
3560951448,3560951451,FR
-3560951452,3560951551,SE
+3560951452,3560951459,SE
+3560951460,3560951463,FI
+3560951464,3560951551,SE
3560951552,3560951555,ES
3560951556,3560951559,NO
3560951560,3560951583,SE
@@ -120064,21 +132894,27 @@
3560951836,3560951915,SE
3560951916,3560951919,PL
3560951920,3560951935,SE
-3560951936,3560951940,NL
-3560951941,3560951943,SE
+3560951936,3560951939,NL
+3560951940,3560951943,SE
3560951944,3560951947,NO
-3560951948,3560952223,SE
+3560951948,3560951995,SE
+3560951996,3560951999,US
+3560952000,3560952039,SE
+3560952040,3560952043,FI
+3560952044,3560952223,SE
3560952224,3560952227,CZ
3560952228,3560952231,SE
3560952232,3560952235,US
3560952236,3560952239,PT
3560952240,3560952255,SE
3560952256,3560952259,PL
-3560952260,3560953103,SE
+3560952260,3560952295,SE
+3560952296,3560952299,NL
+3560952300,3560952431,SE
+3560952432,3560952435,DK
+3560952436,3560953103,SE
3560953104,3560953119,JP
-3560953120,3560954239,SE
-3560954240,3560954367,AX
-3560954368,3560955903,SE
+3560953120,3560955903,SE
3560955904,3560964095,BE
3560964096,3560996863,NL
3560996864,3561005055,GB
@@ -120114,9 +132950,13 @@
3561201664,3561206655,NL
3561206656,3561206663,BE
3561206664,3561209855,NL
-3561209856,3561218047,GB
+3561209856,3561214975,GB
+3561214976,3561215230,ES
+3561215231,3561218047,GB
3561218048,3561226239,AT
-3561226240,3561234431,FI
+3561226240,3561228663,FI
+3561228664,3561228671,AX
+3561228672,3561234431,FI
3561234432,3561242623,TR
3561242624,3561259007,DE
3561259008,3561267199,IL
@@ -120135,7 +132975,9 @@
3561381888,3561382479,AT
3561382480,3561382495,DE
3561382496,3561390079,AT
-3561390080,3561396223,BG
+3561390080,3561395455,BG
+3561395456,3561395711,GR
+3561395712,3561396223,BG
3561396224,3561396480,MK
3561396481,3561398271,BG
3561398272,3561406463,LV
@@ -120218,7 +133060,9 @@
3561562112,3561570303,ES
3561570304,3561578495,AM
3561578496,3561586687,RU
-3561586688,3561594879,BG
+3561586688,3561590591,BG
+3561590592,3561590623,CY
+3561590624,3561594879,BG
3561594880,3561594935,SE
3561594936,3561594939,DK
3561594940,3561594975,SE
@@ -120240,8 +133084,8 @@
3561607344,3561607359,GB
3561607360,3561607679,FR
3561607680,3561607711,GB
-3561607712,3561607727,FR
-3561607728,3561607775,GB
+3561607712,3561607759,FR
+3561607760,3561607775,GB
3561607776,3561610239,FR
3561610240,3561610495,US
3561610496,3561610527,FR
@@ -120267,13 +133111,15 @@
3561616896,3561616959,FR
3561616960,3561617151,GB
3561617152,3561617407,FR
-3561617408,3561617919,CH
+3561617408,3561617663,FI
+3561617664,3561617919,LU
3561617920,3561618175,SE
3561618176,3561618431,IE
3561618432,3561618687,DK
3561618688,3561618815,FR
3561618816,3561618943,PL
-3561618944,3561640575,GB
+3561618944,3561618951,ES
+3561618952,3561640575,GB
3561640576,3561640831,FR
3561640832,3561652223,GB
3561652224,3561668607,CH
@@ -120298,7 +133144,8 @@
3561783296,3561799679,RU
3561799680,3561807871,DE
3561807872,3561816063,BE
-3561816064,3561824255,VA
+3561816064,3561823999,VA
+3561824000,3561824255,IT
3561824256,3561832447,LI
3561832448,3561840639,IT
3561840640,3561848831,PL
@@ -120321,8 +133168,8 @@
3561922816,3561922847,GB
3561922848,3561922863,NL
3561922864,3561922871,FR
-3561922872,3561922911,GB
-3561922912,3561922975,NL
+3561922872,3561922927,GB
+3561922928,3561922975,NL
3561922976,3561922991,GB
3561922992,3561923015,NL
3561923016,3561923063,GB
@@ -120333,12 +133180,11 @@
3561923404,3561923407,NL
3561923408,3561923423,GB
3561923424,3561923551,NL
-3561923552,3561923583,GB
-3561923584,3561923679,NL
+3561923552,3561923647,GB
+3561923648,3561923679,NL
3561923680,3561923711,GB
3561923712,3561923743,FR
-3561923744,3561923775,NL
-3561923776,3561923839,GB
+3561923744,3561923839,GB
3561923840,3561924351,NL
3561924352,3561924607,GB
3561924608,3561924647,NL
@@ -120358,8 +133204,8 @@
3561926944,3561926975,NL
3561926976,3561926983,GB
3561926984,3561926999,NL
-3561927000,3561927007,GB
-3561927008,3561927039,NL
+3561927000,3561927015,GB
+3561927016,3561927039,NL
3561927040,3561927103,GB
3561927104,3561927167,NL
3561927168,3561927551,GB
@@ -120392,15 +133238,15 @@
3561938944,3561940991,IE
3561940992,3561942015,GB
3561942016,3561947135,IE
-3561947136,3561963143,DE
-3561963144,3561963151,AU
-3561963152,3561963519,DE
+3561947136,3561963519,DE
3561963520,3561971711,BE
3561971712,3561975807,CZ
3561975808,3561979903,UA
3561979904,3561988095,ES
3561988096,3562004479,DE
-3562004480,3562012671,NL
+3562004480,3562010495,NL
+3562010496,3562010623,DE
+3562010624,3562012671,NL
3562012672,3562020095,IR
3562020096,3562020351,AE
3562020352,3562020863,IR
@@ -120458,7 +133304,8 @@
3562098432,3562098687,GB
3562098688,3562098879,FR
3562098880,3562098895,BE
-3562098896,3562098911,FR
+3562098896,3562098903,GB
+3562098904,3562098911,FR
3562098912,3562099199,GB
3562099200,3562099359,FR
3562099360,3562099391,GB
@@ -120477,8 +133324,10 @@
3562100544,3562100575,FR
3562100576,3562100703,GB
3562100704,3562100735,FR
-3562100736,3562100863,GB
-3562100864,3562101215,FR
+3562100736,3562100991,GB
+3562100992,3562101055,FR
+3562101056,3562101087,GB
+3562101088,3562101215,FR
3562101216,3562101375,GB
3562101376,3562101439,FR
3562101440,3562101471,GB
@@ -120539,9 +133388,7 @@
3562106144,3562106159,FR
3562106160,3562106191,GB
3562106192,3562106271,FR
-3562106272,3562106367,GB
-3562106368,3562106495,FR
-3562106496,3562106527,GB
+3562106272,3562106527,GB
3562106528,3562106559,FR
3562106560,3562106623,GB
3562106624,3562106911,FR
@@ -120562,7 +133409,9 @@
3562107712,3562107775,GB
3562107776,3562107807,FR
3562107808,3562107887,GB
-3562107888,3562108063,FR
+3562107888,3562107967,FR
+3562107968,3562108031,GB
+3562108032,3562108063,FR
3562108064,3562108159,GB
3562108160,3562108415,FR
3562108416,3562108959,GB
@@ -120597,16 +133446,15 @@
3562192896,3562201087,UA
3562201088,3562209279,DE
3562209280,3562217471,RU
-3562217472,3562220287,DE
-3562220288,3562220799,CH
-3562220800,3562225663,DE
+3562217472,3562225663,DE
3562225664,3562233855,NL
3562233856,3562242047,FI
3562242048,3562258431,FR
3562258432,3562263975,NL
3562263976,3562263983,BE
-3562263984,3562283007,NL
-3562283008,3562291199,IT
+3562263984,3562274767,NL
+3562274768,3562274775,DE
+3562274776,3562283007,NL
3562291200,3562307583,GB
3562307584,3562315775,NL
3562315776,3562321231,GB
@@ -120673,9 +133521,7 @@
3562668032,3562676223,IT
3562676224,3562684415,UA
3562684416,3562692607,FI
-3562692608,3562695375,UA
-3562695376,3562695379,CZ
-3562695380,3562700799,UA
+3562692608,3562700799,UA
3562700800,3562708991,DE
3562708992,3562717183,UA
3562717184,3562725375,CH
@@ -120722,7 +133568,8 @@
3563006592,3563006719,CA
3563006720,3563006729,DE
3563006730,3563006847,CN
-3563006848,3563007487,DE
+3563006848,3563006911,US
+3563006912,3563007487,DE
3563007488,3563007999,TR
3563008000,3563008255,DE
3563008256,3563008511,PL
@@ -120770,7 +133617,6 @@
3563097344,3563102207,DE
3563102208,3563110399,CZ
3563110400,3563118591,RU
-3563118592,3563126783,DE
3563126784,3563134975,KG
3563134976,3563143167,IT
3563143168,3563151359,GB
@@ -120799,9 +133645,7 @@
3563372544,3563380735,SA
3563380736,3563381951,GB
3563381952,3563381959,IT
-3563381960,3563382383,GB
-3563382384,3563382391,AU
-3563382392,3563382495,GB
+3563381960,3563382495,GB
3563382496,3563382503,AT
3563382504,3563382583,GB
3563382584,3563382587,AT
@@ -120957,13 +133801,11 @@
3563848320,3563848327,ES
3563848328,3563848383,NL
3563848384,3563848447,ES
-3563848448,3563848495,NL
-3563848496,3563848511,ES
-3563848512,3563848575,NL
+3563848448,3563848575,NL
3563848576,3563848583,ES
-3563848584,3563848655,NL
-3563848656,3563848959,ES
-3563848960,3563848979,NL
+3563848584,3563848671,NL
+3563848672,3563848703,ES
+3563848704,3563848979,NL
3563848980,3563848983,ES
3563848984,3563848987,NL
3563848988,3563848999,ES
@@ -120974,8 +133816,19 @@
3563849216,3563849727,GB
3563849728,3563849999,NL
3563850000,3563850007,FI
-3563850008,3563851023,NL
-3563851024,3563851135,ES
+3563850008,3563850015,NL
+3563850016,3563850047,ES
+3563850048,3563850111,NL
+3563850112,3563850239,ES
+3563850240,3563850751,GB
+3563850752,3563850767,NL
+3563850768,3563850783,ES
+3563850784,3563850815,NL
+3563850816,3563850831,ES
+3563850832,3563850847,NL
+3563850848,3563850879,ES
+3563850880,3563851007,NL
+3563851008,3563851135,ES
3563851136,3563851839,NL
3563851840,3563851903,ES
3563851904,3563852031,NL
@@ -120991,7 +133844,9 @@
3563853328,3563853375,NL
3563853376,3563853439,ES
3563853440,3563853567,NL
-3563853568,3563854103,ES
+3563853568,3563854079,ES
+3563854080,3563854095,NL
+3563854096,3563854103,ES
3563854104,3563854175,NL
3563854176,3563854239,ES
3563854240,3563854259,NL
@@ -121033,19 +133888,24 @@
3564024096,3564024103,IT
3564024104,3564024135,GB
3564024136,3564024143,IT
-3564024144,3564024447,GB
-3564024448,3564024463,IT
-3564024464,3564027903,GB
-3564027904,3564041215,DE
+3564024144,3564027903,GB
+3564027904,3564036351,DE
+3564036352,3564039423,A2
+3564039424,3564039679,DE
+3564039680,3564041215,A2
3564041216,3564041727,RU
-3564041728,3564044287,DE
+3564041728,3564043263,A2
+3564043264,3564043519,DE
+3564043520,3564044287,A2
3564044288,3564052479,CZ
3564052480,3564060671,GB
3564060672,3564068863,RU
3564068864,3564077055,ES
3564077056,3564093439,GB
3564093440,3564101631,UA
-3564101632,3564109823,DE
+3564101632,3564103743,DE
+3564103744,3564103759,A2
+3564103760,3564109823,DE
3564109824,3564126207,SE
3564126208,3564128287,IT
3564128288,3564128303,BG
@@ -121063,9 +133923,17 @@
3564153088,3564153151,NO
3564153152,3564153199,SE
3564153200,3564153207,NL
-3564153208,3564157207,SE
+3564153208,3564156415,SE
+3564156416,3564156419,NO
+3564156420,3564156815,SE
+3564156816,3564156819,FI
+3564156820,3564156919,SE
+3564156920,3564156927,FI
+3564156928,3564157207,SE
3564157208,3564157215,NO
-3564157216,3564158975,SE
+3564157216,3564158951,SE
+3564158952,3564158955,NO
+3564158956,3564158975,SE
3564158976,3564161855,DE
3564161856,3564161891,NL
3564161892,3564165119,DE
@@ -121100,23 +133968,17 @@
3564331008,3564339199,ES
3564339200,3564339967,GB
3564339968,3564339999,NL
-3564340000,3564340351,GB
-3564340352,3564340415,NL
-3564340416,3564340479,GB
+3564340000,3564340479,GB
3564340480,3564340735,NL
3564340736,3564340991,GB
3564340992,3564341119,NL
3564341120,3564341183,GB
3564341184,3564341247,NL
-3564341248,3564341759,GB
-3564341760,3564342063,NL
-3564342064,3564342207,GB
-3564342208,3564342271,NL
-3564342272,3564342335,GB
+3564341248,3564342015,GB
+3564342016,3564342063,NL
+3564342064,3564342335,GB
3564342336,3564342431,NL
-3564342432,3564342527,GB
-3564342528,3564342783,NL
-3564342784,3564343583,GB
+3564342432,3564343583,GB
3564343584,3564343615,NL
3564343616,3564343679,GB
3564343680,3564343743,NL
@@ -121132,9 +133994,7 @@
3564344224,3564344231,NL
3564344232,3564344239,GB
3564344240,3564344247,NL
-3564344248,3564344575,GB
-3564344576,3564344831,NL
-3564344832,3564344895,GB
+3564344248,3564344895,GB
3564344896,3564344959,NL
3564344960,3564345023,GB
3564345024,3564345087,NL
@@ -121142,8 +134002,8 @@
3564345128,3564345131,NL
3564345132,3564345135,GB
3564345136,3564345151,NL
-3564345152,3564345215,GB
-3564345216,3564345343,NL
+3564345152,3564345247,GB
+3564345248,3564345343,NL
3564345344,3564346143,GB
3564346144,3564346175,NL
3564346176,3564346207,GB
@@ -121152,9 +134012,7 @@
3564346272,3564346303,NL
3564346304,3564347391,GB
3564347392,3564347583,NL
-3564347584,3564347647,GB
-3564347648,3564348159,NL
-3564348160,3564348191,GB
+3564347584,3564348191,GB
3564348192,3564348239,NL
3564348240,3564348255,GB
3564348256,3564348287,NL
@@ -121166,8 +134024,8 @@
3564348528,3564348543,NL
3564348544,3564348559,GB
3564348560,3564348639,NL
-3564348640,3564348671,GB
-3564348672,3564348991,NL
+3564348640,3564348927,GB
+3564348928,3564348991,NL
3564348992,3564349183,GB
3564349184,3564349311,NL
3564349312,3564349375,GB
@@ -121216,14 +134074,16 @@
3564353408,3564353487,NL
3564353488,3564353503,GB
3564353504,3564353535,NL
-3564353536,3564353791,GB
-3564353792,3564353919,NL
+3564353536,3564353855,GB
+3564353856,3564353919,NL
3564353920,3564354063,GB
3564354064,3564354079,NL
3564354080,3564354303,GB
3564354304,3564354335,NL
3564354336,3564354367,GB
-3564354368,3564354559,NL
+3564354368,3564354431,NL
+3564354432,3564354495,GB
+3564354496,3564354559,NL
3564354560,3564354943,GB
3564354944,3564355039,NL
3564355040,3564355135,GB
@@ -121316,16 +134176,12 @@
3564544000,3564560383,DE
3564560384,3564560391,US
3564560392,3564560399,CA
-3564560400,3564560415,US
-3564560416,3564560511,GB
+3564560400,3564560431,US
+3564560432,3564560511,GB
3564560512,3564560527,US
3564560528,3564560543,GB
3564560544,3564560607,US
-3564560608,3564560927,GB
-3564560928,3564560959,US
-3564560960,3564561039,GB
-3564561040,3564561055,US
-3564561056,3564561071,GB
+3564560608,3564561071,GB
3564561072,3564561087,US
3564561088,3564561151,GB
3564561152,3564561407,US
@@ -121334,8 +134190,7 @@
3564561672,3564561679,GB
3564561680,3564561687,US
3564561688,3564561695,GB
-3564561696,3564561791,US
-3564561792,3564561919,GB
+3564561696,3564561919,US
3564561920,3564562431,CH
3564562432,3564562687,GB
3564562688,3564562831,US
@@ -121345,13 +134200,19 @@
3564563712,3564563967,US
3564563968,3564564223,GB
3564564224,3564564239,US
-3564564240,3564565231,GB
+3564564240,3564564351,GB
+3564564352,3564564415,US
+3564564416,3564565231,GB
3564565232,3564565239,US
3564565240,3564565247,GB
3564565248,3564565279,US
3564565280,3564565327,GB
-3564565328,3564565407,US
-3564565408,3564566047,GB
+3564565328,3564565439,US
+3564565440,3564565567,GB
+3564565568,3564565631,US
+3564565632,3564565663,GB
+3564565664,3564565679,US
+3564565680,3564566047,GB
3564566048,3564566079,US
3564566080,3564566143,GB
3564566144,3564566175,US
@@ -121360,15 +134221,15 @@
3564566528,3564567047,GB
3564567048,3564567055,US
3564567056,3564567079,GB
-3564567080,3564567087,US
-3564567088,3564567143,GB
+3564567080,3564567095,US
+3564567096,3564567143,GB
3564567144,3564567151,US
3564567152,3564567183,GB
3564567184,3564567199,US
3564567200,3564567247,GB
3564567248,3564567255,US
-3564567256,3564567295,GB
-3564567296,3564567551,US
+3564567256,3564567263,GB
+3564567264,3564567551,US
3564567552,3564567807,GB
3564567808,3564567935,US
3564567936,3564568039,GB
@@ -121391,7 +134252,11 @@
3564571592,3564571599,FR
3564571600,3564572271,GB
3564572272,3564572287,DE
-3564572288,3564576767,GB
+3564572288,3564572415,GB
+3564572416,3564572543,DE
+3564572544,3564573695,GB
+3564573696,3564574079,DE
+3564574080,3564576767,GB
3564576768,3564584959,RU
3564584960,3564593151,SA
3564593152,3564601343,RU
@@ -121449,8 +134314,8 @@
3564736872,3564736887,GB
3564736888,3564736895,DE
3564736896,3564736903,GB
-3564736904,3564736911,DE
-3564736912,3564736959,GB
+3564736904,3564736927,DE
+3564736928,3564736959,GB
3564736960,3564736967,DE
3564736968,3564736975,GB
3564736976,3564736991,DE
@@ -121493,8 +134358,8 @@
3564855296,3564862863,DE
3564862864,3564862871,AE
3564862872,3564863487,DE
-3564863488,3564880935,NL
-3564880936,3564880943,GB
+3564863488,3564880927,NL
+3564880928,3564880943,GB
3564880944,3564880951,NL
3564880952,3564880967,FR
3564880968,3564880975,NL
@@ -121508,15 +134373,15 @@
3564881232,3564881247,NL
3564881248,3564881343,GB
3564881344,3564881359,NL
-3564881360,3564881375,GB
-3564881376,3564881439,NL
+3564881360,3564881391,GB
+3564881392,3564881439,NL
3564881440,3564881455,GB
3564881456,3564881463,NL
3564881464,3564881471,GB
3564881472,3564881551,NL
3564881552,3564881599,GB
-3564881600,3564881631,NL
-3564881632,3564881663,GB
+3564881600,3564881615,NL
+3564881616,3564881663,GB
3564881664,3564881727,NL
3564881728,3564881935,GB
3564881936,3564881939,NL
@@ -121530,9 +134395,7 @@
3564882128,3564882135,NL
3564882136,3564882143,GB
3564882144,3564882239,NL
-3564882240,3564882255,GB
-3564882256,3564882271,NL
-3564882272,3564882431,GB
+3564882240,3564882431,GB
3564882432,3564882943,NL
3564882944,3564883007,GB
3564883008,3564883039,NL
@@ -121710,8 +134573,8 @@
3564896256,3564904447,RU
3564904448,3564912639,DE
3564912640,3564920831,BG
-3564920832,3564922879,ES
-3564922880,3564929023,US
+3564920832,3564921855,ES
+3564921856,3564929023,US
3564929024,3564937215,AT
3564937216,3564945407,RS
3564945408,3564947175,GB
@@ -121727,8 +134590,8 @@
3564953744,3564953744,GB
3564953745,3564953759,AT
3564953760,3564953791,GB
-3564953792,3564953855,AT
-3564953856,3564954111,GB
+3564953792,3564953919,AT
+3564953920,3564954111,GB
3564954112,3564954131,AT
3564954132,3564954139,GB
3564954140,3564954143,AT
@@ -121917,7 +134780,9 @@
3564994560,3565002751,NL
3565002752,3565007247,NO
3565007248,3565007251,SE
-3565007252,3565027327,NO
+3565007252,3565012663,NO
+3565012664,3565012667,SE
+3565012668,3565027327,NO
3565027328,3565035519,PL
3565035520,3565036287,IE
3565036288,3565036543,GB
@@ -121928,7 +134793,11 @@
3565037568,3565037823,IE
3565037824,3565038591,GB
3565038592,3565038663,IE
-3565038664,3565039615,GB
+3565038664,3565038687,GB
+3565038688,3565038719,IE
+3565038720,3565038727,GB
+3565038728,3565038735,IE
+3565038736,3565039615,GB
3565039616,3565042175,IE
3565042176,3565043711,GB
3565043712,3565047807,AT
@@ -121943,9 +134812,9 @@
3565093392,3565093399,NO
3565093400,3565096759,GB
3565096760,3565096767,IE
-3565096768,3565099647,GB
-3565099648,3565099651,US
-3565099652,3565101055,GB
+3565096768,3565097151,GB
+3565097152,3565097167,TZ
+3565097168,3565101055,GB
3565101056,3565109247,DE
3565109248,3565117439,PL
3565117440,3565125631,TR
@@ -121962,7 +134831,8 @@
3565486336,3565486975,FR
3565486976,3565487615,NL
3565487616,3565487871,SE
-3565487872,3565488383,GB
+3565487872,3565488127,SK
+3565488128,3565488383,GB
3565488384,3565488639,ES
3565488640,3565488895,GB
3565488896,3565489535,DE
@@ -122289,15 +135159,11 @@
3566739456,3566747647,RU
3566747648,3566764031,GR
3566764032,3566796799,AT
-3566796800,3566803455,NL
-3566803456,3566803711,A2
-3566803712,3566816511,NL
+3566796800,3566816511,NL
3566816512,3566816767,US
3566816768,3566862335,NL
3566862336,3566895103,TR
-3566895104,3566897279,KZ
-3566897280,3566897311,KG
-3566897312,3566927871,KZ
+3566895104,3566927871,KZ
3566927872,3566993407,FR
3566993408,3567058943,TR
3567058944,3567103047,FR
@@ -122479,9 +135345,7 @@
3567388032,3567388159,GB
3567388160,3567388399,DE
3567388400,3567388415,GB
-3567388416,3567388511,DE
-3567388512,3567388543,GB
-3567388544,3567388607,DE
+3567388416,3567388607,DE
3567388608,3567388671,GB
3567388672,3567388927,CZ
3567388928,3567389183,DE
@@ -122501,7 +135365,9 @@
3567392768,3567393023,DE
3567393024,3567393279,FR
3567393280,3567393535,HU
-3567393536,3567394975,GB
+3567393536,3567393791,GB
+3567393792,3567394047,SI
+3567394048,3567394975,GB
3567394976,3567395007,DE
3567395008,3567395071,GB
3567395072,3567395327,DE
@@ -122547,22 +135413,16 @@
3567403008,3567419391,IT
3567419392,3567427583,SA
3567427584,3567435775,SE
-3567435776,3567436543,GB
-3567436544,3567436595,IN
-3567436596,3567436599,GB
-3567436600,3567436603,IN
-3567436604,3567436799,GB
-3567436800,3567436895,IN
-3567436896,3567441375,GB
+3567435776,3567441375,GB
3567441376,3567441407,NL
3567441408,3567444223,GB
3567444224,3567444479,TZ
3567444480,3567445951,GB
3567445952,3567445983,NL
-3567445984,3567452031,GB
-3567452032,3567452047,GR
-3567452048,3567452159,GB
-3567452160,3567507455,ES
+3567445984,3567452159,GB
+3567452160,3567463135,ES
+3567463136,3567463151,IT
+3567463152,3567507455,ES
3567507456,3567509503,NL
3567509504,3567512575,ES
3567512576,3567513599,NL
@@ -122585,8 +135445,9 @@
3567587328,3567591423,GB
3567591424,3567599615,IT
3567599616,3567615999,NL
-3567616000,3567616511,BD
-3567616512,3567616527,A2
+3567616000,3567616255,CG
+3567616256,3567616263,CD
+3567616264,3567616527,A2
3567616528,3567616535,GB
3567616536,3567616575,A2
3567616576,3567616583,GB
@@ -122624,8 +135485,14 @@
3567620960,3567620991,A2
3567620992,3567621055,NG
3567621056,3567621119,KE
-3567621120,3567621375,GB
-3567621376,3567621631,A2
+3567621120,3567621263,GB
+3567621264,3567621279,CG
+3567621280,3567621375,GB
+3567621376,3567621391,A2
+3567621392,3567621399,CG
+3567621400,3567621407,A2
+3567621408,3567621423,CG
+3567621424,3567621631,A2
3567621632,3567621887,ID
3567621888,3567621895,TZ
3567621896,3567621903,KE
@@ -122666,7 +135533,10 @@
3567626240,3567627008,NG
3567627009,3567629311,A2
3567629312,3567630207,TJ
-3567630208,3567647487,A2
+3567630208,3567635711,A2
+3567635712,3567635839,CG
+3567635840,3567635967,CD
+3567635968,3567647487,A2
3567647488,3567648767,GB
3567648768,3567665151,BE
3567665152,3567673343,ES
@@ -122729,14 +135599,10 @@
3568595080,3568595087,A2
3568595088,3568599039,FR
3568599040,3568631807,PL
-3568631808,3568650695,SE
-3568650696,3568650699,US
-3568650700,3568697343,SE
+3568631808,3568697343,SE
3568697344,3568730111,PL
3568730112,3568746495,NL
-3568746496,3568752895,FI
-3568752896,3568752959,EE
-3568752960,3568762879,FI
+3568746496,3568762879,FI
3568762880,3568795647,AT
3568795648,3568803839,GB
3568803840,3568812031,IT
@@ -122787,7 +135653,9 @@
3569241584,3569241599,LU
3569241600,3569241887,BE
3569241888,3569241903,LU
-3569241904,3569242047,BE
+3569241904,3569241907,BE
+3569241908,3569241911,LU
+3569241912,3569242047,BE
3569242048,3569242111,LU
3569242112,3569243903,BE
3569243904,3569244031,NL
@@ -122816,18 +135684,14 @@
3569271912,3569271919,DE
3569271920,3569271935,BE
3569271936,3569271943,IT
-3569271944,3569272063,BE
-3569272064,3569272079,LU
-3569272080,3569273167,BE
+3569271944,3569273167,BE
3569273168,3569273183,LU
3569273184,3569273791,BE
3569273792,3569273823,LU
-3569273824,3569273935,BE
-3569273936,3569273951,LI
-3569273952,3569274303,BE
+3569273824,3569274303,BE
3569274304,3569274311,LU
-3569274312,3569274335,BE
-3569274336,3569274383,LU
+3569274312,3569274367,BE
+3569274368,3569274383,LU
3569274384,3569274495,BE
3569274496,3569274559,LU
3569274560,3569274687,BE
@@ -123109,7 +135973,9 @@
3569830528,3569839187,IL
3569839188,3569839191,A2
3569839192,3569839359,IL
-3569839360,3569839615,A2
+3569839360,3569839475,A2
+3569839476,3569839479,IL
+3569839480,3569839615,A2
3569839616,3569846527,IL
3569846528,3569846783,A2
3569846784,3569851935,IL
@@ -123124,17 +135990,17 @@
3569873280,3569873407,A2
3569873408,3569876991,IL
3569876992,3569942527,RS
-3569942528,3570064759,DE
-3570064760,3570064767,A2
-3570064768,3570073599,DE
+3569942528,3570038463,DE
+3570038464,3570038464,A2
+3570038465,3570073599,DE
3570073600,3570081791,NL
-3570081792,3570102463,CH
-3570102464,3570102479,ES
-3570102480,3570106367,CH
+3570081792,3570106367,CH
3570106368,3570139135,PL
3570139136,3570170079,DE
3570170080,3570170111,BE
-3570170112,3570171903,DE
+3570170112,3570171655,DE
+3570171656,3570171663,AU
+3570171664,3570171903,DE
3570171904,3570204671,NL
3570204672,3570215679,GR
3570215680,3570215807,DE
@@ -123163,9 +136029,9 @@
3570617344,3570617855,GB
3570617856,3570622463,DE
3570622464,3570630655,GB
-3570630656,3570633343,DE
-3570633344,3570633471,CH
-3570633472,3570663423,DE
+3570630656,3570640383,DE
+3570640384,3570640415,CH
+3570640416,3570663423,DE
3570663424,3570728959,GB
3570728960,3570729983,FI
3570729984,3570731007,SE
@@ -123241,9 +136107,7 @@
3571322016,3571322111,DE
3571322112,3571322559,GB
3571322560,3571322591,DE
-3571322592,3571322879,GB
-3571322880,3571323135,DE
-3571323136,3571323391,GB
+3571322592,3571323391,GB
3571323392,3571323455,DE
3571323456,3571323487,GB
3571323488,3571323519,DE
@@ -123314,8 +136178,8 @@
3571332608,3571332735,GB
3571332736,3571332751,DE
3571332752,3571332831,GB
-3571332832,3571333631,DE
-3571333632,3571333759,GB
+3571332832,3571332863,DE
+3571332864,3571333759,GB
3571333760,3571333791,DE
3571333792,3571333887,GB
3571333888,3571333951,DE
@@ -123367,9 +136231,7 @@
3571340800,3571341375,DE
3571341376,3571341487,GB
3571341488,3571341503,DE
-3571341504,3571341567,GB
-3571341568,3571341823,DE
-3571341824,3571342015,GB
+3571341504,3571342015,GB
3571342016,3571342047,DE
3571342048,3571342079,GB
3571342080,3571342591,DE
@@ -123396,7 +136258,9 @@
3571344128,3571344191,GB
3571344192,3571344255,DE
3571344256,3571345215,GB
-3571345216,3571346463,DE
+3571345216,3571345407,DE
+3571345408,3571346431,GB
+3571346432,3571346463,DE
3571346464,3571346495,GB
3571346496,3571346559,DE
3571346560,3571346591,GB
@@ -123480,8 +136344,8 @@
3571357696,3571357791,GB
3571357792,3571357855,DE
3571357856,3571357871,GB
-3571357872,3571357951,DE
-3571357952,3571358047,GB
+3571357872,3571357919,DE
+3571357920,3571358047,GB
3571358048,3571358079,DE
3571358080,3571358223,GB
3571358224,3571358255,DE
@@ -123494,7 +136358,9 @@
3571358448,3571358463,GB
3571358464,3571358495,DE
3571358496,3571358503,GB
-3571358504,3571358559,DE
+3571358504,3571358527,DE
+3571358528,3571358531,GB
+3571358532,3571358559,DE
3571358560,3571358575,GB
3571358576,3571358591,DE
3571358592,3571358975,GB
@@ -123654,15 +136520,21 @@
3571473152,3571473407,NL
3571473408,3571482367,DE
3571482368,3571482623,CH
-3571482624,3571515391,BE
+3571482624,3571485191,BE
+3571485192,3571485195,NL
+3571485196,3571515391,BE
3571515392,3571548159,GB
3571548160,3571580927,ES
3571580928,3571595727,FI
3571595728,3571595743,AX
3571595744,3571646463,FI
-3571646464,3571675679,DE
+3571646464,3571655560,DE
+3571655561,3571655561,RO
+3571655562,3571675679,DE
3571675680,3571675687,GB
-3571675688,3571711999,DE
+3571675688,3571710207,DE
+3571710208,3571710463,GB
+3571710464,3571711999,DE
3571712000,3571843071,GB
3571843072,3571974143,ES
3571974144,3571978239,RU
@@ -123712,24 +136584,14 @@
3572629504,3572695039,DK
3572695040,3572704951,CH
3572704952,3572704959,DE
-3572704960,3572705479,CH
-3572705480,3572705487,NL
-3572705488,3572715519,CH
+3572704960,3572715519,CH
3572715520,3572715775,GB
3572715776,3572760575,CH
3572760576,3572826111,PL
3572826112,3572891647,IT
3572891648,3572957175,FI
3572957176,3572957183,AX
-3572957184,3572975359,SE
-3572975360,3572975615,A2
-3572975616,3572980991,SE
-3572980992,3572981247,A2
-3572981248,3572984319,SE
-3572984320,3572984575,A2
-3572984576,3572986367,SE
-3572986368,3572986623,A2
-3572986624,3573022719,SE
+3572957184,3573022719,SE
3573022720,3573055487,RU
3573055488,3573088255,GB
3573088256,3573088263,CH
@@ -123816,9 +136678,7 @@
3574161108,3574161111,NL
3574161112,3574161335,DE
3574161336,3574161339,AI
-3574161340,3574161391,DE
-3574161392,3574161395,NO
-3574161396,3574169599,DE
+3574161340,3574169599,DE
3574169600,3574202367,ES
3574202368,3574267903,NL
3574267904,3574333439,FR
@@ -123828,21 +136688,9 @@
3574348544,3574398975,EU
3574398976,3574464511,PT
3574464512,3574530047,TR
-3574530048,3574563679,SE
-3574563680,3574563695,FI
-3574563696,3574563727,SE
-3574563728,3574563775,FI
-3574563776,3574563807,SE
+3574530048,3574563807,SE
3574563808,3574563823,FI
-3574563824,3574563839,SE
-3574563840,3574564863,FI
-3574564864,3574565887,SE
-3574565888,3574565951,FI
-3574565952,3574566207,SE
-3574566208,3574566271,FI
-3574566272,3574566447,SE
-3574566448,3574566463,FI
-3574566464,3574594559,SE
+3574563824,3574594559,SE
3574594560,3574595583,GB
3574595584,3574596351,FR
3574596352,3574596607,MQ
@@ -123865,7 +136713,8 @@
3574693888,3574726655,PL
3574726656,3574792191,GB
3574792192,3574824959,CZ
-3574824960,3574825279,GB
+3574824960,3574825023,NL
+3574825024,3574825279,GB
3574825280,3574825407,NL
3574825408,3574825471,GB
3574825472,3574826111,NL
@@ -123906,31 +136755,27 @@
3574956032,3574972415,IT
3574972416,3574988799,LV
3574988800,3575054335,PT
-3575054336,3575086175,DE
-3575086176,3575086207,MT
-3575086208,3575119871,DE
+3575054336,3575119871,DE
3575119872,3575185407,RU
3575185408,3575250943,PL
3575250944,3575316479,IT
3575316480,3575349247,RU
3575349248,3575351679,ES
3575351680,3575351687,NL
-3575351688,3575355231,ES
+3575351688,3575354599,ES
+3575354600,3575354607,GB
+3575354608,3575355231,ES
3575355232,3575355247,GB
3575355248,3575360199,ES
3575360200,3575360207,FR
3575360208,3575367111,ES
3575367112,3575367119,DE
-3575367120,3575372159,ES
-3575372160,3575372167,GB
-3575372168,3575372239,ES
+3575367120,3575372239,ES
3575372240,3575372247,PT
3575372248,3575382015,ES
3575382016,3575412991,FI
3575412992,3575413119,RU
-3575413120,3575414375,FI
-3575414376,3575414383,AX
-3575414384,3575419903,FI
+3575413120,3575419903,FI
3575419904,3575419919,AX
3575419920,3575420127,FI
3575420128,3575420159,AX
@@ -124681,9 +137526,7 @@
3576091408,3576091423,GB
3576091424,3576091455,EU
3576091456,3576091479,GB
-3576091480,3576091519,EU
-3576091520,3576091535,GB
-3576091536,3576091967,EU
+3576091480,3576091967,EU
3576091968,3576091983,GB
3576091984,3576091999,EU
3576092000,3576092031,GB
@@ -124736,8 +137579,8 @@
3576105600,3576105727,FR
3576105728,3576105759,GB
3576105760,3576105855,FR
-3576105856,3576105991,GB
-3576105992,3576106047,FR
+3576105856,3576105999,GB
+3576106000,3576106047,FR
3576106048,3576106055,GB
3576106056,3576106111,FR
3576106112,3576106239,GB
@@ -124773,9 +137616,12 @@
3576108864,3576108991,GB
3576108992,3576109023,FR
3576109024,3576109055,DE
-3576109056,3576109567,FR
+3576109056,3576109311,GB
+3576109312,3576109567,FR
3576109568,3576109695,GB
-3576109696,3576109791,FR
+3576109696,3576109727,FR
+3576109728,3576109759,GB
+3576109760,3576109791,FR
3576109792,3576109799,GB
3576109800,3576109815,FR
3576109816,3576110079,GB
@@ -124796,41 +137642,106 @@
3576111680,3576111711,FR
3576111712,3576111727,GB
3576111728,3576111807,FR
-3576111808,3576112383,GB
-3576112384,3576112543,FR
+3576111808,3576112511,GB
+3576112512,3576112543,FR
3576112544,3576113407,GB
3576113408,3576113535,FR
-3576113536,3576119295,GB
-3576119296,3576119455,CH
+3576113536,3576119439,GB
+3576119440,3576119455,CH
3576119456,3576119471,BE
-3576119472,3576127487,CH
-3576127488,3576127615,GB
+3576119472,3576119487,CH
+3576119488,3576119871,GB
+3576119872,3576119911,CH
+3576119912,3576120319,GB
+3576120320,3576120591,CH
+3576120592,3576120831,GB
+3576120832,3576121119,CH
+3576121120,3576121151,GB
+3576121152,3576121199,CH
+3576121200,3576121247,GB
+3576121248,3576121263,CH
+3576121264,3576121271,GB
+3576121272,3576121295,CH
+3576121296,3576121311,GB
+3576121312,3576121471,CH
+3576121472,3576121855,GB
+3576121856,3576122111,CH
+3576122112,3576122143,GB
+3576122144,3576122175,CH
+3576122176,3576122367,GB
+3576122368,3576122495,CH
+3576122496,3576122527,GB
+3576122528,3576122623,CH
+3576122624,3576122695,GB
+3576122696,3576122703,CH
+3576122704,3576127615,GB
3576127616,3576127647,FR
3576127648,3576127679,GB
3576127680,3576127687,FR
3576127688,3576127695,GB
3576127696,3576127703,FR
3576127704,3576131583,GB
-3576131584,3576135679,CH
+3576131584,3576131839,CH
+3576131840,3576131999,GB
+3576132000,3576132015,CH
+3576132016,3576132031,GB
+3576132032,3576132223,CH
+3576132224,3576132271,GB
+3576132272,3576132287,CH
+3576132288,3576132479,GB
+3576132480,3576132543,CH
+3576132544,3576132927,GB
+3576132928,3576132935,CH
+3576132936,3576132943,GB
+3576132944,3576132959,CH
+3576132960,3576132991,GB
+3576132992,3576133119,CH
+3576133120,3576133375,GB
+3576133376,3576133503,CH
+3576133504,3576133631,GB
+3576133632,3576133663,CH
+3576133664,3576133695,GB
+3576133696,3576133775,CH
+3576133776,3576133823,GB
+3576133824,3576134143,CH
+3576134144,3576134207,GB
+3576134208,3576134239,CH
+3576134240,3576134367,GB
+3576134368,3576134783,CH
+3576134784,3576135199,GB
+3576135200,3576135215,CH
+3576135216,3576135231,GB
+3576135232,3576135359,CH
+3576135360,3576135375,GB
+3576135376,3576135383,CH
+3576135384,3576135679,GB
3576135680,3576168447,DE
3576168448,3576233983,GB
-3576233984,3576236671,FR
-3576236672,3576236703,GB
-3576236704,3576236879,FR
-3576236880,3576236927,GB
+3576233984,3576236703,FR
+3576236704,3576236719,GB
+3576236720,3576236743,FR
+3576236744,3576236751,GB
+3576236752,3576236775,FR
+3576236776,3576236783,GB
+3576236784,3576236887,FR
+3576236888,3576236927,GB
3576236928,3576237063,FR
3576237064,3576237071,GB
3576237072,3576237087,FR
3576237088,3576237119,GB
3576237120,3576237231,FR
-3576237232,3576237279,GB
-3576237280,3576237455,FR
+3576237232,3576237311,GB
+3576237312,3576237455,FR
3576237456,3576237503,GB
-3576237504,3576237615,FR
-3576237616,3576237631,GB
-3576237632,3576237711,FR
+3576237504,3576237599,FR
+3576237600,3576237631,GB
+3576237632,3576237663,FR
+3576237664,3576237679,GB
+3576237680,3576237711,FR
3576237712,3576237743,GB
-3576237744,3576238143,FR
+3576237744,3576237919,FR
+3576237920,3576237935,GB
+3576237936,3576238143,FR
3576238144,3576238159,GB
3576238160,3576238305,FR
3576238306,3576238335,GB
@@ -124840,10 +137751,8 @@
3576238512,3576238527,GB
3576238528,3576238559,FR
3576238560,3576238575,GB
-3576238576,3576238607,FR
-3576238608,3576238623,GB
-3576238624,3576238639,FR
-3576238640,3576238655,GB
+3576238576,3576238647,FR
+3576238648,3576238655,GB
3576238656,3576238863,FR
3576238864,3576238879,GB
3576238880,3576238895,FR
@@ -124895,14 +137804,12 @@
3576242320,3576242327,GB
3576242328,3576242335,FR
3576242336,3576242343,GB
-3576242344,3576243967,FR
-3576243968,3576243999,GB
-3576244000,3576244031,FR
-3576244032,3576244047,GB
-3576244048,3576244127,FR
+3576242344,3576244103,FR
+3576244104,3576244111,GB
+3576244112,3576244127,FR
3576244128,3576244143,GB
-3576244144,3576246399,FR
-3576246400,3576246463,GB
+3576244144,3576246407,FR
+3576246408,3576246463,GB
3576246464,3576246656,FR
3576246657,3576246727,GB
3576246728,3576246743,FR
@@ -124912,8 +137819,8 @@
3576249368,3576249463,FR
3576249464,3576249471,GB
3576249472,3576249527,FR
-3576249528,3576249535,GB
-3576249536,3576249743,FR
+3576249528,3576249567,GB
+3576249568,3576249743,FR
3576249744,3576249791,GB
3576249792,3576249807,FR
3576249808,3576249823,GB
@@ -124931,15 +137838,13 @@
3576251616,3576251647,GB
3576251648,3576252415,FR
3576252416,3576252671,GB
-3576252672,3576254551,FR
-3576254552,3576254559,GB
+3576252672,3576254543,FR
+3576254544,3576254559,GB
3576254560,3576254607,FR
3576254608,3576254615,GB
3576254616,3576254623,FR
3576254624,3576254647,GB
-3576254648,3576254655,FR
-3576254656,3576254687,GB
-3576254688,3576254847,FR
+3576254648,3576254847,FR
3576254848,3576254855,GB
3576254856,3576254863,FR
3576254864,3576254879,GB
@@ -124948,18 +137853,24 @@
3576254904,3576255151,FR
3576255152,3576255199,GB
3576255200,3576255215,FR
-3576255216,3576255263,GB
-3576255264,3576255375,FR
+3576255216,3576255231,GB
+3576255232,3576255375,FR
3576255376,3576255383,GB
3576255384,3576255407,FR
3576255408,3576255423,GB
3576255424,3576255431,FR
3576255432,3576255439,GB
-3576255440,3576255519,FR
+3576255440,3576255447,FR
+3576255448,3576255455,GB
+3576255456,3576255471,FR
+3576255472,3576255479,GB
+3576255480,3576255519,FR
3576255520,3576255527,GB
3576255528,3576255543,FR
3576255544,3576255551,GB
-3576255552,3576255631,FR
+3576255552,3576255575,FR
+3576255576,3576255583,GB
+3576255584,3576255631,FR
3576255632,3576255647,GB
3576255648,3576255671,FR
3576255672,3576255679,GB
@@ -124993,11 +137904,7 @@
3576256896,3576256959,GB
3576256960,3576256991,FR
3576256992,3576257007,GB
-3576257008,3576257079,FR
-3576257080,3576257087,GB
-3576257088,3576257103,FR
-3576257104,3576257111,GB
-3576257112,3576257135,FR
+3576257008,3576257135,FR
3576257136,3576257151,GB
3576257152,3576257159,FR
3576257160,3576257167,GB
@@ -125010,9 +137917,7 @@
3576257376,3576257455,FR
3576257456,3576257471,GB
3576257472,3576257487,FR
-3576257488,3576257495,GB
-3576257496,3576257503,FR
-3576257504,3576257535,GB
+3576257488,3576257535,GB
3576257536,3576257551,FR
3576257552,3576257583,GB
3576257584,3576257631,FR
@@ -125025,13 +137930,9 @@
3576257856,3576257871,GB
3576257872,3576257887,FR
3576257888,3576257903,GB
-3576257904,3576257983,FR
-3576257984,3576257999,GB
-3576258000,3576258055,FR
-3576258056,3576258063,GB
-3576258064,3576258079,FR
-3576258080,3576258095,GB
-3576258096,3576258167,FR
+3576257904,3576257975,FR
+3576257976,3576258015,GB
+3576258016,3576258167,FR
3576258168,3576258175,GB
3576258176,3576258351,FR
3576258352,3576258399,GB
@@ -125049,16 +137950,16 @@
3576258672,3576258687,GB
3576258688,3576258703,FR
3576258704,3576258783,GB
-3576258784,3576258815,FR
-3576258816,3576258847,GB
+3576258784,3576258823,FR
+3576258824,3576258847,GB
3576258848,3576258863,FR
3576258864,3576258895,GB
3576258896,3576258943,FR
3576258944,3576259007,GB
3576259008,3576259023,FR
3576259024,3576259039,GB
-3576259040,3576259071,FR
-3576259072,3576259087,GB
+3576259040,3576259079,FR
+3576259080,3576259087,GB
3576259088,3576259103,FR
3576259104,3576259199,GB
3576259200,3576259231,FR
@@ -125093,7 +137994,9 @@
3576260272,3576260287,GB
3576260288,3576260303,FR
3576260304,3576260335,GB
-3576260336,3576260463,FR
+3576260336,3576260415,FR
+3576260416,3576260447,GB
+3576260448,3576260463,FR
3576260464,3576260543,GB
3576260544,3576260559,FR
3576260560,3576260607,GB
@@ -125117,17 +138020,13 @@
3576261080,3576261095,GB
3576261096,3576261103,FR
3576261104,3576261111,GB
-3576261112,3576261375,FR
-3576261376,3576261631,GB
-3576261632,3576261927,FR
-3576261928,3576261935,GB
-3576261936,3576263439,FR
-3576263440,3576263487,GB
-3576263488,3576263519,FR
+3576261112,3576261391,FR
+3576261392,3576261631,GB
+3576261632,3576263463,FR
+3576263464,3576263471,GB
+3576263472,3576263519,FR
3576263520,3576263527,GB
-3576263528,3576263535,FR
-3576263536,3576263551,GB
-3576263552,3576263567,FR
+3576263528,3576263567,FR
3576263568,3576263575,GB
3576263576,3576263583,FR
3576263584,3576263599,GB
@@ -125138,34 +138037,32 @@
3576263744,3576263751,FR
3576263752,3576263759,GB
3576263760,3576263791,FR
-3576263792,3576263887,GB
-3576263888,3576263911,FR
+3576263792,3576263903,GB
+3576263904,3576263911,FR
3576263912,3576263919,GB
3576263920,3576264295,FR
3576264296,3576264319,GB
3576264320,3576264383,FR
3576264384,3576264399,GB
3576264400,3576264447,FR
-3576264448,3576264511,GB
-3576264512,3576264543,FR
+3576264448,3576264527,GB
+3576264528,3576264543,FR
3576264544,3576264559,GB
3576264560,3576264575,FR
3576264576,3576264623,GB
3576264624,3576264639,FR
3576264640,3576264687,GB
-3576264688,3576265287,FR
-3576265288,3576265295,GB
-3576265296,3576265303,FR
+3576264688,3576265303,FR
3576265304,3576265311,GB
-3576265312,3576265327,FR
-3576265328,3576265335,GB
-3576265336,3576265343,FR
-3576265344,3576265367,GB
+3576265312,3576265319,FR
+3576265320,3576265367,GB
3576265368,3576265375,FR
3576265376,3576265383,GB
3576265384,3576265399,FR
3576265400,3576265431,GB
-3576265432,3576265463,FR
+3576265432,3576265439,FR
+3576265440,3576265455,GB
+3576265456,3576265463,FR
3576265464,3576265471,GB
3576265472,3576265759,FR
3576265760,3576265775,GB
@@ -125177,10 +138074,12 @@
3576265848,3576265863,GB
3576265864,3576265879,FR
3576265880,3576265903,GB
-3576265904,3576266663,FR
-3576266664,3576266671,GB
-3576266672,3576266687,FR
-3576266688,3576266751,GB
+3576265904,3576265919,FR
+3576265920,3576265935,GB
+3576265936,3576266255,FR
+3576266256,3576266495,GB
+3576266496,3576266663,FR
+3576266664,3576266751,GB
3576266752,3576299519,FR
3576299520,3576365055,AE
3576365056,3576430591,TR
@@ -125217,14 +138116,12 @@
3576889344,3576954879,NL
3576954880,3576987647,NO
3576987648,3577001983,GB
-3577001984,3577003583,NL
-3577003584,3577003711,GB
-3577003712,3577003727,NL
-3577003728,3577003735,GB
-3577003736,3577003767,NL
+3577001984,3577003647,NL
+3577003648,3577003711,GB
+3577003712,3577003767,NL
3577003768,3577003771,GB
-3577003772,3577003775,NL
-3577003776,3577020415,GB
+3577003772,3577004031,NL
+3577004032,3577020415,GB
3577020416,3577085951,NL
3577085952,3577151487,DE
3577151488,3577167871,FR
@@ -125247,9 +138144,13 @@
3577546240,3577546367,US
3577546368,3577547455,DE
3577547456,3577547519,FR
-3577547520,3577551407,DE
+3577547520,3577550983,DE
+3577550984,3577550991,CH
+3577550992,3577551407,DE
3577551408,3577551411,US
-3577551412,3577557215,DE
+3577551412,3577553599,DE
+3577553600,3577553607,DK
+3577553608,3577557215,DE
3577557216,3577557231,US
3577557232,3577559775,DE
3577559776,3577559783,FR
@@ -125257,17 +138158,19 @@
3577562392,3577562399,GB
3577562400,3577567711,DE
3577567712,3577567719,IT
-3577567720,3577577231,DE
+3577567720,3577571391,DE
+3577571392,3577571399,DK
+3577571400,3577572391,DE
+3577572392,3577572399,GB
+3577572400,3577577231,DE
3577577232,3577577247,US
-3577577248,3577580887,DE
-3577580888,3577580895,DK
-3577580896,3577592431,DE
+3577577248,3577592431,DE
3577592432,3577592447,FR
3577592448,3577592743,DE
3577592744,3577592751,IE
-3577592752,3577606599,DE
-3577606600,3577606607,GB
-3577606608,3577608743,DE
+3577592752,3577607559,DE
+3577607560,3577607567,NL
+3577607568,3577608743,DE
3577608744,3577608751,ES
3577608752,3577610367,DE
3577610368,3577610495,GB
@@ -125325,11 +138228,8 @@
3577625208,3577625215,GB
3577625216,3577625231,EU
3577625232,3577625599,GB
-3577625600,3577625823,EU
-3577625824,3577625839,GB
-3577625840,3577625855,DE
-3577625856,3577626367,GB
-3577626368,3577626623,EU
+3577625600,3577625791,EU
+3577625792,3577626623,GB
3577626624,3577627135,FR
3577627136,3577627391,EU
3577627392,3577627647,GB
@@ -125370,19 +138270,15 @@
3577640720,3577640735,EU
3577640736,3577641151,FR
3577641152,3577641159,EU
-3577641160,3577641175,FR
-3577641176,3577641183,EU
-3577641184,3577641199,FR
-3577641200,3577641215,EU
-3577641216,3577641391,FR
+3577641160,3577641391,FR
3577641392,3577641399,EU
-3577641400,3577641423,FR
-3577641424,3577641983,EU
-3577641984,3577642023,GB
-3577642024,3577642031,EU
-3577642032,3577642111,GB
-3577642112,3577642175,EU
-3577642176,3577642239,GB
+3577641400,3577641439,FR
+3577641440,3577641983,EU
+3577641984,3577642007,GB
+3577642008,3577642015,EU
+3577642016,3577642055,GB
+3577642056,3577642063,EU
+3577642064,3577642239,GB
3577642240,3577642495,EU
3577642496,3577642623,FR
3577642624,3577642751,EU
@@ -125445,7 +138341,8 @@
3577659392,3577659679,GR
3577659680,3577659711,EU
3577659712,3577659743,GR
-3577659744,3577660159,EU
+3577659744,3577659903,EU
+3577659904,3577660159,GB
3577660160,3577660607,BE
3577660608,3577660671,EU
3577660672,3577661439,BE
@@ -125491,9 +138388,7 @@
3578208128,3578208191,PK
3578208192,3578234759,DE
3578234760,3578234767,US
-3578234768,3578236791,DE
-3578236792,3578236799,PL
-3578236800,3578265599,DE
+3578234768,3578265599,DE
3578265600,3578331135,GB
3578331136,3578339327,PL
3578339328,3578347519,ES
@@ -125545,9 +138440,7 @@
3579193728,3579193815,NL
3579193816,3579193823,ES
3579193824,3579193855,NL
-3579193856,3579194039,GB
-3579194040,3579194047,SE
-3579194048,3579194103,GB
+3579193856,3579194103,GB
3579194104,3579194111,US
3579194112,3579197055,GB
3579197056,3579197183,US
@@ -125788,14 +138681,14 @@
3580199424,3580199935,SE
3580199936,3580200447,EE
3580200448,3580200959,SE
-3580200960,3580201471,LT
-3580201472,3580203519,SE
+3580200960,3580201983,LT
+3580201984,3580203519,SE
3580203520,3580204543,RU
-3580204544,3580205055,SE
+3580204544,3580205055,NL
3580205056,3580207103,HR
3580207104,3580208127,SE
-3580208128,3580208639,EE
-3580208640,3580213247,SE
+3580208128,3580209151,EE
+3580209152,3580213247,SE
3580213248,3580214271,CH
3580214272,3580214783,LV
3580214784,3580223487,SE
@@ -125816,9 +138709,16 @@
3580252672,3580254207,EE
3580254208,3580260351,DE
3580260352,3580265727,AT
-3580265728,3580338175,SE
-3580338176,3580339199,HR
-3580339200,3580362751,SE
+3580265728,3580268543,SE
+3580268544,3580272639,LV
+3580272640,3580280831,SE
+3580280832,3580329983,RU
+3580329984,3580338175,SE
+3580338176,3580339711,HR
+3580339712,3580340223,SE
+3580340224,3580344319,LT
+3580344320,3580354559,SE
+3580354560,3580362751,LT
3580362752,3580473375,GB
3580473376,3580473391,IE
3580473392,3580473503,GB
@@ -125885,7 +138785,7 @@
3580686336,3580688383,BG
3580688384,3580698623,RU
3580698624,3580702719,PL
-3580706816,3580710911,RU
+3580702720,3580710911,RU
3580710912,3580715007,UA
3580715008,3580719103,RU
3580719104,3580723199,NL
@@ -125957,7 +138857,15 @@
3582050304,3582058495,NL
3582058496,3582066687,AT
3582066688,3582074879,UA
-3582074880,3582078631,GB
+3582074880,3582076079,GB
+3582076080,3582076095,AE
+3582076096,3582076863,GB
+3582076864,3582076895,DE
+3582076896,3582076927,GB
+3582076928,3582077111,ES
+3582077112,3582077439,GB
+3582077440,3582077471,DE
+3582077472,3582078631,GB
3582078632,3582078639,DE
3582078640,3582081023,GB
3582081024,3582081535,ES
@@ -125967,7 +138875,9 @@
3582091264,3582099455,QA
3582099456,3582107647,GB
3582107648,3582115839,NL
-3582115840,3582116863,SE
+3582115840,3582116095,SE
+3582116096,3582116351,EE
+3582116352,3582116863,SE
3582116864,3582117887,EE
3582117888,3582119423,LT
3582119424,3582120959,SE
@@ -125982,25 +138892,13 @@
3582156800,3582164991,GB
3582164992,3582173183,SE
3582173184,3582181375,GB
-3582181376,3582190847,DE
-3582190848,3582190879,CH
-3582190880,3582190927,DE
+3582181376,3582190927,DE
3582190928,3582190931,FR
-3582190932,3582191023,DE
-3582191024,3582191031,BE
-3582191032,3582192127,DE
+3582190932,3582192127,DE
3582192128,3582192143,NL
-3582192144,3582192287,DE
-3582192288,3582192303,CH
-3582192304,3582194775,DE
+3582192144,3582194775,DE
3582194776,3582194783,CY
-3582194784,3582194863,DE
-3582194864,3582194879,CH
-3582194880,3582195135,DE
-3582195136,3582195143,CH
-3582195144,3582196183,DE
-3582196184,3582196191,BE
-3582196192,3582197127,DE
+3582194784,3582197127,DE
3582197128,3582197135,BZ
3582197136,3582197759,DE
3582197760,3582205951,DK
@@ -126014,7 +138912,11 @@
3582223088,3582223095,NL
3582223096,3582223967,SE
3582223968,3582223975,NO
-3582223976,3582226599,SE
+3582223976,3582224375,SE
+3582224376,3582224379,FI
+3582224380,3582225719,SE
+3582225720,3582225727,FI
+3582225728,3582226599,SE
3582226600,3582226607,FI
3582226608,3582230527,SE
3582230528,3582238719,BE
@@ -126026,20 +138928,119 @@
3582287872,3582296063,DE
3582296064,3582304255,GB
3582304256,3582312447,UA
-3582312448,3582312703,GB
-3582312704,3582312959,JE
-3582312960,3582314495,GB
-3582314496,3582314751,JE
-3582314752,3582315775,GB
+3582312448,3582313249,JE
+3582313250,3582313250,GB
+3582313251,3582313256,JE
+3582313257,3582313260,GB
+3582313261,3582313271,JE
+3582313272,3582313342,GB
+3582313343,3582313343,JE
+3582313344,3582313470,GB
+3582313471,3582313471,JE
+3582313472,3582313559,GB
+3582313560,3582313567,JE
+3582313568,3582313599,GB
+3582313600,3582313695,JE
+3582313696,3582313726,GB
+3582313727,3582313727,JE
+3582313728,3582313743,GB
+3582313744,3582313759,JE
+3582313760,3582313775,GB
+3582313776,3582313791,JE
+3582313792,3582313799,GB
+3582313800,3582313807,JE
+3582313808,3582313871,GB
+3582313872,3582313967,JE
+3582313968,3582313982,GB
+3582313983,3582313991,JE
+3582313992,3582314007,GB
+3582314008,3582314015,JE
+3582314016,3582314079,GB
+3582314080,3582314095,JE
+3582314096,3582314119,GB
+3582314120,3582314127,JE
+3582314128,3582314167,GB
+3582314168,3582314175,JE
+3582314176,3582314187,GB
+3582314188,3582314195,JE
+3582314196,3582314199,GB
+3582314200,3582314207,JE
+3582314208,3582314235,GB
+3582314236,3582314239,JE
+3582314240,3582314263,GB
+3582314264,3582314271,JE
+3582314272,3582314303,GB
+3582314304,3582314311,JE
+3582314312,3582314343,GB
+3582314344,3582314383,JE
+3582314384,3582314407,GB
+3582314408,3582314415,JE
+3582314416,3582314443,GB
+3582314444,3582314447,JE
+3582314448,3582314451,GB
+3582314452,3582314455,JE
+3582314456,3582314491,GB
+3582314492,3582314783,JE
+3582314784,3582314879,GB
+3582314880,3582314911,JE
+3582314912,3582314943,GB
+3582314944,3582314991,JE
+3582314992,3582314999,GB
+3582315000,3582315023,JE
+3582315024,3582315063,GB
+3582315064,3582315079,JE
+3582315080,3582315095,GB
+3582315096,3582315135,JE
+3582315136,3582315191,GB
+3582315192,3582315271,JE
+3582315272,3582315279,GB
+3582315280,3582315287,JE
+3582315288,3582315302,GB
+3582315303,3582315303,JE
+3582315304,3582315327,GB
+3582315328,3582315335,JE
+3582315336,3582315343,GB
+3582315344,3582315351,JE
+3582315352,3582315383,GB
+3582315384,3582315391,JE
+3582315392,3582315463,GB
+3582315464,3582315519,JE
+3582315520,3582315775,GB
3582315776,3582316543,JE
-3582316544,3582317055,GB
+3582316544,3582316863,GB
+3582316864,3582316871,JE
+3582316872,3582317055,GB
3582317056,3582317311,JE
-3582317312,3582317567,GB
+3582317312,3582317479,GB
+3582317480,3582317487,JE
+3582317488,3582317567,GB
3582317568,3582318079,JE
-3582318080,3582318591,GB
+3582318080,3582318399,GB
+3582318400,3582318407,JE
+3582318408,3582318511,GB
+3582318512,3582318519,JE
+3582318520,3582318591,GB
3582318592,3582318847,JE
-3582318848,3582320383,GB
-3582320384,3582320639,JE
+3582318848,3582318935,GB
+3582318936,3582318943,JE
+3582318944,3582318999,GB
+3582319000,3582319007,JE
+3582319008,3582319103,GB
+3582319104,3582319111,JE
+3582319112,3582319359,GB
+3582319360,3582319487,JE
+3582319488,3582319870,GB
+3582319871,3582319871,JE
+3582319872,3582319879,GB
+3582319880,3582319887,JE
+3582319888,3582319895,GB
+3582319896,3582319903,JE
+3582319904,3582319927,GB
+3582319928,3582319935,JE
+3582319936,3582320207,GB
+3582320208,3582320367,JE
+3582320368,3582320375,GB
+3582320376,3582320639,JE
3582320640,3582328831,CH
3582328832,3582337023,HU
3582337024,3582341119,ES
@@ -126068,33 +139069,37 @@
3582509056,3582517247,SA
3582517248,3582525439,PL
3582525440,3582525695,IM
-3582525696,3582525727,GB
-3582525728,3582525735,IM
-3582525736,3582525743,GB
+3582525696,3582525743,GB
3582525744,3582525747,IM
3582525748,3582525879,GB
3582525880,3582525895,IM
-3582525896,3582525923,GB
-3582525924,3582525927,IM
-3582525928,3582525959,GB
-3582525960,3582525975,IM
-3582525976,3582526055,GB
-3582526056,3582526063,IM
+3582525896,3582526059,GB
+3582526060,3582526063,IM
3582526064,3582526135,GB
3582526136,3582526143,IM
-3582526144,3582526463,GB
+3582526144,3582526151,GB
+3582526152,3582526159,IM
+3582526160,3582526463,GB
3582526464,3582526503,IM
-3582526504,3582526815,GB
+3582526504,3582526623,GB
+3582526624,3582526631,IM
+3582526632,3582526671,GB
+3582526672,3582526679,IM
+3582526680,3582526719,GB
+3582526720,3582526727,IM
+3582526728,3582526815,GB
3582526816,3582526819,IM
3582526820,3582526911,GB
3582526912,3582526927,IM
-3582526928,3582527231,GB
+3582526928,3582526935,GB
+3582526936,3582526943,IM
+3582526944,3582527231,GB
3582527232,3582527271,IM
-3582527272,3582527311,GB
-3582527312,3582527335,IM
-3582527336,3582527455,GB
-3582527456,3582527463,IM
-3582527464,3582527479,GB
+3582527272,3582527303,GB
+3582527304,3582527311,IM
+3582527312,3582527327,GB
+3582527328,3582527335,IM
+3582527336,3582527479,GB
3582527480,3582527743,IM
3582527744,3582529023,GB
3582529024,3582530303,IM
@@ -126105,25 +139110,23 @@
3582530960,3582530979,GB
3582530980,3582530983,IM
3582530984,3582530991,GB
-3582530992,3582531007,IM
-3582531008,3582531031,GB
+3582530992,3582530999,IM
+3582531000,3582531031,GB
3582531032,3582531039,IM
-3582531040,3582531071,GB
-3582531072,3582531423,IM
-3582531424,3582531431,GB
-3582531432,3582531439,IM
+3582531040,3582531135,GB
+3582531136,3582531439,IM
3582531440,3582531471,GB
3582531472,3582531487,IM
-3582531488,3582531511,GB
-3582531512,3582531535,IM
+3582531488,3582531503,GB
+3582531504,3582531535,IM
3582531536,3582531551,GB
3582531552,3582531559,IM
3582531560,3582531583,GB
3582531584,3582531631,IM
-3582531632,3582531647,GB
-3582531648,3582531663,IM
-3582531664,3582531687,GB
-3582531688,3582531695,IM
+3582531632,3582531651,GB
+3582531652,3582531663,IM
+3582531664,3582531671,GB
+3582531672,3582531695,IM
3582531696,3582531767,GB
3582531768,3582531775,IM
3582531776,3582531783,GB
@@ -126153,9 +139156,7 @@
3582566752,3582566767,BE
3582566768,3582566783,EU
3582566784,3582566847,BE
-3582566848,3582566863,EU
-3582566864,3582566879,BE
-3582566880,3582566911,EU
+3582566848,3582566911,EU
3582566912,3582567019,BE
3582567020,3582567023,EU
3582567024,3582567039,BE
@@ -126199,8 +139200,7 @@
3582569472,3582569535,FR
3582569536,3582569983,EU
3582569984,3582570239,FR
-3582570240,3582570367,DE
-3582570368,3582570399,EU
+3582570240,3582570399,GB
3582570400,3582570431,FR
3582570432,3582570463,EU
3582570464,3582570471,FR
@@ -126217,8 +139217,8 @@
3582570976,3582570983,EU
3582570984,3582571031,FR
3582571032,3582571135,EU
-3582571136,3582571199,FR
-3582571200,3582571303,EU
+3582571136,3582571263,FR
+3582571264,3582571303,EU
3582571304,3582571307,CH
3582571308,3582571375,EU
3582571376,3582571391,FR
@@ -126230,9 +139230,7 @@
3582571648,3582571687,IE
3582571688,3582571691,EU
3582571692,3582571719,IE
-3582571720,3582571735,EU
-3582571736,3582571743,IE
-3582571744,3582571751,EU
+3582571720,3582571751,EU
3582571752,3582571839,IE
3582571840,3582571999,EU
3582572000,3582572015,IE
@@ -126290,9 +139288,11 @@
3582590976,3582599167,FR
3582599168,3582607359,DE
3582607360,3582615551,RU
-3582615552,3582623743,CY
+3582615552,3582623743,GB
3582623744,3582631935,FI
-3582631936,3582640127,NO
+3582631936,3582635007,NO
+3582635008,3582635263,SE
+3582635264,3582640127,NO
3582640128,3582648319,RU
3582648320,3582656511,PT
3582656512,3582664047,ES
@@ -126366,11 +139366,11 @@
3583031848,3583031895,GR
3583031896,3583031903,SG
3583031904,3583031919,LB
-3583031920,3583032095,IT
-3583032096,3583032127,GR
+3583031920,3583032111,IT
+3583032112,3583032127,GR
3583032128,3583032159,IT
-3583032160,3583032191,FR
-3583032192,3583032319,IT
+3583032160,3583032255,FR
+3583032256,3583032319,IT
3583032320,3583032575,FR
3583032576,3583032831,IT
3583032832,3583033087,SG
@@ -126398,7 +139398,8 @@
3583157488,3583157503,IE
3583157504,3583158511,GB
3583158512,3583158527,IE
-3583158528,3583159039,DE
+3583158528,3583158783,GB
+3583158784,3583159039,DE
3583159040,3583159359,GB
3583159360,3583159375,DE
3583159376,3583160319,GB
@@ -126422,7 +139423,11 @@
3583246336,3583254527,RU
3583254528,3583262719,GB
3583262720,3583270911,TR
-3583270912,3583287295,DE
+3583270912,3583283743,DE
+3583283744,3583283747,A2
+3583283748,3583283867,DE
+3583283868,3583283871,A2
+3583283872,3583287295,DE
3583287296,3583295487,RU
3583295488,3583303679,ES
3583303680,3583311871,NL
@@ -126444,7 +139449,9 @@
3583342592,3583344639,ME
3583344640,3583345663,BG
3583345664,3583346175,MK
-3583346176,3583350271,BG
+3583346176,3583346687,BG
+3583346688,3583346943,MK
+3583346944,3583350271,BG
3583350272,3583351039,MK
3583351040,3583352319,BG
3583352320,3583352831,MK
@@ -126490,15 +139497,11 @@
3583680512,3583688703,RU
3583688704,3583696895,UA
3583696896,3583705087,NL
-3583705088,3583705175,UA
-3583705176,3583705223,NA
-3583705224,3583705239,UA
+3583705088,3583705239,UA
3583705240,3583705247,NA
3583705248,3583705255,UA
3583705256,3583705263,NA
-3583705264,3583705287,UA
-3583705288,3583705295,NA
-3583705296,3583705303,UA
+3583705264,3583705303,UA
3583705304,3583705319,NA
3583705320,3583705335,UA
3583705336,3583705343,NA
@@ -126516,12 +139519,7 @@
3583705848,3583705855,NA
3583705856,3583705859,UA
3583705860,3583705863,NA
-3583705864,3583705887,UA
-3583705888,3583705895,RU
-3583705896,3583705903,UA
-3583705904,3583705911,NA
-3583705912,3583705919,RU
-3583705920,3583706023,UA
+3583705864,3583706023,UA
3583706024,3583706031,NA
3583706032,3583706055,UA
3583706056,3583706063,RU
@@ -126563,8 +139561,8 @@
3583706864,3583706879,NA
3583706880,3583706883,UA
3583706884,3583706887,NA
-3583706888,3583706895,UA
-3583706896,3583706911,NA
+3583706888,3583706903,UA
+3583706904,3583706911,NA
3583706912,3583706927,UA
3583706928,3583706943,NA
3583706944,3583706959,UA
@@ -126613,31 +139611,17 @@
3583709448,3583709455,NA
3583709456,3583709503,UA
3583709504,3583709511,RU
-3583709512,3583709535,UA
-3583709536,3583709543,NA
-3583709544,3583709551,UA
-3583709552,3583709559,NA
-3583709560,3583709575,UA
-3583709576,3583709583,NA
-3583709584,3583709599,UA
-3583709600,3583709607,NA
+3583709512,3583709607,UA
3583709608,3583709615,RU
-3583709616,3583709631,UA
-3583709632,3583709639,NA
-3583709640,3583709663,UA
-3583709664,3583709671,NA
+3583709616,3583709663,UA
+3583709664,3583709671,DE
3583709672,3583709699,UA
3583709700,3583709703,NA
-3583709704,3583709727,UA
-3583709728,3583709751,NA
-3583709752,3583709759,UA
+3583709704,3583709735,UA
+3583709736,3583709743,NA
+3583709744,3583709759,UA
3583709760,3583709767,NA
-3583709768,3583709791,UA
-3583709792,3583709799,NA
-3583709800,3583709807,DE
-3583709808,3583709823,UA
-3583709824,3583709831,NA
-3583709832,3583709839,UA
+3583709768,3583709839,UA
3583709840,3583709863,NA
3583709864,3583709871,RU
3583709872,3583709879,NA
@@ -126655,66 +139639,35 @@
3583710120,3583710135,NA
3583710136,3583710211,UA
3583710212,3583710215,NA
-3583710216,3583710239,UA
-3583710240,3583710247,NA
-3583710248,3583710319,UA
-3583710320,3583710335,NA
-3583710336,3583710367,UA
+3583710216,3583710319,UA
+3583710320,3583710327,NA
+3583710328,3583710367,UA
3583710368,3583710375,AQ
3583710376,3583710383,NA
3583710384,3583710407,UA
3583710408,3583710415,NA
3583710416,3583710455,UA
3583710456,3583710459,NA
-3583710460,3583710519,UA
-3583710520,3583710527,NA
-3583710528,3583710631,UA
+3583710460,3583710631,UA
3583710632,3583710639,NA
-3583710640,3583710671,UA
-3583710672,3583710679,NA
-3583710680,3583710703,UA
+3583710640,3583710703,UA
3583710704,3583710711,NA
3583710712,3583710743,UA
3583710744,3583710751,BE
-3583710752,3583710823,UA
-3583710824,3583710831,NA
-3583710832,3583710855,UA
-3583710856,3583710863,NA
-3583710864,3583710871,UA
-3583710872,3583710879,NA
-3583710880,3583710887,UA
-3583710888,3583710903,NA
-3583710904,3583710935,UA
-3583710936,3583710943,NA
-3583710944,3583710991,UA
-3583710992,3583710999,NA
-3583711000,3583711007,UA
+3583710752,3583710887,UA
+3583710888,3583710895,NA
+3583710896,3583711007,UA
3583711008,3583711015,RU
3583711016,3583711023,NA
-3583711024,3583711079,UA
-3583711080,3583711087,GB
-3583711088,3583711095,NA
-3583711096,3583711247,UA
+3583711024,3583711247,UA
3583711248,3583711255,NA
-3583711256,3583711311,UA
-3583711312,3583711319,NA
-3583711320,3583711327,UA
+3583711256,3583711327,UA
3583711328,3583711335,NA
3583711336,3583711359,UA
3583711360,3583711367,NA
3583711368,3583711375,UA
3583711376,3583711383,NA
-3583711384,3583711495,UA
-3583711496,3583711503,NA
-3583711504,3583711551,UA
-3583711552,3583711559,NA
-3583711560,3583711567,UA
-3583711568,3583711591,NA
-3583711592,3583711607,UA
-3583711608,3583711615,NA
-3583711616,3583711631,UA
-3583711632,3583711639,RU
-3583711640,3583711695,UA
+3583711384,3583711695,UA
3583711696,3583711703,NA
3583711704,3583711711,UA
3583711712,3583711719,NA
@@ -126725,51 +139678,24 @@
3583711824,3583711871,UA
3583711872,3583711879,NA
3583711880,3583712015,UA
-3583712016,3583712031,NA
-3583712032,3583712119,UA
+3583712016,3583712023,NA
+3583712024,3583712119,UA
3583712120,3583712127,NA
3583712128,3583712159,UA
-3583712160,3583712199,NA
-3583712200,3583712287,UA
-3583712288,3583712295,NA
-3583712296,3583712311,UA
+3583712160,3583712191,NA
+3583712192,3583712311,UA
3583712312,3583712319,NA
-3583712320,3583712447,UA
-3583712448,3583712479,NA
-3583712480,3583712623,UA
-3583712624,3583712631,NA
-3583712632,3583712655,UA
-3583712656,3583712663,NA
-3583712664,3583712711,UA
-3583712712,3583712719,NA
-3583712720,3583712727,UA
-3583712728,3583712735,RU
-3583712736,3583712743,NA
-3583712744,3583712759,UA
-3583712760,3583712763,NA
-3583712764,3583712775,UA
+3583712320,3583712455,UA
+3583712456,3583712463,NA
+3583712464,3583712471,UA
+3583712472,3583712479,NA
+3583712480,3583712775,UA
3583712776,3583712783,NA
-3583712784,3583712831,UA
-3583712832,3583712847,AQ
-3583712848,3583712927,UA
+3583712784,3583712927,UA
3583712928,3583712943,NA
3583712944,3583713007,UA
3583713008,3583713015,RU
-3583713016,3583713031,UA
-3583713032,3583713039,NA
-3583713040,3583713071,UA
-3583713072,3583713079,NA
-3583713080,3583713103,UA
-3583713104,3583713111,AZ
-3583713112,3583713143,UA
-3583713144,3583713151,NA
-3583713152,3583713167,UA
-3583713168,3583713175,EG
-3583713176,3583713183,UA
-3583713184,3583713191,NA
-3583713192,3583713271,UA
-3583713272,3583713275,RU
-3583713276,3583713279,UA
+3583713016,3583713279,UA
3583713280,3583721471,CZ
3583721472,3583729663,DE
3583729664,3583737855,TR
@@ -126780,34 +139706,48 @@
3583741696,3583741951,NL
3583741952,3583742719,EU
3583742720,3583743487,DE
-3583743488,3583743519,EU
+3583743488,3583743503,FR
+3583743504,3583743519,EU
3583743520,3583743551,FR
3583743552,3583743615,EU
3583743616,3583743743,GB
-3583743744,3583743975,EU
+3583743744,3583743775,EU
+3583743776,3583743807,NL
+3583743808,3583743975,EU
3583743976,3583743983,GB
-3583743984,3583744067,EU
+3583743984,3583744063,EU
+3583744064,3583744067,FR
3583744068,3583744071,GB
-3583744072,3583744127,EU
-3583744128,3583744255,GB
-3583744256,3583744287,EU
+3583744072,3583744095,EU
+3583744096,3583744099,DE
+3583744100,3583744103,FR
+3583744104,3583744111,GB
+3583744112,3583744287,EU
3583744288,3583744303,GB
-3583744304,3583744319,EU
+3583744304,3583744311,EU
+3583744312,3583744319,DE
3583744320,3583744447,GB
3583744448,3583744511,EU
3583744512,3583744767,GB
-3583744768,3583744831,EU
-3583744832,3583744847,GB
-3583744848,3583744959,EU
+3583744768,3583744831,DE
+3583744832,3583744839,GB
+3583744840,3583744927,EU
+3583744928,3583744959,DE
3583744960,3583744991,GB
-3583744992,3583745279,EU
+3583744992,3583744999,EU
+3583745000,3583745003,NL
+3583745004,3583745215,EU
+3583745216,3583745279,SE
3583745280,3583745535,GB
3583745536,3583745663,SE
-3583745664,3583745799,EU
+3583745664,3583745719,EU
+3583745720,3583745723,FR
+3583745724,3583745799,EU
3583745800,3583745807,NL
3583745808,3583745823,GB
3583745824,3583746047,EU
3583746048,3583754239,PL
+3583754240,3583762431,RU
3583762432,3583770623,CZ
3583770624,3583772351,NL
3583772352,3583772367,IT
@@ -126827,8 +139767,8 @@
3583852544,3583853055,SG
3583853056,3583854591,FI
3583854592,3583854726,GB
-3583854727,3583854735,FI
-3583854736,3583854871,GB
+3583854727,3583854727,FI
+3583854728,3583854871,GB
3583854872,3583854879,FI
3583854880,3583855103,GB
3583855104,3583855167,US
@@ -126841,8 +139781,8 @@
3583855248,3583855311,FI
3583855312,3583855327,US
3583855328,3583856383,FI
-3583856384,3583856447,SG
-3583856448,3583856615,FI
+3583856384,3583856463,SG
+3583856464,3583856615,FI
3583856616,3583856639,SG
3583856640,3583860735,FI
3583860736,3583868927,HU
@@ -126898,7 +139838,9 @@
3584093784,3584093791,NL
3584093792,3584094893,NO
3584094894,3584094895,NL
-3584094896,3584095935,NO
+3584094896,3584095807,NO
+3584095808,3584095839,NL
+3584095840,3584095935,NO
3584095936,3584095999,NL
3584096000,3584096255,NO
3584096256,3584098303,NL
@@ -126974,9 +139916,7 @@
3584511024,3584511039,KY
3584511040,3584511055,GB
3584511056,3584511071,NL
-3584511072,3584511135,GB
-3584511136,3584511143,HK
-3584511144,3584511807,GB
+3584511072,3584511807,GB
3584511808,3584511871,MT
3584511872,3584513535,GB
3584513536,3584513567,US
@@ -126994,8 +139934,8 @@
3584589824,3584598015,RU
3584598016,3584606207,CZ
3584606208,3584614399,DE
-3584614400,3584614463,GB
-3584614464,3584614527,IE
+3584614400,3584614495,GB
+3584614496,3584614527,IE
3584614528,3584614591,GB
3584614592,3584614623,IE
3584614624,3584614655,GB
@@ -127003,7 +139943,9 @@
3584614752,3584614759,GB
3584614760,3584614763,IE
3584614764,3584614767,GB
-3584614768,3584622335,IE
+3584614768,3584615167,IE
+3584615168,3584615295,GB
+3584615296,3584622335,IE
3584622336,3584622591,GB
3584622592,3584630783,FI
3584630784,3584638975,BG
@@ -127090,10 +140032,17 @@
3584958464,3584966655,DE
3584966656,3584974847,DK
3584974848,3584983039,FR
-3584983040,3584988655,US
+3584983040,3584988575,US
+3584988576,3584988591,UA
+3584988592,3584988623,US
+3584988624,3584988639,UA
+3584988640,3584988655,US
3584988656,3584988671,UA
-3584988672,3584990303,US
-3584990304,3584990463,UA
+3584988672,3584988927,US
+3584988928,3584989183,UA
+3584989184,3584990303,US
+3584990304,3584990335,UA
+3584990336,3584990463,US
3584990464,3584990495,NL
3584990496,3584990511,US
3584990512,3584990527,UA
@@ -127107,11 +140056,7 @@
3585024000,3585032191,CZ
3585032192,3585048575,LV
3585048576,3585050623,IQ
-3585050624,3585054719,GB
-3585054720,3585055063,NG
-3585055064,3585055071,GB
-3585055072,3585055087,NG
-3585055088,3585056767,GB
+3585050624,3585056767,GB
3585056768,3585064959,LB
3585064960,3585071405,GB
3585071406,3585071409,IN
@@ -127148,7 +140093,9 @@
3585318912,3585327103,DZ
3585327104,3585331327,NL
3585331328,3585331343,FI
-3585331344,3585335295,NL
+3585331344,3585332223,NL
+3585332224,3585332351,A1
+3585332352,3585335295,NL
3585335296,3585343487,UA
3585343488,3585351679,EE
3585351680,3585359871,CZ
@@ -127220,7 +140167,8 @@
3585697536,3585697791,A2
3585697792,3585698047,NG
3585698048,3585698303,A2
-3585698304,3585698815,NG
+3585698304,3585698559,US
+3585698560,3585698815,A2
3585698816,3585699071,GB
3585699072,3585699583,A2
3585699584,3585699711,US
@@ -127268,7 +140216,13 @@
3585720320,3585728511,GB
3585728512,3585736703,SE
3585736704,3585744895,HR
-3585744896,3585750335,FR
+3585744896,3585749295,FR
+3585749296,3585749311,ES
+3585749312,3585750015,FR
+3585750016,3585750031,GB
+3585750032,3585750271,FR
+3585750272,3585750287,ES
+3585750288,3585750335,FR
3585750336,3585750351,GB
3585750352,3585750367,DE
3585750368,3585750383,ES
@@ -127330,11 +140284,14 @@
3585842176,3585842199,IQ
3585842200,3585842207,NL
3585842208,3585842687,IQ
-3585842688,3585843199,NG
+3585842688,3585842943,NG
+3585842944,3585843199,NL
3585843200,3585851391,NO
3585851392,3585859583,SE
3585859584,3585860607,RU
-3585860608,3585865727,DE
+3585860608,3585863679,DE
+3585863680,3585864703,RU
+3585864704,3585865727,DE
3585865728,3585867775,RU
3585867776,3585875967,NO
3585875968,3585884159,CH
@@ -127365,7 +140322,7 @@
3585940480,3585940735,BE
3585940736,3585941503,NL
3585941504,3585943135,PL
-3585943136,3585943167,US
+3585943136,3585943167,HU
3585943168,3585949695,PL
3585949696,3585957887,KW
3585957888,3585966079,SE
@@ -127408,8 +140365,8 @@
3586228224,3586237695,BE
3586237696,3586237951,NL
3586237952,3586244607,BE
-3586244608,3586244927,NL
-3586244928,3586246655,GB
+3586244608,3586245119,NL
+3586245120,3586246655,GB
3586246656,3586248703,BE
3586248704,3586250449,NL
3586250450,3586250457,BE
@@ -127419,8 +140376,8 @@
3586258944,3586259455,BE
3586259456,3586269247,NL
3586269248,3586269263,ES
-3586269264,3586269343,NL
-3586269344,3586269415,ES
+3586269264,3586269375,NL
+3586269376,3586269415,ES
3586269416,3586269423,NL
3586269424,3586269439,ES
3586269440,3586269471,NL
@@ -127445,8 +140402,9 @@
3586272384,3586272799,ES
3586272800,3586272807,IT
3586272808,3586272815,ES
-3586272816,3586272831,IT
-3586272832,3586272895,NL
+3586272816,3586272823,IT
+3586272824,3586272863,ES
+3586272864,3586272895,NL
3586272896,3586272959,IT
3586272960,3586272991,ES
3586272992,3586273007,IT
@@ -127470,27 +140428,36 @@
3586441216,3586457599,DE
3586457600,3586473983,NL
3586473984,3586473987,SK
-3586473988,3586476287,HU
+3586473988,3586476031,HU
+3586476032,3586476063,TR
+3586476064,3586476287,HU
3586476288,3586476295,SK
3586476296,3586476311,HU
3586476312,3586476319,AT
3586476320,3586476351,HU
3586476352,3586476383,AT
3586476384,3586476407,UA
-3586476408,3586476431,HU
+3586476408,3586476415,BG
+3586476416,3586476431,HU
3586476432,3586476439,SK
3586476440,3586478079,HU
3586478080,3586478591,SK
-3586478592,3586478847,TR
+3586478592,3586478847,HU
3586478848,3586479103,SK
-3586479104,3586490367,HU
+3586479104,3586479359,TR
+3586479360,3586479615,SK
+3586479616,3586490367,HU
3586490368,3586506751,LT
3586506752,3586523135,NL
-3586523136,3586543519,DE
+3586523136,3586542559,DE
+3586542560,3586542567,AE
+3586542568,3586543519,DE
3586543520,3586543527,GB
3586543528,3586543759,DE
3586543760,3586543791,GB
-3586543792,3586545679,DE
+3586543792,3586544703,DE
+3586544704,3586544719,AE
+3586544720,3586545679,DE
3586545680,3586545703,GB
3586545704,3586546375,DE
3586546376,3586546383,GB
@@ -127552,9 +140519,7 @@
3586680768,3586680831,ES
3586680832,3586681087,FR
3586681088,3586681343,IT
-3586681344,3586682111,FR
-3586682112,3586682175,US
-3586682176,3586682239,FR
+3586681344,3586682239,FR
3586682240,3586682367,US
3586682368,3586682399,AT
3586682400,3586682879,FR
@@ -127563,75 +140528,42 @@
3586703360,3586719743,CH
3586719744,3586752511,ES
3586752512,3586785279,NL
-3586785280,3586793471,RU
3586793472,3586801663,CH
3586801664,3586818047,HR
3586818048,3586834431,IE
3586834432,3586850495,DE
3586850496,3586850511,US
-3586850512,3586850543,DE
-3586850544,3586850559,GR
-3586850560,3586850815,DE
+3586850512,3586850815,DE
3586850816,3586867199,NO
3586867200,3586883583,FR
3586883584,3586899967,IT
3586899968,3586900287,DE
3586900288,3586900351,NL
-3586900352,3586902271,DE
-3586902272,3586902335,CH
-3586902336,3586902411,DE
-3586902412,3586902415,CH
-3586902416,3586903263,DE
-3586903264,3586903295,CH
-3586903296,3586904223,DE
-3586904224,3586904255,CH
-3586904256,3586904319,DE
-3586904320,3586904415,CH
-3586904416,3586904831,DE
+3586900352,3586904831,DE
3586904832,3586904839,VG
-3586904840,3586905039,DE
-3586905040,3586905055,CH
-3586905056,3586905071,DE
-3586905072,3586905079,CH
-3586905080,3586905087,DE
-3586905088,3586905119,CH
-3586905120,3586905167,DE
-3586905168,3586905199,CH
+3586904840,3586905199,DE
3586905200,3586905215,GB
-3586905216,3586905247,DE
-3586905248,3586905279,CH
-3586905280,3586905287,DE
+3586905216,3586905287,DE
3586905288,3586905295,CY
-3586905296,3586906391,DE
-3586906392,3586906399,CH
-3586906400,3586906423,DE
-3586906424,3586906427,CH
-3586906428,3586906719,DE
-3586906720,3586906735,CH
-3586906736,3586907903,DE
-3586907904,3586908031,CH
-3586908032,3586909695,DE
+3586905296,3586909695,DE
3586909696,3586909823,CH
3586909824,3586910559,DE
3586910560,3586910567,NL
3586910568,3586910575,CY
3586910576,3586910587,NL
-3586910588,3586910655,DE
-3586910656,3586910703,NL
-3586910704,3586910711,DE
+3586910588,3586910591,DE
+3586910592,3586910623,NL
+3586910624,3586910655,DE
+3586910656,3586910687,NL
+3586910688,3586910711,DE
3586910712,3586910719,NL
3586910720,3586910991,DE
-3586910992,3586911007,BE
-3586911008,3586911039,DE
-3586911040,3586911103,GB
+3586910992,3586911039,BE
+3586911040,3586911103,DE
3586911104,3586911167,NL
3586911168,3586911191,DE
3586911192,3586911195,BE
-3586911196,3586912511,DE
-3586912512,3586912575,FR
-3586912576,3586912647,DE
-3586912648,3586912651,FR
-3586912652,3586916351,DE
+3586911196,3586916351,DE
3586916352,3586924031,IT
3586924032,3586924047,US
3586924048,3586924543,IT
@@ -127702,13 +140634,7 @@
3587055616,3587063807,UZ
3587063808,3587071583,NL
3587071584,3587071599,BE
-3587071600,3587071615,NL
-3587071616,3587071631,DE
-3587071632,3587072095,NL
-3587072096,3587072127,DE
-3587072128,3587074415,NL
-3587074416,3587074431,BE
-3587074432,3587080191,NL
+3587071600,3587080191,NL
3587080192,3587082367,GB
3587082368,3587082431,US
3587082432,3587088383,GB
@@ -127727,19 +140653,24 @@
3587179456,3587179463,AT
3587179464,3587179471,CH
3587179472,3587186687,AT
-3587186688,3587194495,DE
+3587186688,3587186815,DE
+3587186816,3587187199,A2
+3587187200,3587187455,DE
+3587187456,3587188479,A2
+3587188480,3587188735,DE
+3587188736,3587194495,A2
3587194496,3587194511,RU
-3587194512,3587194879,DE
+3587194512,3587194879,A2
3587194880,3587211263,GB
3587211264,3587211531,AT
3587211532,3587211535,DE
-3587211536,3587211663,AT
-3587211664,3587211671,IT
-3587211672,3587213911,AT
+3587211536,3587213911,AT
3587213912,3587213919,UY
3587213920,3587219455,AT
3587219456,3587227647,RU
-3587227648,3587227759,NL
+3587227648,3587227663,NL
+3587227664,3587227679,GB
+3587227680,3587227759,NL
3587227760,3587227775,GB
3587227776,3587227903,NL
3587227904,3587227967,GB
@@ -127757,7 +140688,9 @@
3587228641,3587228647,GB
3587228648,3587228927,NL
3587228928,3587229455,GB
-3587229456,3587229823,NL
+3587229456,3587229647,NL
+3587229648,3587229663,GB
+3587229664,3587229823,NL
3587229824,3587229839,GB
3587229840,3587229855,ES
3587229856,3587229871,NL
@@ -127787,9 +140720,7 @@
3587230944,3587230967,DE
3587230968,3587230975,GB
3587230976,3587230991,NL
-3587230992,3587231295,GB
-3587231296,3587231327,NL
-3587231328,3587231359,GB
+3587230992,3587231359,GB
3587231360,3587232535,NL
3587232536,3587232711,GB
3587232712,3587232719,NL
@@ -127815,9 +140746,7 @@
3587233952,3587233967,NL
3587233968,3587233983,GB
3587233984,3587233999,NL
-3587234000,3587234015,GB
-3587234016,3587234031,NL
-3587234032,3587234047,GB
+3587234000,3587234047,GB
3587234048,3587234079,NL
3587234080,3587234095,GB
3587234096,3587234143,NL
@@ -127834,7 +140763,9 @@
3587237376,3587237391,GB
3587237392,3587237399,NL
3587237400,3587237407,GB
-3587237408,3587237471,NL
+3587237408,3587237447,NL
+3587237448,3587237455,GB
+3587237456,3587237471,NL
3587237472,3587237487,GB
3587237488,3587237495,NL
3587237496,3587237519,GB
@@ -127844,15 +140775,19 @@
3587238472,3587238479,GB
3587238480,3587238527,NL
3587238528,3587238543,GB
-3587238544,3587238575,NL
-3587238576,3587238583,GB
+3587238544,3587238567,NL
+3587238568,3587238583,GB
3587238584,3587238607,NL
3587238608,3587238911,GB
3587238912,3587239303,NL
3587239304,3587239311,GB
3587239312,3587239903,NL
-3587239904,3587239935,GB
-3587239936,3587240087,NL
+3587239904,3587239919,GB
+3587239920,3587239975,NL
+3587239976,3587239983,GB
+3587239984,3587240063,NL
+3587240064,3587240071,GB
+3587240072,3587240087,NL
3587240088,3587240095,GB
3587240096,3587240103,NL
3587240104,3587240107,GB
@@ -127866,7 +140801,9 @@
3587240512,3587240575,GB
3587240576,3587240615,NL
3587240616,3587240623,GB
-3587240624,3587241143,NL
+3587240624,3587241071,NL
+3587241072,3587241087,GB
+3587241088,3587241143,NL
3587241144,3587241151,GB
3587241152,3587241223,NL
3587241224,3587241247,GB
@@ -127874,13 +140811,21 @@
3587241264,3587241271,GB
3587241272,3587241343,NL
3587241344,3587241471,GB
-3587241472,3587242063,NL
-3587242064,3587242071,BE
-3587242072,3587243935,NL
+3587241472,3587242095,NL
+3587242096,3587242111,GB
+3587242112,3587242271,NL
+3587242272,3587242287,GB
+3587242288,3587242463,NL
+3587242464,3587242471,GB
+3587242472,3587243407,NL
+3587243408,3587243415,GB
+3587243416,3587243935,NL
3587243936,3587243943,GB
3587243944,3587243967,NL
3587243968,3587243975,GB
-3587243976,3587244031,NL
+3587243976,3587243983,NL
+3587243984,3587243991,GB
+3587243992,3587244031,NL
3587244032,3587260415,IT
3587260416,3587284991,DE
3587284992,3587285135,A2
@@ -128032,9 +140977,7 @@
3587620864,3587637247,SE
3587637248,3587653631,FR
3587653632,3587670015,SK
-3587670016,3587679135,IT
-3587679136,3587679143,ES
-3587679144,3587683327,IT
+3587670016,3587683327,IT
3587683328,3587683359,FR
3587683360,3587686031,IT
3587686032,3587686039,FR
@@ -128081,7 +141024,9 @@
3587981312,3587997695,IS
3587997696,3588014079,DE
3588014080,3588030463,CZ
-3588030464,3588046847,RU
+3588030464,3588031615,RU
+3588031616,3588031623,LV
+3588031624,3588046847,RU
3588046848,3588060351,DE
3588060352,3588060359,CH
3588060360,3588063231,DE
@@ -128126,11 +141071,13 @@
3588554688,3588554751,IE
3588554752,3588571135,AT
3588571136,3588587519,GB
-3588587520,3588590175,ES
+3588587520,3588588567,ES
+3588588568,3588588575,IT
+3588588576,3588590175,ES
3588590176,3588590207,BE
-3588590208,3588594751,ES
-3588594752,3588594759,DE
-3588594760,3588598607,ES
+3588590208,3588590591,ES
+3588590592,3588590847,FR
+3588590848,3588598607,ES
3588598608,3588598615,IT
3588598616,3588603903,ES
3588603904,3588620287,SI
@@ -128153,7 +141100,9 @@
3588782272,3588782279,A2
3588782280,3588784127,GB
3588784128,3588800511,CH
-3588800512,3588816895,RU
+3588800512,3588802687,RU
+3588802688,3588802815,CH
+3588802816,3588816895,RU
3588816896,3588833279,IT
3588833280,3588848767,RO
3588848768,3588848775,FR
@@ -128171,9 +141120,7 @@
3588997120,3589013503,AT
3589013504,3589021695,ES
3589021696,3589029887,SA
-3589029888,3589030183,NL
-3589030184,3589030191,FR
-3589030192,3589030303,NL
+3589029888,3589030303,NL
3589030304,3589030335,FR
3589030336,3589034143,NL
3589034144,3589034159,ES
@@ -128234,9 +141181,7 @@
3589269472,3589275647,DE
3589275648,3589292031,RS
3589292032,3589308415,AT
-3589308416,3589317887,DE
-3589317888,3589317951,GB
-3589317952,3589324799,DE
+3589308416,3589324799,DE
3589324800,3589341183,BG
3589341184,3589373951,PL
3589373952,3589375495,DE
@@ -128252,7 +141197,9 @@
3589426176,3589426303,FR
3589426304,3589427199,GB
3589427200,3589427247,FR
-3589427248,3589429247,GB
+3589427248,3589428223,GB
+3589428224,3589428255,CH
+3589428256,3589429247,GB
3589429248,3589429503,FR
3589429504,3589430271,GB
3589430272,3589430543,FR
@@ -128285,7 +141232,8 @@
3589436672,3589436799,PL
3589436800,3589436927,GB
3589436928,3589437183,PL
-3589437184,3589439487,GB
+3589437184,3589437311,FR
+3589437312,3589439487,GB
3589439488,3589444631,SE
3589444632,3589444639,NO
3589444640,3589455871,SE
@@ -128318,9 +141266,7 @@
3589582656,3589583359,NL
3589583360,3589583647,GB
3589583648,3589583663,NL
-3589583664,3589583743,GB
-3589583744,3589583871,DE
-3589583872,3589584255,GB
+3589583664,3589584255,GB
3589584256,3589584271,NL
3589584272,3589584639,GB
3589584640,3589585279,NL
@@ -128340,7 +141286,9 @@
3589685248,3589718015,GB
3589718016,3589719343,BE
3589719344,3589719347,LU
-3589719348,3589719847,BE
+3589719348,3589719383,BE
+3589719384,3589719391,GB
+3589719392,3589719847,BE
3589719848,3589719855,AT
3589719856,3589719967,BE
3589719968,3589719975,GB
@@ -128508,9 +141456,13 @@
3589730088,3589730095,GB
3589730096,3589730111,BE
3589730112,3589730119,GB
-3589730120,3589733375,BE
+3589730120,3589732671,BE
+3589732672,3589732687,DE
+3589732688,3589733375,BE
3589733376,3589733439,LU
-3589733440,3589734399,BE
+3589733440,3589734167,BE
+3589734168,3589734175,DE
+3589734176,3589734399,BE
3589734400,3589742591,EG
3589742592,3589742687,NL
3589742688,3589742695,AT
@@ -128524,7 +141476,9 @@
3589745120,3589745151,BE
3589745152,3589746087,NL
3589746088,3589746095,DE
-3589746096,3589747071,NL
+3589746096,3589746175,NL
+3589746176,3589746687,US
+3589746688,3589747071,NL
3589747072,3589747103,ES
3589747104,3589767167,NL
3589767168,3589816319,RU
@@ -128542,11 +141496,11 @@
3589828608,3589828639,SE
3589828640,3589828671,NL
3589828672,3589828735,EU
-3589828736,3589828863,NL
-3589828864,3589829119,EU
+3589828736,3589828991,NL
+3589828992,3589829119,ES
3589829120,3589829183,GB
-3589829184,3589829375,EU
-3589829376,3589830655,GB
+3589829184,3589829631,EU
+3589829632,3589830655,GB
3589830656,3589831167,DE
3589831168,3589831679,US
3589831680,3589832703,FR
@@ -128572,11 +141526,12 @@
3589971232,3589971247,CA
3589971248,3589980159,ES
3589980160,3589996543,CZ
-3589996544,3589996623,NL
+3589996544,3589996575,GB
+3589996576,3589996623,NL
3589996624,3589996639,GB
3589996640,3589996655,NL
-3589996656,3589996703,GB
-3589996704,3589996799,NL
+3589996656,3589996735,GB
+3589996736,3589996799,NL
3589996800,3589996863,GB
3589996864,3589996879,NL
3589996880,3589996911,GB
@@ -128593,7 +141548,9 @@
3589997560,3589997567,NL
3589997568,3590012927,GB
3590012928,3590029311,BE
-3590029312,3590045695,FR
+3590029312,3590033759,FR
+3590033760,3590033775,AU
+3590033776,3590045695,FR
3590045696,3590062079,RU
3590062080,3590078463,DE
3590078464,3590094847,RU
@@ -128611,9 +141568,13 @@
3590155808,3590155815,SI
3590155816,3590155823,HR
3590155824,3590155871,SI
-3590155872,3590156431,HR
+3590155872,3590156359,HR
+3590156360,3590156367,SI
+3590156368,3590156431,HR
3590156432,3590156447,SI
-3590156448,3590156671,HR
+3590156448,3590156543,HR
+3590156544,3590156575,SI
+3590156576,3590156671,HR
3590156672,3590156687,SI
3590156688,3590156719,HR
3590156720,3590156727,SI
@@ -128630,8 +141591,8 @@
3590157568,3590157631,SI
3590157632,3590157679,RS
3590157680,3590157687,SI
-3590157688,3590157695,RS
-3590157696,3590157743,SI
+3590157688,3590157703,RS
+3590157704,3590157743,SI
3590157744,3590157751,RS
3590157752,3590157759,SI
3590157760,3590157767,RS
@@ -128641,14 +141602,16 @@
3590157824,3590157839,RS
3590157840,3590157855,SI
3590157856,3590157951,RS
-3590157952,3590158015,SI
-3590158016,3590158343,RS
-3590158344,3590158407,SI
-3590158408,3590158415,RS
-3590158416,3590158431,SI
+3590157952,3590158079,SI
+3590158080,3590158343,RS
+3590158344,3590158359,SI
+3590158360,3590158367,RS
+3590158368,3590158431,SI
3590158432,3590158439,RS
3590158440,3590158455,SI
-3590158456,3590158479,RS
+3590158456,3590158463,RS
+3590158464,3590158471,SI
+3590158472,3590158479,RS
3590158480,3590158527,SI
3590158528,3590158535,RS
3590158536,3590158591,SI
@@ -128666,16 +141629,13 @@
3590242304,3590244351,US
3590244352,3590244863,DE
3590244864,3590245119,GR
-3590245120,3590245167,BE
-3590245168,3590245279,FR
+3590245120,3590245183,BE
+3590245184,3590245279,FR
3590245280,3590245311,BE
3590245312,3590245439,US
3590245440,3590245503,FR
3590245504,3590245567,GB
-3590245568,3590245631,US
-3590245632,3590245887,FR
-3590245888,3590245983,US
-3590245984,3590246175,FR
+3590245568,3590246175,FR
3590246176,3590246207,AU
3590246208,3590246271,FR
3590246272,3590246287,DE
@@ -128705,8 +141665,7 @@
3590250752,3590251007,GR
3590251008,3590251263,IT
3590251264,3590251519,DE
-3590251520,3590251551,ES
-3590251552,3590251583,FR
+3590251520,3590251583,FR
3590251584,3590251647,US
3590251648,3590251775,NL
3590251776,3590251839,FR
@@ -128718,15 +141677,15 @@
3590253312,3590253375,FR
3590253376,3590253407,US
3590253408,3590254079,FR
-3590254080,3590254087,DE
-3590254088,3590254095,FR
-3590254096,3590254111,DE
+3590254080,3590254111,DE
3590254112,3590254127,FR
3590254128,3590254135,RU
3590254136,3590254143,FR
3590254144,3590254271,US
3590254272,3590254463,FR
-3590254464,3590254879,ES
+3590254464,3590254591,ES
+3590254592,3590254847,FR
+3590254848,3590254879,ES
3590254880,3590254911,FR
3590254912,3590254975,ES
3590254976,3590255039,DE
@@ -128766,28 +141725,42 @@
3590308056,3590308063,A2
3590308064,3590308071,ZW
3590308072,3590308079,RW
-3590308080,3590308087,TZ
-3590308088,3590308095,AO
-3590308096,3590308119,A2
+3590308080,3590308095,A2
+3590308096,3590308103,IQ
+3590308104,3590308119,A2
3590308120,3590308127,IQ
-3590308128,3590308175,A2
+3590308128,3590308135,A2
+3590308136,3590308143,IQ
+3590308144,3590308175,A2
3590308176,3590308191,IQ
3590308192,3590308199,A2
-3590308200,3590308215,IQ
-3590308216,3590308247,A2
+3590308200,3590308238,IQ
+3590308239,3590308247,A2
3590308248,3590308287,IQ
3590308288,3590308303,A2
3590308304,3590308311,SO
-3590308312,3590308319,IQ
-3590308320,3590308327,A2
-3590308328,3590308343,IQ
+3590308312,3590308343,IQ
3590308344,3590308351,A2
3590308352,3590308367,IQ
-3590308368,3590308383,A2
-3590308384,3590308391,IQ
-3590308392,3590308447,A2
-3590308448,3590308455,IQ
-3590308456,3590308607,A2
+3590308368,3590308375,A2
+3590308376,3590308391,IQ
+3590308392,3590308399,A2
+3590308400,3590308407,IQ
+3590308408,3590308415,A2
+3590308416,3590308431,IQ
+3590308432,3590308439,A2
+3590308440,3590308455,IQ
+3590308456,3590308479,A2
+3590308480,3590308487,IQ
+3590308488,3590308519,A2
+3590308520,3590308527,IQ
+3590308528,3590308535,A2
+3590308536,3590308543,IQ
+3590308544,3590308551,A2
+3590308552,3590308559,IQ
+3590308560,3590308567,A2
+3590308568,3590308583,IQ
+3590308584,3590308607,A2
3590308608,3590308735,NG
3590308736,3590308767,A2
3590308768,3590308775,RW
@@ -128802,8 +141775,7 @@
3590308952,3590308959,GH
3590308960,3590308999,A2
3590309000,3590309007,UG
-3590309008,3590309023,TZ
-3590309024,3590309039,A2
+3590309008,3590309039,A2
3590309040,3590309055,ZW
3590309056,3590309063,CD
3590309064,3590309071,A2
@@ -128830,41 +141802,34 @@
3590309712,3590309719,IQ
3590309720,3590309727,A2
3590309728,3590309759,IQ
-3590309760,3590309767,A2
-3590309768,3590309775,IQ
-3590309776,3590309783,A2
-3590309784,3590309791,IQ
+3590309760,3590309775,A2
+3590309776,3590309791,IQ
3590309792,3590309799,A2
3590309800,3590309807,IQ
3590309808,3590309815,A2
-3590309816,3590309823,IQ
-3590309824,3590309831,A2
-3590309832,3590309839,IQ
+3590309816,3590309839,IQ
3590309840,3590309863,A2
3590309864,3590309871,IQ
3590309872,3590309879,A2
3590309880,3590309887,IQ
3590309888,3590310143,A2
-3590310144,3590310167,IQ
-3590310168,3590310175,A2
+3590310144,3590310175,IQ
3590310176,3590310183,LR
-3590310184,3590310207,IQ
-3590310208,3590310215,SD
+3590310184,3590310215,IQ
3590310216,3590310223,A2
3590310224,3590310255,IQ
-3590310256,3590310263,A2
-3590310264,3590310271,SD
-3590310272,3590310279,A2
-3590310280,3590310303,IQ
+3590310256,3590310271,A2
+3590310272,3590310279,IQ
+3590310280,3590310287,A2
+3590310288,3590310303,IQ
3590310304,3590310311,A2
3590310312,3590310319,IQ
3590310320,3590310327,A2
3590310328,3590310335,NG
-3590310336,3590310343,IQ
-3590310344,3590310351,A2
+3590310336,3590310351,A2
3590310352,3590310367,IQ
-3590310368,3590310383,A2
-3590310384,3590310391,IQ
+3590310368,3590310375,A2
+3590310376,3590310391,IQ
3590310392,3590310655,A2
3590310656,3590310911,GB
3590310912,3590310919,IQ
@@ -128879,13 +141844,11 @@
3590311040,3590311055,A2
3590311056,3590311063,IQ
3590311064,3590311079,A2
-3590311080,3590311087,IQ
-3590311088,3590311119,A2
+3590311080,3590311111,IQ
+3590311112,3590311119,A2
3590311120,3590311135,IQ
3590311136,3590311143,A2
-3590311144,3590311151,IQ
-3590311152,3590311159,A2
-3590311160,3590311167,IQ
+3590311144,3590311167,IQ
3590311168,3590311175,A2
3590311176,3590311183,CD
3590311184,3590311199,A2
@@ -128901,14 +141864,14 @@
3590311280,3590311287,NG
3590311288,3590311295,A2
3590311296,3590311303,LR
-3590311304,3590311311,NG
+3590311304,3590311311,A2
3590311312,3590311319,CD
3590311320,3590311327,CI
3590311328,3590311335,CD
3590311336,3590311343,SD
3590311344,3590311351,A2
3590311352,3590311359,CD
-3590311360,3590311367,CI
+3590311360,3590311367,A2
3590311368,3590311383,CD
3590311384,3590311391,NG
3590311392,3590311423,A2
@@ -129012,9 +141975,7 @@
3590320352,3590320359,IQ
3590320360,3590320375,A2
3590320376,3590320383,IQ
-3590320384,3590321151,A2
-3590321152,3590321663,IQ
-3590321664,3590321679,A2
+3590320384,3590321679,A2
3590321680,3590321687,CM
3590321688,3590321695,A2
3590321696,3590321711,ZW
@@ -129028,9 +141989,7 @@
3590322064,3590322071,IQ
3590322072,3590322111,A2
3590322112,3590322119,BJ
-3590322120,3590322127,A2
-3590322128,3590322135,GH
-3590322136,3590322151,A2
+3590322120,3590322151,A2
3590322152,3590322159,LY
3590322160,3590322175,A2
3590322176,3590322239,IQ
@@ -129049,24 +142008,20 @@
3590323712,3590323903,A2
3590323904,3590323911,CD
3590323912,3590323967,A2
-3590323968,3590323975,SD
+3590323968,3590323975,UG
3590323976,3590323983,A2
-3590323984,3590323999,NG
+3590323984,3590323991,NG
+3590323992,3590323999,A2
3590324000,3590324007,LR
3590324008,3590324015,A2
3590324016,3590324023,NG
3590324024,3590324031,ZW
-3590324032,3590324103,A2
-3590324104,3590324111,KE
-3590324112,3590324119,A2
-3590324120,3590324127,NG
-3590324128,3590324159,A2
-3590324160,3590324167,NG
+3590324032,3590324167,A2
3590324168,3590324175,BW
3590324176,3590324183,LR
3590324184,3590324191,SD
3590324192,3590324199,VG
-3590324200,3590324207,UG
+3590324200,3590324207,A2
3590324208,3590324215,CD
3590324216,3590324223,NG
3590324224,3623890943,US
@@ -129088,7 +142043,9 @@
3624272384,3624272415,US
3624272416,3624272639,CA
3624272640,3624272895,DZ
-3624272896,3624279071,CA
+3624272896,3624275967,CA
+3624275968,3624276223,US
+3624276224,3624279071,CA
3624279072,3624279087,BD
3624279088,3624281087,CA
3624281088,3624281343,HT
@@ -129098,11 +142055,15 @@
3624288256,3624290303,IN
3624290304,3624292351,CA
3624292352,3624292607,MF
-3624292608,3624294143,CA
+3624292608,3624292863,US
+3624292864,3624294143,CA
3624294144,3624294399,US
-3624294400,3624295935,CA
+3624294400,3624294911,CA
+3624294912,3624295167,US
+3624295168,3624295935,CA
3624295936,3624296191,LY
-3624296192,3624297471,CA
+3624296192,3624297215,CA
+3624297216,3624297471,US
3624297472,3624298495,CO
3624298496,3624299519,PH
3624299520,3624300031,CA
@@ -129136,9 +142097,7 @@
3624376032,3624376247,US
3624376248,3624376263,ES
3624376264,3624376279,CY
-3624376280,3624376287,GB
-3624376288,3624376295,US
-3624376296,3624376303,GB
+3624376280,3624376303,GB
3624376304,3624376335,US
3624376336,3624376343,AU
3624376344,3624376351,US
@@ -129149,11 +142108,25 @@
3624376656,3624376679,GB
3624376680,3624377319,US
3624377320,3624377323,GB
-3624377324,3624377879,US
+3624377324,3624377599,US
+3624377600,3624377855,A2
+3624377856,3624377863,US
+3624377864,3624377871,GB
+3624377872,3624377879,US
3624377880,3624377887,GB
-3624377888,3624378039,US
+3624377888,3624377903,US
+3624377904,3624377911,GB
+3624377912,3624377919,US
+3624377920,3624377935,ES
+3624377936,3624377999,US
+3624378000,3624378007,ES
+3624378008,3624378039,US
3624378040,3624378047,GB
-3624378048,3624379391,US
+3624378048,3624378055,US
+3624378056,3624378063,GB
+3624378064,3624378087,US
+3624378088,3624378095,GB
+3624378096,3624379391,US
3624379392,3624379399,SG
3624379400,3624380415,US
3624380416,3624380447,CA
@@ -129166,9 +142139,7 @@
3624380544,3624380551,CA
3624380552,3624380687,US
3624380688,3624380695,AU
-3624380696,3624380735,US
-3624380736,3624380743,VI
-3624380744,3624380751,US
+3624380696,3624380751,US
3624380752,3624380759,CA
3624380760,3624380767,CY
3624380768,3624380799,US
@@ -129181,9 +142152,7 @@
3624380936,3624380943,SA
3624380944,3624380967,GB
3624380968,3624380983,TW
-3624380984,3624381471,US
-3624381472,3624381487,AU
-3624381488,3624381567,US
+3624380984,3624381567,US
3624381568,3624381583,MY
3624381584,3624381631,US
3624381632,3624381647,GB
@@ -129259,7 +142228,9 @@
3624548040,3624548063,US
3624548064,3624548087,A2
3624548088,3624548095,US
-3624548096,3624548679,A2
+3624548096,3624548351,A2
+3624548352,3624548359,US
+3624548360,3624548679,A2
3624548680,3624548687,US
3624548688,3624548703,A2
3624548704,3624548711,US
@@ -129272,21 +142243,23 @@
3624549048,3624549063,A2
3624549064,3624549079,US
3624549080,3624549087,A2
-3624549088,3624549095,US
-3624549096,3624549111,A2
-3624549112,3624549375,US
-3624549376,3624550143,A2
+3624549088,3624549103,US
+3624549104,3624549111,A2
+3624549112,3624549383,US
+3624549384,3624550143,A2
3624550144,3624587263,US
3624587264,3624591359,JM
3624595456,3624730623,US
3624730624,3624796159,CA
-3624812544,3624817679,US
+3624796160,3624817679,US
3624817680,3624817687,CA
3624817688,3624820735,US
3624820736,3624820799,CY
3624820800,3624821695,US
3624821696,3624821703,GB
-3624821704,3624825097,US
+3624821704,3624822783,US
+3624822784,3624823039,SG
+3624823040,3624825097,US
3624825098,3624825102,BR
3624825103,3624827296,US
3624827297,3624827299,RS
@@ -129300,17 +142273,28 @@
3624895104,3624895119,DE
3624895120,3624895135,US
3624895136,3624895151,IN
-3624895152,3624895775,US
+3624895152,3624895167,US
+3624895168,3624895183,VE
+3624895184,3624895775,US
3624895776,3624895807,MY
3624895808,3624895935,US
3624895936,3624895967,IN
-3624895968,3624896287,US
-3624896288,3624896319,GB
-3624896320,3624896415,US
+3624895968,3624895999,US
+3624896000,3624896255,CA
+3624896256,3624896383,US
+3624896384,3624896415,IN
3624896416,3624896447,AT
-3624896448,3624897791,US
+3624896448,3624896767,US
+3624896768,3624896831,IN
+3624896832,3624897279,US
+3624897280,3624897407,CA
+3624897408,3624897535,US
+3624897536,3624897663,CA
+3624897664,3624897791,US
3624897792,3624898047,IN
-3624898048,3624898815,US
+3624898048,3624898303,US
+3624898304,3624898559,CA
+3624898560,3624898815,US
3624898816,3624899071,AU
3624899072,3624899327,CA
3624899328,3624899583,US
@@ -129322,14 +142306,16 @@
3624900736,3624900767,CA
3624900768,3624900831,US
3624900832,3624900863,DE
-3624900864,3624900951,US
+3624900864,3624900903,US
+3624900904,3624900911,CA
+3624900912,3624900951,US
3624900952,3624900959,FR
3624900960,3624900967,US
3624900968,3624900975,CA
3624900976,3624901103,US
-3624901104,3624901111,PK
+3624901104,3624901111,IN
3624901112,3624901279,US
-3624901280,3624901311,IN
+3624901280,3624901311,CA
3624901312,3624901343,BE
3624901344,3624901887,US
3624901888,3624901919,IN
@@ -129343,27 +142329,34 @@
3624902784,3624902911,CA
3624902912,3624902943,US
3624902944,3624902975,CA
-3624902976,3624903167,US
-3624903168,3624903423,CA
-3624903424,3624903551,US
-3624903552,3624903583,CA
+3624902976,3624903071,US
+3624903072,3624903103,HK
+3624903104,3624903455,US
+3624903456,3624903487,CA
+3624903488,3624903519,US
+3624903520,3624903583,CA
3624903584,3624903679,US
3624903680,3624903807,CA
3624903808,3624903935,US
3624903936,3624904703,CA
3624904704,3624904767,IN
-3624904768,3624905087,US
-3624905088,3624905151,CA
-3624905152,3624905471,US
+3624904768,3624904831,US
+3624904832,3624904895,CA
+3624904896,3624905023,IN
+3624905024,3624905087,US
+3624905088,3624905215,CA
+3624905216,3624905471,US
3624905472,3624905727,CA
-3624905728,3624906465,US
-3624906466,3624906495,CA
-3624906496,3624906879,US
+3624905728,3624906239,US
+3624906240,3624906495,CA
+3624906496,3624906751,US
+3624906752,3624906879,CA
3624906880,3624907007,TW
3624907008,3624907039,FR
3624907040,3624907071,US
-3624907072,3624907103,GB
-3624907104,3624907455,US
+3624907072,3624907103,CA
+3624907104,3624907391,US
+3624907392,3624907455,IN
3624907456,3624907518,MY
3624907519,3624907519,US
3624907520,3624907551,IN
@@ -129378,20 +142371,20 @@
3624908032,3624908159,CA
3624908160,3624908287,US
3624908288,3624908319,CA
-3624908320,3624908351,US
-3624908352,3624908383,BR
+3624908320,3624908383,US
3624908384,3624908415,IN
-3624908416,3624908479,US
+3624908416,3624908447,CA
+3624908448,3624908479,US
3624908480,3624908511,CA
-3624908512,3624908607,US
+3624908512,3624908559,US
+3624908560,3624908575,MY
+3624908576,3624908607,US
3624908608,3624908622,CA
3624908623,3624908639,US
3624908640,3624908687,CA
3624908688,3624908783,US
3624908784,3624908799,CA
-3624908800,3624909375,US
-3624909376,3624909407,VE
-3624909408,3624909471,US
+3624908800,3624909471,US
3624909472,3624909503,AU
3624909504,3624909567,US
3624909568,3624909822,MY
@@ -129404,8 +142397,9 @@
3624910176,3624910207,BE
3624910208,3624910271,US
3624910272,3624910303,FR
-3624910304,3624910655,US
-3624910656,3624910687,TZ
+3624910304,3624910591,US
+3624910592,3624910623,CA
+3624910624,3624910687,US
3624910688,3624910719,CA
3624910720,3624910751,US
3624910752,3624910783,TZ
@@ -129414,21 +142408,21 @@
3624910848,3624910911,US
3624910912,3624910975,IN
3624910976,3624911007,FR
-3624911008,3624911039,GB
+3624911008,3624911039,CA
3624911040,3624911103,US
3624911104,3624911135,CA
3624911136,3624911167,US
3624911168,3624911199,MY
3624911200,3624911231,BE
3624911232,3624911263,CA
-3624911264,3624911359,US
-3624911360,3624911615,CA
+3624911264,3624911327,US
+3624911328,3624911615,CA
3624911616,3624911647,US
3624911648,3624911651,RU
3624911652,3624911999,US
3624912000,3624912127,CA
-3624912128,3624913023,US
-3624913024,3624913087,IN
+3624912128,3624912959,US
+3624912960,3624913087,IN
3624913088,3624913247,US
3624913248,3624913279,CA
3624913280,3624913311,US
@@ -129445,20 +142439,20 @@
3624914272,3624914303,CA
3624914304,3624914335,US
3624914336,3624914367,CA
-3624914368,3624914687,US
+3624914368,3624914399,IN
+3624914400,3624914687,US
3624914688,3624914943,BE
-3624914944,3624915199,US
-3624915200,3624915455,CA
-3624915456,3624915903,US
+3624914944,3624915071,CA
+3624915072,3624915455,US
+3624915456,3624915487,CA
+3624915488,3624915903,US
3624915904,3624915935,HK
-3624915936,3624916159,US
-3624916160,3624916191,MY
-3624916192,3624916223,US
+3624915936,3624916223,US
3624916224,3624916735,CA
3624916736,3624917247,US
3624917248,3624917503,AU
3624917504,3624917919,US
-3624917920,3624917951,CH
+3624917920,3624917951,CA
3624917952,3624917983,US
3624917984,3624918015,CA
3624918016,3624918527,US
@@ -129496,8 +142490,7 @@
3624922336,3624922367,FR
3624922368,3624922495,IN
3624922496,3624922623,BE
-3624922624,3624922655,US
-3624922656,3624922687,CA
+3624922624,3624922687,CA
3624922688,3624922783,US
3624922784,3624922815,CN
3624922816,3624922847,FR
@@ -129508,16 +142501,23 @@
3624923392,3624923519,CA
3624923520,3624923647,US
3624923648,3624923775,CA
-3624923776,3624924095,US
+3624923776,3624923903,US
+3624923904,3624923935,CA
+3624923936,3624923967,US
+3624923968,3624923999,IN
+3624924000,3624924095,US
3624924096,3624924127,CA
3624924128,3624924287,US
-3624924288,3624924671,CA
-3624924672,3624924895,US
+3624924288,3624924703,CA
+3624924704,3624924895,US
3624924896,3624924927,CA
3624924928,3624925054,US
3624925055,3624925695,CA
-3624925696,3624926719,US
-3624926720,3624926975,CA
+3624925696,3624926463,US
+3624926464,3624926527,CA
+3624926528,3624926591,US
+3624926592,3624926655,IN
+3624926656,3624926975,CA
3624926976,3624927039,US
3624927040,3624927071,HK
3624927072,3624927167,US
@@ -129530,11 +142530,13 @@
3624990464,3624991223,CA
3624991224,3624991231,US
3624991232,3624992767,CA
-3624992768,3625042327,US
+3624992768,3625002351,US
+3625002352,3625002367,CA
+3625002368,3625042327,US
3625042328,3625042335,IT
3625042336,3625058303,US
3625058304,3625091071,CA
-3625091072,3625116671,US
+3625099264,3625116671,US
3625116672,3625116767,CA
3625116768,3625116927,US
3625116928,3625117183,SE
@@ -129570,8 +142572,10 @@
3625246280,3625246287,MX
3625246288,3625246295,US
3625246296,3625246375,MX
-3625246376,3625246391,US
-3625246392,3625246719,MX
+3625246376,3625246399,US
+3625246400,3625246535,MX
+3625246536,3625246543,US
+3625246544,3625246719,MX
3625246720,3625287679,US
3625287680,3625288887,CA
3625288888,3625288895,US
@@ -129675,7 +142679,6 @@
3625423104,3625426943,CA
3625426944,3625508863,US
3625508864,3625512959,CA
-3625512960,3625517055,PR
3625517056,3625528541,US
3625528542,3625528551,AU
3625528552,3625574399,US
@@ -129696,7 +142699,9 @@
3626072960,3626072991,AE
3626072992,3626073439,US
3626073440,3626073455,AE
-3626073456,3626108895,US
+3626073456,3626091519,US
+3626091520,3626092031,AR
+3626092032,3626108895,US
3626108896,3626108927,AU
3626108928,3626130415,US
3626130416,3626130431,CA
@@ -129720,7 +142725,9 @@
3626192768,3626192799,CH
3626192800,3626213439,US
3626213440,3626213471,GB
-3626213472,3626227167,US
+3626213472,3626225407,US
+3626225408,3626225663,HK
+3626225664,3626227167,US
3626227168,3626227199,AR
3626227200,3626228463,US
3626228464,3626228479,AE
@@ -129908,9 +142915,7 @@
3626382404,3626382411,US
3626382412,3626382415,CN
3626382416,3626382419,GB
-3626382420,3626382426,US
-3626382427,3626382430,ID
-3626382431,3626382434,US
+3626382420,3626382434,US
3626382435,3626382438,BR
3626382439,3626382442,ZA
3626382443,3626382450,US
@@ -130088,7 +143093,8 @@
3626385098,3626385101,IN
3626385102,3626385113,US
3626385114,3626385117,JP
-3626385118,3626385125,US
+3626385118,3626385121,US
+3626385122,3626385125,IN
3626385126,3626385129,ID
3626385130,3626385133,GR
3626385134,3626385137,CA
@@ -130112,8 +143118,7 @@
3626385242,3626385245,US
3626385246,3626385249,ID
3626385250,3626385253,CN
-3626385254,3626385257,US
-3626385258,3626385261,PK
+3626385254,3626385261,US
3626385262,3626385265,GR
3626385266,3626385321,US
3626385322,3626385325,FR
@@ -130187,13 +143192,17 @@
3626528680,3626528703,US
3626528704,3626529183,CA
3626529184,3626529191,US
-3626529192,3626529735,CA
+3626529192,3626529639,CA
+3626529640,3626529647,US
+3626529648,3626529735,CA
3626529736,3626529751,US
3626529752,3626529807,CA
3626529808,3626529863,US
3626529864,3626529919,CA
3626529920,3626529927,US
-3626529928,3626530039,CA
+3626529928,3626529951,CA
+3626529952,3626529959,US
+3626529960,3626530039,CA
3626530040,3626530055,US
3626530056,3626530151,CA
3626530152,3626530159,US
@@ -130282,7 +143291,8 @@
3626896184,3626905599,CA
3626905600,3626926079,US
3626926080,3626934271,CA
-3626934272,3627044863,US
+3626934272,3626942463,US
+3626950656,3627044863,US
3627044864,3627048959,CA
3627048960,3627065343,US
3627065344,3627069439,CA
@@ -130327,7 +143337,9 @@
3627524988,3627532287,US
3627532288,3627544575,CA
3627544576,3627659263,US
-3627659264,3627663359,CA
+3627659264,3627661951,CA
+3627661952,3627662015,US
+3627662016,3627663359,CA
3627663360,3627665407,US
3627665408,3627665439,CA
3627665440,3627666255,US
@@ -130345,21 +143357,27 @@
3627745376,3627745439,US
3627745440,3627745471,IN
3627745472,3627745503,CA
-3627745504,3627745919,US
-3627745920,3627745983,IL
-3627745984,3627746399,US
+3627745504,3627746399,US
3627746400,3627746431,CA
-3627746432,3627746559,US
-3627746560,3627746815,IN
-3627746816,3627747159,US
+3627746432,3627747159,US
3627747160,3627747167,IN
-3627747168,3627753471,US
+3627747168,3627747583,US
+3627747584,3627747615,FR
+3627747616,3627753471,US
3627753472,3627753727,AR
3627753728,3627755007,US
3627755008,3627755135,IE
3627755136,3627755263,US
3627755264,3627755391,IE
-3627755392,3627802623,US
+3627755392,3627758847,US
+3627758848,3627758863,GB
+3627758864,3627759071,US
+3627759072,3627759103,GB
+3627759104,3627759359,US
+3627759360,3627759375,NL
+3627759376,3627759551,US
+3627759552,3627759615,NL
+3627759616,3627802623,US
3627802624,3627810815,CA
3627810816,3627842047,US
3627842048,3627842303,IS
@@ -130550,7 +143568,9 @@
3628772432,3628772447,GB
3628772448,3628834815,US
3628834816,3628843007,CA
-3628843008,3629187071,US
+3628843008,3628963007,US
+3628963008,3628963039,PA
+3628963040,3629187071,US
3629187072,3629195263,CA
3629195264,3629199359,US
3629199360,3629201463,CA
@@ -130559,30 +143579,32 @@
3629201488,3629201515,US
3629201516,3629201539,CA
3629201540,3629201543,US
-3629201544,3629201615,CA
-3629201616,3629201619,US
-3629201620,3629201647,CA
-3629201648,3629201667,US
-3629201668,3629201679,CA
-3629201680,3629201683,US
-3629201684,3629201707,CA
-3629201708,3629201719,US
-3629201720,3629201747,CA
+3629201544,3629201551,CA
+3629201552,3629201559,US
+3629201560,3629201563,CA
+3629201564,3629201599,US
+3629201600,3629201615,CA
+3629201616,3629201623,US
+3629201624,3629201627,CA
+3629201628,3629201743,US
+3629201744,3629201747,CA
3629201748,3629201751,US
3629201752,3629201755,CA
-3629201756,3629201763,US
-3629201764,3629201791,CA
+3629201756,3629201775,US
+3629201776,3629201791,CA
3629201792,3629201839,US
3629201840,3629201855,CA
3629201856,3629201887,US
3629201888,3629201903,CA
3629201904,3629201919,US
-3629201920,3629201983,CA
+3629201920,3629201959,CA
+3629201960,3629201967,US
+3629201968,3629201983,CA
3629201984,3629201991,US
3629201992,3629201999,CA
3629202000,3629202003,US
-3629202004,3629202011,CA
-3629202012,3629202015,US
+3629202004,3629202007,CA
+3629202008,3629202015,US
3629202016,3629202047,CA
3629202048,3629202175,US
3629202176,3629202203,CA
@@ -130590,17 +143612,19 @@
3629202220,3629202239,CA
3629202240,3629202263,US
3629202264,3629202271,CA
-3629202272,3629202279,US
-3629202280,3629202287,CA
-3629202288,3629202311,US
+3629202272,3629202311,US
3629202312,3629202367,CA
-3629202368,3629202399,US
-3629202400,3629202407,CA
-3629202408,3629202427,US
+3629202368,3629202427,US
3629202428,3629203199,CA
3629203200,3629318143,US
3629318144,3629326335,CA
-3629326336,3629539327,US
+3629326336,3629327527,US
+3629327528,3629327535,HK
+3629327536,3629327551,US
+3629327552,3629327559,CN
+3629327560,3629327567,US
+3629327568,3629327575,HK
+3629327576,3629539327,US
3629539328,3629547519,CA
3629547520,3629662207,US
3629662208,3629662463,GB
@@ -131137,15 +144161,11 @@
3631016572,3631016581,US
3631016582,3631016613,BD
3631016614,3631016645,UA
-3631016646,3631016707,US
-3631016708,3631016958,LT
-3631016959,3631017175,US
+3631016646,3631017175,US
3631017176,3631017191,CN
3631017192,3631017475,US
3631017476,3631017726,LT
-3631017727,3631017731,US
-3631017732,3631017982,LT
-3631017983,3631039439,US
+3631017727,3631039439,US
3631039440,3631039455,CA
3631039456,3631039487,US
3631039488,3631039743,CA
@@ -131157,8 +144177,38 @@
3631045632,3631045759,CA
3631045760,3631045983,US
3631045984,3631045991,CA
-3631045992,3631112191,US
-3631112192,3631116543,BB
+3631045992,3631057577,US
+3631057578,3631057597,GB
+3631057598,3631058405,US
+3631058406,3631058415,CA
+3631058416,3631058511,US
+3631058512,3631058521,CA
+3631058522,3631058581,US
+3631058582,3631058591,CA
+3631058592,3631059229,US
+3631059230,3631059239,NO
+3631059240,3631112191,US
+3631112192,3631112385,BB
+3631112386,3631112386,VC
+3631112387,3631112387,BB
+3631112388,3631112391,VC
+3631112392,3631112393,BB
+3631112394,3631112398,VC
+3631112399,3631112399,BB
+3631112400,3631112401,VC
+3631112402,3631112404,BB
+3631112405,3631112405,VC
+3631112406,3631112417,BB
+3631112418,3631112418,VC
+3631112419,3631112425,BB
+3631112426,3631112427,VC
+3631112428,3631112429,BB
+3631112430,3631112430,VC
+3631112431,3631112433,BB
+3631112434,3631112434,VC
+3631112435,3631112439,BB
+3631112440,3631112440,VC
+3631112441,3631116543,BB
3631116544,3631117567,GD
3631117568,3631117823,BB
3631117824,3631118079,GD
@@ -131173,42 +144223,41 @@
3631333376,3631333679,CA
3631333680,3631333695,US
3631333696,3631341567,CA
-3631341568,3631435007,US
+3631341568,3631415295,US
+3631415296,3631419391,A2
+3631419392,3631435007,US
3631435008,3631435263,GB
3631435264,3631480831,US
-3631480832,3631484927,CA
+3631482880,3631484927,CA
3631484928,3631644671,US
3631644672,3631652863,CA
3631652864,3631663151,US
3631663152,3631663159,CA
3631663160,3631665151,US
3631665152,3631669247,CA
-3631669248,3631669759,US
-3631669760,3631669767,A2
+3631669248,3631669767,A2
3631669768,3631669775,US
3631669776,3631669783,BO
-3631669784,3631669791,US
+3631669784,3631669791,A2
3631669792,3631669799,BO
3631669800,3631669807,US
3631669808,3631669823,EC
3631669824,3631669839,BO
-3631669840,3631669855,A2
-3631669856,3631669871,US
-3631669872,3631669887,A2
+3631669840,3631669887,A2
3631669888,3631669919,BO
3631669920,3631669951,EC
3631669952,3631670015,US
3631670016,3631670143,CO
3631670144,3631670207,NI
-3631670208,3631670271,A2
-3631670272,3631670527,US
+3631670208,3631670527,A2
3631670528,3631670783,NG
3631670784,3631671039,EC
3631671040,3631671295,US
3631671296,3631671551,JM
3631671552,3631672575,PY
3631672576,3631672831,NG
-3631672832,3631673119,US
+3631672832,3631673087,A2
+3631673088,3631673119,US
3631673120,3631673151,A2
3631673152,3631673183,US
3631673184,3631673199,A2
@@ -131218,7 +144267,43 @@
3631673264,3631673295,BB
3631673296,3631673311,EC
3631673312,3631677439,A2
-3631677440,3631841279,US
+3631677440,3631712287,US
+3631712288,3631712295,AR
+3631712296,3631712303,US
+3631712304,3631712311,CA
+3631712312,3631712327,US
+3631712328,3631712335,VE
+3631712336,3631712407,US
+3631712408,3631712415,GB
+3631712416,3631712423,US
+3631712424,3631712431,PT
+3631712432,3631712439,US
+3631712440,3631712447,IN
+3631712448,3631712463,US
+3631712464,3631712471,CA
+3631712472,3631712495,US
+3631712496,3631712503,UY
+3631712504,3631712511,DE
+3631712512,3631712527,US
+3631712528,3631712535,MX
+3631712536,3631712543,JP
+3631712544,3631712551,CY
+3631712552,3631712559,US
+3631712560,3631712567,AR
+3631712568,3631712695,US
+3631712696,3631712703,NZ
+3631712704,3631712751,US
+3631712752,3631712759,CA
+3631712760,3631712895,US
+3631712896,3631712903,MX
+3631712904,3631712911,CA
+3631712912,3631712927,US
+3631712928,3631712935,BR
+3631712936,3631712951,GB
+3631712952,3631713031,US
+3631713032,3631713039,BR
+3631713040,3631713047,IN
+3631713048,3631841279,US
3631841280,3631874047,CA
3631874048,3631879199,US
3631879200,3631879231,CA
@@ -131226,12 +144311,13 @@
3631881760,3631881791,CA
3631881792,3631939583,US
3631939584,3632005119,CA
-3632005120,3632136191,US
-3632144384,3632152575,US
+3632005120,3632152575,US
3632152576,3632168959,CA
3632168960,3632197631,US
3632197632,3632201727,CA
-3632201728,3632244223,US
+3632201728,3632232447,US
+3632232448,3632232703,A2
+3632232704,3632244223,US
3632244224,3632244479,CA
3632244480,3632270025,US
3632270026,3632270058,CA
@@ -131249,7 +144335,7 @@
3632332800,3632357375,CA
3632357376,3632381951,US
3632381952,3632390143,CA
-3632390144,3632406527,US
+3632390144,3632414719,US
3632414720,3632422911,CA
3632422912,3632451583,US
3632451584,3632455679,CA
@@ -131286,7 +144372,7 @@
3632481184,3632481199,TH
3632481200,3632481279,US
3632481280,3632481287,GB
-3632481288,3632481295,PH
+3632481288,3632481295,US
3632481296,3632481311,TH
3632481312,3632481391,US
3632481392,3632481399,GB
@@ -131369,8 +144455,8 @@
3632484384,3632484391,GB
3632484392,3632484623,US
3632484624,3632484639,GB
-3632484640,3632484647,CA
-3632484648,3632484655,TH
+3632484640,3632484647,SG
+3632484648,3632484655,JP
3632484656,3632484687,US
3632484688,3632484695,GI
3632484696,3632484727,US
@@ -131404,9 +144490,7 @@
3632485264,3632485271,IT
3632485272,3632485279,US
3632485280,3632485311,TH
-3632485312,3632485359,US
-3632485360,3632485367,TH
-3632485368,3632485391,US
+3632485312,3632485391,US
3632485392,3632485399,SR
3632485400,3632485431,US
3632485432,3632485439,CA
@@ -131428,8 +144512,7 @@
3632485680,3632485687,BR
3632485688,3632485727,US
3632485728,3632485735,CA
-3632485736,3632485743,KW
-3632485744,3632485751,US
+3632485736,3632485751,US
3632485752,3632485759,CA
3632485760,3632485767,CZ
3632485768,3632485775,KW
@@ -131482,8 +144565,7 @@
3632486904,3632487023,US
3632487024,3632487031,TH
3632487032,3632487039,CZ
-3632487040,3632487103,US
-3632487104,3632487135,EE
+3632487040,3632487135,US
3632487136,3632487143,GB
3632487144,3632487423,US
3632487424,3632487455,GB
@@ -131512,9 +144594,7 @@
3632490544,3632490551,TH
3632490552,3632490559,US
3632490560,3632490623,DE
-3632490624,3632490687,US
-3632490688,3632490695,BZ
-3632490696,3632490703,US
+3632490624,3632490703,US
3632490704,3632490719,TH
3632490720,3632490751,US
3632490752,3632490783,GB
@@ -131536,8 +144616,8 @@
3632491072,3632491087,GB
3632491088,3632491151,US
3632491152,3632491167,IN
-3632491168,3632491231,US
-3632491232,3632491247,CA
+3632491168,3632491239,US
+3632491240,3632491247,CA
3632491248,3632491263,US
3632491264,3632491327,DM
3632491328,3632491343,FR
@@ -131595,9 +144675,7 @@
3632492992,3632493015,US
3632493016,3632493023,GI
3632493024,3632493055,GB
-3632493056,3632493071,US
-3632493072,3632493079,ID
-3632493080,3632493087,US
+3632493056,3632493087,US
3632493088,3632493119,IO
3632493120,3632493151,US
3632493152,3632493159,GR
@@ -131708,7 +144786,9 @@
3632902144,3632971775,US
3632971776,3632972031,CA
3632972032,3632972063,US
-3632972064,3632988159,CA
+3632972064,3632973087,CA
+3632973088,3632973119,US
+3632973120,3632988159,CA
3632988160,3633029119,US
3633029120,3633029631,PY
3633029632,3633030143,NI
@@ -131856,7 +144936,11 @@
3633553152,3633553279,GW
3633553280,3633553311,US
3633553312,3633553343,A2
-3633553344,3633815551,US
+3633553344,3633776399,US
+3633776400,3633776415,CN
+3633776416,3633776463,US
+3633776464,3633776479,CN
+3633776480,3633815551,US
3633815552,3633816079,CA
3633816080,3633816095,US
3633816096,3633816119,CA
@@ -131874,7 +144958,9 @@
3633816256,3633816263,NG
3633816264,3633816279,CA
3633816280,3633816311,US
-3633816312,3633816351,CA
+3633816312,3633816319,CA
+3633816320,3633816327,ZA
+3633816328,3633816351,CA
3633816352,3633816383,IN
3633816384,3633816391,NG
3633816392,3633816399,US
@@ -131889,16 +144975,26 @@
3633816520,3633816527,ZA
3633816528,3633816535,CA
3633816536,3633816543,US
-3633816544,3633819135,CA
+3633816544,3633818703,CA
+3633818704,3633818711,US
+3633818712,3633819135,CA
3633819136,3633819199,IN
3633819200,3633819391,CA
3633819392,3633819423,IN
3633819424,3633819647,CA
3633819648,3633821279,US
3633821280,3633821311,BB
-3633821312,3633822303,US
+3633821312,3633821439,US
+3633821440,3633821695,SC
+3633821696,3633822175,US
+3633822176,3633822191,GB
+3633822192,3633822303,US
3633822304,3633822327,CA
-3633822328,3633881087,US
+3633822328,3633827839,US
+3633827840,3633828095,GB
+3633828096,3633874431,US
+3633874432,3633874687,GB
+3633874688,3633881087,US
3633881088,3633885183,AN
3633885184,3633889279,US
3633889280,3633893375,CA
@@ -131907,7 +145003,9 @@
3633915904,3633922303,US
3633922304,3633922367,TN
3633922368,3633971199,US
-3633971200,3634020351,CA
+3633971200,3633974527,CA
+3633974528,3633975039,US
+3633975040,3634020351,CA
3634020352,3634053119,US
3634053120,3634061311,CL
3634061312,3634065311,US
@@ -131947,7 +145045,9 @@
3634511872,3634515967,CA
3634515968,3634552831,US
3634552832,3634556927,CA
-3634556928,3634880511,US
+3634556928,3634741247,US
+3634741248,3634749439,CA
+3634749440,3634880511,US
3634880512,3634888703,CA
3634888704,3634913279,US
3634913280,3634915663,CA
@@ -131967,13 +145067,7 @@
3635314688,3635322879,CA
3635322880,3635425279,US
3635425280,3635429375,CA
-3635429376,3635464031,US
-3635464032,3635464063,GB
-3635464064,3635464127,US
-3635464128,3635464135,GB
-3635464136,3635464223,US
-3635464224,3635464239,GB
-3635464240,3635466239,US
+3635429376,3635466239,US
3635466240,3635470335,CA
3635470336,3635527679,US
3635527680,3635527935,PR
@@ -132002,16 +145096,15 @@
3635532288,3635532303,ES
3635532304,3635532831,US
3635532832,3635532863,VE
-3635532864,3635532927,SV
-3635532928,3635532999,US
+3635532864,3635532999,US
3635533000,3635533007,NO
3635533008,3635533535,US
-3635533536,3635533551,PR
+3635533536,3635533551,IN
3635533552,3635658751,US
3635658752,3635660799,CN
-3635660800,3635829631,US
-3635829632,3635829663,CA
-3635829664,3635847791,US
+3635660800,3635661823,HK
+3635661824,3635662847,JP
+3635662848,3635847791,US
3635847792,3635847807,CA
3635847808,3635856511,US
3635856512,3635856543,CA
@@ -132048,9 +145141,7 @@
3636151008,3636151023,BS
3636151024,3636151031,CA
3636151032,3636151039,US
-3636151040,3636151167,CA
-3636151168,3636151199,US
-3636151200,3636151455,CA
+3636151040,3636151455,CA
3636151456,3636151479,US
3636151480,3636151488,CA
3636151489,3636151535,US
@@ -132067,10 +145158,8 @@
3636152704,3636152767,CA
3636152768,3636152775,MX
3636152776,3636152783,US
-3636152784,3636152791,CA
-3636152792,3636152799,US
-3636152800,3636152847,CA
-3636152848,3636152895,US
+3636152784,3636152855,CA
+3636152856,3636152895,US
3636152896,3636153023,CA
3636153024,3636153055,KN
3636153056,3636153343,CA
@@ -132095,9 +145184,7 @@
3636156160,3636156191,US
3636156192,3636156255,CA
3636156256,3636156256,US
-3636156257,3636156271,CA
-3636156272,3636156279,US
-3636156280,3636156415,CA
+3636156257,3636156415,CA
3636156416,3636156927,US
3636156928,3636157063,CA
3636157064,3636157167,US
@@ -132141,7 +145228,9 @@
3636161792,3636161871,CA
3636161872,3636161885,US
3636161886,3636161943,CA
-3636161944,3636162015,US
+3636161944,3636161951,US
+3636161952,3636161983,CN
+3636161984,3636162015,US
3636162016,3636162559,CA
3636162560,3636163583,US
3636163584,3636164095,CA
@@ -132157,11 +145246,11 @@
3636166144,3636166655,CA
3636166656,3636206079,US
3636206080,3636206335,AU
-3636206336,3636265535,US
-3636265536,3636265599,DE
-3636265600,3636266879,US
+3636206336,3636266879,US
3636266880,3636266911,HK
-3636266912,3636396031,US
+3636266912,3636284415,US
+3636284416,3636284671,FR
+3636284672,3636396031,US
3636396032,3636461567,CA
3636461568,3636577647,US
3636577648,3636577663,CA
@@ -132176,29 +145265,8 @@
3636627200,3636627455,BR
3636627456,3636628479,MX
3636628480,3636628991,PE
-3636628992,3636633951,US
-3636633952,3636633983,CR
-3636633984,3636634015,US
-3636634016,3636634063,CR
-3636634064,3636634079,US
-3636634080,3636634111,CR
-3636634112,3636634287,US
-3636634288,3636634335,CR
-3636634336,3636634351,US
-3636634352,3636634431,CR
-3636634432,3636634463,US
-3636634464,3636634479,CR
-3636634480,3636634495,US
-3636634496,3636634511,CR
-3636634512,3636634623,US
-3636634624,3636634687,CR
-3636634688,3636634719,US
-3636634720,3636635135,CR
-3636635136,3636635391,US
-3636635392,3636635775,CR
-3636635776,3636636415,US
-3636636416,3636636543,CR
-3636636544,3636822015,US
+3636628992,3636633599,US
+3636637696,3636822015,US
3636822016,3636854783,CA
3636854784,3636887551,US
3636887552,3636895743,CA
@@ -132244,8 +145312,7 @@
3636907232,3636907775,US
3636907776,3636908031,CA
3636908032,3636908543,US
-3636908544,3636908799,IN
-3636908800,3636908863,US
+3636908544,3636908863,IN
3636908864,3636908991,CA
3636908992,3636909055,US
3636909056,3636909311,CA
@@ -132254,8 +145321,7 @@
3636909696,3636909727,CA
3636909728,3636909759,US
3636909760,3636909791,CA
-3636909792,3636909855,US
-3636909856,3636909887,CN
+3636909792,3636909887,US
3636909888,3636909951,IT
3636909952,3636909983,US
3636909984,3636910015,TZ
@@ -132289,7 +145355,8 @@
3636913664,3636913919,US
3636913920,3636914687,CA
3636914688,3636914815,US
-3636914816,3636914943,CA
+3636914816,3636914879,IN
+3636914880,3636914943,CA
3636914944,3636915103,US
3636915104,3636915135,IN
3636915136,3636915199,US
@@ -132330,7 +145397,8 @@
3636919712,3636919743,BE
3636919744,3636919807,US
3636919808,3636919871,GB
-3636919872,3636920127,US
+3636919872,3636919999,US
+3636920000,3636920127,IN
3636920128,3636920191,CA
3636920192,3637071887,US
3637071888,3637071903,AD
@@ -132359,25 +145427,17 @@
3637073168,3637073183,AD
3637073184,3637073215,US
3637073216,3637073231,CY
-3637073232,3637073935,US
+3637073232,3637073727,US
+3637073728,3637073791,CY
+3637073792,3637073935,US
3637073936,3637073959,AD
3637073960,3637074239,US
3637074240,3637074303,PA
3637074304,3637074687,US
3637074688,3637074703,CA
-3637074704,3637074751,US
-3637074752,3637074815,PA
-3637074816,3637074943,US
+3637074704,3637074943,US
3637074944,3637074959,CA
-3637074960,3637074975,US
-3637074976,3637075007,PA
-3637075008,3637075231,US
-3637075232,3637075263,PA
-3637075264,3637075487,US
-3637075488,3637075519,PA
-3637075520,3637075743,US
-3637075744,3637075775,PA
-3637075776,3637075967,US
+3637074960,3637075967,US
3637075968,3637080063,CA
3637080064,3637389335,US
3637389336,3637389343,CA
@@ -132397,7 +145457,9 @@
3637667519,3637669887,CA
3637669888,3637706751,US
3637706752,3637739519,CA
-3637739520,3638165503,US
+3637739520,3637827327,US
+3637827328,3637827583,VI
+3637827584,3638165503,US
3638165504,3638181887,CA
3638181888,3638198951,US
3638198952,3638198959,BM
@@ -132405,7 +145467,10 @@
3638198984,3638198991,ES
3638198992,3638199711,US
3638199712,3638199743,DE
-3638199744,3638200007,US
+3638199744,3638199807,US
+3638199808,3638199815,CN
+3638199816,3638199823,AU
+3638199824,3638200007,US
3638200008,3638200015,JP
3638200016,3638206407,US
3638206408,3638206415,LU
@@ -132477,12 +145542,14 @@
3638247680,3638247855,US
3638247856,3638247871,DE
3638247872,3638247903,US
-3638247904,3638247935,GB
-3638247936,3638248703,US
+3638247904,3638248703,GB
3638248704,3638249215,FR
-3638249216,3638249751,US
+3638249216,3638249471,GB
+3638249472,3638249751,US
3638249752,3638249791,GB
-3638249792,3638250535,US
+3638249792,3638249983,US
+3638249984,3638249991,GB
+3638249992,3638250535,US
3638250536,3638250543,GB
3638250544,3638250559,US
3638250560,3638250623,GB
@@ -132505,7 +145572,15 @@
3638370304,3638374751,CA
3638374752,3638374767,US
3638374768,3638386687,CA
-3638386688,3638509295,US
+3638386688,3638398975,US
+3638398976,3638398991,GB
+3638398992,3638399007,CH
+3638399008,3638399487,US
+3638399488,3638399615,CH
+3638399616,3638399743,US
+3638399744,3638399999,CH
+3638400000,3638400063,CA
+3638400064,3638509295,US
3638509296,3638509311,GB
3638509312,3638509567,US
3638509568,3638526911,CA
@@ -132631,10 +145706,18 @@
3639439632,3639439639,RO
3639439640,3639440767,US
3639440768,3639440895,IN
-3639440896,3639476223,US
-3639541760,3639558143,US
+3639440896,3639498767,US
+3639498768,3639498783,SI
+3639498784,3639498791,US
+3639498792,3639498799,NL
+3639498800,3639533567,US
+3639533568,3639537663,CA
+3639537664,3639558143,US
3639558144,3639566335,CA
-3639566336,3639607295,US
+3639566336,3639582719,US
+3639590912,3639593983,US
+3639593984,3639595007,GB
+3639595008,3639607295,US
3639607296,3639611391,CA
3639611392,3639656447,US
3639656448,3639660543,CA
@@ -132729,7 +145812,9 @@
3639730176,3639734271,CA
3639734272,3639886591,US
3639886592,3639886599,SG
-3639886600,3639892359,US
+3639886600,3639888962,US
+3639888963,3639888963,ID
+3639888964,3639892359,US
3639892360,3639892367,ID
3639892368,3639892375,US
3639892376,3639892383,ID
@@ -132737,13 +145822,11 @@
3639892416,3639892431,MX
3639892432,3639892815,US
3639892816,3639892831,MX
-3639892832,3639893119,US
-3639893120,3639893151,DE
-3639893152,3639893167,US
-3639893168,3639893199,DE
-3639893200,3639893207,US
+3639892832,3639893207,US
3639893208,3639893215,DE
-3639893216,3639902207,US
+3639893216,3639893503,US
+3639893504,3639893519,ID
+3639893520,3639902207,US
3639902208,3639918591,PE
3639918592,3639934975,AR
3639934976,3640001751,US
@@ -132754,7 +145837,9 @@
3640007312,3640007319,HK
3640007320,3640007359,US
3640007360,3640007367,SO
-3640007368,3640013767,US
+3640007368,3640013095,US
+3640013096,3640013103,CA
+3640013104,3640013767,US
3640013768,3640013775,GI
3640013776,3640023079,US
3640023080,3640023087,EG
@@ -132764,7 +145849,22 @@
3640023272,3640023279,HK
3640023280,3640027415,US
3640027416,3640027423,GB
-3640027424,3640057855,US
+3640027424,3640028207,US
+3640028208,3640028215,GB
+3640028216,3640028247,US
+3640028248,3640028255,IN
+3640028256,3640028295,US
+3640028296,3640028303,CA
+3640028304,3640028311,GB
+3640028312,3640028335,US
+3640028336,3640028343,CA
+3640028344,3640028447,US
+3640028448,3640028455,GB
+3640028456,3640028519,US
+3640028520,3640028527,BR
+3640028528,3640028591,US
+3640028592,3640028599,CA
+3640028600,3640057855,US
3640057856,3640066047,CA
3640066048,3640075391,US
3640075392,3640075407,NL
@@ -132857,7 +145957,9 @@
3640450048,3640451071,US
3640451072,3640459263,A2
3640459264,3640557567,US
-3640557568,3640560511,CA
+3640557568,3640559567,CA
+3640559568,3640559575,US
+3640559576,3640560511,CA
3640560512,3640560527,US
3640560528,3640564455,CA
3640564456,3640564463,US
@@ -132873,13 +145975,9 @@
3641078560,3641078567,BE
3641078568,3641085687,DE
3641085688,3641085695,CZ
-3641085696,3641087695,DE
-3641087696,3641087703,GB
-3641087704,3641098191,DE
+3641085696,3641098191,DE
3641098192,3641098207,ES
-3641098208,3641102607,DE
-3641102608,3641102615,FR
-3641102616,3641103719,DE
+3641098208,3641103719,DE
3641103720,3641103727,HU
3641103728,3641106951,DE
3641106952,3641106959,CH
@@ -132889,9 +145987,7 @@
3641140672,3641140679,US
3641140680,3641147519,DE
3641147520,3641147527,AT
-3641147528,3641150303,DE
-3641150304,3641150311,US
-3641150312,3641157951,DE
+3641147528,3641157951,DE
3641157952,3641157959,AT
3641157960,3641158031,DE
3641158032,3641158055,FR
@@ -132949,15 +146045,13 @@
3641335808,3641343999,SE
3641344000,3641345199,GB
3641345200,3641345215,IE
-3641345216,3641353087,GB
-3641353088,3641353151,A2
+3641345216,3641352959,GB
+3641352960,3641353151,A2
3641353152,3641353183,BD
3641353184,3641353215,NG
3641353216,3641353231,GB
3641353232,3641353247,IQ
-3641353248,3641353263,GB
-3641353264,3641353343,A2
-3641353344,3641353727,BD
+3641353248,3641353727,A2
3641353728,3641353759,NG
3641353760,3641353775,GB
3641353776,3641353807,NG
@@ -132966,7 +146060,7 @@
3641353840,3641353855,GB
3641353856,3641353983,A2
3641353984,3641354239,AF
-3641354240,3641354255,GB
+3641354240,3641354255,NG
3641354256,3641354311,A2
3641354312,3641354319,GB
3641354320,3641354327,A2
@@ -132974,8 +146068,8 @@
3641354336,3641354339,A2
3641354340,3641354367,GB
3641354368,3641354383,A2
-3641354384,3641354479,IT
-3641354480,3641354495,A2
+3641354384,3641354391,NG
+3641354392,3641354495,A2
3641354496,3641354751,GB
3641354752,3641355263,NG
3641355264,3641355519,AO
@@ -132983,25 +146077,19 @@
3641355584,3641355599,GB
3641355600,3641355775,A2
3641355776,3641356031,LB
-3641356032,3641356111,A2
-3641356112,3641356119,NG
-3641356120,3641356191,A2
+3641356032,3641356191,A2
3641356192,3641356207,NG
-3641356208,3641356287,A2
-3641356288,3641357311,GB
-3641357312,3641357567,A2
-3641357568,3641357823,GB
-3641357824,3641357855,A2
+3641356208,3641357855,A2
3641357856,3641357879,GB
3641357880,3641357887,A2
3641357888,3641357927,GB
-3641357928,3641358079,A2
-3641358080,3641359359,GB
+3641357928,3641358335,A2
+3641358336,3641358591,GB
+3641358592,3641358847,A2
+3641358848,3641359359,GB
3641359360,3641359615,IQ
3641359616,3641359639,GB
-3641359640,3641359647,A2
-3641359648,3641359664,GB
-3641359665,3641359871,A2
+3641359640,3641359871,A2
3641359872,3641360383,GB
3641360384,3641368575,RO
3641368576,3641372671,GB
@@ -133096,11 +146184,13 @@
3641680128,3641681151,GB
3641681152,3641681407,SE
3641681408,3641681663,FR
-3641681664,3641683967,EU
+3641681664,3641681791,DK
+3641681792,3641681919,FR
+3641681920,3641682431,GB
+3641682432,3641683967,EU
3641683968,3641688063,KZ
3641688064,3641692159,RU
3641692160,3641696255,IT
-3641696256,3641700351,DE
3641700352,3641704447,SE
3641704448,3641708543,FR
3641708544,3641712639,RU
@@ -133115,110 +146205,7 @@
3641749504,3641753599,CZ
3641753600,3641757695,SE
3641757696,3641761791,GB
-3641761792,3641761795,CY
-3641761796,3641761851,GR
-3641761852,3641761855,CY
-3641761856,3641761863,GR
-3641761864,3641761867,CY
-3641761868,3641761895,GR
-3641761896,3641761899,CY
-3641761900,3641761923,GR
-3641761924,3641761927,CY
-3641761928,3641761935,GR
-3641761936,3641761939,CY
-3641761940,3641761967,GR
-3641761968,3641761971,CY
-3641761972,3641762007,GR
-3641762008,3641762011,CY
-3641762012,3641762047,GR
-3641762048,3641762571,CY
-3641762572,3641762575,GR
-3641762576,3641762607,CY
-3641762608,3641762611,GR
-3641762612,3641762647,CY
-3641762648,3641762655,GR
-3641762656,3641762687,CY
-3641762688,3641762691,GR
-3641762692,3641762703,CY
-3641762704,3641762711,GR
-3641762712,3641762755,CY
-3641762756,3641762759,GR
-3641762760,3641762907,CY
-3641762908,3641762911,GR
-3641762912,3641762943,CY
-3641762944,3641762947,GR
-3641762948,3641762951,CY
-3641762952,3641762999,GR
-3641763000,3641763003,CY
-3641763004,3641763023,GR
-3641763024,3641763035,CY
-3641763036,3641763063,GR
-3641763064,3641763331,CY
-3641763332,3641763339,GR
-3641763340,3641763343,CY
-3641763344,3641763347,GR
-3641763348,3641763367,CY
-3641763368,3641763371,GR
-3641763372,3641763427,CY
-3641763428,3641763431,GR
-3641763432,3641763439,CY
-3641763440,3641763443,GR
-3641763444,3641763451,CY
-3641763452,3641763455,GR
-3641763456,3641763475,CY
-3641763476,3641763479,GR
-3641763480,3641763491,CY
-3641763492,3641763503,GR
-3641763504,3641763511,CY
-3641763512,3641763519,GR
-3641763520,3641763582,CY
-3641763583,3641763583,GR
-3641763584,3641764099,CY
-3641764100,3641764103,GR
-3641764104,3641764111,CY
-3641764112,3641764115,GR
-3641764116,3641764223,CY
-3641764224,3641764227,GR
-3641764228,3641764231,CY
-3641764232,3641764239,GR
-3641764240,3641764279,CY
-3641764280,3641764291,GR
-3641764292,3641764303,CY
-3641764304,3641764307,GR
-3641764308,3641764319,CY
-3641764320,3641764327,GR
-3641764328,3641764347,CY
-3641764348,3641764351,GR
-3641764352,3641764607,CY
-3641764608,3641764679,GR
-3641764680,3641764683,CY
-3641764684,3641764699,GR
-3641764700,3641764703,CY
-3641764704,3641764711,GR
-3641764712,3641764715,CY
-3641764716,3641764775,GR
-3641764776,3641764783,CY
-3641764784,3641764787,GR
-3641764788,3641764791,CY
-3641764792,3641764847,GR
-3641764848,3641764856,CY
-3641764857,3641764863,GR
-3641764864,3641764875,CY
-3641764876,3641764927,GR
-3641764928,3641764935,CY
-3641764936,3641764943,GR
-3641764944,3641764951,CY
-3641764952,3641764963,GR
-3641764964,3641764967,CY
-3641764968,3641764975,GR
-3641764976,3641764979,CY
-3641764980,3641765023,GR
-3641765024,3641765031,CY
-3641765032,3641765083,GR
-3641765084,3641765087,CY
-3641765088,3641765119,GR
-3641765120,3641765631,CY
-3641765632,3641765887,GR
+3641761792,3641765887,CY
3641765888,3641769983,ES
3641769984,3641774079,NO
3641774080,3641778175,DE
@@ -133290,13 +146277,14 @@
3641937920,3641942015,IT
3641942016,3641950207,DE
3641950208,3641954303,FR
-3641954304,3641957887,MD
-3641957888,3641957951,GB
-3641957952,3641958143,MD
-3641958144,3641958207,GB
-3641958208,3641958399,MD
-3641958400,3641960699,BE
-3641960700,3641960703,NL
+3641954304,3641956863,MD
+3641956864,3641957631,GB
+3641957632,3641957887,MD
+3641957888,3641958399,GB
+3641958400,3641960447,BE
+3641960448,3641960519,NL
+3641960520,3641960527,BE
+3641960528,3641960703,NL
3641960704,3641961727,BE
3641961728,3641961743,NL
3641961744,3641961791,BE
@@ -133327,7 +146315,9 @@
3642029057,3642029311,NG
3642029312,3642029312,A2
3642029313,3642029567,GB
-3642029568,3642031359,NG
+3642029568,3642030591,NG
+3642030592,3642030847,GN
+3642030848,3642031359,NG
3642031360,3642031615,GB
3642031616,3642031616,A2
3642031617,3642031743,SL
@@ -133344,10 +146334,11 @@
3642064896,3642068991,SE
3642068992,3642073087,AL
3642073088,3642077183,LV
-3642077184,3642081271,BE
+3642077184,3642078999,BE
+3642079000,3642079007,NL
+3642079008,3642081271,BE
3642081272,3642081278,US
-3642081279,3642081279,BE
-3642081280,3642085375,NL
+3642081279,3642085375,NL
3642085376,3642089471,RU
3642089472,3642093567,SE
3642093568,3642097663,NL
@@ -133400,7 +146391,17 @@
3642113792,3642113823,BE
3642113824,3642113855,NL
3642113856,3642113919,BE
-3642113920,3642118143,NL
+3642113920,3642114591,NL
+3642114592,3642114815,NO
+3642114816,3642114831,NL
+3642114832,3642115095,NO
+3642115096,3642115103,NL
+3642115104,3642116095,NO
+3642116096,3642117119,NL
+3642117120,3642117375,NO
+3642117376,3642117631,NL
+3642117632,3642117887,NO
+3642117888,3642118143,NL
3642118144,3642122239,GB
3642122240,3642126335,ES
3642126336,3642130431,IL
@@ -133447,10 +146448,9 @@
3642249216,3642253311,FR
3642253312,3642257407,FI
3642257408,3642261503,RU
-3642265600,3642266111,AE
-3642266112,3642266367,IR
-3642266368,3642266623,AE
-3642266624,3642269695,IR
+3642261504,3642265599,BA
+3642265600,3642265855,AE
+3642265856,3642269695,IR
3642269696,3642273791,UA
3642273792,3642277887,RU
3642277888,3642290175,DE
@@ -133486,13 +146486,22 @@
3642404864,3642408959,RU
3642408960,3642413055,FR
3642413056,3642414591,RS
-3642414592,3642415627,GB
+3642414592,3642414847,GB
+3642414848,3642414975,RS
+3642414976,3642415627,GB
3642415628,3642415635,MT
3642415636,3642415651,GB
3642415652,3642415655,MT
3642415656,3642417151,GB
-3642417152,3642421247,IT
-3642421248,3642425343,A2
+3642421248,3642423091,A2
+3642423092,3642423099,NG
+3642423100,3642424151,A2
+3642424152,3642424167,NG
+3642424168,3642424199,A2
+3642424200,3642424215,NG
+3642424216,3642425087,A2
+3642425088,3642425183,IQ
+3642425184,3642425343,A2
3642425344,3642429439,DE
3642429440,3642433535,GB
3642433536,3642435583,CY
@@ -133538,7 +146547,9 @@
3642539871,3642539971,IS
3642539972,3642539975,DK
3642539976,3642540031,IS
-3642540032,3642544127,SE
+3642540032,3642540063,SE
+3642540064,3642540079,NO
+3642540080,3642544127,SE
3642544128,3642552319,RU
3642552320,3642552639,UA
3642552640,3642552655,EE
@@ -133549,63 +146560,71 @@
3642552688,3642552831,UA
3642552832,3642552847,EE
3642552848,3642553095,UA
-3642553096,3642553139,LV
-3642553140,3642553143,UA
-3642553144,3642553175,LV
+3642553096,3642553099,LV
+3642553100,3642553103,UA
+3642553104,3642553161,LV
+3642553162,3642553163,UA
+3642553164,3642553175,LV
3642553176,3642553183,UA
-3642553184,3642553343,LV
+3642553184,3642553223,LV
+3642553224,3642553279,UA
+3642553280,3642553343,LV
3642553344,3642553371,RU
-3642553372,3642553375,UA
-3642553376,3642553377,RU
-3642553378,3642553379,UA
+3642553372,3642553379,UA
3642553380,3642553383,RU
-3642553384,3642553387,UA
-3642553388,3642553411,RU
+3642553384,3642553407,UA
+3642553408,3642553411,RU
3642553412,3642553415,UA
3642553416,3642553423,RU
3642553424,3642553431,UA
-3642553432,3642553463,RU
-3642553464,3642553467,UA
-3642553468,3642553519,RU
+3642553432,3642553443,RU
+3642553444,3642553447,UA
+3642553448,3642553463,RU
+3642553464,3642553471,UA
+3642553472,3642553519,RU
3642553520,3642553523,UA
3642553524,3642553535,RU
3642553536,3642553543,DE
-3642553544,3642553575,RU
+3642553544,3642553547,UA
+3642553548,3642553567,RU
+3642553568,3642553571,UA
+3642553572,3642553575,RU
3642553576,3642553579,UA
3642553580,3642553589,RU
3642553590,3642553591,UA
3642553592,3642553599,RU
3642553600,3642553855,UA
-3642553856,3642553925,RU
-3642553926,3642553935,UA
+3642553856,3642553929,RU
+3642553930,3642553935,UA
3642553936,3642553959,RU
3642553960,3642554111,UA
3642554112,3642554119,RU
-3642554120,3642554123,UA
-3642554124,3642554151,RU
-3642554152,3642554177,UA
-3642554178,3642554207,RU
-3642554208,3642554211,UA
-3642554212,3642554223,RU
-3642554224,3642554239,UA
-3642554240,3642554271,RU
-3642554272,3642554367,UA
-3642554368,3642554623,LT
+3642554120,3642554127,UA
+3642554128,3642554151,RU
+3642554152,3642554187,UA
+3642554188,3642554207,RU
+3642554208,3642554219,UA
+3642554220,3642554223,RU
+3642554224,3642554367,UA
+3642554368,3642554571,LT
+3642554572,3642554575,UA
+3642554576,3642554623,LT
3642554624,3642554631,UA
3642554632,3642554671,LV
3642554672,3642554675,UA
3642554676,3642554687,LV
3642554688,3642554751,UA
-3642554752,3642554791,LV
-3642554792,3642554807,UA
-3642554808,3642554815,LV
-3642554816,3642554847,UA
-3642554848,3642554879,LV
+3642554752,3642554795,LV
+3642554796,3642554807,UA
+3642554808,3642554831,LV
+3642554832,3642554851,UA
+3642554852,3642554879,LV
3642554880,3642554911,DE
3642554912,3642554919,NL
3642554920,3642554931,DE
3642554932,3642554951,UA
-3642554952,3642554959,GE
+3642554952,3642554955,GE
+3642554956,3642554959,UA
3642554960,3642554963,DE
3642554964,3642554967,UA
3642554968,3642554971,LV
@@ -133638,21 +146657,29 @@
3642555228,3642555289,LT
3642555290,3642555295,UA
3642555296,3642555391,LT
-3642555392,3642555493,PL
+3642555392,3642555431,PL
+3642555432,3642555437,UA
+3642555438,3642555439,PL
+3642555440,3642555443,UA
+3642555444,3642555463,PL
+3642555464,3642555475,UA
+3642555476,3642555493,PL
3642555494,3642555495,UA
3642555496,3642555503,PL
3642555504,3642555647,UA
3642555648,3642555683,SE
-3642555684,3642555687,UA
-3642555688,3642555695,SE
+3642555684,3642555685,GB
+3642555686,3642555691,UA
+3642555692,3642555695,SE
3642555696,3642555703,UA
3642555704,3642555707,FI
3642555708,3642555711,SE
3642555712,3642555727,RU
-3642555728,3642555735,UA
+3642555728,3642555735,SE
3642555736,3642555743,GB
3642555744,3642555759,SE
-3642555760,3642555771,GB
+3642555760,3642555767,UA
+3642555768,3642555771,GB
3642555772,3642555775,SE
3642555776,3642555783,UA
3642555784,3642555787,GB
@@ -133660,7 +146687,9 @@
3642555790,3642555791,SE
3642555792,3642556159,UA
3642556160,3642556415,LV
-3642556416,3642560511,CZ
+3642556416,3642558975,CZ
+3642558976,3642559487,HR
+3642559488,3642560511,CZ
3642560512,3642564607,KG
3642564608,3642568703,DE
3642568704,3642572799,RU
@@ -133706,7 +146735,9 @@
3642736640,3642740735,CZ
3642740736,3642744831,DE
3642744832,3642753023,TR
-3642753024,3643801599,GB
+3642753024,3642830671,GB
+3642830672,3642830687,A2
+3642830688,3643801599,GB
3643801600,3644063743,DE
3644063744,3644325887,EG
3644325888,3644588031,IT
@@ -133732,7 +146763,7 @@
3644899328,3644903423,IT
3644903424,3644907519,TR
3644907520,3644908983,GB
-3644908984,3644908991,IT
+3644908984,3644908991,US
3644908992,3644909855,GB
3644909856,3644909859,IS
3644909860,3644911615,GB
@@ -133780,123 +146811,7 @@
3645030400,3645038591,IR
3645038592,3645046783,PS
3645046784,3645050879,RU
-3645050880,3645051059,SK
-3645051060,3645051063,CZ
-3645051064,3645051131,SK
-3645051132,3645051135,CZ
-3645051136,3645051223,SK
-3645051224,3645051247,CZ
-3645051248,3645051255,SK
-3645051256,3645051279,CZ
-3645051280,3645051379,SK
-3645051380,3645051383,CZ
-3645051384,3645051439,SK
-3645051440,3645051455,CZ
-3645051456,3645051555,SK
-3645051556,3645051559,CZ
-3645051560,3645051567,SK
-3645051568,3645051583,CZ
-3645051584,3645051599,SK
-3645051600,3645051615,CZ
-3645051616,3645051639,SK
-3645051640,3645051647,CZ
-3645051648,3645051671,SK
-3645051672,3645051711,CZ
-3645051712,3645051719,SK
-3645051720,3645051727,CZ
-3645051728,3645051775,SK
-3645051776,3645051791,CZ
-3645051792,3645051815,SK
-3645051816,3645051823,CZ
-3645051824,3645051887,SK
-3645051888,3645051899,CZ
-3645051900,3645051943,SK
-3645051944,3645051951,CZ
-3645051952,3645051967,SK
-3645051968,3645051975,CZ
-3645051976,3645051979,SK
-3645051980,3645051999,CZ
-3645052000,3645052015,SK
-3645052016,3645052031,CZ
-3645052032,3645052095,SK
-3645052096,3645052103,CZ
-3645052104,3645052127,SK
-3645052128,3645052143,CZ
-3645052144,3645052183,SK
-3645052184,3645052191,CZ
-3645052192,3645052263,SK
-3645052264,3645052287,CZ
-3645052288,3645052351,SK
-3645052352,3645052367,CZ
-3645052368,3645052407,SK
-3645052408,3645052415,CZ
-3645052416,3645052423,SK
-3645052424,3645052431,CZ
-3645052432,3645052447,SK
-3645052448,3645052455,CZ
-3645052456,3645052591,SK
-3645052592,3645052599,CZ
-3645052600,3645052607,SK
-3645052608,3645052631,CZ
-3645052632,3645052655,SK
-3645052656,3645052663,CZ
-3645052664,3645052943,SK
-3645052944,3645052951,CZ
-3645052952,3645052983,SK
-3645052984,3645052991,CZ
-3645052992,3645052999,SK
-3645053000,3645053007,CZ
-3645053008,3645053015,SK
-3645053016,3645053023,CZ
-3645053024,3645053079,SK
-3645053080,3645053087,CZ
-3645053088,3645053095,SK
-3645053096,3645053099,CZ
-3645053100,3645053123,SK
-3645053124,3645053131,CZ
-3645053132,3645053135,SK
-3645053136,3645053139,CZ
-3645053140,3645053143,SK
-3645053144,3645053167,CZ
-3645053168,3645053179,SK
-3645053180,3645053183,CZ
-3645053184,3645053263,SK
-3645053264,3645053271,CZ
-3645053272,3645053287,SK
-3645053288,3645053295,CZ
-3645053296,3645053311,SK
-3645053312,3645053319,CZ
-3645053320,3645053343,SK
-3645053344,3645053351,CZ
-3645053352,3645053535,SK
-3645053536,3645053543,CZ
-3645053544,3645053647,SK
-3645053648,3645053663,CZ
-3645053664,3645053727,SK
-3645053728,3645053735,CZ
-3645053736,3645053743,SK
-3645053744,3645053751,CZ
-3645053752,3645053911,SK
-3645053912,3645053919,CZ
-3645053920,3645053923,SK
-3645053924,3645053927,CZ
-3645053928,3645053951,SK
-3645053952,3645053959,CZ
-3645053960,3645053963,SK
-3645053964,3645053967,CZ
-3645053968,3645053999,SK
-3645054000,3645054007,CZ
-3645054008,3645054255,SK
-3645054256,3645054263,CZ
-3645054264,3645054303,SK
-3645054304,3645054311,CZ
-3645054312,3645054315,SK
-3645054316,3645054319,CZ
-3645054320,3645054351,SK
-3645054352,3645054359,CZ
-3645054360,3645054383,SK
-3645054384,3645054399,CZ
-3645054400,3645054975,SK
+3645050880,3645054975,SK
3645054976,3645059071,DE
3645059072,3645063167,GB
3645063168,3645067263,UA
@@ -133911,7 +146826,9 @@
3645104128,3645112319,NL
3645112320,3645113735,DE
3645113736,3645113743,MK
-3645113744,3645116415,DE
+3645113744,3645114079,DE
+3645114080,3645114095,IL
+3645114096,3645116415,DE
3645116416,3645120511,GB
3645120512,3645124607,SE
3645124608,3645128703,NL
@@ -133919,7 +146836,9 @@
3645132800,3645136895,HR
3645136896,3645145087,NO
3645145088,3645149183,GB
-3645149184,3645149887,DE
+3645149184,3645149487,DE
+3645149488,3645149495,GB
+3645149496,3645149887,DE
3645149888,3645149951,HK
3645149952,3645150559,DE
3645150560,3645150591,HK
@@ -133969,7 +146888,9 @@
3645259776,3645263871,PT
3645263872,3645267967,FR
3645267968,3645276159,RU
-3645276160,3645280255,DE
+3645276160,3645278423,DE
+3645278424,3645278431,PT
+3645278432,3645280255,DE
3645280256,3645281279,IT
3645281280,3645281535,DE
3645281536,3645281791,IT
@@ -133989,8 +146910,8 @@
3645321216,3645325311,BA
3645325312,3645329407,IT
3645329408,3645333503,CH
-3645333504,3645334031,DE
-3645334032,3645334271,EU
+3645333504,3645334039,DE
+3645334040,3645334271,EU
3645334272,3645336927,DE
3645336928,3645336935,EU
3645336936,3645336991,DE
@@ -134041,11 +146962,12 @@
3645435904,3645439999,GB
3645440000,3645444095,SE
3645444096,3645448191,SK
-3645448192,3645456383,DE
+3645448192,3645452287,DE
3645456384,3645460479,GB
3645460480,3645464575,UA
3645464576,3645468671,SE
3645468672,3645472767,RU
+3645472768,3645476863,AL
3645476864,3645480959,DE
3645480960,3645485055,RO
3645485056,3645489151,PL
@@ -134061,7 +146983,6 @@
3645507596,3645507599,DE
3645507600,3645507607,AT
3645507608,3645509631,DE
-3645509632,3645513727,GB
3645513728,3645517823,RU
3645517824,3645521919,IE
3645521920,3645526015,PL
@@ -134087,14 +147008,25 @@
3645575168,3645579263,CH
3645579264,3645583359,NL
3645583360,3645587455,PL
-3645587456,3645595647,SK
+3645587456,3645594711,SK
+3645594712,3645594719,SR
+3645594720,3645594743,SK
+3645594744,3645594751,SR
+3645594752,3645594863,SK
+3645594864,3645594871,SR
+3645594872,3645595647,SK
3645595648,3645597751,SE
3645597752,3645597759,GB
3645597760,3645601471,SE
3645601472,3645601487,NO
-3645601488,3645601759,SE
+3645601488,3645601503,SE
+3645601504,3645601507,GB
+3645601508,3645601759,SE
3645601760,3645601775,FR
-3645601776,3645603839,SE
+3645601776,3645601779,GB
+3645601780,3645601799,SE
+3645601800,3645601803,GB
+3645601804,3645603839,SE
3645603840,3645612031,BG
3645612032,3645616127,GB
3645616128,3645620223,AT
@@ -134200,9 +147132,7 @@
3645763663,3645763663,HU
3645763664,3645763665,DE
3645763666,3645763666,NL
-3645763667,3645763667,DE
-3645763668,3645763668,IT
-3645763669,3645763670,DE
+3645763667,3645763670,DE
3645763671,3645763671,FR
3645763672,3645763672,DE
3645763673,3645763673,BE
@@ -134223,10 +147153,9 @@
3645763691,3645763691,CH
3645763692,3645763692,DE
3645763693,3645763693,NL
-3645763694,3645763694,IE
-3645763695,3645763696,DE
+3645763694,3645763696,DE
3645763697,3645763697,NL
-3645763698,3645763698,LU
+3645763698,3645763698,DE
3645763699,3645763699,BE
3645763700,3645763700,NL
3645763701,3645763701,DE
@@ -134603,8 +147532,8 @@
3645764189,3645764189,FR
3645764190,3645764190,IT
3645764191,3645764191,GB
-3645764192,3645764192,DE
-3645764193,3645764194,ES
+3645764192,3645764193,DE
+3645764194,3645764194,ES
3645764195,3645764195,DE
3645764196,3645764196,IT
3645764197,3645764197,DE
@@ -134662,8 +147591,8 @@
3645764262,3645764262,BE
3645764263,3645764264,IT
3645764265,3645764265,TR
-3645764266,3645764268,DE
-3645764269,3645764270,ES
+3645764266,3645764269,DE
+3645764270,3645764270,ES
3645764271,3645764271,IT
3645764272,3645764272,DE
3645764273,3645764273,IT
@@ -135058,7 +147987,8 @@
3645888128,3645888143,AT
3645888144,3645888159,DE
3645888160,3645888191,AT
-3645888192,3645889791,DE
+3645888192,3645888223,SG
+3645888224,3645889791,DE
3645889792,3645889919,US
3645889920,3645890559,DE
3645890560,3645894655,RU
@@ -135098,7 +148028,9 @@
3647916800,3647917055,SE
3647917056,3647917599,DE
3647917600,3647917615,US
-3647917616,3647936871,DE
+3647917616,3647922959,DE
+3647922960,3647922975,GB
+3647922976,3647936871,DE
3647936872,3647936879,FR
3647936880,3647954231,DE
3647954232,3647954239,GB
@@ -135112,7 +148044,9 @@
3647959600,3647959607,AT
3647959608,3647961215,DE
3647961216,3647961247,IT
-3647961248,3647963167,DE
+3647961248,3647961255,DE
+3647961256,3647961263,BE
+3647961264,3647963167,DE
3647963168,3647963183,BE
3647963184,3647963231,DE
3647963232,3647963263,BE
@@ -135139,12 +148073,8 @@
3647965296,3647965303,DE
3647965304,3647965311,ES
3647965312,3647965319,DE
-3647965320,3647965343,ES
-3647965344,3647965351,DE
-3647965352,3647965359,ES
-3647965360,3647965375,DE
-3647965376,3647965407,ES
-3647965408,3647965439,DE
+3647965320,3647965415,ES
+3647965416,3647965439,DE
3647965440,3647965695,ES
3647965696,3647966207,CH
3647966208,3647966575,GB
@@ -135164,9 +148094,15 @@
3647972264,3647972351,GB
3647972352,3647973679,IT
3647973680,3647973695,DE
-3647973696,3647973783,IT
+3647973696,3647973703,IT
+3647973704,3647973711,BE
+3647973712,3647973735,IT
+3647973736,3647973743,DE
+3647973744,3647973783,IT
3647973784,3647973791,DE
-3647973792,3647973967,IT
+3647973792,3647973815,IT
+3647973816,3647973823,DE
+3647973824,3647973967,IT
3647973968,3647973975,DE
3647973976,3647974047,IT
3647974048,3647974055,DE
@@ -135180,40 +148116,70 @@
3647976720,3647976727,DE
3647976728,3647976743,BE
3647976744,3647976751,DE
-3647976752,3647976759,BE
-3647976760,3647976783,DE
+3647976752,3647976767,BE
+3647976768,3647976783,DE
3647976784,3647976791,BE
3647976792,3647976799,DE
3647976800,3647976927,BE
3647976928,3647976935,DE
-3647976936,3647977079,BE
-3647977080,3647977087,DE
-3647977088,3647977151,BE
+3647976936,3647977119,BE
+3647977120,3647977135,DE
+3647977136,3647977151,BE
3647977152,3647977215,DE
3647977216,3647977471,BE
3647977472,3647977791,GB
3647977792,3647977855,IE
3647977856,3647978495,GB
-3647978496,3647978775,NL
+3647978496,3647978551,NL
+3647978552,3647978559,DE
+3647978560,3647978775,NL
3647978776,3647978783,DE
-3647978784,3647978871,NL
-3647978872,3647978879,DE
-3647978880,3647978895,NL
+3647978784,3647978895,NL
3647978896,3647978911,DE
-3647978912,3647978927,NL
-3647978928,3647979007,DE
+3647978912,3647978943,NL
+3647978944,3647979007,DE
3647979008,3647979136,IT
3647979137,3647979519,DE
-3647979520,3647980543,FR
+3647979520,3647980215,FR
+3647980216,3647980223,DE
+3647980224,3647980239,FR
+3647980240,3647980247,DE
+3647980248,3647980255,FR
+3647980256,3647980271,DE
+3647980272,3647980495,FR
+3647980496,3647980503,DE
+3647980504,3647980543,FR
3647980544,3647981055,GB
3647981056,3647981567,IE
3647981568,3647982591,BE
3647982592,3647983615,IT
3647983616,3647984639,NL
3647984640,3647985151,DK
-3647985152,3647995903,DE
-3647995904,3648004095,RU
-3648004096,3648004607,GB
+3647985152,3647985415,BE
+3647985416,3647985423,AT
+3647985424,3647985663,BE
+3647985664,3647985919,ES
+3647985920,3647985935,BE
+3647985936,3647986431,ES
+3647986432,3647986687,FR
+3647986688,3647986943,DE
+3647986944,3647986951,ES
+3647986952,3647986975,DE
+3647986976,3647987071,ES
+3647987072,3647987087,DE
+3647987088,3647987103,ES
+3647987104,3647987455,DE
+3647987456,3647987527,ES
+3647987528,3647987543,DE
+3647987544,3647987711,ES
+3647987712,3647988735,IT
+3647988736,3647988991,DE
+3647988992,3647989095,BE
+3647989096,3647989119,DE
+3647989120,3647989375,BE
+3647989376,3647995903,DE
+3647995904,3648004223,RU
+3648004224,3648004607,GB
3648004608,3648006271,RU
3648006272,3648006399,GB
3648006400,3648007167,RU
@@ -135231,12 +148197,8 @@
3648033120,3648033535,EU
3648033536,3648033791,IE
3648033792,3648034047,EU
-3648034048,3648034051,IE
-3648034052,3648034055,EU
-3648034056,3648034095,IE
-3648034096,3648034175,EU
-3648034176,3648034191,IE
-3648034192,3648034815,EU
+3648034048,3648034303,IE
+3648034304,3648034815,EU
3648034816,3648034847,DE
3648034848,3648034887,EU
3648034888,3648034895,IE
@@ -135246,11 +148208,11 @@
3648035040,3648035071,NL
3648035072,3648036863,EU
3648036864,3648040959,CZ
-3648040960,3648041020,BE
-3648041021,3648041021,FR
-3648041022,3648041052,BE
-3648041053,3648041053,NL
-3648041054,3648045055,BE
+3648040960,3648041024,BE
+3648041025,3648041028,FR
+3648041029,3648041047,BE
+3648041048,3648041055,NL
+3648041056,3648045055,BE
3648045056,3648049151,FI
3648049152,3648053247,UA
3648053248,3648057343,FR
@@ -135282,15 +148244,15 @@
3648081056,3648081407,BE
3648081408,3648082175,MW
3648082176,3648082239,BE
-3648082240,3648082687,LR
-3648082688,3648085759,BE
+3648082240,3648082311,NE
+3648082312,3648082431,BE
+3648082432,3648082479,ZM
+3648082480,3648085759,BE
3648085760,3648086015,LR
3648086016,3648090111,AT
3648090112,3648094207,RU
3648094208,3648102399,PL
-3648102400,3648104767,GB
-3648104768,3648104783,IE
-3648104784,3648104791,GB
+3648102400,3648104791,GB
3648104792,3648104799,IE
3648104800,3648106495,GB
3648106496,3648110591,DE
@@ -135317,11 +148279,17 @@
3648176128,3648178687,FR
3648178688,3648178815,LU
3648178816,3648180223,FR
-3648180224,3648180767,DE
+3648180224,3648180735,DE
+3648180736,3648180751,IT
+3648180752,3648180767,DE
3648180768,3648180799,AT
-3648180800,3648181023,DE
+3648180800,3648180991,DE
+3648180992,3648181007,CY
+3648181008,3648181023,DE
3648181024,3648181055,AT
-3648181056,3648181215,DE
+3648181056,3648181063,DE
+3648181064,3648181071,DK
+3648181072,3648181215,DE
3648181216,3648181231,RU
3648181232,3648181247,DE
3648181248,3648181279,IT
@@ -135337,8 +148305,10 @@
3648181632,3648181647,AT
3648181648,3648181887,DE
3648181888,3648181903,AT
-3648181904,3648182143,DE
-3648182144,3648182159,NL
+3648181904,3648182111,DE
+3648182112,3648182127,CY
+3648182128,3648182143,DE
+3648182144,3648182159,BR
3648182160,3648182175,DE
3648182176,3648182207,RU
3648182208,3648182271,GB
@@ -135370,7 +148340,8 @@
3648225280,3648231263,DE
3648231264,3648231295,NL
3648231296,3648233471,DE
-3648233472,3648237567,FR
+3648233472,3648237311,FR
+3648237312,3648237567,GB
3648237568,3648241663,RU
3648241664,3648245759,NL
3648245760,3648249855,RO
@@ -135410,7 +148381,11 @@
3648348160,3648352255,DE
3648352256,3648356351,RU
3648356352,3648360447,PL
-3648360448,3648364543,FR
+3648360448,3648362251,FR
+3648362252,3648362255,GB
+3648362256,3648362263,FR
+3648362264,3648362271,GB
+3648362272,3648364543,FR
3648364544,3648368639,CH
3648368640,3648372735,RU
3648372736,3648376831,LU
@@ -135426,8 +148401,8 @@
3648417808,3648417815,GB
3648417816,3648417831,AT
3648417832,3648417839,GB
-3648417840,3648417879,AT
-3648417880,3648417919,GB
+3648417840,3648417855,AT
+3648417856,3648417919,GB
3648417920,3648418047,AT
3648418048,3648418079,GB
3648418080,3648418247,ES
@@ -135450,12 +148425,12 @@
3648421632,3648421887,CH
3648421888,3648425983,GB
3648425984,3648430079,IT
-3648430080,3648434175,NL
+3648430080,3648432127,NL
+3648432128,3648433151,DE
+3648433152,3648434175,NL
3648434176,3648438271,RU
3648438272,3648442367,CH
-3648442368,3648443743,SE
-3648443744,3648443759,PA
-3648443760,3648446463,SE
+3648442368,3648446463,SE
3648446464,3648447055,FR
3648447056,3648447063,ES
3648447064,3648449119,FR
@@ -135464,7 +148439,11 @@
3648450560,3648454655,IT
3648454656,3648458751,NL
3648458752,3648462847,RU
-3648462848,3648466943,FI
+3648462848,3648465255,FI
+3648465256,3648465271,AX
+3648465272,3648465823,FI
+3648465824,3648465855,AX
+3648465856,3648466943,FI
3648466944,3648469263,DE
3648469264,3648469271,NL
3648469272,3648469295,DE
@@ -135529,7 +148508,6 @@
3650093056,3650097151,JO
3650097152,3650101247,SK
3650101248,3650105343,DE
-3650105344,3650109439,CH
3650109440,3650113535,NO
3650113536,3650117631,GB
3650117632,3650121727,RU
@@ -135562,12 +148540,16 @@
3650228224,3650228735,US
3650228736,3650228991,A2
3650228992,3650232319,US
-3650232320,3650236415,RU
+3650232320,3650233343,RU
+3650233344,3650233599,CY
+3650233600,3650236415,RU
3650236416,3650240511,GB
3650240512,3650244607,EE
3650244608,3650256895,GB
3650256896,3650265087,DE
-3650265088,3650269183,CH
+3650265088,3650265559,CH
+3650265560,3650265571,DE
+3650265572,3650269183,CH
3650269184,3650273071,GB
3650273072,3650273279,IR
3650273280,3650277375,IT
@@ -135589,7 +148571,9 @@
3650316716,3650318335,DE
3650318336,3650320383,GI
3650320384,3650322431,GB
-3650322432,3650330623,IT
+3650322432,3650323327,IT
+3650323328,3650323359,SZ
+3650323360,3650330623,IT
3650330624,3650334719,UA
3650334720,3650338815,GB
3650338816,3650342911,FR
@@ -135648,7 +148632,9 @@
3650352384,3650352895,DE
3650352896,3650355199,GB
3650355200,3650359295,CH
-3650359296,3650363391,NL
+3650359296,3650360703,NL
+3650360704,3650360831,BE
+3650360832,3650363391,NL
3650363392,3650367487,GB
3650367488,3650371583,RU
3650371584,3650375679,ES
@@ -135674,9 +148660,9 @@
3650465792,3650469887,RU
3650469888,3650478079,NL
3650478080,3650482175,AT
-3650482176,3650484687,PL
-3650484688,3650484695,SE
-3650484696,3650486271,PL
+3650482176,3650484639,PL
+3650484640,3650484671,US
+3650484672,3650486271,PL
3650486272,3650502655,RU
3650502656,3650510847,SE
3650510848,3650519039,GB
@@ -135731,7 +148717,9 @@
3650923104,3650923135,FR
3650923136,3650926591,GB
3650926592,3650929663,ES
-3650929664,3650945023,GB
+3650929664,3650931967,GB
+3650931968,3650932223,ES
+3650932224,3650945023,GB
3650945024,3651010559,DK
3651010560,3651076095,GB
3651076096,3651077375,DE
@@ -135823,7 +148811,10 @@
3651204096,3651204223,ES
3651204224,3651204351,DE
3651204352,3651204607,PL
-3651204608,3651207167,DE
+3651204608,3651205119,ES
+3651205120,3651205375,GB
+3651205376,3651205631,ES
+3651205632,3651207167,DE
3651207168,3651207199,GB
3651207200,3651207223,EU
3651207224,3651207295,GB
@@ -135942,16 +148933,13 @@
3651870720,3651874815,IT
3651874816,3651878911,PL
3651878912,3651883007,RU
-3651883008,3651885823,BE
-3651885824,3651885847,CD
-3651885848,3651885851,BE
-3651885852,3651885855,CD
-3651885856,3651885867,BE
-3651885868,3651885875,CD
-3651885876,3651885903,BE
-3651885904,3651885919,CD
-3651885920,3651886335,BE
-3651886336,3651886347,CD
+3651883008,3651885871,CD
+3651885872,3651885895,BE
+3651885896,3651885899,CD
+3651885900,3651885903,BE
+3651885904,3651885927,CD
+3651885928,3651886079,BE
+3651886080,3651886347,CD
3651886348,3651886379,BE
3651886380,3651886383,CD
3651886384,3651886391,BE
@@ -135969,8 +148957,8 @@
3651886472,3651886479,BE
3651886480,3651886495,CD
3651886496,3651886511,BE
-3651886512,3651886527,CD
-3651886528,3651886591,BE
+3651886512,3651886543,CD
+3651886544,3651886591,BE
3651886592,3651886847,CD
3651886848,3651887103,BE
3651887104,3651891199,GB
@@ -136057,9 +149045,9 @@
3651942816,3651944447,DE
3651944448,3651948543,ES
3651948544,3651952639,FO
-3651952640,3651954175,IR
-3651954176,3651954431,AE
-3651954432,3651958271,IR
+3651952640,3651953663,IR
+3651953664,3651954687,AE
+3651954688,3651958271,IR
3651958272,3651958783,AE
3651958784,3651959039,IR
3651959040,3651960831,AE
@@ -136130,17 +149118,19 @@
3652034560,3652046847,PL
3652046848,3652050271,IE
3652050272,3652050299,GB
-3652050300,3652050499,IE
+3652050300,3652050327,IE
+3652050328,3652050343,GB
+3652050344,3652050499,IE
3652050500,3652050503,GB
3652050504,3652050527,IE
3652050528,3652050535,GB
3652050536,3652050567,IE
3652050568,3652050615,GB
3652050616,3652050619,IE
-3652050620,3652050671,GB
-3652050672,3652050787,IE
-3652050788,3652050791,GB
-3652050792,3652050943,IE
+3652050620,3652050627,GB
+3652050628,3652050631,IE
+3652050632,3652050671,GB
+3652050672,3652050943,IE
3652050944,3652055039,LI
3652055040,3652059135,NO
3652059136,3652063231,RU
@@ -136161,13 +149151,14 @@
3652128768,3652136959,RU
3652136960,3652141055,IT
3652141056,3652141311,GB
-3652141312,3652143103,A2
-3652143104,3652143359,GB
+3652141312,3652142847,A2
+3652142848,3652143359,GB
3652143360,3652143871,A2
3652143872,3652144127,GB
3652144128,3652144383,KE
3652144384,3652144639,CM
-3652144640,3652145151,A2
+3652144640,3652144895,GB
+3652144896,3652145151,A2
3652145152,3652149247,UA
3652149248,3652153343,DE
3652153344,3652157439,SE
@@ -136187,7 +149178,9 @@
3652985040,3652985047,FR
3652985048,3653029775,DE
3653029776,3653029791,LU
-3653029792,3653039103,DE
+3653029792,3653031727,DE
+3653031728,3653031735,LU
+3653031736,3653039103,DE
3653039104,3653039359,IT
3653039360,3653039999,DE
3653040000,3653040015,LU
@@ -136307,8 +149300,8 @@
3653408232,3653408239,KE
3653408240,3653408247,BF
3653408248,3653408271,A2
-3653408272,3653408287,IQ
-3653408288,3653408319,A2
+3653408272,3653408279,IQ
+3653408280,3653408319,A2
3653408320,3653408327,IQ
3653408328,3653408767,A2
3653408768,3653409023,CD
@@ -136318,15 +149311,9 @@
3653409064,3653409071,CD
3653409072,3653409087,A2
3653409088,3653409095,CD
-3653409096,3653409103,A2
-3653409104,3653409111,MW
-3653409112,3653409119,NG
-3653409120,3653409127,A2
-3653409128,3653409143,CD
-3653409144,3653409151,NG
-3653409152,3653409191,A2
-3653409192,3653409199,NG
-3653409200,3653409223,A2
+3653409096,3653409127,A2
+3653409128,3653409135,CD
+3653409136,3653409223,A2
3653409224,3653409231,NG
3653409232,3653409279,A2
3653409280,3653409311,TZ
@@ -136356,14 +149343,13 @@
3653410176,3653410183,US
3653410184,3653410191,MZ
3653410192,3653410199,ZW
-3653410200,3653410215,A2
-3653410216,3653410223,ZW
-3653410224,3653410247,A2
+3653410200,3653410247,A2
3653410248,3653410255,ZM
3653410256,3653410263,A2
3653410264,3653410271,NG
3653410272,3653410279,SD
-3653410280,3653410295,A2
+3653410280,3653410287,IQ
+3653410288,3653410295,A2
3653410296,3653410303,MW
3653410304,3653410815,GB
3653410816,3653414911,CZ
@@ -136376,7 +149362,8 @@
3653439488,3653443583,FR
3653443584,3653444351,DE
3653444352,3653444383,IT
-3653444384,3653447679,DE
+3653444384,3653447167,DE
+3653447168,3653447679,NL
3653447680,3653451775,LV
3653451776,3653464063,RU
3653464064,3653468159,NL
@@ -136390,11 +149377,15 @@
3653472576,3653472591,NL
3653472592,3653472767,AF
3653472768,3653472775,NL
-3653472776,3653472807,AF
+3653472776,3653472791,AF
+3653472792,3653472799,NL
+3653472800,3653472807,AF
3653472808,3653472815,NL
3653472816,3653472823,AF
3653472824,3653472831,NL
-3653472832,3653472915,AF
+3653472832,3653472871,AF
+3653472872,3653472879,NL
+3653472880,3653472915,AF
3653472916,3653472919,NL
3653472920,3653472983,AF
3653472984,3653472999,NL
@@ -136455,7 +149446,6 @@
3653586944,3653591039,DE
3653591040,3653595135,LU
3653595136,3653599231,RU
-3653599232,3653603327,BG
3653603328,3653607423,CZ
3653607424,3653611519,PL
3653611520,3653615615,HU
@@ -136465,15 +149455,18 @@
3653623552,3653623807,US
3653623808,3653636095,RU
3653636096,3653640191,NL
-3653640192,3653644031,GB
-3653644032,3653644047,BE
-3653644048,3653644271,GB
-3653644272,3653644275,BE
-3653644276,3653648383,GB
+3653640192,3653648383,GB
3653648384,3653652479,SE
3653652480,3653656575,RU
3653656576,3653660671,GB
3653660672,3653664767,CZ
+3653664768,3653664895,DE
+3653664896,3653664911,FR
+3653664912,3653665023,NL
+3653665024,3653665071,DE
+3653665072,3653666815,NL
+3653666816,3653667327,DE
+3653667328,3653668863,NL
3653668864,3653672959,SE
3653672960,3653681151,RU
3653681152,3653685247,ES
@@ -136500,13 +149493,11 @@
3653722112,3653730303,LV
3653730304,3653734399,BA
3653734400,3653738495,KE
-3653738496,3653740295,GB
-3653740296,3653740303,US
-3653740304,3653744895,GB
-3653744896,3653744959,AE
-3653744960,3653746687,GB
+3653738496,3653746687,GB
3653746688,3653750783,DE
-3653750784,3653754879,RU
+3653750784,3653753087,RU
+3653753088,3653753215,VG
+3653753216,3653754879,RU
3653754880,3653758975,UA
3653758976,3653763071,RU
3653763072,3654025215,IT
@@ -136525,11 +149516,16 @@
3654062080,3654066027,GB
3654066028,3654066031,MC
3654066032,3654287359,GB
-3654287360,3654607871,SE
+3654287360,3654607103,SE
+3654607104,3654607359,DE
+3654607360,3654607871,SE
3654607872,3654608127,NO
-3654608128,3654608895,SE
+3654608128,3654608383,SE
+3654608384,3654608895,PL
3654608896,3654609919,NO
-3654609920,3654613007,SE
+3654609920,3654610431,SE
+3654610432,3654610943,FR
+3654610944,3654613007,SE
3654613008,3654613015,RU
3654613016,3654613055,SE
3654613056,3654613071,RU
@@ -136552,10 +149548,7 @@
3656229704,3656229711,ES
3656229712,3656233999,DE
3656234000,3656234007,NL
-3656234008,3656236527,DE
-3656236528,3656236535,GB
-3656236536,3656236543,US
-3656236544,3656633487,DE
+3656234008,3656633487,DE
3656633488,3656633495,GB
3656633496,3656633503,US
3656633504,3656650583,DE
@@ -136591,7 +149584,6 @@
3663990784,3663991295,HK
3663991296,3663991551,MY
3663991552,3663991807,AU
-3663991808,3663992063,JP
3663992064,3663992319,NZ
3663992320,3663992575,MY
3663992576,3663993599,NZ
@@ -136627,6 +149619,15 @@
3664005120,3664005887,ID
3664005888,3664006143,MY
3664006144,3664006399,AU
+3664006400,3664006655,PF
+3664006656,3664006911,AU
+3664006912,3664007167,NZ
+3664007168,3664008191,AU
+3664008192,3664008447,MN
+3664008448,3664008703,PK
+3664008704,3664008959,MY
+3664008960,3664009215,AU
+3664009216,3664052223,CN
3664052224,3664084991,NZ
3664084992,3664117759,KR
3664117760,3664248831,HK
@@ -136644,7 +149645,6 @@
3669614592,3669616639,NZ
3669616640,3669618687,AU
3669618688,3669620735,BD
-3669620736,3669622783,JP
3669622784,3669688319,SG
3669688320,3669753855,TW
3669753856,3669822719,HK
@@ -136720,6 +149720,7 @@
3701014528,3701080063,JP
3701080064,3701211135,CN
3701211136,3701252095,JP
+3701252096,3701256191,NC
3701256192,3701258239,SG
3701258240,3701260287,IN
3701260288,3701293055,JP
@@ -136765,6 +149766,7 @@
3715655680,3715657727,IN
3715657728,3715661823,SG
3715661824,3715672063,AU
+3715672064,3715674111,JP
3715674112,3715678207,HK
3715678208,3715694591,PK
3715694592,3715710975,VN
@@ -136784,7 +149786,7 @@
3716431872,3716440063,KR
3716440064,3716444159,JP
3716444160,3716446207,PK
-3716448256,3716464639,JP
+3716446208,3716464639,JP
3716464640,3716481023,ID
3716481024,3716489215,VN
3716489216,3716493311,MY
@@ -136858,11 +149860,13 @@
3742973952,3742982143,SG
3742982144,3742986239,ID
3742986240,3742988287,AU
+3742988288,3742990335,VU
3742990336,3743006719,JP
3743006720,3743014911,TH
3743014912,3743016959,AU
+3743016960,3743019007,SG
3743019008,3743022079,MY
-3743022080,3743023103,AP
+3743022080,3743023103,SG
3743023104,3743027199,TW
3743027200,3743031295,SG
3743031296,3743035391,IN
@@ -136870,38 +149874,44 @@
3743039488,3743055871,TW
3743055872,3743088639,KR
3743088640,3743096831,AU
+3743096832,3743105023,TW
3743105024,3743106047,AU
-3743107072,3743109119,JP
+3743106048,3743109119,JP
3743109120,3743113215,BD
3743113216,3743115263,AU
+3743115264,3743117311,VN
3743117312,3743118335,BD
+3743118336,3743119359,JP
3743119360,3743120383,IN
3743120384,3743121407,JP
3743121408,3743125503,MY
3743125504,3743129599,ID
3743129600,3743130623,HK
-3743130624,3743131647,AP
-3743131648,3743133695,SG
+3743130624,3743133695,SG
3743133696,3743134719,AU
+3743134720,3743135743,JP
3743135744,3743136767,CN
3743136768,3743137791,MY
3743137792,3743154175,TH
3743154176,3743186943,MY
3743186944,3743219711,KR
3743219712,3743252479,JP
-3743252480,3743260671,NC
+3743252480,3743264767,NC
+3743264768,3743268863,JP
3743268864,3743277055,IN
3743277056,3743281151,PK
3743281152,3743282175,AU
+3743282176,3743283199,JP
3743283200,3743284223,HK
3743284224,3743285247,PK
3743285248,3743416319,IN
3743416320,3745513471,KR
3745513472,3749838847,CN
-3749838848,3749839103,AP
+3749838848,3749839871,SG
3749839872,3749840895,IN
3749840896,3749841919,PH
-3749841920,3749847039,AU
+3749841920,3749846015,AU
+3749846016,3749847039,IN
3749847040,3749855231,HK
3749855232,3749969919,KR
3749969920,3750232063,JP
@@ -136912,9 +149922,11 @@
3752133632,3752134655,ID
3752134656,3752136703,TW
3752136704,3752137727,NZ
+3752137728,3752138751,JP
3752138752,3752140799,IN
3752140800,3752148991,JP
3752148992,3752153087,NZ
+3752153088,3752157183,JP
3752157184,3752165375,AU
3752165376,3752198143,KR
3752198144,3752329215,CN
@@ -136939,16 +149951,21 @@
3755978752,3755986943,CN
3755986944,3755988991,JP
3755988992,3755990015,HK
+3755990016,3755991039,SG
3755991040,3755999231,JP
3755999232,3757047807,IN
3757047808,3757834239,CN
3757834240,3757867007,AU
+3757867008,3757899775,CN
3757899776,3757965311,KR
3757965312,3758063615,CN
3758063616,3758079999,HK
3758080000,3758088191,KR
3758088192,3758090239,ID
3758090240,3758091263,AU
+3758091264,3758092287,CN
3758092288,3758093311,HK
3758093312,3758094335,IN
3758094336,3758095359,AU
+3758095360,3758095871,CN
+3758095872,3758096127,SG
diff --git a/src/or/Makefile.am b/src/or/Makefile.am
index b6637ba631..344e63ff87 100644
--- a/src/or/Makefile.am
+++ b/src/or/Makefile.am
@@ -50,9 +50,10 @@ libtor_a_SOURCES = \
router.c \
routerlist.c \
routerparse.c \
+ status.c \
$(evdns_source) \
$(tor_platform_source) \
- config_codedigest.c
+ config_codedigest.c
#libtor_a_LIBADD = ../common/libor.a ../common/libor-crypto.a \
# ../common/libor-event.a
@@ -68,17 +69,12 @@ AM_CPPFLAGS = -DSHARE_DATADIR="\"$(datadir)\"" \
# This seems to matter nowhere but on windows, but I assure you that it
# matters a lot there, and is quite hard to debug if you forget to do it.
-if USE_BUFFEREVENTS
-levent_openssl_lib = -levent_openssl
-else
-levent_openssl_lib =
-endif
tor_LDFLAGS = @TOR_LDFLAGS_zlib@ @TOR_LDFLAGS_openssl@ @TOR_LDFLAGS_libevent@
tor_LDADD = ./libtor.a ../common/libor.a ../common/libor-crypto.a \
../common/libor-event.a \
@TOR_ZLIB_LIBS@ -lm @TOR_LIBEVENT_LIBS@ @TOR_OPENSSL_LIBS@ \
- @TOR_LIB_WS32@ @TOR_LIB_GDI@ $(levent_openssl_lib)
+ @TOR_LIB_WS32@ @TOR_LIB_GDI@
noinst_HEADERS = \
buffers.h \
@@ -119,7 +115,8 @@ noinst_HEADERS = \
router.h \
routerlist.h \
routerparse.h \
- micro-revision.i
+ status.h \
+ micro-revision.i
config_codedigest.o: or_sha1.i
@@ -140,11 +137,13 @@ micro-revision.i: FORCE
mv micro-revision.tmp micro-revision.i; \
fi; true
-or_sha1.i: $(tor_SOURCES)
+or_sha1.i: $(tor_SOURCES) $(libtor_a_SOURCES)
if test "@SHA1SUM@" != none; then \
- @SHA1SUM@ $(tor_SOURCES) | @SED@ -n 's/^\(.*\)$$/"\1\\n"/p' > or_sha1.i; \
+ @SHA1SUM@ $(tor_SOURCES) $(libtor_a_SOURCES) | \
+ @SED@ -n 's/^\(.*\)$$/"\1\\n"/p' > or_sha1.i; \
elif test "@OPENSSL@" != none; then \
- @OPENSSL@ sha1 $(tor_SOURCES) | @SED@ -n 's/SHA1(\(.*\))= \(.*\)/"\2 \1\\n"/p' > or_sha1.i; \
+ @OPENSSL@ sha1 $(tor_SOURCES) $(libtor_a_SOURCES) | \
+ @SED@ -n 's/SHA1(\(.*\))= \(.*\)/"\2 \1\\n"/p' > or_sha1.i; \
else \
rm or_sha1.i; \
touch or_sha1.i; \
diff --git a/src/or/buffers.c b/src/or/buffers.c
index b7567bf24c..256b507729 100644
--- a/src/or/buffers.c
+++ b/src/or/buffers.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -68,8 +68,8 @@ typedef struct chunk_t {
size_t datalen; /**< The number of bytes stored in this chunk */
size_t memlen; /**< The number of usable bytes of storage in <b>mem</b>. */
char *data; /**< A pointer to the first byte of data stored in <b>mem</b>. */
- char mem[1]; /**< The actual memory used for storage in this chunk. May be
- * more than one byte long. */
+ char mem[FLEXIBLE_ARRAY_MEMBER]; /**< The actual memory used for storage in
+ * this chunk. */
} chunk_t;
#define CHUNK_HEADER_LEN STRUCT_OFFSET(chunk_t, mem[0])
@@ -588,7 +588,7 @@ buf_add_chunk_with_capacity(buf_t *buf, size_t capacity, int capped)
* *<b>reached_eof</b> to 1. Return -1 on error, 0 on eof or blocking,
* and the number of bytes read otherwise. */
static INLINE int
-read_to_chunk(buf_t *buf, chunk_t *chunk, int fd, size_t at_most,
+read_to_chunk(buf_t *buf, chunk_t *chunk, tor_socket_t fd, size_t at_most,
int *reached_eof, int *socket_error)
{
ssize_t read_result;
@@ -643,10 +643,14 @@ read_to_chunk_tls(buf_t *buf, chunk_t *chunk, tor_tls_t *tls,
* (because of EOF), set *<b>reached_eof</b> to 1 and return 0. Return -1 on
* error; else return the number of bytes read.
*/
+/* XXXX023 indicate "read blocked" somehow? */
int
-read_to_buf(int s, size_t at_most, buf_t *buf, int *reached_eof,
+read_to_buf(tor_socket_t s, size_t at_most, buf_t *buf, int *reached_eof,
int *socket_error)
{
+ /* XXXX023 It's stupid to overload the return values for these functions:
+ * "error status" and "number of bytes read" are not mutually exclusive.
+ */
int r = 0;
size_t total_read = 0;
@@ -740,7 +744,7 @@ read_to_buf_tls(tor_tls_t *tls, size_t at_most, buf_t *buf)
* written on success, 0 on blocking, -1 on failure.
*/
static INLINE int
-flush_chunk(int s, buf_t *buf, chunk_t *chunk, size_t sz,
+flush_chunk(tor_socket_t s, buf_t *buf, chunk_t *chunk, size_t sz,
size_t *buf_flushlen)
{
ssize_t write_result;
@@ -812,8 +816,11 @@ flush_chunk_tls(tor_tls_t *tls, buf_t *buf, chunk_t *chunk,
* -1 on failure. Return 0 if write() would block.
*/
int
-flush_buf(int s, buf_t *buf, size_t sz, size_t *buf_flushlen)
+flush_buf(tor_socket_t s, buf_t *buf, size_t sz, size_t *buf_flushlen)
{
+ /* XXXX023 It's stupid to overload the return values for these functions:
+ * "error status" and "number of bytes flushed" are not mutually exclusive.
+ */
int r;
size_t flushed = 0;
tor_assert(buf_flushlen);
@@ -1003,7 +1010,7 @@ fetch_var_cell_from_buf(buf_t *buf, var_cell_t **out, int linkproto)
result->circ_id = ntohs(get_uint16(hdr));
buf_remove_from_front(buf, VAR_CELL_HEADER_SIZE);
- peek_from_buf(result->payload, length, buf);
+ peek_from_buf((char*) result->payload, length, buf);
buf_remove_from_front(buf, length);
check();
@@ -1452,7 +1459,7 @@ log_unsafe_socks_warning(int socks_protocol, const char *address,
{
static ratelim_t socks_ratelim = RATELIM_INIT(SOCKS_WARN_INTERVAL);
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
char *m = NULL;
if (! options->WarnUnsafeSocks)
return;
@@ -1475,6 +1482,10 @@ log_unsafe_socks_warning(int socks_protocol, const char *address,
socks_protocol, address, (int)port);
}
+/** Do not attempt to parse socks messages longer than this. This value is
+ * actually significantly higher than the longest possible socks message. */
+#define MAX_SOCKS_MESSAGE_LEN 512
+
/** Return a new socks_request_t. */
socks_request_t *
socks_request_new(void)
@@ -2022,7 +2033,7 @@ fetch_from_buf_socks_client(buf_t *buf, int state, char **reason)
if (buf->datalen < 2)
return 0;
- buf_pullup(buf, 128, 0);
+ buf_pullup(buf, MAX_SOCKS_MESSAGE_LEN, 0);
tor_assert(buf->head && buf->head->datalen >= 2);
r = parse_socks_client((uint8_t*)buf->head->data, buf->head->datalen,
@@ -2046,13 +2057,17 @@ fetch_from_evbuffer_socks_client(struct evbuffer *buf, int state,
size_t datalen;
int r;
- data = evbuffer_pullup(buf, 128); /* Make sure we have at least 128
- * contiguous bytes if possible. */
- datalen = evbuffer_get_contiguous_space(buf);
+ /* Linearize the SOCKS response in the buffer, up to 128 bytes.
+ * (parse_socks_client shouldn't need to see anything beyond that.) */
+ datalen = evbuffer_get_length(buf);
+ if (datalen > MAX_SOCKS_MESSAGE_LEN)
+ datalen = MAX_SOCKS_MESSAGE_LEN;
+ data = evbuffer_pullup(buf, datalen);
+
r = parse_socks_client(data, datalen, state, reason, &drain);
if (drain > 0)
evbuffer_drain(buf, drain);
- else
+ else if (drain < 0)
evbuffer_drain(buf, evbuffer_get_length(buf));
return r;
@@ -2317,7 +2332,6 @@ write_to_evbuffer_zlib(struct evbuffer *buf, tor_zlib_state_t *state,
int over = 0, n;
struct evbuffer_iovec vec[1];
do {
- int need_new_chunk = 0;
{
size_t cap = data_len / 4;
if (cap < 128)
@@ -2346,7 +2360,6 @@ write_to_evbuffer_zlib(struct evbuffer *buf, tor_zlib_state_t *state,
if (avail) {
/* Zlib says we need more room (ZLIB_BUF_FULL). Start a new chunk
* automatically, whether were going to or not. */
- need_new_chunk = 1;
}
break;
}
diff --git a/src/or/buffers.h b/src/or/buffers.h
index fad509e4a1..b0161b9c2c 100644
--- a/src/or/buffers.h
+++ b/src/or/buffers.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -24,11 +24,11 @@ size_t buf_datalen(const buf_t *buf);
size_t buf_allocation(const buf_t *buf);
size_t buf_slack(const buf_t *buf);
-int read_to_buf(int s, size_t at_most, buf_t *buf, int *reached_eof,
+int read_to_buf(tor_socket_t s, size_t at_most, buf_t *buf, int *reached_eof,
int *socket_error);
int read_to_buf_tls(tor_tls_t *tls, size_t at_most, buf_t *buf);
-int flush_buf(int s, buf_t *buf, size_t sz, size_t *buf_flushlen);
+int flush_buf(tor_socket_t s, buf_t *buf, size_t sz, size_t *buf_flushlen);
int flush_buf_tls(tor_tls_t *tls, buf_t *buf, size_t sz, size_t *buf_flushlen);
int write_to_buf(const char *string, size_t string_len, buf_t *buf);
diff --git a/src/or/circuitbuild.c b/src/or/circuitbuild.c
index 1741548130..4397aa5c13 100644
--- a/src/or/circuitbuild.c
+++ b/src/or/circuitbuild.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -43,11 +43,12 @@
/********* START VARIABLES **********/
/** Global list of circuit build times */
-// FIXME: Add this as a member for entry_guard_t instead of global?
+// XXXX023: Add this as a member for entry_guard_t instead of global?
// Then we could do per-guard statistics, as guards are likely to
// vary in their own latency. The downside of this is that guards
// can change frequently, so we'd be building a lot more circuits
// most likely.
+/* XXXX023 Make this static; add accessor functions. */
circuit_build_times_t circ_times;
/** A global list of all circuits at this hop. */
@@ -78,6 +79,28 @@ typedef struct {
* at which we last failed to connect to it. */
} entry_guard_t;
+/** Information about a configured bridge. Currently this just matches the
+ * ones in the torrc file, but one day we may be able to learn about new
+ * bridges on our own, and remember them in the state file. */
+typedef struct {
+ /** Address of the bridge. */
+ tor_addr_t addr;
+ /** TLS port for the bridge. */
+ uint16_t port;
+ /** Boolean: We are re-parsing our bridge list, and we are going to remove
+ * this one if we don't find it in the list of configured bridges. */
+ unsigned marked_for_removal : 1;
+ /** Expected identity digest, or all zero bytes if we don't know what the
+ * digest should be. */
+ char identity[DIGEST_LEN];
+
+ /** Name of pluggable transport protocol taken from its config line. */
+ char *transport_name;
+
+ /** When should we next try to fetch a descriptor for this bridge? */
+ download_status_t fetch_status;
+} bridge_info_t;
+
/** A list of our chosen entry guards. */
static smartlist_t *entry_guards = NULL;
/** A value of 1 means that the entry_guards list has changed
@@ -100,6 +123,19 @@ static int onion_append_hop(crypt_path_t **head_ptr, extend_info_t *choice);
static void entry_guards_changed(void);
+static const transport_t *transport_get_by_name(const char *name);
+static void transport_free(transport_t *transport);
+static void bridge_free(bridge_info_t *bridge);
+
+/**
+ * This function decides if CBT learning should be disabled. It returns
+ * true if one or more of the following four conditions are met:
+ *
+ * 1. If the cbtdisabled consensus parameter is set.
+ * 2. If the torrc option LearnCircuitBuildTimeout is false.
+ * 3. If we are a directory authority
+ * 4. If we fail to write circuit build time history to our state file.
+ */
static int
circuit_build_times_disabled(void)
{
@@ -107,10 +143,10 @@ circuit_build_times_disabled(void)
return 0;
} else {
int consensus_disabled = networkstatus_get_param(NULL, "cbtdisabled",
- 0);
+ 0, 0, 1);
int config_disabled = !get_options()->LearnCircuitBuildTimeout;
int dirauth_disabled = get_options()->AuthoritativeDir;
- int state_disabled = (get_or_state()->LastWritten == -1);
+ int state_disabled = did_last_state_file_write_fail() ? 1 : 0;
if (consensus_disabled || config_disabled || dirauth_disabled ||
state_disabled) {
@@ -126,27 +162,54 @@ circuit_build_times_disabled(void)
}
}
+/**
+ * Retrieve and bounds-check the cbtmaxtimeouts consensus paramter.
+ *
+ * Effect: When this many timeouts happen in the last 'cbtrecentcount'
+ * circuit attempts, the client should discard all of its history and
+ * begin learning a fresh timeout value.
+ */
static int32_t
circuit_build_times_max_timeouts(void)
{
- int32_t num = networkstatus_get_param(NULL, "cbtmaxtimeouts",
- CBT_DEFAULT_MAX_RECENT_TIMEOUT_COUNT);
- return num;
+ return networkstatus_get_param(NULL, "cbtmaxtimeouts",
+ CBT_DEFAULT_MAX_RECENT_TIMEOUT_COUNT,
+ CBT_MIN_MAX_RECENT_TIMEOUT_COUNT,
+ CBT_MAX_MAX_RECENT_TIMEOUT_COUNT);
}
+/**
+ * Retrieve and bounds-check the cbtnummodes consensus paramter.
+ *
+ * Effect: This value governs how many modes to use in the weighted
+ * average calculation of Pareto parameter Xm. A value of 3 introduces
+ * some bias (2-5% of CDF) under ideal conditions, but allows for better
+ * performance in the event that a client chooses guard nodes of radically
+ * different performance characteristics.
+ */
static int32_t
circuit_build_times_default_num_xm_modes(void)
{
int32_t num = networkstatus_get_param(NULL, "cbtnummodes",
- CBT_DEFAULT_NUM_XM_MODES);
+ CBT_DEFAULT_NUM_XM_MODES,
+ CBT_MIN_NUM_XM_MODES,
+ CBT_MAX_NUM_XM_MODES);
return num;
}
+/**
+ * Retrieve and bounds-check the cbtmincircs consensus paramter.
+ *
+ * Effect: This is the minimum number of circuits to build before
+ * computing a timeout.
+ */
static int32_t
circuit_build_times_min_circs_to_observe(void)
{
int32_t num = networkstatus_get_param(NULL, "cbtmincircs",
- CBT_DEFAULT_MIN_CIRCUITS_TO_OBSERVE);
+ CBT_DEFAULT_MIN_CIRCUITS_TO_OBSERVE,
+ CBT_MIN_MIN_CIRCUITS_TO_OBSERVE,
+ CBT_MAX_MIN_CIRCUITS_TO_OBSERVE);
return num;
}
@@ -158,53 +221,126 @@ circuit_build_times_enough_to_compute(circuit_build_times_t *cbt)
return cbt->total_build_times >= circuit_build_times_min_circs_to_observe();
}
+/**
+ * Retrieve and bounds-check the cbtquantile consensus paramter.
+ *
+ * Effect: This is the position on the quantile curve to use to set the
+ * timeout value. It is a percent (10-99).
+ */
double
circuit_build_times_quantile_cutoff(void)
{
int32_t num = networkstatus_get_param(NULL, "cbtquantile",
- CBT_DEFAULT_QUANTILE_CUTOFF);
+ CBT_DEFAULT_QUANTILE_CUTOFF,
+ CBT_MIN_QUANTILE_CUTOFF,
+ CBT_MAX_QUANTILE_CUTOFF);
return num/100.0;
}
+int
+circuit_build_times_get_bw_scale(networkstatus_t *ns)
+{
+ return networkstatus_get_param(ns, "bwweightscale",
+ BW_WEIGHT_SCALE,
+ BW_MIN_WEIGHT_SCALE,
+ BW_MAX_WEIGHT_SCALE);
+}
+
+/**
+ * Retrieve and bounds-check the cbtclosequantile consensus paramter.
+ *
+ * Effect: This is the position on the quantile curve to use to set the
+ * timeout value to use to actually close circuits. It is a percent
+ * (0-99).
+ */
static double
circuit_build_times_close_quantile(void)
{
- int32_t num = networkstatus_get_param(NULL, "cbtclosequantile",
- CBT_DEFAULT_CLOSE_QUANTILE);
-
- return num/100.0;
+ int32_t param;
+ /* Cast is safe - circuit_build_times_quantile_cutoff() is capped */
+ int32_t min = (int)tor_lround(100*circuit_build_times_quantile_cutoff());
+ param = networkstatus_get_param(NULL, "cbtclosequantile",
+ CBT_DEFAULT_CLOSE_QUANTILE,
+ CBT_MIN_CLOSE_QUANTILE,
+ CBT_MAX_CLOSE_QUANTILE);
+ if (param < min) {
+ log_warn(LD_DIR, "Consensus parameter cbtclosequantile is "
+ "too small, raising to %d", min);
+ param = min;
+ }
+ return param / 100.0;
}
+/**
+ * Retrieve and bounds-check the cbttestfreq consensus paramter.
+ *
+ * Effect: Describes how often in seconds to build a test circuit to
+ * gather timeout values. Only applies if less than 'cbtmincircs'
+ * have been recorded.
+ */
static int32_t
circuit_build_times_test_frequency(void)
{
int32_t num = networkstatus_get_param(NULL, "cbttestfreq",
- CBT_DEFAULT_TEST_FREQUENCY);
+ CBT_DEFAULT_TEST_FREQUENCY,
+ CBT_MIN_TEST_FREQUENCY,
+ CBT_MAX_TEST_FREQUENCY);
return num;
}
+/**
+ * Retrieve and bounds-check the cbtmintimeout consensus parameter.
+ *
+ * Effect: This is the minimum allowed timeout value in milliseconds.
+ * The minimum is to prevent rounding to 0 (we only check once
+ * per second).
+ */
static int32_t
circuit_build_times_min_timeout(void)
{
int32_t num = networkstatus_get_param(NULL, "cbtmintimeout",
- CBT_DEFAULT_TIMEOUT_MIN_VALUE);
+ CBT_DEFAULT_TIMEOUT_MIN_VALUE,
+ CBT_MIN_TIMEOUT_MIN_VALUE,
+ CBT_MAX_TIMEOUT_MIN_VALUE);
return num;
}
+/**
+ * Retrieve and bounds-check the cbtinitialtimeout consensus paramter.
+ *
+ * Effect: This is the timeout value to use before computing a timeout,
+ * in milliseconds.
+ */
int32_t
circuit_build_times_initial_timeout(void)
{
- int32_t num = networkstatus_get_param(NULL, "cbtinitialtimeout",
- CBT_DEFAULT_TIMEOUT_INITIAL_VALUE);
- return num;
+ int32_t min = circuit_build_times_min_timeout();
+ int32_t param = networkstatus_get_param(NULL, "cbtinitialtimeout",
+ CBT_DEFAULT_TIMEOUT_INITIAL_VALUE,
+ CBT_MIN_TIMEOUT_INITIAL_VALUE,
+ CBT_MAX_TIMEOUT_INITIAL_VALUE);
+ if (param < min) {
+ log_warn(LD_DIR, "Consensus parameter cbtinitialtimeout is too small, "
+ "raising to %d", min);
+ param = min;
+ }
+ return param;
}
+/**
+ * Retrieve and bounds-check the cbtrecentcount consensus paramter.
+ *
+ * Effect: This is the number of circuit build times to keep track of
+ * for deciding if we hit cbtmaxtimeouts and need to reset our state
+ * and learn a new timeout.
+ */
static int32_t
-circuit_build_times_recent_circuit_count(void)
+circuit_build_times_recent_circuit_count(networkstatus_t *ns)
{
- int32_t num = networkstatus_get_param(NULL, "cbtrecentcount",
- CBT_DEFAULT_RECENT_CIRCUITS);
- return num;
+ return networkstatus_get_param(ns, "cbtrecentcount",
+ CBT_DEFAULT_RECENT_CIRCUITS,
+ CBT_MIN_RECENT_CIRCUITS,
+ CBT_MAX_RECENT_CIRCUITS);
}
/**
@@ -217,13 +353,13 @@ void
circuit_build_times_new_consensus_params(circuit_build_times_t *cbt,
networkstatus_t *ns)
{
- int32_t num = networkstatus_get_param(ns, "cbtrecentcount",
- CBT_DEFAULT_RECENT_CIRCUITS);
+ int32_t num = circuit_build_times_recent_circuit_count(ns);
if (num > 0 && num != cbt->liveness.num_recent_circs) {
int8_t *recent_circs;
- log_notice(LD_CIRC, "Changing recent timeout size from %d to %d",
- cbt->liveness.num_recent_circs, num);
+ log_notice(LD_CIRC, "The Tor Directory Consensus has changed how many "
+ "circuits we must track to detect network failures from %d "
+ "to %d.", cbt->liveness.num_recent_circs, num);
tor_assert(cbt->liveness.timeouts_after_firsthop);
@@ -308,7 +444,8 @@ void
circuit_build_times_init(circuit_build_times_t *cbt)
{
memset(cbt, 0, sizeof(*cbt));
- cbt->liveness.num_recent_circs = circuit_build_times_recent_circuit_count();
+ cbt->liveness.num_recent_circs =
+ circuit_build_times_recent_circuit_count(NULL);
cbt->liveness.timeouts_after_firsthop = tor_malloc_zero(sizeof(int8_t)*
cbt->liveness.num_recent_circs);
cbt->close_ms = cbt->timeout_ms = circuit_build_times_get_initial_timeout();
@@ -348,7 +485,7 @@ circuit_build_times_rewind_history(circuit_build_times_t *cbt, int n)
* Add a new build time value <b>time</b> to the set of build times. Time
* units are milliseconds.
*
- * circuit_build_times <b>cbt</a> is a circular array, so loop around when
+ * circuit_build_times <b>cbt</b> is a circular array, so loop around when
* array is full.
*/
int
@@ -449,7 +586,9 @@ circuit_build_times_create_histogram(circuit_build_times_t *cbt,
* Return the Pareto start-of-curve parameter Xm.
*
* Because we are not a true Pareto curve, we compute this as the
- * weighted average of the N=3 most frequent build time bins.
+ * weighted average of the N most frequent build time bins. N is either
+ * 1 if we don't have enough circuit build time data collected, or
+ * determined by the consensus parameter cbtnummodes (default 3).
*/
static build_time_t
circuit_build_times_get_xm(circuit_build_times_t *cbt)
@@ -462,6 +601,9 @@ circuit_build_times_get_xm(circuit_build_times_t *cbt)
int n=0;
int num_modes = circuit_build_times_default_num_xm_modes();
+ tor_assert(nbins > 0);
+ tor_assert(num_modes > 0);
+
// Only use one mode if < 1000 buildtimes. Not enough data
// for multiple.
if (cbt->total_build_times < CBT_NCIRCUITS_TO_OBSERVE)
@@ -469,6 +611,7 @@ circuit_build_times_get_xm(circuit_build_times_t *cbt)
nth_max_bin = (build_time_t*)tor_malloc_zero(num_modes*sizeof(build_time_t));
+ /* Determine the N most common build times */
for (i = 0; i < nbins; i++) {
if (histogram[i] >= histogram[nth_max_bin[0]]) {
nth_max_bin[0] = i;
@@ -490,6 +633,10 @@ circuit_build_times_get_xm(circuit_build_times_t *cbt)
histogram[nth_max_bin[n]]);
}
+ /* The following assert is safe, because we don't get called when we
+ * haven't observed at least CBT_MIN_MIN_CIRCUITS_TO_OBSERVE circuits. */
+ tor_assert(bin_counts > 0);
+
ret /= bin_counts;
tor_free(histogram);
tor_free(nth_max_bin);
@@ -546,17 +693,27 @@ circuit_build_times_update_state(circuit_build_times_t *cbt,
/**
* Shuffle the build times array.
*
- * Stolen from http://en.wikipedia.org/wiki/Fisher\u2013Yates_shuffle
+ * Adapted from http://en.wikipedia.org/wiki/Fisher-Yates_shuffle
*/
static void
circuit_build_times_shuffle_and_store_array(circuit_build_times_t *cbt,
build_time_t *raw_times,
- int num_times)
+ uint32_t num_times)
{
- int n = num_times;
+ uint32_t n = num_times;
if (num_times > CBT_NCIRCUITS_TO_OBSERVE) {
- log_notice(LD_CIRC, "Decreasing circuit_build_times size from %d to %d",
- num_times, CBT_NCIRCUITS_TO_OBSERVE);
+ log_notice(LD_CIRC, "The number of circuit times that this Tor version "
+ "uses to calculate build times is less than the number stored "
+ "in your state file. Decreasing the circuit time history from "
+ "%lu to %d.", (unsigned long)num_times,
+ CBT_NCIRCUITS_TO_OBSERVE);
+ }
+
+ if (n > INT_MAX-1) {
+ log_warn(LD_CIRC, "For some insane reasons, you had %lu circuit build "
+ "observations in your state file. That's far too many; probably "
+ "there's a bug here.", (unsigned long)n);
+ n = INT_MAX-1;
}
/* This code can only be run on a compact array */
@@ -1037,7 +1194,7 @@ circuit_build_times_network_close(circuit_build_times_t *cbt,
if (cbt->liveness.nonlive_timeouts == 1) {
log_notice(LD_CIRC,
"Tor has not observed any network activity for the past %d "
- "seconds. Disabling circuit build timeout code.",
+ "seconds. Disabling circuit build timeout recording.",
(int)(now - cbt->liveness.network_last_live));
} else {
log_info(LD_CIRC,
@@ -1121,7 +1278,7 @@ circuit_build_times_network_check_changed(circuit_build_times_t *cbt)
control_event_buildtimeout_set(cbt, BUILDTIMEOUT_SET_EVENT_RESET);
log_notice(LD_CIRC,
- "Network connection speed appears to have changed. Resetting "
+ "Your network connection speed appears to have changed. Resetting "
"timeout to %lds after %d timeouts and %d buildtimes.",
tor_lround(cbt->timeout_ms/1000), timeout_count,
total_build_times);
@@ -1259,7 +1416,7 @@ circuit_build_times_set_timeout_worker(circuit_build_times_t *cbt)
}
if (max_time < INT32_MAX/2 && cbt->close_ms > 2*max_time) {
- log_notice(LD_CIRC,
+ log_info(LD_CIRC,
"Circuit build measurement period of %dms is more than twice "
"the maximum build time we have ever observed. Capping it to "
"%dms.", (int)cbt->close_ms, 2*max_time);
@@ -1371,7 +1528,7 @@ get_unique_circ_id_by_conn(or_connection_t *conn)
}
/** If <b>verbose</b> is false, allocate and return a comma-separated list of
- * the currently built elements of circuit_t. If <b>verbose</b> is true, also
+ * the currently built elements of <b>circ</b>. If <b>verbose</b> is true, also
* list information about link status in a more verbose format using spaces.
* If <b>verbose_names</b> is false, give nicknames for Named routers and hex
* digests for others; if <b>verbose_names</b> is true, use $DIGEST=Name style
@@ -1394,7 +1551,7 @@ circuit_list_path_impl(origin_circuit_t *circ, int verbose, int verbose_names)
circ->build_state->is_internal ? "internal" : "exit",
circ->build_state->need_uptime ? " (high-uptime)" : "",
circ->build_state->desired_path_len,
- circ->_base.state == CIRCUIT_STATE_OPEN ? "" : ", exit ",
+ circ->_base.state == CIRCUIT_STATE_OPEN ? "" : ", last hop ",
circ->_base.state == CIRCUIT_STATE_OPEN ? "" :
(nickname?nickname:"*unnamed*"));
smartlist_add(elements, cp);
@@ -1457,7 +1614,7 @@ circuit_list_path_impl(origin_circuit_t *circ, int verbose, int verbose_names)
}
/** If <b>verbose</b> is false, allocate and return a comma-separated
- * list of the currently built elements of circuit_t. If
+ * list of the currently built elements of <b>circ</b>. If
* <b>verbose</b> is true, also list information about link status in
* a more verbose format using spaces.
*/
@@ -1468,7 +1625,7 @@ circuit_list_path(origin_circuit_t *circ, int verbose)
}
/** Allocate and return a comma-separated list of the currently built elements
- * of circuit_t, giving each as a verbose nickname.
+ * of <b>circ</b>, giving each as a verbose nickname.
*/
char *
circuit_list_path_for_controller(origin_circuit_t *circ)
@@ -1477,7 +1634,7 @@ circuit_list_path_for_controller(origin_circuit_t *circ)
}
/** Log, at severity <b>severity</b>, the nicknames of each router in
- * circ's cpath. Also log the length of the cpath, and the intended
+ * <b>circ</b>'s cpath. Also log the length of the cpath, and the intended
* exit point.
*/
void
@@ -1489,7 +1646,7 @@ circuit_log_path(int severity, unsigned int domain, origin_circuit_t *circ)
}
/** Tell the rep(utation)hist(ory) module about the status of the links
- * in circ. Hops that have become OPEN are marked as successfully
+ * in <b>circ</b>. Hops that have become OPEN are marked as successfully
* extended; the _first_ hop that isn't open (if any) is marked as
* unable to extend.
*/
@@ -1625,10 +1782,9 @@ circuit_handle_first_hop(origin_circuit_t *circ)
if (!n_conn) {
/* not currently connected in a useful way. */
- const char *name = strlen(firsthop->extend_info->nickname) ?
- firsthop->extend_info->nickname : fmt_addr(&firsthop->extend_info->addr);
- log_info(LD_CIRC, "Next router is %s: %s ",
- safe_str_client(name), msg?msg:"???");
+ log_info(LD_CIRC, "Next router is %s: %s",
+ safe_str_client(extend_info_describe(firsthop->extend_info)),
+ msg?msg:"???");
circ->_base.n_hop = extend_info_dup(firsthop->extend_info);
if (should_launch) {
@@ -1695,7 +1851,7 @@ circuit_n_conn_done(or_connection_t *or_conn, int status)
continue;
} else {
/* We expected a key. See if it's the right one. */
- if (memcmp(or_conn->identity_digest,
+ if (tor_memneq(or_conn->identity_digest,
circ->n_hop->identity_digest, DIGEST_LEN))
continue;
}
@@ -1818,7 +1974,7 @@ inform_testing_reachability(void)
static INLINE int
should_use_create_fast_for_circuit(origin_circuit_t *circ)
{
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
tor_assert(circ->cpath);
tor_assert(circ->cpath->extend_info);
@@ -1897,7 +2053,7 @@ circuit_send_next_onion_skin(origin_circuit_t *circ)
* and a DH operation. */
cell_type = CELL_CREATE_FAST;
memset(payload, 0, sizeof(payload));
- crypto_rand(circ->cpath->fast_handshake_state,
+ crypto_rand((char*) circ->cpath->fast_handshake_state,
sizeof(circ->cpath->fast_handshake_state));
memcpy(payload, circ->cpath->fast_handshake_state,
sizeof(circ->cpath->fast_handshake_state));
@@ -1911,7 +2067,7 @@ circuit_send_next_onion_skin(origin_circuit_t *circ)
circuit_set_state(TO_CIRCUIT(circ), CIRCUIT_STATE_BUILDING);
log_info(LD_CIRC,"First hop: finished sending %s cell to '%s'",
fast ? "CREATE_FAST" : "CREATE",
- node ? node_get_nickname(node) : "<unnamed>");
+ node ? node_describe(node) : "<unnamed>");
} else {
tor_assert(circ->cpath->state == CPATH_STATE_OPEN);
tor_assert(circ->_base.state == CIRCUIT_STATE_BUILDING);
@@ -1933,8 +2089,9 @@ circuit_send_next_onion_skin(origin_circuit_t *circ)
*/
if (timediff < 0 || timediff > 2*circ_times.close_ms+1000) {
log_notice(LD_CIRC, "Strange value for circuit build time: %ldmsec. "
- "Assuming clock jump. Purpose %d", timediff,
- circ->_base.purpose);
+ "Assuming clock jump. Purpose %d (%s)", timediff,
+ circ->_base.purpose,
+ circuit_purpose_to_string(circ->_base.purpose));
} else if (!circuit_build_times_disabled()) {
/* Only count circuit times if the network is live */
if (circuit_build_times_network_check_live(&circ_times)) {
@@ -1952,7 +2109,7 @@ circuit_send_next_onion_skin(origin_circuit_t *circ)
if (circ->build_state->onehop_tunnel)
control_event_bootstrap(BOOTSTRAP_STATUS_REQUESTING_STATUS, 0);
if (!can_complete_circuit && !circ->build_state->onehop_tunnel) {
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
can_complete_circuit=1;
/* FFFF Log a count of known routers here */
log_notice(LD_GENERAL,
@@ -1960,6 +2117,7 @@ circuit_send_next_onion_skin(origin_circuit_t *circ)
"Looks like client functionality is working.");
control_event_bootstrap(BOOTSTRAP_STATUS_DONE, 0);
control_event_client_status(LOG_NOTICE, "CIRCUIT_ESTABLISHED");
+ clear_broken_connection_map(1);
if (server_mode(options) && !check_whether_orport_reachable()) {
inform_testing_reachability();
consider_testing_reachability(1, 1);
@@ -2076,8 +2234,9 @@ circuit_extend(cell_t *cell, circuit_t *circ)
n_addr32 = ntohl(get_uint32(cell->payload+RELAY_HEADER_SIZE));
n_port = ntohs(get_uint16(cell->payload+RELAY_HEADER_SIZE+4));
- onionskin = cell->payload+RELAY_HEADER_SIZE+4+2;
- id_digest = cell->payload+RELAY_HEADER_SIZE+4+2+ONIONSKIN_CHALLENGE_LEN;
+ onionskin = (char*) cell->payload+RELAY_HEADER_SIZE+4+2;
+ id_digest = (char*) cell->payload+RELAY_HEADER_SIZE+4+2+
+ ONIONSKIN_CHALLENGE_LEN;
tor_addr_from_ipv4h(&n_addr, n_addr32);
if (!n_port || !n_addr32) {
@@ -2101,7 +2260,7 @@ circuit_extend(cell_t *cell, circuit_t *circ)
/* Next, check if we're being asked to connect to the hop that the
* extend cell came from. There isn't any reason for that, and it can
* assist circular-path attacks. */
- if (!memcmp(id_digest, TO_OR_CIRCUIT(circ)->p_conn->identity_digest,
+ if (tor_memeq(id_digest, TO_OR_CIRCUIT(circ)->p_conn->identity_digest,
DIGEST_LEN)) {
log_fn(LOG_PROTOCOL_WARN, LD_PROTOCOL,
"Client asked me to extend back to the previous hop.");
@@ -2215,7 +2374,7 @@ circuit_init_cpath_crypto(crypt_path_t *cpath, const char *key_data,
*/
int
circuit_finish_handshake(origin_circuit_t *circ, uint8_t reply_type,
- const char *reply)
+ const uint8_t *reply)
{
char keys[CPATH_KEY_MATERIAL_LEN];
crypt_path_t *hop;
@@ -2232,7 +2391,7 @@ circuit_finish_handshake(origin_circuit_t *circ, uint8_t reply_type,
tor_assert(hop->state == CPATH_STATE_AWAITING_KEYS);
if (reply_type == CELL_CREATED && hop->dh_handshake_state) {
- if (onion_skin_client_handshake(hop->dh_handshake_state, reply, keys,
+ if (onion_skin_client_handshake(hop->dh_handshake_state, (char*)reply,keys,
DIGEST_LEN*2+CIPHER_KEY_LEN*2) < 0) {
log_warn(LD_CIRC,"onion_skin_client_handshake failed.");
return -END_CIRC_REASON_TORPROTOCOL;
@@ -2240,7 +2399,8 @@ circuit_finish_handshake(origin_circuit_t *circ, uint8_t reply_type,
/* Remember hash of g^xy */
memcpy(hop->handshake_digest, reply+DH_KEY_LEN, DIGEST_LEN);
} else if (reply_type == CELL_CREATED_FAST && !hop->dh_handshake_state) {
- if (fast_client_handshake(hop->fast_handshake_state, reply, keys,
+ if (fast_client_handshake(hop->fast_handshake_state, reply,
+ (uint8_t*)keys,
DIGEST_LEN*2+CIPHER_KEY_LEN*2) < 0) {
log_warn(LD_CIRC,"fast_client_handshake failed.");
return -END_CIRC_REASON_TORPROTOCOL;
@@ -2517,7 +2677,7 @@ choose_good_exit_server_general(int need_uptime, int need_capacity)
smartlist_t *connections;
int best_support = -1;
int n_best_support=0;
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
const smartlist_t *the_nodes;
const node_t *node=NULL;
@@ -2552,22 +2712,30 @@ choose_good_exit_server_general(int need_uptime, int need_capacity)
*/
continue;
}
- if (!node_has_descriptor(node))
+ if (!node_has_descriptor(node)) {
+ n_supported[i] = -1;
continue;
+ }
if (!node->is_running || node->is_bad_exit) {
n_supported[i] = -1;
continue; /* skip routers that are known to be down or bad exits */
}
- if (node_is_unreliable(node, need_uptime, need_capacity, 0) &&
- (!options->ExitNodes ||
- !routerset_contains_node(options->ExitNodes, node))) {
- /* FFFF Someday, differentiate between a routerset that names
- * routers, and a routerset that names countries, and only do this
- * check if they've asked for specific exit relays. Or if the country
- * they ask for is rare. Or something. */
+ if (routerset_contains_node(options->_ExcludeExitNodesUnion, node)) {
+ n_supported[i] = -1;
+ continue; /* user asked us not to use it, no matter what */
+ }
+ if (options->ExitNodes &&
+ !routerset_contains_node(options->ExitNodes, node)) {
+ n_supported[i] = -1;
+ continue; /* not one of our chosen exit nodes */
+ }
+
+ if (node_is_unreliable(node, need_uptime, need_capacity, 0)) {
n_supported[i] = -1;
- continue; /* skip routers that are not suitable, unless we have
- * ExitNodes set, in which case we asked for it */
+ continue; /* skip routers that are not suitable. Don't worry if
+ * this makes us reject all the possible routers: if so,
+ * we'll retry later in this function with need_update and
+ * need_capacity set to 0. */
}
if (!(node->is_valid || options->_AllowInvalid & ALLOW_INVALID_EXIT)) {
/* if it's invalid and we don't want it */
@@ -2592,7 +2760,7 @@ choose_good_exit_server_general(int need_uptime, int need_capacity)
SMARTLIST_FOREACH_BEGIN(connections, connection_t *, conn) {
if (!ap_stream_wants_exit_attention(conn))
continue; /* Skip everything but APs in CIRCUIT_WAIT */
- if (connection_ap_can_use_exit(TO_EDGE_CONN(conn), node, 1)) {
+ if (connection_ap_can_use_exit(TO_EDGE_CONN(conn), node)) {
++n_supported[i];
// log_fn(LOG_DEBUG,"%s is supported. n_supported[%d] now %d.",
// router->nickname, i, n_supported[i]);
@@ -2626,22 +2794,14 @@ choose_good_exit_server_general(int need_uptime, int need_capacity)
/* If any routers definitely support any pending connections, choose one
* at random. */
if (best_support > 0) {
- smartlist_t *supporting = smartlist_create(), *use = smartlist_create();
+ smartlist_t *supporting = smartlist_create();
SMARTLIST_FOREACH(the_nodes, const node_t *, node, {
if (n_supported[node_sl_idx] == best_support)
smartlist_add(supporting, (void*)node);
});
- routersets_get_node_disjunction(use, supporting, options->ExitNodes,
- options->_ExcludeExitNodesUnion, 1);
- if (smartlist_len(use) == 0 && options->ExitNodes &&
- !options->StrictNodes) { /* give up on exitnodes and try again */
- routersets_get_node_disjunction(use, supporting, NULL,
- options->_ExcludeExitNodesUnion, 1);
- }
- node = node_sl_choose_by_bandwidth(use, WEIGHT_FOR_EXIT);
- smartlist_free(use);
+ node = node_sl_choose_by_bandwidth(supporting, WEIGHT_FOR_EXIT);
smartlist_free(supporting);
} else {
/* Either there are no pending connections, or no routers even seem to
@@ -2649,7 +2809,7 @@ choose_good_exit_server_general(int need_uptime, int need_capacity)
* at least one predicted exit port. */
int attempt;
- smartlist_t *needed_ports, *supporting, *use;
+ smartlist_t *needed_ports, *supporting;
if (best_support == -1) {
if (need_uptime || need_capacity) {
@@ -2666,14 +2826,11 @@ choose_good_exit_server_general(int need_uptime, int need_capacity)
options->_ExcludeExitNodesUnion ? " or are Excluded" : "");
}
supporting = smartlist_create();
- use = smartlist_create();
needed_ports = circuit_get_unhandled_ports(time(NULL));
for (attempt = 0; attempt < 2; attempt++) {
/* try once to pick only from routers that satisfy a needed port,
* then if there are none, pick from any that support exiting. */
SMARTLIST_FOREACH_BEGIN(the_nodes, const node_t *, node) {
- if (!node_has_descriptor(node))
- continue;
if (n_supported[node_sl_idx] != -1 &&
(attempt || node_handles_some_port(node, needed_ports))) {
// log_fn(LOG_DEBUG,"Try %d: '%s' is a possibility.",
@@ -2682,37 +2839,26 @@ choose_good_exit_server_general(int need_uptime, int need_capacity)
}
} SMARTLIST_FOREACH_END(node);
- routersets_get_node_disjunction(use, supporting, options->ExitNodes,
- options->_ExcludeExitNodesUnion, 1);
- if (smartlist_len(use) == 0 && options->ExitNodes &&
- !options->StrictNodes) { /* give up on exitnodes and try again */
- routersets_get_node_disjunction(use, supporting, NULL,
- options->_ExcludeExitNodesUnion, 1);
- }
- /* FFF sometimes the above results in null, when the requested
- * exit node is considered down by the consensus. we should pick
- * it anyway, since the user asked for it. */
- node = node_sl_choose_by_bandwidth(use, WEIGHT_FOR_EXIT);
+ node = node_sl_choose_by_bandwidth(supporting, WEIGHT_FOR_EXIT);
if (node)
break;
smartlist_clear(supporting);
- smartlist_clear(use);
}
SMARTLIST_FOREACH(needed_ports, uint16_t *, cp, tor_free(cp));
smartlist_free(needed_ports);
- smartlist_free(use);
smartlist_free(supporting);
}
tor_free(n_supported);
if (node) {
- log_info(LD_CIRC, "Chose exit server '%s'", node_get_nickname(node));
+ log_info(LD_CIRC, "Chose exit server '%s'", node_describe(node));
return node;
}
- if (options->ExitNodes && options->StrictNodes) {
+ if (options->ExitNodes) {
log_warn(LD_CIRC,
- "No specified exit routers seem to be running, and "
- "StrictNodes is set: can't choose an exit.");
+ "No specified %sexit routers seem to be running: "
+ "can't choose an exit.",
+ options->_ExcludeExitNodesUnion ? "non-excluded " : "");
}
return NULL;
}
@@ -2731,7 +2877,7 @@ static const node_t *
choose_good_exit_server(uint8_t purpose,
int need_uptime, int need_capacity, int is_internal)
{
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
router_crn_flags_t flags = CRN_NEED_DESC;
if (need_uptime)
flags |= CRN_NEED_UPTIME;
@@ -2761,10 +2907,9 @@ choose_good_exit_server(uint8_t purpose,
static void
warn_if_last_router_excluded(origin_circuit_t *circ, const extend_info_t *exit)
{
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
routerset_t *rs = options->ExcludeNodes;
const char *description;
- int domain = LD_CIRC;
uint8_t purpose = circ->_base.purpose;
if (circ->build_state->onehop_tunnel)
@@ -2777,13 +2922,14 @@ warn_if_last_router_excluded(origin_circuit_t *circ, const extend_info_t *exit)
case CIRCUIT_PURPOSE_INTRO_POINT:
case CIRCUIT_PURPOSE_REND_POINT_WAITING:
case CIRCUIT_PURPOSE_REND_ESTABLISHED:
- log_warn(LD_BUG, "Called on non-origin circuit (purpose %d)",
- (int)purpose);
+ log_warn(LD_BUG, "Called on non-origin circuit (purpose %d, %s)",
+ (int)purpose,
+ circuit_purpose_to_string(purpose));
return;
case CIRCUIT_PURPOSE_C_GENERAL:
if (circ->build_state->is_internal)
return;
- description = "Requested exit node";
+ description = "requested exit node";
rs = options->_ExcludeExitNodesUnion;
break;
case CIRCUIT_PURPOSE_C_INTRODUCING:
@@ -2798,22 +2944,34 @@ warn_if_last_router_excluded(origin_circuit_t *circ, const extend_info_t *exit)
case CIRCUIT_PURPOSE_C_REND_READY:
case CIRCUIT_PURPOSE_C_REND_READY_INTRO_ACKED:
case CIRCUIT_PURPOSE_C_REND_JOINED:
- description = "Chosen rendezvous point";
- domain = LD_BUG;
+ description = "chosen rendezvous point";
break;
case CIRCUIT_PURPOSE_CONTROLLER:
rs = options->_ExcludeExitNodesUnion;
- description = "Controller-selected circuit target";
+ description = "controller-selected circuit target";
break;
}
if (routerset_contains_extendinfo(rs, exit)) {
- log_fn(LOG_WARN, domain, "%s '%s' is in ExcludeNodes%s. Using anyway "
- "(circuit purpose %d).",
- description,exit->nickname,
- rs==options->ExcludeNodes?"":" or ExcludeExitNodes",
- (int)purpose);
- circuit_log_path(LOG_WARN, domain, circ);
+ /* We should never get here if StrictNodes is set to 1. */
+ if (options->StrictNodes) {
+ log_warn(LD_BUG, "Using %s '%s' which is listed in ExcludeNodes%s, "
+ "even though StrictNodes is set. Please report. "
+ "(Circuit purpose: %s)",
+ description, extend_info_describe(exit),
+ rs==options->ExcludeNodes?"":" or ExcludeExitNodes",
+ circuit_purpose_to_string(purpose));
+ } else {
+ log_warn(LD_CIRC, "Using %s '%s' which is listed in "
+ "ExcludeNodes%s, because no better options were available. To "
+ "prevent this (and possibly break your Tor functionality), "
+ "set the StrictNodes configuration option. "
+ "(Circuit purpose: %s)",
+ description, extend_info_describe(exit),
+ rs==options->ExcludeNodes?"":" or ExcludeExitNodes",
+ circuit_purpose_to_string(purpose));
+ }
+ circuit_log_path(LOG_WARN, LD_CIRC, circ);
}
return;
@@ -2839,7 +2997,8 @@ onion_pick_cpath_exit(origin_circuit_t *circ, extend_info_t *exit)
if (exit) { /* the circuit-builder pre-requested one */
warn_if_last_router_excluded(circ, exit);
- log_info(LD_CIRC,"Using requested exit node '%s'", exit->nickname);
+ log_info(LD_CIRC,"Using requested exit node '%s'",
+ extend_info_describe(exit));
exit = extend_info_dup(exit);
} else { /* we have to decide one */
const node_t *node =
@@ -2889,8 +3048,8 @@ circuit_extend_to_new_exit(origin_circuit_t *circ, extend_info_t *exit)
circuit_append_new_exit(circ, exit);
circuit_set_state(TO_CIRCUIT(circ), CIRCUIT_STATE_BUILDING);
if ((err_reason = circuit_send_next_onion_skin(circ))<0) {
- log_warn(LD_CIRC, "Couldn't extend circuit to new point '%s'.",
- exit->nickname);
+ log_warn(LD_CIRC, "Couldn't extend circuit to new point %s.",
+ extend_info_describe(exit));
circuit_mark_for_close(TO_CIRCUIT(circ), -err_reason);
return -1;
}
@@ -2962,7 +3121,7 @@ choose_good_middle_server(uint8_t purpose,
const node_t *r, *choice;
crypt_path_t *cpath;
smartlist_t *excluded;
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
router_crn_flags_t flags = CRN_NEED_DESC;
tor_assert(_CIRCUIT_PURPOSE_MIN <= purpose &&
purpose <= _CIRCUIT_PURPOSE_MAX);
@@ -2970,13 +3129,11 @@ choose_good_middle_server(uint8_t purpose,
log_debug(LD_CIRC, "Contemplating intermediate hop: random choice.");
excluded = smartlist_create();
if ((r = build_state_get_exit_node(state))) {
- smartlist_add(excluded, (void*) r);
- nodelist_add_node_family(excluded, r);
+ nodelist_add_node_and_family(excluded, r);
}
for (i = 0, cpath = head; i < cur_len; ++i, cpath=cpath->next) {
if ((r = node_get_by_id(cpath->extend_info->identity_digest))) {
- smartlist_add(excluded, (void*)r);
- nodelist_add_node_family(excluded, r);
+ nodelist_add_node_and_family(excluded, r);
}
}
@@ -3004,7 +3161,7 @@ choose_good_entry_server(uint8_t purpose, cpath_build_state_t *state)
{
const node_t *choice;
smartlist_t *excluded;
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
router_crn_flags_t flags = CRN_NEED_GUARD|CRN_NEED_DESC;
const node_t *node;
@@ -3020,8 +3177,7 @@ choose_good_entry_server(uint8_t purpose, cpath_build_state_t *state)
if (state && (node = build_state_get_exit_node(state))) {
/* Exclude the exit node from the state, if we have one. Also exclude its
* family. */
- smartlist_add(excluded, (void*)node);
- nodelist_add_node_family(excluded, node);
+ nodelist_add_node_and_family(excluded, node);
}
if (firewall_is_fascist_or()) {
/* Exclude all ORs that we can't reach through our firewall */
@@ -3036,8 +3192,7 @@ choose_good_entry_server(uint8_t purpose, cpath_build_state_t *state)
SMARTLIST_FOREACH(entry_guards, entry_guard_t *, entry,
{
if ((node = node_get_by_id(entry->identity))) {
- smartlist_add(excluded, (void*)node);
- nodelist_add_node_family(excluded, node);
+ nodelist_add_node_and_family(excluded, node);
}
});
}
@@ -3114,7 +3269,8 @@ onion_extend_cpath(origin_circuit_t *circ)
}
log_debug(LD_CIRC,"Chose router %s for hop %d (exit is %s)",
- info->nickname, cur_len+1, build_state_get_exit_nickname(state));
+ extend_info_describe(info),
+ cur_len+1, build_state_get_exit_nickname(state));
onion_append_hop(&circ->cpath, info);
extend_info_free(info);
@@ -3254,7 +3410,8 @@ build_state_get_exit_nickname(cpath_build_state_t *state)
*/
static int
entry_guard_set_status(entry_guard_t *e, const node_t *node,
- time_t now, or_options_t *options, const char **reason)
+ time_t now, const or_options_t *options,
+ const char **reason)
{
char buf[HEX_DIGEST_LEN+1];
int changed = 0;
@@ -3269,6 +3426,8 @@ entry_guard_set_status(entry_guard_t *e, const node_t *node,
else if (options->UseBridges && (!node->ri ||
node->ri->purpose != ROUTER_PURPOSE_BRIDGE))
*reason = "not a bridge";
+ else if (options->UseBridges && !node_is_a_configured_bridge(node))
+ *reason = "not a configured bridge";
else if (!options->UseBridges && !node->is_possible_guard &&
!routerset_contains_node(options->EntryNodes,node))
*reason = "not recommended as a guard";
@@ -3335,7 +3494,7 @@ entry_is_live(entry_guard_t *e, int need_uptime, int need_capacity,
int assume_reachable, const char **msg)
{
const node_t *node;
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
tor_assert(msg);
if (e->bad_since) {
@@ -3358,14 +3517,17 @@ entry_is_live(entry_guard_t *e, int need_uptime, int need_capacity,
*msg = "not a bridge";
return NULL;
}
+ if (!node_is_a_configured_bridge(node)) {
+ *msg = "not a configured bridge";
+ return NULL;
+ }
} else { /* !get_options()->UseBridges */
if (node_get_purpose(node) != ROUTER_PURPOSE_GENERAL) {
*msg = "not general-purpose";
return NULL;
}
}
- if (options->EntryNodes &&
- routerset_contains_node(options->EntryNodes, node)) {
+ if (routerset_contains_node(options->EntryNodes, node)) {
/* they asked for it, they get it */
need_uptime = need_capacity = 0;
}
@@ -3402,7 +3564,7 @@ static INLINE entry_guard_t *
is_an_entry_guard(const char *digest)
{
SMARTLIST_FOREACH(entry_guards, entry_guard_t *, entry,
- if (!memcmp(digest, entry->identity, DIGEST_LEN))
+ if (tor_memeq(digest, entry->identity, DIGEST_LEN))
return entry;
);
return NULL;
@@ -3416,20 +3578,24 @@ log_entry_guards(int severity)
smartlist_t *elements = smartlist_create();
char *s;
- SMARTLIST_FOREACH(entry_guards, entry_guard_t *, e,
+ SMARTLIST_FOREACH_BEGIN(entry_guards, entry_guard_t *, e)
{
const char *msg = NULL;
char *cp;
if (entry_is_live(e, 0, 1, 0, &msg))
- tor_asprintf(&cp, "%s (up %s)",
+ tor_asprintf(&cp, "%s [%s] (up %s)",
e->nickname,
+ hex_str(e->identity, DIGEST_LEN),
e->made_contact ? "made-contact" : "never-contacted");
else
- tor_asprintf(&cp, "%s (%s, %s)",
- e->nickname, msg,
+ tor_asprintf(&cp, "%s [%s] (%s, %s)",
+ e->nickname,
+ hex_str(e->identity, DIGEST_LEN),
+ msg,
e->made_contact ? "made-contact" : "never-contacted");
smartlist_add(elements, cp);
- });
+ }
+ SMARTLIST_FOREACH_END(e);
s = smartlist_join_strings(elements, ",", 0, NULL);
SMARTLIST_FOREACH(elements, char*, cp, tor_free(cp));
@@ -3453,7 +3619,7 @@ control_event_guard_deferred(void)
#if 0
int n = 0;
const char *msg;
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
if (!entry_guards)
return;
SMARTLIST_FOREACH(entry_guards, entry_guard_t *, entry,
@@ -3476,7 +3642,7 @@ control_event_guard_deferred(void)
* already in our entry_guards list, put it at the *beginning*.
* Else, put the one we pick at the end of the list. */
static const node_t *
-add_an_entry_guard(const node_t *chosen, int reset_status)
+add_an_entry_guard(const node_t *chosen, int reset_status, int prepend)
{
const node_t *node;
entry_guard_t *entry;
@@ -3497,8 +3663,8 @@ add_an_entry_guard(const node_t *chosen, int reset_status)
return NULL;
}
entry = tor_malloc_zero(sizeof(entry_guard_t));
- log_info(LD_CIRC, "Chose '%s' as new entry guard.",
- node_get_nickname(node));
+ log_info(LD_CIRC, "Chose %s as new entry guard.",
+ node_describe(node));
strlcpy(entry->nickname, node_get_nickname(node), sizeof(entry->nickname));
memcpy(entry->identity, node->identity, DIGEST_LEN);
/* Choose expiry time smudged over the past month. The goal here
@@ -3508,9 +3674,9 @@ add_an_entry_guard(const node_t *chosen, int reset_status)
* this guard. For details, see the Jan 2010 or-dev thread. */
entry->chosen_on_date = time(NULL) - crypto_rand_int(3600*24*30);
entry->chosen_by_version = tor_strdup(VERSION);
- if (chosen) /* prepend */
+ if (prepend)
smartlist_insert(entry_guards, 0, entry);
- else /* append */
+ else
smartlist_add(entry_guards, entry);
control_event_guard(entry->nickname, entry->identity, "NEW");
control_event_guard_deferred();
@@ -3521,14 +3687,14 @@ add_an_entry_guard(const node_t *chosen, int reset_status)
/** If the use of entry guards is configured, choose more entry guards
* until we have enough in the list. */
static void
-pick_entry_guards(or_options_t *options)
+pick_entry_guards(const or_options_t *options)
{
int changed = 0;
tor_assert(entry_guards);
while (num_live_entry_guards() < options->NumEntryGuards) {
- if (!add_an_entry_guard(NULL, 0))
+ if (!add_an_entry_guard(NULL, 0, 0))
break;
changed = 1;
}
@@ -3654,10 +3820,9 @@ remove_dead_entry_guards(time_t now)
* think that things are unlisted.
*/
void
-entry_guards_compute_status(or_options_t *options, time_t now)
+entry_guards_compute_status(const or_options_t *options, time_t now)
{
int changed = 0;
- int severity = LOG_DEBUG;
digestmap_t *reasons;
if (! entry_guards)
@@ -3684,15 +3849,14 @@ entry_guards_compute_status(or_options_t *options, time_t now)
if (remove_dead_entry_guards(now))
changed = 1;
- severity = changed ? LOG_DEBUG : LOG_INFO;
-
if (changed) {
SMARTLIST_FOREACH_BEGIN(entry_guards, entry_guard_t *, entry) {
const char *reason = digestmap_get(reasons, entry->identity);
const char *live_msg = "";
const node_t *r = entry_is_live(entry, 0, 1, 0, &live_msg);
- log_info(LD_CIRC, "Summary: Entry '%s' is %s, %s%s%s, and %s%s.",
+ log_info(LD_CIRC, "Summary: Entry %s [%s] is %s, %s%s%s, and %s%s.",
entry->nickname,
+ hex_str(entry->identity, DIGEST_LEN),
entry->unreachable_since ? "unreachable" : "reachable",
entry->bad_since ? "unusable" : "usable",
reason ? ", ": "",
@@ -3717,7 +3881,7 @@ entry_guards_compute_status(or_options_t *options, time_t now)
* If <b>mark_relay_status</b>, also call router_set_status() on this
* relay.
*
- * XXX022 change succeeded and mark_relay_status into 'int flags'.
+ * XXX023 change succeeded and mark_relay_status into 'int flags'.
*/
int
entry_guard_register_connect_status(const char *digest, int succeeded,
@@ -3735,7 +3899,7 @@ entry_guard_register_connect_status(const char *digest, int succeeded,
SMARTLIST_FOREACH(entry_guards, entry_guard_t *, e,
{
- if (!memcmp(e->identity, digest, DIGEST_LEN)) {
+ if (tor_memeq(e->identity, digest, DIGEST_LEN)) {
entry = e;
idx = e_sl_idx;
break;
@@ -3843,12 +4007,12 @@ entry_nodes_should_be_added(void)
should_add_entry_nodes = 1;
}
-/** Add all nodes in EntryNodes that aren't currently guard nodes to the list
- * of guard nodes, at the front. */
+/** Adjust the entry guards list so that it only contains entries from
+ * EntryNodes, adding new entries from EntryNodes to the list as needed. */
static void
-entry_guards_prepend_from_config(or_options_t *options)
+entry_guards_set_from_config(const or_options_t *options)
{
- smartlist_t *entry_nodes, *entry_fps;
+ smartlist_t *entry_nodes, *worse_entry_nodes, *entry_fps;
smartlist_t *old_entry_guards_on_list, *old_entry_guards_not_on_list;
tor_assert(entry_guards);
@@ -3869,18 +4033,15 @@ entry_guards_prepend_from_config(or_options_t *options)
}
entry_nodes = smartlist_create();
+ worse_entry_nodes = smartlist_create();
entry_fps = smartlist_create();
old_entry_guards_on_list = smartlist_create();
old_entry_guards_not_on_list = smartlist_create();
/* Split entry guards into those on the list and those not. */
- /* Now that we allow countries and IP ranges in EntryNodes, this is
- * potentially an enormous list. It's not so bad though because we
- * only call this function when a) we're making a new circuit, and b)
- * we've called directory_info_has_arrived() or changed our EntryNodes
- * since the last time we made a circuit. */
- routerset_get_all_nodes(entry_nodes, options->EntryNodes, 0);
+ routerset_get_all_nodes(entry_nodes, options->EntryNodes,
+ options->ExcludeNodes, 0);
SMARTLIST_FOREACH(entry_nodes, const node_t *,node,
smartlist_add(entry_fps, (void*)node->identity));
@@ -3891,31 +4052,47 @@ entry_guards_prepend_from_config(or_options_t *options)
smartlist_add(old_entry_guards_not_on_list, e);
});
- /* Remove all currently configured entry guards from entry_routers. */
- SMARTLIST_FOREACH(entry_nodes, const node_t *, node, {
+ /* Remove all currently configured guard nodes, excluded nodes, unreachable
+ * nodes, or non-Guard nodes from entry_nodes. */
+ SMARTLIST_FOREACH_BEGIN(entry_nodes, const node_t *, node) {
if (is_an_entry_guard(node->identity)) {
SMARTLIST_DEL_CURRENT(entry_nodes, node);
+ continue;
+ } else if (routerset_contains_node(options->ExcludeNodes, node)) {
+ SMARTLIST_DEL_CURRENT(entry_nodes, node);
+ continue;
+ } else if (!fascist_firewall_allows_node(node)) {
+ SMARTLIST_DEL_CURRENT(entry_nodes, node);
+ continue;
+ } else if (! node->is_possible_guard) {
+ smartlist_add(worse_entry_nodes, (node_t*)node);
+ SMARTLIST_DEL_CURRENT(entry_nodes, node);
}
- });
+ } SMARTLIST_FOREACH_END(node);
/* Now build the new entry_guards list. */
smartlist_clear(entry_guards);
/* First, the previously configured guards that are in EntryNodes. */
smartlist_add_all(entry_guards, old_entry_guards_on_list);
+ /* Next, scramble the rest of EntryNodes, putting the guards first. */
+ smartlist_shuffle(entry_nodes);
+ smartlist_shuffle(worse_entry_nodes);
+ smartlist_add_all(entry_nodes, worse_entry_nodes);
+
/* Next, the rest of EntryNodes */
- SMARTLIST_FOREACH(entry_nodes, const node_t *, node, {
- add_an_entry_guard(node, 0);
- });
- /* Finally, the remaining previously configured guards that are not in
- * EntryNodes, unless we're strict in which case we drop them */
- if (options->StrictNodes) {
- SMARTLIST_FOREACH(old_entry_guards_not_on_list, entry_guard_t *, e,
- entry_guard_free(e));
- } else {
- smartlist_add_all(entry_guards, old_entry_guards_not_on_list);
- }
+ SMARTLIST_FOREACH_BEGIN(entry_nodes, const node_t *, node) {
+ add_an_entry_guard(node, 0, 0);
+ if (smartlist_len(entry_guards) > options->NumEntryGuards * 10)
+ break;
+ } SMARTLIST_FOREACH_END(node);
+ log_notice(LD_GENERAL, "%d entries in guards", smartlist_len(entry_guards));
+ /* Finally, free the remaining previously configured guards that are not in
+ * EntryNodes. */
+ SMARTLIST_FOREACH(old_entry_guards_not_on_list, entry_guard_t *, e,
+ entry_guard_free(e));
smartlist_free(entry_nodes);
+ smartlist_free(worse_entry_nodes);
smartlist_free(entry_fps);
smartlist_free(old_entry_guards_on_list);
smartlist_free(old_entry_guards_not_on_list);
@@ -3924,10 +4101,10 @@ entry_guards_prepend_from_config(or_options_t *options)
/** Return 0 if we're fine adding arbitrary routers out of the
* directory to our entry guard list, or return 1 if we have a
- * list already and we'd prefer to stick to it.
+ * list already and we must stick to it.
*/
int
-entry_list_is_constrained(or_options_t *options)
+entry_list_is_constrained(const or_options_t *options)
{
if (options->EntryNodes)
return 1;
@@ -3936,18 +4113,6 @@ entry_list_is_constrained(or_options_t *options)
return 0;
}
-/* Are we dead set against changing our entry guard list, or would we
- * change it if it means keeping Tor usable? */
-static int
-entry_list_is_totally_static(or_options_t *options)
-{
- if (options->EntryNodes && options->StrictNodes)
- return 1;
- if (options->UseBridges)
- return 1;
- return 0;
-}
-
/** Pick a live (up and listed) entry guard from entry_guards. If
* <b>state</b> is non-NULL, this is for a specific circuit --
* make sure not to pick this circuit's exit or any node in the
@@ -3956,7 +4121,7 @@ entry_list_is_totally_static(or_options_t *options)
const node_t *
choose_random_entry(cpath_build_state_t *state)
{
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
smartlist_t *live_entry_guards = smartlist_create();
smartlist_t *exit_family = smartlist_create();
const node_t *chosen_exit =
@@ -3967,8 +4132,7 @@ choose_random_entry(cpath_build_state_t *state)
int preferred_min, consider_exit_family = 0;
if (chosen_exit) {
- smartlist_add(exit_family, (void*) chosen_exit);
- nodelist_add_node_family(exit_family, chosen_exit);
+ nodelist_add_node_and_family(exit_family, chosen_exit);
consider_exit_family = 1;
}
@@ -3976,7 +4140,7 @@ choose_random_entry(cpath_build_state_t *state)
entry_guards = smartlist_create();
if (should_add_entry_nodes)
- entry_guards_prepend_from_config(options);
+ entry_guards_set_from_config(options);
if (!entry_list_is_constrained(options) &&
smartlist_len(entry_guards) < options->NumEntryGuards)
@@ -3989,8 +4153,11 @@ choose_random_entry(cpath_build_state_t *state)
node = entry_is_live(entry, need_uptime, need_capacity, 0, &msg);
if (!node)
continue; /* down, no point */
+ if (node == chosen_exit)
+ continue; /* don't pick the same node for entry and exit */
if (consider_exit_family && smartlist_isin(exit_family, node))
continue; /* avoid relays that are family members of our exit */
+#if 0 /* since EntryNodes is always strict now, this clause is moot */
if (options->EntryNodes &&
!routerset_contains_node(options->EntryNodes, node)) {
/* We've come to the end of our preferred entry nodes. */
@@ -3998,13 +4165,14 @@ choose_random_entry(cpath_build_state_t *state)
goto choose_and_finish; /* only choose from the ones we like */
if (options->StrictNodes) {
/* in theory this case should never happen, since
- * entry_guards_prepend_from_config() drops unwanted relays */
+ * entry_guards_set_from_config() drops unwanted relays */
tor_fragile_assert();
} else {
log_info(LD_CIRC,
"No relays from EntryNodes available. Using others.");
}
}
+#endif
smartlist_add(live_entry_guards, (void*)node);
if (!entry->made_contact) {
/* Always start with the first not-yet-contacted entry
@@ -4030,12 +4198,12 @@ choose_random_entry(cpath_build_state_t *state)
}
if (smartlist_len(live_entry_guards) < preferred_min) {
- if (!entry_list_is_totally_static(options)) {
+ if (!entry_list_is_constrained(options)) {
/* still no? try adding a new entry then */
/* XXX if guard doesn't imply fast and stable, then we need
* to tell add_an_entry_guard below what we want, or it might
* be a long time til we get it. -RD */
- node = add_an_entry_guard(NULL, 0);
+ node = add_an_entry_guard(NULL, 0, 0);
if (node) {
entry_guards_changed();
/* XXX we start over here in case the new node we added shares
@@ -4055,6 +4223,10 @@ choose_random_entry(cpath_build_state_t *state)
need_capacity = 0;
goto retry;
}
+#if 0
+ /* Removing this retry logic: if we only allow one exit, and it is in the
+ same family as all our entries, then we are just plain not going to win
+ here. */
if (!node && entry_list_is_constrained(options) && consider_exit_family) {
/* still no? if we're using bridges or have strictentrynodes
* set, and our chosen exit is in the same family as all our
@@ -4062,6 +4234,7 @@ choose_random_entry(cpath_build_state_t *state)
consider_exit_family = 0;
goto retry;
}
+#endif
/* live_entry_guards may be empty below. Oh well, we tried. */
}
@@ -4206,7 +4379,7 @@ entry_guards_parse_state(or_state_t *state, int set, char **msg)
}
entry_guards = new_entry_guards;
entry_guards_dirty = 0;
- /* XXX022 hand new_entry_guards to this func, and move it up a
+ /* XXX023 hand new_entry_guards to this func, and move it up a
* few lines, so we don't have to re-dirty it */
if (remove_obsolete_entry_guards(now))
entry_guards_dirty = 1;
@@ -4361,40 +4534,159 @@ getinfo_helper_entry_guards(control_connection_t *conn,
return 0;
}
-/** Information about a configured bridge. Currently this just matches the
- * ones in the torrc file, but one day we may be able to learn about new
- * bridges on our own, and remember them in the state file. */
-typedef struct {
- /** Address of the bridge. */
- tor_addr_t addr;
- /** TLS port for the bridge. */
- uint16_t port;
- /** Expected identity digest, or all zero bytes if we don't know what the
- * digest should be. */
- char identity[DIGEST_LEN];
- /** When should we next try to fetch a descriptor for this bridge? */
- download_status_t fetch_status;
-} bridge_info_t;
-
/** A list of configured bridges. Whenever we actually get a descriptor
- * for one, we add it as an entry guard. */
+ * for one, we add it as an entry guard. Note that the order of bridges
+ * in this list does not necessarily correspond to the order of bridges
+ * in the torrc. */
static smartlist_t *bridge_list = NULL;
-/** Initialize the bridge list to empty, creating it if needed. */
+/** Mark every entry of the bridge list to be removed on our next call to
+ * sweep_bridge_list unless it has first been un-marked. */
+void
+mark_bridge_list(void)
+{
+ if (!bridge_list)
+ bridge_list = smartlist_create();
+ SMARTLIST_FOREACH(bridge_list, bridge_info_t *, b,
+ b->marked_for_removal = 1);
+}
+
+/** Remove every entry of the bridge list that was marked with
+ * mark_bridge_list if it has not subsequently been un-marked. */
void
+sweep_bridge_list(void)
+{
+ if (!bridge_list)
+ bridge_list = smartlist_create();
+ SMARTLIST_FOREACH_BEGIN(bridge_list, bridge_info_t *, b) {
+ if (b->marked_for_removal) {
+ SMARTLIST_DEL_CURRENT(bridge_list, b);
+ bridge_free(b);
+ }
+ } SMARTLIST_FOREACH_END(b);
+}
+
+/** Initialize the bridge list to empty, creating it if needed. */
+static void
clear_bridge_list(void)
{
if (!bridge_list)
bridge_list = smartlist_create();
- SMARTLIST_FOREACH(bridge_list, bridge_info_t *, b, tor_free(b));
+ SMARTLIST_FOREACH(bridge_list, bridge_info_t *, b, bridge_free(b));
smartlist_clear(bridge_list);
}
+/** Free the bridge <b>bridge</b>. */
+static void
+bridge_free(bridge_info_t *bridge)
+{
+ if (!bridge)
+ return;
+
+ tor_free(bridge->transport_name);
+ tor_free(bridge);
+}
+
+/** A list of pluggable transports found in torrc. */
+static smartlist_t *transport_list = NULL;
+
+/** Initialize the pluggable transports list to empty, creating it if
+ * needed. */
+void
+clear_transport_list(void)
+{
+ if (!transport_list)
+ transport_list = smartlist_create();
+ SMARTLIST_FOREACH(transport_list, transport_t *, t, transport_free(t));
+ smartlist_clear(transport_list);
+}
+
+/** Free the pluggable transport struct <b>transport</b>. */
+static void
+transport_free(transport_t *transport)
+{
+ if (!transport)
+ return;
+
+ tor_free(transport->name);
+ tor_free(transport);
+}
+
+/** Returns the transport in our transport list that has the name <b>name</b>.
+ * Else returns NULL. */
+static const transport_t *
+transport_get_by_name(const char *name)
+{
+ tor_assert(name);
+
+ if (!transport_list)
+ return NULL;
+
+ SMARTLIST_FOREACH_BEGIN(transport_list, const transport_t *, transport) {
+ if (!strcmp(transport->name, name))
+ return transport;
+ } SMARTLIST_FOREACH_END(transport);
+
+ return NULL;
+}
+
+/** Remember a new pluggable transport proxy at <b>addr</b>:<b>port</b>.
+ * <b>name</b> is set to the name of the protocol this proxy uses.
+ * <b>socks_ver</b> is set to the SOCKS version of the proxy.
+ *
+ * Returns 0 on success, -1 on fail. */
+int
+transport_add_from_config(const tor_addr_t *addr, uint16_t port,
+ const char *name, int socks_ver)
+{
+ transport_t *t;
+
+ if (transport_get_by_name(name)) { /* check for duplicate names */
+ log_warn(LD_CONFIG, "More than one transport has '%s' as "
+ "its name.", name);
+ return -1;
+ }
+
+ t = tor_malloc_zero(sizeof(transport_t));
+ tor_addr_copy(&t->addr, addr);
+ t->port = port;
+ t->name = tor_strdup(name);
+ t->socks_version = socks_ver;
+
+ if (!transport_list)
+ transport_list = smartlist_create();
+
+ smartlist_add(transport_list, t);
+ return 0;
+}
+
+/** Warns the user of possible pluggable transport misconfiguration. */
+void
+validate_pluggable_transports_config(void)
+{
+ if (bridge_list) {
+ SMARTLIST_FOREACH_BEGIN(bridge_list, bridge_info_t *, b) {
+ /* Skip bridges without transports. */
+ if (!b->transport_name)
+ continue;
+ /* See if the user has Bridges that specify nonexistent
+ pluggable transports. We should warn the user in such case,
+ since it's probably misconfiguration. */
+ if (!transport_get_by_name(b->transport_name))
+ log_warn(LD_CONFIG, "You have a Bridge line using the %s "
+ "pluggable transport, but there doesn't seem to be a "
+ "corresponding ClientTransportPlugin line.",
+ b->transport_name);
+ } SMARTLIST_FOREACH_END(b);
+ }
+}
+
/** Return a bridge pointer if <b>ri</b> is one of our known bridges
* (either by comparing keys if possible, else by comparing addr/port).
* Else return NULL. */
static bridge_info_t *
-get_configured_bridge_by_addr_port_digest(tor_addr_t *addr, uint16_t port,
+get_configured_bridge_by_addr_port_digest(const tor_addr_t *addr,
+ uint16_t port,
const char *digest)
{
if (!bridge_list)
@@ -4405,7 +4697,7 @@ get_configured_bridge_by_addr_port_digest(tor_addr_t *addr, uint16_t port,
!tor_addr_compare(&bridge->addr, addr, CMP_EXACT) &&
bridge->port == port)
return bridge;
- if (!memcmp(bridge->identity, digest, DIGEST_LEN))
+ if (digest && tor_memeq(bridge->identity, digest, DIGEST_LEN))
return bridge;
}
SMARTLIST_FOREACH_END(bridge);
@@ -4430,12 +4722,31 @@ routerinfo_is_a_configured_bridge(const routerinfo_t *ri)
return get_configured_bridge_by_routerinfo(ri) ? 1 : 0;
}
+/** Return 1 if <b>node</b> is one of our configured bridges, else 0. */
+int
+node_is_a_configured_bridge(const node_t *node)
+{
+ tor_addr_t addr;
+ uint16_t orport;
+ if (!node)
+ return 0;
+ if (node_get_addr(node, &addr) < 0)
+ return 0;
+ orport = node_get_orport(node);
+ if (orport == 0)
+ return 0;
+
+ return get_configured_bridge_by_addr_port_digest(
+ &addr, orport, node->identity) != NULL;
+}
+
/** We made a connection to a router at <b>addr</b>:<b>port</b>
* without knowing its digest. Its digest turned out to be <b>digest</b>.
* If it was a bridge, and we still don't know its digest, record it.
*/
void
-learned_router_identity(tor_addr_t *addr, uint16_t port, const char *digest)
+learned_router_identity(const tor_addr_t *addr, uint16_t port,
+ const char *digest)
{
bridge_info_t *bridge =
get_configured_bridge_by_addr_port_digest(addr, port, digest);
@@ -4447,39 +4758,107 @@ learned_router_identity(tor_addr_t *addr, uint16_t port, const char *digest)
}
/** Remember a new bridge at <b>addr</b>:<b>port</b>. If <b>digest</b>
- * is set, it tells us the identity key too. */
+ * is set, it tells us the identity key too. If we already had the
+ * bridge in our list, unmark it, and don't actually add anything new.
+ * If <b>transport_name</b> is non-NULL - the bridge is associated with a
+ * pluggable transport - we assign the transport to the bridge. */
void
-bridge_add_from_config(const tor_addr_t *addr, uint16_t port, char *digest)
+bridge_add_from_config(const tor_addr_t *addr, uint16_t port,
+ const char *digest, const char *transport_name)
{
- bridge_info_t *b = tor_malloc_zero(sizeof(bridge_info_t));
+ bridge_info_t *b;
+
+ if ((b = get_configured_bridge_by_addr_port_digest(addr, port, digest))) {
+ b->marked_for_removal = 0;
+ return;
+ }
+
+ b = tor_malloc_zero(sizeof(bridge_info_t));
tor_addr_copy(&b->addr, addr);
b->port = port;
if (digest)
memcpy(b->identity, digest, DIGEST_LEN);
+ if (transport_name)
+ b->transport_name = tor_strdup(transport_name);
b->fetch_status.schedule = DL_SCHED_BRIDGE;
if (!bridge_list)
bridge_list = smartlist_create();
+
smartlist_add(bridge_list, b);
}
+/** Return true iff <b>routerset</b> contains the bridge <b>bridge</b>. */
+static int
+routerset_contains_bridge(const routerset_t *routerset,
+ const bridge_info_t *bridge)
+{
+ int result;
+ extend_info_t *extinfo;
+ tor_assert(bridge);
+ if (!routerset)
+ return 0;
+
+ extinfo = extend_info_alloc(
+ NULL, bridge->identity, NULL, &bridge->addr, bridge->port);
+ result = routerset_contains_extendinfo(routerset, extinfo);
+ extend_info_free(extinfo);
+ return result;
+}
+
/** If <b>digest</b> is one of our known bridges, return it. */
static bridge_info_t *
find_bridge_by_digest(const char *digest)
{
SMARTLIST_FOREACH(bridge_list, bridge_info_t *, bridge,
{
- if (!memcmp(bridge->identity, digest, DIGEST_LEN))
+ if (tor_memeq(bridge->identity, digest, DIGEST_LEN))
return bridge;
});
return NULL;
}
-/** We need to ask <b>bridge</b> for its server descriptor. <b>address</b>
- * is a helpful string describing this bridge. */
+/** If <b>addr</b> and <b>port</b> match the address and port of a
+ * bridge of ours that uses pluggable transports, place its transport
+ * in <b>transport</b>.
+ *
+ * Return 0 on success (found a transport, or found a bridge with no
+ * transport, or found no bridge); return -1 if we should be using a
+ * transport, but the transport could not be found.
+ */
+int
+find_transport_by_bridge_addrport(const tor_addr_t *addr, uint16_t port,
+ const transport_t **transport)
+{
+ *transport = NULL;
+ if (!bridge_list)
+ return 0;
+
+ SMARTLIST_FOREACH_BEGIN(bridge_list, const bridge_info_t *, bridge) {
+ if (tor_addr_eq(&bridge->addr, addr) &&
+ (bridge->port == port)) { /* bridge matched */
+ if (bridge->transport_name) { /* it also uses pluggable transports */
+ *transport = transport_get_by_name(bridge->transport_name);
+ if (*transport == NULL) { /* it uses pluggable transports, but
+ the transport could not be found! */
+ return -1;
+ }
+ return 0;
+ } else { /* bridge matched, but it doesn't use transports. */
+ break;
+ }
+ }
+ } SMARTLIST_FOREACH_END(bridge);
+
+ *transport = NULL;
+ return 0;
+}
+
+/** We need to ask <b>bridge</b> for its server descriptor. */
static void
launch_direct_bridge_descriptor_fetch(bridge_info_t *bridge)
{
char *address;
+ const or_options_t *options = get_options();
if (connection_get_by_type_addr_port_purpose(
CONN_TYPE_DIR, &bridge->addr, bridge->port,
@@ -4487,6 +4866,13 @@ launch_direct_bridge_descriptor_fetch(bridge_info_t *bridge)
return; /* it's already on the way */
address = tor_dup_addr(&bridge->addr);
+ if (routerset_contains_bridge(options->ExcludeNodes, bridge)) {
+ download_status_mark_impossible(&bridge->fetch_status);
+ log_warn(LD_APP, "Not using bridge at %s: it is in ExcludeNodes.",
+ safe_str_client(fmt_addr(&bridge->addr)));
+ return;
+ }
+
directory_initiate_command(address, &bridge->addr,
bridge->port, 0,
0, /* does not matter */
@@ -4513,9 +4899,9 @@ retry_bridge_descriptor_fetch_directly(const char *digest)
* descriptor, fetch a new copy of its descriptor -- either directly
* from the bridge or via a bridge authority. */
void
-fetch_bridge_descriptors(or_options_t *options, time_t now)
+fetch_bridge_descriptors(const or_options_t *options, time_t now)
{
- int num_bridge_auths = get_n_authorities(BRIDGE_AUTHORITY);
+ int num_bridge_auths = get_n_authorities(BRIDGE_DIRINFO);
int ask_bridge_directly;
int can_use_bridge_authority;
@@ -4527,6 +4913,12 @@ fetch_bridge_descriptors(or_options_t *options, time_t now)
if (!download_status_is_ready(&bridge->fetch_status, now,
IMPOSSIBLE_TO_DOWNLOAD))
continue; /* don't bother, no need to retry yet */
+ if (routerset_contains_bridge(options->ExcludeNodes, bridge)) {
+ download_status_mark_impossible(&bridge->fetch_status);
+ log_warn(LD_APP, "Not using bridge at %s: it is in ExcludeNodes.",
+ safe_str_client(fmt_addr(&bridge->addr)));
+ continue;
+ }
/* schedule another fetch as if this one will fail, in case it does */
download_status_failed(&bridge->fetch_status, 0);
@@ -4573,6 +4965,58 @@ fetch_bridge_descriptors(or_options_t *options, time_t now)
SMARTLIST_FOREACH_END(bridge);
}
+/** If our <b>bridge</b> is configured to be a different address than
+ * the bridge gives in <b>node</b>, rewrite the routerinfo
+ * we received to use the address we meant to use. Now we handle
+ * multihomed bridges better.
+ */
+static void
+rewrite_node_address_for_bridge(const bridge_info_t *bridge, node_t *node)
+{
+ /* XXXX move this function. */
+ /* XXXX overridden addresses should really live in the node_t, so that the
+ * routerinfo_t and the microdesc_t can be immutable. But we can only
+ * do that safely if we know that no function that connects to an OR
+ * does so through an address from any source other than node_get_addr().
+ */
+ tor_addr_t addr;
+
+ if (node->ri) {
+ routerinfo_t *ri = node->ri;
+ tor_addr_from_ipv4h(&addr, ri->addr);
+
+ if (!tor_addr_compare(&bridge->addr, &addr, CMP_EXACT) &&
+ bridge->port == ri->or_port) {
+ /* they match, so no need to do anything */
+ } else {
+ ri->addr = tor_addr_to_ipv4h(&bridge->addr);
+ tor_free(ri->address);
+ ri->address = tor_dup_ip(ri->addr);
+ ri->or_port = bridge->port;
+ log_info(LD_DIR,
+ "Adjusted bridge routerinfo for '%s' to match configured "
+ "address %s:%d.",
+ ri->nickname, ri->address, ri->or_port);
+ }
+ }
+ if (node->rs) {
+ routerstatus_t *rs = node->rs;
+ tor_addr_from_ipv4h(&addr, rs->addr);
+
+ if (!tor_addr_compare(&bridge->addr, &addr, CMP_EXACT) &&
+ bridge->port == rs->or_port) {
+ /* they match, so no need to do anything */
+ } else {
+ rs->addr = tor_addr_to_ipv4h(&bridge->addr);
+ rs->or_port = bridge->port;
+ log_info(LD_DIR,
+ "Adjusted bridge routerstatus for '%s' to match "
+ "configured address %s:%d.",
+ rs->nickname, fmt_addr(&bridge->addr), rs->or_port);
+ }
+ }
+}
+
/** We just learned a descriptor for a bridge. See if that
* digest is in our entry guard list, and add it if not. */
void
@@ -4587,14 +5031,16 @@ learned_bridge_descriptor(routerinfo_t *ri, int from_cache)
router_set_status(ri->cache_info.identity_digest, 1);
if (bridge) { /* if we actually want to use this one */
- const node_t *node;
+ node_t *node;
/* it's here; schedule its re-fetch for a long time from now. */
if (!from_cache)
download_status_reset(&bridge->fetch_status);
- node = node_get_by_id(ri->cache_info.identity_digest);
+ node = node_get_mutable_by_id(ri->cache_info.identity_digest);
tor_assert(node);
- add_an_entry_guard(node, 1);
+ rewrite_node_address_for_bridge(bridge, node);
+ add_an_entry_guard(node, 1, 1);
+
log_notice(LD_DIR, "new bridge descriptor '%s' (%s)", ri->nickname,
from_cache ? "cached" : "fresh");
/* set entry->made_contact so if it goes down we don't drop it from
@@ -4633,7 +5079,8 @@ any_pending_bridge_descriptor_fetches(void)
conn->purpose == DIR_PURPOSE_FETCH_SERVERDESC &&
TO_DIR_CONN(conn)->router_purpose == ROUTER_PURPOSE_BRIDGE &&
!conn->marked_for_close &&
- conn->linked && !conn->linked_conn->marked_for_close) {
+ conn->linked &&
+ conn->linked_conn && !conn->linked_conn->marked_for_close) {
log_debug(LD_DIR, "found one: %s", conn->address);
return 1;
}
@@ -4646,7 +5093,7 @@ any_pending_bridge_descriptor_fetches(void)
* down. Else return 0. If <b>act</b> is 1, then mark the down guards
* up; else just observe and report. */
static int
-entries_retry_helper(or_options_t *options, int act)
+entries_retry_helper(const or_options_t *options, int act)
{
const node_t *node;
int any_known = 0;
@@ -4685,7 +5132,7 @@ entries_retry_helper(or_options_t *options, int act)
/** Do we know any descriptors for our bridges / entrynodes, and are
* all the ones we have descriptors for down? */
int
-entries_known_but_down(or_options_t *options)
+entries_known_but_down(const or_options_t *options)
{
tor_assert(entry_list_is_constrained(options));
return entries_retry_helper(options, 0);
@@ -4693,7 +5140,7 @@ entries_known_but_down(or_options_t *options)
/** Mark all down known bridges / entrynodes up. */
void
-entries_retry_all(or_options_t *options)
+entries_retry_all(const or_options_t *options)
{
tor_assert(entry_list_is_constrained(options));
entries_retry_helper(options, 1);
@@ -4711,7 +5158,10 @@ entry_guards_free_all(void)
entry_guards = NULL;
}
clear_bridge_list();
+ clear_transport_list();
smartlist_free(bridge_list);
+ smartlist_free(transport_list);
bridge_list = NULL;
+ transport_list = NULL;
}
diff --git a/src/or/circuitbuild.h b/src/or/circuitbuild.h
index 7c125e96b1..bb5c2eb0bf 100644
--- a/src/or/circuitbuild.h
+++ b/src/or/circuitbuild.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -12,6 +12,18 @@
#ifndef _TOR_CIRCUITBUILD_H
#define _TOR_CIRCUITBUILD_H
+/** Represents a pluggable transport proxy used by a bridge. */
+typedef struct {
+ /** SOCKS version: One of PROXY_SOCKS4, PROXY_SOCKS5. */
+ int socks_version;
+ /** Name of pluggable transport protocol */
+ char *name;
+ /** Address of proxy */
+ tor_addr_t addr;
+ /** Port of proxy */
+ uint16_t port;
+} transport_t;
+
char *circuit_list_path(origin_circuit_t *circ, int verbose);
char *circuit_list_path_for_controller(origin_circuit_t *circ);
void circuit_log_path(int severity, unsigned int domain,
@@ -31,7 +43,7 @@ int circuit_extend(cell_t *cell, circuit_t *circ);
int circuit_init_cpath_crypto(crypt_path_t *cpath, const char *key_data,
int reverse);
int circuit_finish_handshake(origin_circuit_t *circ, uint8_t cell_type,
- const char *reply);
+ const uint8_t *reply);
int circuit_truncated(origin_circuit_t *circ, crypt_path_t *layer);
int onionskin_answer(or_circuit_t *circ, uint8_t cell_type,
const char *payload, const char *keys);
@@ -51,11 +63,11 @@ void extend_info_free(extend_info_t *info);
const node_t *build_state_get_exit_node(cpath_build_state_t *state);
const char *build_state_get_exit_nickname(cpath_build_state_t *state);
-void entry_guards_compute_status(or_options_t *options, time_t now);
+void entry_guards_compute_status(const or_options_t *options, time_t now);
int entry_guard_register_connect_status(const char *digest, int succeeded,
int mark_relay_status, time_t now);
void entry_nodes_should_be_added(void);
-int entry_list_is_constrained(or_options_t *options);
+int entry_list_is_constrained(const or_options_t *options);
const node_t *choose_random_entry(cpath_build_state_t *state);
int entry_guards_parse_state(or_state_t *state, int set, char **msg);
void entry_guards_update_state(or_state_t *state);
@@ -63,19 +75,22 @@ int getinfo_helper_entry_guards(control_connection_t *conn,
const char *question, char **answer,
const char **errmsg);
-void clear_bridge_list(void);
+void mark_bridge_list(void);
+void sweep_bridge_list(void);
int routerinfo_is_a_configured_bridge(const routerinfo_t *ri);
-void learned_router_identity(tor_addr_t *addr, uint16_t port,
+int node_is_a_configured_bridge(const node_t *node);
+void learned_router_identity(const tor_addr_t *addr, uint16_t port,
const char *digest);
void bridge_add_from_config(const tor_addr_t *addr, uint16_t port,
- char *digest);
+ const char *digest,
+ const char *transport_name);
void retry_bridge_descriptor_fetch_directly(const char *digest);
-void fetch_bridge_descriptors(or_options_t *options, time_t now);
+void fetch_bridge_descriptors(const or_options_t *options, time_t now);
void learned_bridge_descriptor(routerinfo_t *ri, int from_cache);
int any_bridge_descriptors_known(void);
int any_pending_bridge_descriptor_fetches(void);
-int entries_known_but_down(or_options_t *options);
-void entries_retry_all(or_options_t *options);
+int entries_known_but_down(const or_options_t *options);
+void entries_retry_all(const or_options_t *options);
void entry_guards_free_all(void);
@@ -122,5 +137,14 @@ void circuit_build_times_network_is_live(circuit_build_times_t *cbt);
int circuit_build_times_network_check_live(circuit_build_times_t *cbt);
void circuit_build_times_network_circ_success(circuit_build_times_t *cbt);
+int circuit_build_times_get_bw_scale(networkstatus_t *ns);
+
+void clear_transport_list(void);
+int transport_add_from_config(const tor_addr_t *addr, uint16_t port,
+ const char *name, int socks_ver);
+int find_transport_by_bridge_addrport(const tor_addr_t *addr, uint16_t port,
+ const transport_t **transport);
+void validate_pluggable_transports_config(void);
+
#endif
diff --git a/src/or/circuitlist.c b/src/or/circuitlist.c
index 205b0a89a7..93f5fd3493 100644
--- a/src/or/circuitlist.c
+++ b/src/or/circuitlist.c
@@ -1,7 +1,7 @@
/* Copyright 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -254,7 +254,7 @@ circuit_get_all_pending_on_or_conn(smartlist_t *out, or_connection_t *or_conn)
continue;
} else {
/* We expected a key. See if it's the right one. */
- if (memcmp(or_conn->identity_digest,
+ if (tor_memneq(or_conn->identity_digest,
circ->n_hop->identity_digest, DIGEST_LEN))
continue;
}
@@ -272,8 +272,10 @@ circuit_count_pending_on_or_conn(or_connection_t *or_conn)
circuit_get_all_pending_on_or_conn(sl, or_conn);
cnt = smartlist_len(sl);
smartlist_free(sl);
- log_debug(LD_CIRC,"or_conn to %s, %d pending circs",
- or_conn->nickname ? or_conn->nickname : "NULL", cnt);
+ log_debug(LD_CIRC,"or_conn to %s at %s, %d pending circs",
+ or_conn->nickname ? or_conn->nickname : "NULL",
+ or_conn->_base.address,
+ cnt);
return cnt;
}
@@ -376,13 +378,71 @@ circuit_purpose_to_controller_string(uint8_t purpose)
}
}
+/** Return a human-readable string for the circuit purpose <b>purpose</b>. */
+const char *
+circuit_purpose_to_string(uint8_t purpose)
+{
+ static char buf[32];
+
+ switch (purpose)
+ {
+ case CIRCUIT_PURPOSE_OR:
+ return "Circuit at relay";
+ case CIRCUIT_PURPOSE_INTRO_POINT:
+ return "Acting as intro point";
+ case CIRCUIT_PURPOSE_REND_POINT_WAITING:
+ return "Acting as rendevous (pending)";
+ case CIRCUIT_PURPOSE_REND_ESTABLISHED:
+ return "Acting as rendevous (established)";
+ case CIRCUIT_PURPOSE_C_GENERAL:
+ return "General-purpose client";
+ case CIRCUIT_PURPOSE_C_INTRODUCING:
+ return "Hidden service client: Connecting to intro point";
+ case CIRCUIT_PURPOSE_C_INTRODUCE_ACK_WAIT:
+ return "Hidden service client: Waiting for ack from intro point";
+ case CIRCUIT_PURPOSE_C_INTRODUCE_ACKED:
+ return "Hidden service client: Received ack from intro point";
+ case CIRCUIT_PURPOSE_C_ESTABLISH_REND:
+ return "Hidden service client: Establishing rendezvous point";
+ case CIRCUIT_PURPOSE_C_REND_READY:
+ return "Hidden service client: Pending rendezvous point";
+ case CIRCUIT_PURPOSE_C_REND_READY_INTRO_ACKED:
+ return "Hidden service client: Pending rendezvous point (ack received)";
+ case CIRCUIT_PURPOSE_C_REND_JOINED:
+ return "Hidden service client: Active rendezvous point";
+ case CIRCUIT_PURPOSE_C_MEASURE_TIMEOUT:
+ return "Measuring circuit timeout";
+
+ case CIRCUIT_PURPOSE_S_ESTABLISH_INTRO:
+ return "Hidden service: Establishing introduction point";
+ case CIRCUIT_PURPOSE_S_INTRO:
+ return "Hidden service: Introduction point";
+ case CIRCUIT_PURPOSE_S_CONNECT_REND:
+ return "Hidden service: Connecting to rendezvous point";
+ case CIRCUIT_PURPOSE_S_REND_JOINED:
+ return "Hidden service: Active rendezvous point";
+
+ case CIRCUIT_PURPOSE_TESTING:
+ return "Testing circuit";
+
+ case CIRCUIT_PURPOSE_CONTROLLER:
+ return "Circuit made by controller";
+
+ default:
+ tor_snprintf(buf, sizeof(buf), "UNKNOWN_%d", (int)purpose);
+ return buf;
+ }
+}
+
/** Pick a reasonable package_window to start out for our circuits.
* Originally this was hard-coded at 1000, but now the consensus votes
* on the answer. See proposal 168. */
int32_t
circuit_initial_package_window(void)
{
- int32_t num = networkstatus_get_param(NULL, "circwindow", CIRCWINDOW_START);
+ int32_t num = networkstatus_get_param(NULL, "circwindow", CIRCWINDOW_START,
+ CIRCWINDOW_START_MIN,
+ CIRCWINDOW_START_MAX);
/* If the consensus tells us a negative number, we'd assert. */
if (num < 0)
num = CIRCWINDOW_START;
@@ -604,10 +664,10 @@ circuit_dump_details(int severity, circuit_t *circ, int conn_array_index,
const char *type, int this_circid, int other_circid)
{
log(severity, LD_CIRC, "Conn %d has %s circuit: circID %d (other side %d), "
- "state %d (%s), born %d:",
+ "state %d (%s), born %ld:",
conn_array_index, type, this_circid, other_circid, circ->state,
circuit_state_to_string(circ->state),
- (int)circ->timestamp_created.tv_sec);
+ (long)circ->timestamp_created.tv_sec);
if (CIRCUIT_IS_ORIGIN(circ)) { /* circ starts at this node */
circuit_log_path(severity, LD_CIRC, TO_ORIGIN_CIRCUIT(circ));
}
@@ -659,7 +719,7 @@ circuit_dump_by_conn(connection_t *conn, int severity)
tor_addr_eq(&circ->n_hop->addr, &conn->addr) &&
circ->n_hop->port == conn->port &&
conn->type == CONN_TYPE_OR &&
- !memcmp(TO_OR_CONN(conn)->identity_digest,
+ tor_memeq(TO_OR_CONN(conn)->identity_digest,
circ->n_hop->identity_digest, DIGEST_LEN)) {
circuit_dump_details(severity, circ, conn->conn_array_index,
(circ->state == CIRCUIT_STATE_OPEN &&
@@ -713,8 +773,8 @@ circuit_get_by_circid_orconn_impl(circid_t circ_id, or_connection_t *conn)
return found->circuit;
return NULL;
-
/* The rest of this checks for bugs. Disabled by default. */
+ /* We comment it out because coverity complains otherwise.
{
circuit_t *circ;
for (circ=global_circuitlist;circ;circ = circ->next) {
@@ -733,7 +793,7 @@ circuit_get_by_circid_orconn_impl(circid_t circ_id, or_connection_t *conn)
}
}
return NULL;
- }
+ } */
}
/** Return a circ such that:
@@ -804,7 +864,7 @@ circuit_unlink_all_from_or_conn(or_connection_t *conn, int reason)
}
/** Return a circ such that:
- * - circ-\>rend_data-\>query is equal to <b>rend_query</b>, and
+ * - circ-\>rend_data-\>onion_address is equal to <b>rend_query</b>, and
* - circ-\>purpose is equal to <b>purpose</b>.
*
* Return NULL if no such circuit exists.
@@ -853,7 +913,7 @@ circuit_get_next_by_pk_and_purpose(origin_circuit_t *start,
if (!digest)
return TO_ORIGIN_CIRCUIT(circ);
else if (TO_ORIGIN_CIRCUIT(circ)->rend_data &&
- !memcmp(TO_ORIGIN_CIRCUIT(circ)->rend_data->rend_pk_digest,
+ tor_memeq(TO_ORIGIN_CIRCUIT(circ)->rend_data->rend_pk_digest,
digest, DIGEST_LEN))
return TO_ORIGIN_CIRCUIT(circ);
}
@@ -871,7 +931,7 @@ circuit_get_by_rend_token_and_purpose(uint8_t purpose, const char *token,
for (circ = global_circuitlist; circ; circ = circ->next) {
if (! circ->marked_for_close &&
circ->purpose == purpose &&
- ! memcmp(TO_OR_CIRCUIT(circ)->rend_token, token, len))
+ tor_memeq(TO_OR_CIRCUIT(circ)->rend_token, token, len))
return TO_OR_CIRCUIT(circ);
}
return NULL;
@@ -919,6 +979,7 @@ circuit_find_to_cannibalize(uint8_t purpose, extend_info_t *info,
int need_uptime = (flags & CIRCLAUNCH_NEED_UPTIME) != 0;
int need_capacity = (flags & CIRCLAUNCH_NEED_CAPACITY) != 0;
int internal = (flags & CIRCLAUNCH_IS_INTERNAL) != 0;
+ const or_options_t *options = get_options();
/* Make sure we're not trying to create a onehop circ by
* cannibalization. */
@@ -947,7 +1008,7 @@ circuit_find_to_cannibalize(uint8_t purpose, extend_info_t *info,
const node_t *ri1 = node_get_by_id(info->identity_digest);
do {
const node_t *ri2;
- if (!memcmp(hop->extend_info->identity_digest,
+ if (tor_memeq(hop->extend_info->identity_digest,
info->identity_digest, DIGEST_LEN))
goto next;
if (ri1 &&
@@ -957,6 +1018,19 @@ circuit_find_to_cannibalize(uint8_t purpose, extend_info_t *info,
hop=hop->next;
} while (hop!=circ->cpath);
}
+ if (options->ExcludeNodes) {
+ /* Make sure no existing nodes in the circuit are excluded for
+ * general use. (This may be possible if StrictNodes is 0, and we
+ * thought we needed to use an otherwise excluded node for, say, a
+ * directory operation.) */
+ crypt_path_t *hop = circ->cpath;
+ do {
+ if (routerset_contains_extendinfo(options->ExcludeNodes,
+ hop->extend_info))
+ goto next;
+ hop = hop->next;
+ } while (hop != circ->cpath);
+ }
if (!best || (best->build_state->need_uptime && !need_uptime))
best = circ;
next: ;
@@ -1019,16 +1093,19 @@ circuit_mark_all_unused_circs(void)
* This is useful for letting the user change pseudonyms, so new
* streams will not be linkable to old streams.
*/
+/* XXX023 this is a bad name for what this function does */
void
circuit_expire_all_dirty_circs(void)
{
circuit_t *circ;
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
for (circ=global_circuitlist; circ; circ = circ->next) {
if (CIRCUIT_IS_ORIGIN(circ) &&
!circ->marked_for_close &&
circ->timestamp_dirty)
+ /* XXXX023 This is a screwed-up way to say "This is too dirty
+ * for new circuits. */
circ->timestamp_dirty -= options->MaxCircuitDirtiness;
}
}
diff --git a/src/or/circuitlist.h b/src/or/circuitlist.h
index caca614c8c..7b01ca3ae2 100644
--- a/src/or/circuitlist.h
+++ b/src/or/circuitlist.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -15,6 +15,7 @@
circuit_t * _circuit_get_global_list(void);
const char *circuit_state_to_string(int state);
const char *circuit_purpose_to_controller_string(uint8_t purpose);
+const char *circuit_purpose_to_string(uint8_t purpose);
void circuit_dump_by_conn(connection_t *conn, int severity);
void circuit_set_p_circid_orconn(or_circuit_t *circ, circid_t id,
or_connection_t *conn);
diff --git a/src/or/circuituse.c b/src/or/circuituse.c
index 5426563507..67677ef050 100644
--- a/src/or/circuituse.c
+++ b/src/or/circuituse.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -32,7 +32,7 @@ extern circuit_t *global_circuitlist; /* from circuitlist.c */
/********* END VARIABLES ************/
-static void circuit_expire_old_circuits_clientside(time_t now);
+static void circuit_expire_old_circuits_clientside(void);
static void circuit_increment_failure_count(void);
/** Return 1 if <b>circ</b> could be returned by circuit_get_best().
@@ -74,7 +74,8 @@ circuit_is_acceptable(circuit_t *circ, edge_connection_t *conn,
return 0;
}
- if (purpose == CIRCUIT_PURPOSE_C_GENERAL)
+ if (purpose == CIRCUIT_PURPOSE_C_GENERAL ||
+ purpose == CIRCUIT_PURPOSE_C_REND_JOINED)
if (circ->timestamp_dirty &&
circ->timestamp_dirty+get_options()->MaxCircuitDirtiness <= now)
return 0;
@@ -109,7 +110,7 @@ circuit_is_acceptable(circuit_t *circ, edge_connection_t *conn,
char digest[DIGEST_LEN];
if (hexdigest_to_digest(conn->chosen_exit_name, digest) < 0)
return 0; /* broken digest, we don't want it */
- if (memcmp(digest, build_state->chosen_exit->identity_digest,
+ if (tor_memneq(digest, build_state->chosen_exit->identity_digest,
DIGEST_LEN))
return 0; /* this is a circuit to somewhere else */
if (tor_digest_is_zero(digest)) {
@@ -128,7 +129,7 @@ circuit_is_acceptable(circuit_t *circ, edge_connection_t *conn,
return 0;
}
}
- if (exitnode && !connection_ap_can_use_exit(conn, exitnode, 0)) {
+ if (exitnode && !connection_ap_can_use_exit(conn, exitnode)) {
/* can't exit from this router */
return 0;
}
@@ -163,10 +164,14 @@ circuit_is_better(circuit_t *a, circuit_t *b, uint8_t purpose)
return 1;
} else {
if (a->timestamp_dirty ||
- tor_timercmp(&a->timestamp_created, &b->timestamp_created, >))
+ timercmp(&a->timestamp_created, &b->timestamp_created, >))
return 1;
if (CIRCUIT_IS_ORIGIN(b) &&
TO_ORIGIN_CIRCUIT(b)->build_state->is_internal)
+ /* XXX023 what the heck is this internal thing doing here. I
+ * think we can get rid of it. circuit_is_acceptable() already
+ * makes sure that is_internal is exactly what we need it to
+ * be. -RD */
return 1;
}
break;
@@ -205,7 +210,7 @@ circuit_get_best(edge_connection_t *conn, int must_be_open, uint8_t purpose,
int need_uptime, int need_internal)
{
circuit_t *circ, *best=NULL;
- time_t now = time(NULL);
+ struct timeval now;
int intro_going_on_but_too_old = 0;
tor_assert(conn);
@@ -214,17 +219,16 @@ circuit_get_best(edge_connection_t *conn, int must_be_open, uint8_t purpose,
purpose == CIRCUIT_PURPOSE_C_INTRODUCE_ACK_WAIT ||
purpose == CIRCUIT_PURPOSE_C_REND_JOINED);
+ tor_gettimeofday(&now);
+
for (circ=global_circuitlist;circ;circ = circ->next) {
if (!circuit_is_acceptable(circ,conn,must_be_open,purpose,
- need_uptime,need_internal,now))
+ need_uptime,need_internal,now.tv_sec))
continue;
-/* XXX022 make this 15 be a function of circuit finishing times we've
- * seen lately, a la Fallon Chen's GSoC work -RD */
-#define REND_PARALLEL_INTRO_DELAY 15
if (purpose == CIRCUIT_PURPOSE_C_INTRODUCE_ACK_WAIT &&
!must_be_open && circ->state != CIRCUIT_STATE_OPEN &&
- circ->timestamp_created.tv_sec + REND_PARALLEL_INTRO_DELAY < now) {
+ tv_mdiff(&now, &circ->timestamp_created) > circ_times.timeout_ms) {
intro_going_on_but_too_old = 1;
continue;
}
@@ -244,54 +248,68 @@ circuit_get_best(edge_connection_t *conn, int must_be_open, uint8_t purpose,
return best ? TO_ORIGIN_CIRCUIT(best) : NULL;
}
+#if 0
/** Check whether, according to the policies in <b>options</b>, the
* circuit <b>circ</b> makes sense. */
-/* XXXX currently only checks Exclude{Exit}Nodes. It should check more. */
+/* XXXX currently only checks Exclude{Exit}Nodes; it should check more.
+ * Also, it doesn't have the right definition of an exit circuit. Also,
+ * it's never called. */
int
circuit_conforms_to_options(const origin_circuit_t *circ,
const or_options_t *options)
{
const crypt_path_t *cpath, *cpath_next = NULL;
- for (cpath = circ->cpath; cpath && cpath_next != circ->cpath;
- cpath = cpath_next) {
+ /* first check if it includes any excluded nodes */
+ for (cpath = circ->cpath; cpath_next != circ->cpath; cpath = cpath_next) {
cpath_next = cpath->next;
-
if (routerset_contains_extendinfo(options->ExcludeNodes,
cpath->extend_info))
return 0;
+ }
- if (cpath->next == circ->cpath) {
- /* This is apparently the exit node. */
+ /* then consider the final hop */
+ if (routerset_contains_extendinfo(options->ExcludeExitNodes,
+ circ->cpath->prev->extend_info))
+ return 0;
- if (routerset_contains_extendinfo(options->ExcludeExitNodes,
- cpath->extend_info))
- return 0;
- }
- }
return 1;
}
+#endif
/** Close all circuits that start at us, aren't open, and were born
* at least CircuitBuildTimeout seconds ago.
*/
void
-circuit_expire_building(time_t now)
+circuit_expire_building(void)
{
circuit_t *victim, *next_circ = global_circuitlist;
/* circ_times.timeout_ms and circ_times.close_ms are from
* circuit_build_times_get_initial_timeout() if we haven't computed
* custom timeouts yet */
- time_t general_cutoff = now - tor_lround(circ_times.timeout_ms/1000);
- time_t begindir_cutoff = now - tor_lround(circ_times.timeout_ms/2000);
- time_t fourhop_cutoff = now - tor_lround(4*circ_times.timeout_ms/3000);
- time_t cannibalize_cutoff = now - tor_lround(circ_times.timeout_ms/2000);
- time_t close_cutoff = now - tor_lround(circ_times.close_ms/1000);
- time_t introcirc_cutoff = begindir_cutoff;
+ struct timeval general_cutoff, begindir_cutoff, fourhop_cutoff,
+ cannibalize_cutoff, close_cutoff, extremely_old_cutoff;
+ struct timeval now;
cpath_build_state_t *build_state;
+ tor_gettimeofday(&now);
+#define SET_CUTOFF(target, msec) do { \
+ long ms = tor_lround(msec); \
+ struct timeval diff; \
+ diff.tv_sec = ms / 1000; \
+ diff.tv_usec = (int)((ms % 1000) * 1000); \
+ timersub(&now, &diff, &target); \
+ } while (0)
+
+ SET_CUTOFF(general_cutoff, circ_times.timeout_ms);
+ SET_CUTOFF(begindir_cutoff, circ_times.timeout_ms / 2.0);
+ SET_CUTOFF(fourhop_cutoff, circ_times.timeout_ms * (4/3.0));
+ SET_CUTOFF(cannibalize_cutoff, circ_times.timeout_ms / 2.0);
+ SET_CUTOFF(close_cutoff, circ_times.close_ms);
+ SET_CUTOFF(extremely_old_cutoff, circ_times.close_ms*2 + 1000);
+
while (next_circ) {
- time_t cutoff;
+ struct timeval cutoff;
victim = next_circ;
next_circ = next_circ->next;
if (!CIRCUIT_IS_ORIGIN(victim) || /* didn't originate here */
@@ -306,24 +324,16 @@ circuit_expire_building(time_t now)
cutoff = fourhop_cutoff;
else if (TO_ORIGIN_CIRCUIT(victim)->has_opened)
cutoff = cannibalize_cutoff;
- else if (victim->purpose == CIRCUIT_PURPOSE_C_INTRODUCING)
- cutoff = introcirc_cutoff;
else if (victim->purpose == CIRCUIT_PURPOSE_C_MEASURE_TIMEOUT)
cutoff = close_cutoff;
else
cutoff = general_cutoff;
- if (victim->timestamp_created.tv_sec > cutoff)
+ if (timercmp(&victim->timestamp_created, &cutoff, >))
continue; /* it's still young, leave it alone */
#if 0
/* some debug logs, to help track bugs */
- if (victim->purpose == CIRCUIT_PURPOSE_C_INTRODUCING &&
- victim->timestamp_created.tv_sec <= introcirc_cutoff &&
- victim->timestamp_created.tv_sec > general_cutoff)
- log_info(LD_REND|LD_CIRC, "Timing out introduction circuit which we "
- "would not have done if it had been a general circuit.");
-
if (victim->purpose >= CIRCUIT_PURPOSE_C_INTRODUCING &&
victim->purpose <= CIRCUIT_PURPOSE_C_REND_READY_INTRO_ACKED) {
if (!victim->timestamp_dirty)
@@ -359,7 +369,7 @@ circuit_expire_building(time_t now)
* because that's set when they switch purposes
*/
if (TO_ORIGIN_CIRCUIT(victim)->rend_data ||
- victim->timestamp_dirty > cutoff)
+ victim->timestamp_dirty > cutoff.tv_sec)
continue;
break;
case CIRCUIT_PURPOSE_C_REND_READY_INTRO_ACKED:
@@ -368,7 +378,7 @@ circuit_expire_building(time_t now)
* make an introduction attempt. so timestamp_dirty
* will reflect the time since the last attempt.
*/
- if (victim->timestamp_dirty > cutoff)
+ if (victim->timestamp_dirty > cutoff.tv_sec)
continue;
break;
}
@@ -377,10 +387,11 @@ circuit_expire_building(time_t now)
TO_ORIGIN_CIRCUIT(victim)->cpath->state == CPATH_STATE_OPEN;
if (TO_ORIGIN_CIRCUIT(victim)->p_streams != NULL) {
- log_warn(LD_BUG, "Circuit %d (purpose %d) has timed out, "
+ log_warn(LD_BUG, "Circuit %d (purpose %d, %s) has timed out, "
"yet has attached streams!",
TO_ORIGIN_CIRCUIT(victim)->global_identifier,
- victim->purpose);
+ victim->purpose,
+ circuit_purpose_to_string(victim->purpose));
tor_fragile_assert();
continue;
}
@@ -408,16 +419,16 @@ circuit_expire_building(time_t now)
* it off at, we probably had a suspend event along this codepath,
* and we should discard the value.
*/
- if (now - victim->timestamp_created.tv_sec >
- 2*circ_times.close_ms/1000+1) {
+ if (timercmp(&victim->timestamp_created, &extremely_old_cutoff, <)) {
log_notice(LD_CIRC,
"Extremely large value for circuit build timeout: %lds. "
- "Assuming clock jump. Purpose %d",
- (long)(now - victim->timestamp_created.tv_sec),
- victim->purpose);
+ "Assuming clock jump. Purpose %d (%s)",
+ (long)(now.tv_sec - victim->timestamp_created.tv_sec),
+ victim->purpose,
+ circuit_purpose_to_string(victim->purpose));
} else if (circuit_build_times_count_close(&circ_times,
- first_hop_succeeded,
- victim->timestamp_created.tv_sec)) {
+ first_hop_succeeded,
+ victim->timestamp_created.tv_sec)) {
circuit_build_times_set_timeout(&circ_times);
}
}
@@ -495,7 +506,7 @@ circuit_stream_is_being_handled(edge_connection_t *conn,
if (exitnode && (!need_uptime || build_state->need_uptime)) {
int ok;
if (conn) {
- ok = connection_ap_can_use_exit(conn, exitnode, 0);
+ ok = connection_ap_can_use_exit(conn, exitnode);
} else {
addr_policy_result_t r;
r = compare_addr_to_node_policy(0, port, exitnode);
@@ -625,7 +636,7 @@ void
circuit_build_needed_circs(time_t now)
{
static time_t time_to_new_circuit = 0;
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
/* launch a new circ for any pending streams that need one */
connection_ap_attach_pending();
@@ -638,7 +649,7 @@ circuit_build_needed_circs(time_t now)
time_to_new_circuit = now + options->NewCircuitPeriod;
if (proxy_mode(get_options()))
addressmap_clean(now);
- circuit_expire_old_circuits_clientside(now);
+ circuit_expire_old_circuits_clientside();
#if 0 /* disable for now, until predict-and-launch-new can cull leftovers */
circ = circuit_get_youngest_clean_open(CIRCUIT_PURPOSE_C_GENERAL);
@@ -727,17 +738,20 @@ circuit_detach_stream(circuit_t *circ, edge_connection_t *conn)
* for too long and has no streams on it: mark it for close.
*/
static void
-circuit_expire_old_circuits_clientside(time_t now)
+circuit_expire_old_circuits_clientside(void)
{
circuit_t *circ;
- time_t cutoff;
+ struct timeval cutoff, now;
+
+ tor_gettimeofday(&now);
+ cutoff = now;
if (circuit_build_times_needs_circuits(&circ_times)) {
/* Circuits should be shorter lived if we need more of them
* for learning a good build timeout */
- cutoff = now - IDLE_TIMEOUT_WHILE_LEARNING;
+ cutoff.tv_sec -= IDLE_TIMEOUT_WHILE_LEARNING;
} else {
- cutoff = now - get_options()->CircuitIdleTimeout;
+ cutoff.tv_sec -= get_options()->CircuitIdleTimeout;
}
for (circ = global_circuitlist; circ; circ = circ->next) {
@@ -747,15 +761,16 @@ circuit_expire_old_circuits_clientside(time_t now)
* on it, mark it for close.
*/
if (circ->timestamp_dirty &&
- circ->timestamp_dirty + get_options()->MaxCircuitDirtiness < now &&
+ circ->timestamp_dirty + get_options()->MaxCircuitDirtiness <
+ now.tv_sec &&
!TO_ORIGIN_CIRCUIT(circ)->p_streams /* nothing attached */ ) {
- log_debug(LD_CIRC, "Closing n_circ_id %d (dirty %d secs ago, "
+ log_debug(LD_CIRC, "Closing n_circ_id %d (dirty %ld sec ago, "
"purpose %d)",
- circ->n_circ_id, (int)(now - circ->timestamp_dirty),
+ circ->n_circ_id, (long)(now.tv_sec - circ->timestamp_dirty),
circ->purpose);
circuit_mark_for_close(circ, END_CIRC_REASON_FINISHED);
} else if (!circ->timestamp_dirty && circ->state == CIRCUIT_STATE_OPEN) {
- if (circ->timestamp_created.tv_sec < cutoff) {
+ if (timercmp(&circ->timestamp_created, &cutoff, <)) {
if (circ->purpose == CIRCUIT_PURPOSE_C_GENERAL ||
circ->purpose == CIRCUIT_PURPOSE_C_MEASURE_TIMEOUT ||
circ->purpose == CIRCUIT_PURPOSE_S_ESTABLISH_INTRO ||
@@ -764,8 +779,8 @@ circuit_expire_old_circuits_clientside(time_t now)
circ->purpose <= CIRCUIT_PURPOSE_C_REND_READY_INTRO_ACKED) ||
circ->purpose == CIRCUIT_PURPOSE_S_CONNECT_REND) {
log_debug(LD_CIRC,
- "Closing circuit that has been unused for %ld seconds.",
- (long)(now - circ->timestamp_created.tv_sec));
+ "Closing circuit that has been unused for %ld msec.",
+ tv_mdiff(&circ->timestamp_created, &now));
circuit_mark_for_close(circ, END_CIRC_REASON_FINISHED);
} else if (!TO_ORIGIN_CIRCUIT(circ)->is_ancient) {
/* Server-side rend joined circuits can end up really old, because
@@ -777,12 +792,11 @@ circuit_expire_old_circuits_clientside(time_t now)
circ->purpose != CIRCUIT_PURPOSE_S_INTRO) {
log_notice(LD_CIRC,
"Ancient non-dirty circuit %d is still around after "
- "%ld seconds. Purpose: %d",
+ "%ld milliseconds. Purpose: %d (%s)",
TO_ORIGIN_CIRCUIT(circ)->global_identifier,
- (long)(now - circ->timestamp_created.tv_sec),
- circ->purpose);
- /* FFFF implement a new circuit_purpose_to_string() so we don't
- * just print out a number for circ->purpose */
+ tv_mdiff(&circ->timestamp_created, &now),
+ circ->purpose,
+ circuit_purpose_to_string(circ->purpose));
TO_ORIGIN_CIRCUIT(circ)->is_ancient = 1;
}
}
@@ -1111,8 +1125,9 @@ circuit_launch_by_extend_info(uint8_t purpose,
* internal circs rather than exit circs? -RD */
circ = circuit_find_to_cannibalize(purpose, extend_info, flags);
if (circ) {
- log_info(LD_CIRC,"Cannibalizing circ '%s' for purpose %d",
- build_state_get_exit_nickname(circ->build_state), purpose);
+ log_info(LD_CIRC,"Cannibalizing circ '%s' for purpose %d (%s)",
+ build_state_get_exit_nickname(circ->build_state), purpose,
+ circuit_purpose_to_string(purpose));
circ->_base.purpose = purpose;
/* reset the birth date of this circ, else expire_building
* will see it and think it's been trying to build since it
@@ -1193,7 +1208,7 @@ circuit_get_open_circ_or_launch(edge_connection_t *conn,
int check_exit_policy;
int need_uptime, need_internal;
int want_onehop;
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
tor_assert(conn);
tor_assert(circp);
@@ -1260,12 +1275,14 @@ circuit_get_open_circ_or_launch(edge_connection_t *conn,
return -1;
}
} else {
- /* XXXX022 Duplicates checks in connection_ap_handshake_attach_circuit */
+ /* XXXX023 Duplicates checks in connection_ap_handshake_attach_circuit:
+ * refactor into a single function? */
const node_t *node = node_get_by_nickname(conn->chosen_exit_name, 1);
int opt = conn->chosen_exit_optional;
- if (node && !connection_ap_can_use_exit(conn, node, 0)) {
+ if (node && !connection_ap_can_use_exit(conn, node)) {
log_fn(opt ? LOG_INFO : LOG_WARN, LD_APP,
- "Requested exit point '%s' would refuse request. %s.",
+ "Requested exit point '%s' is excluded or "
+ "would refuse request. %s.",
conn->chosen_exit_name, opt ? "Trying others" : "Closing");
if (opt) {
conn->chosen_exit_optional = 0;
@@ -1301,8 +1318,8 @@ circuit_get_open_circ_or_launch(edge_connection_t *conn,
conn->_base.state = AP_CONN_STATE_RENDDESC_WAIT;
return 0;
}
- log_info(LD_REND,"Chose '%s' as intro point for '%s'.",
- extend_info->nickname,
+ log_info(LD_REND,"Chose %s as intro point for '%s'.",
+ extend_info_describe(extend_info),
safe_str_client(conn->rend_data->onion_address));
}
@@ -1376,7 +1393,18 @@ circuit_get_open_circ_or_launch(edge_connection_t *conn,
extend_info_free(extend_info);
- if (desired_circuit_purpose != CIRCUIT_PURPOSE_C_GENERAL) {
+ if (desired_circuit_purpose == CIRCUIT_PURPOSE_C_GENERAL) {
+ /* We just caused a circuit to get built because of this stream.
+ * If this stream has caused a _lot_ of circuits to be built, that's
+ * a bad sign: we should tell the user. */
+ if (conn->num_circuits_launched < NUM_CIRCUITS_LAUNCHED_THRESHOLD &&
+ ++conn->num_circuits_launched == NUM_CIRCUITS_LAUNCHED_THRESHOLD)
+ log_info(LD_CIRC, "The application request to %s:%d has launched "
+ "%d circuits without finding one it likes.",
+ escaped_safe_str_client(conn->socks_request->address),
+ conn->socks_request->port,
+ conn->num_circuits_launched);
+ } else {
/* help predict this next time */
rep_hist_note_used_internal(time(NULL), need_uptime, 1);
if (circ) {
@@ -1440,15 +1468,35 @@ link_apconn_to_circ(edge_connection_t *apconn, origin_circuit_t *circ,
}
}
-/** If an exit wasn't specifically chosen, save the history for future
- * use. */
+/** Return true iff <b>address</b> is matched by one of the entries in
+ * TrackHostExits. */
+int
+hostname_in_track_host_exits(const or_options_t *options, const char *address)
+{
+ if (!options->TrackHostExits)
+ return 0;
+ SMARTLIST_FOREACH_BEGIN(options->TrackHostExits, const char *, cp) {
+ if (cp[0] == '.') { /* match end */
+ if (cp[1] == '\0' ||
+ !strcasecmpend(address, cp) ||
+ !strcasecmp(address, &cp[1]))
+ return 1;
+ } else if (strcasecmp(cp, address) == 0) {
+ return 1;
+ }
+ } SMARTLIST_FOREACH_END(cp);
+ return 0;
+}
+
+/** If an exit wasn't explicitly specified for <b>conn</b>, consider saving
+ * the exit that we *did* choose for use by future connections to
+ * <b>conn</b>'s destination.
+ */
static void
consider_recording_trackhost(edge_connection_t *conn, origin_circuit_t *circ)
{
- int found_needle = 0;
- or_options_t *options = get_options();
- size_t len;
- char *new_address;
+ const or_options_t *options = get_options();
+ char *new_address = NULL;
char fp[HEX_DIGEST_LEN+1];
/* Search the addressmap for this conn's destination. */
@@ -1458,18 +1506,8 @@ consider_recording_trackhost(edge_connection_t *conn, origin_circuit_t *circ)
options->TrackHostExitsExpire))
return; /* nothing to track, or already mapped */
- SMARTLIST_FOREACH(options->TrackHostExits, const char *, cp, {
- if (cp[0] == '.') { /* match end */
- if (cp[1] == '\0' ||
- !strcasecmpend(conn->socks_request->address, cp) ||
- !strcasecmp(conn->socks_request->address, &cp[1]))
- found_needle = 1;
- } else if (strcasecmp(cp, conn->socks_request->address) == 0) {
- found_needle = 1;
- }
- });
-
- if (!found_needle || !circ->build_state->chosen_exit)
+ if (!hostname_in_track_host_exits(options, conn->socks_request->address) ||
+ !circ->build_state->chosen_exit)
return;
/* write down the fingerprint of the chosen exit, not the nickname,
@@ -1478,12 +1516,7 @@ consider_recording_trackhost(edge_connection_t *conn, origin_circuit_t *circ)
circ->build_state->chosen_exit->identity_digest, DIGEST_LEN);
/* Add this exit/hostname pair to the addressmap. */
- len = strlen(conn->socks_request->address) + 1 /* '.' */ +
- strlen(fp) + 1 /* '.' */ +
- strlen("exit") + 1 /* '\0' */;
- new_address = tor_malloc(len);
-
- tor_snprintf(new_address, len, "%s.%s.exit",
+ tor_asprintf(&new_address, "%s.%s.exit",
conn->socks_request->address, fp);
addressmap_register(conn->socks_request->address, new_address,
@@ -1583,9 +1616,10 @@ connection_ap_handshake_attach_circuit(edge_connection_t *conn)
}
return -1;
}
- if (node && !connection_ap_can_use_exit(conn, node, 0)) {
+ if (node && !connection_ap_can_use_exit(conn, node)) {
log_fn(opt ? LOG_INFO : LOG_WARN, LD_APP,
- "Requested exit point '%s' would refuse request. %s.",
+ "Requested exit point '%s' is excluded or "
+ "would refuse request. %s.",
conn->chosen_exit_name, opt ? "Trying others" : "Closing");
if (opt) {
conn->chosen_exit_optional = 0;
@@ -1599,7 +1633,7 @@ connection_ap_handshake_attach_circuit(edge_connection_t *conn)
/* find the circuit that we should use, if there is one. */
retval = circuit_get_open_circ_or_launch(
conn, CIRCUIT_PURPOSE_C_GENERAL, &circ);
- if (retval < 1) // XXX021 if we totally fail, this still returns 0 -RD
+ if (retval < 1) // XXX022 if we totally fail, this still returns 0 -RD
return retval;
log_debug(LD_APP|LD_CIRC,
@@ -1698,14 +1732,21 @@ connection_ap_handshake_attach_circuit(edge_connection_t *conn)
"introduction. (stream %d sec old)",
introcirc->_base.n_circ_id, rendcirc->_base.n_circ_id,
conn_age);
- if (rend_client_send_introduction(introcirc, rendcirc) < 0) {
+ switch (rend_client_send_introduction(introcirc, rendcirc)) {
+ case 0: /* success */
+ rendcirc->_base.timestamp_dirty = time(NULL);
+ introcirc->_base.timestamp_dirty = time(NULL);
+ assert_circuit_ok(TO_CIRCUIT(rendcirc));
+ assert_circuit_ok(TO_CIRCUIT(introcirc));
+ return 0;
+ case -1: /* transient error */
+ return 0;
+ case -2: /* permanent error */
+ return -1;
+ default: /* oops */
+ tor_fragile_assert();
return -1;
}
- rendcirc->_base.timestamp_dirty = time(NULL);
- introcirc->_base.timestamp_dirty = time(NULL);
- assert_circuit_ok(TO_CIRCUIT(rendcirc));
- assert_circuit_ok(TO_CIRCUIT(introcirc));
- return 0;
}
}
diff --git a/src/or/circuituse.h b/src/or/circuituse.h
index 4e4cd1a4d9..ab7f6a2fe2 100644
--- a/src/or/circuituse.h
+++ b/src/or/circuituse.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -12,12 +12,14 @@
#ifndef _TOR_CIRCUITUSE_H
#define _TOR_CIRCUITUSE_H
-void circuit_expire_building(time_t now);
+void circuit_expire_building(void);
void circuit_remove_handled_ports(smartlist_t *needed_ports);
int circuit_stream_is_being_handled(edge_connection_t *conn, uint16_t port,
int min);
+#if 0
int circuit_conforms_to_options(const origin_circuit_t *circ,
const or_options_t *options);
+#endif
void circuit_build_needed_circs(time_t now);
void circuit_detach_stream(circuit_t *circ, edge_connection_t *conn);
@@ -48,5 +50,8 @@ int connection_ap_handshake_attach_chosen_circuit(edge_connection_t *conn,
crypt_path_t *cpath);
int connection_ap_handshake_attach_circuit(edge_connection_t *conn);
+int hostname_in_track_host_exits(const or_options_t *options,
+ const char *address);
+
#endif
diff --git a/src/or/command.c b/src/or/command.c
index 60c9184b57..d24373eec8 100644
--- a/src/or/command.c
+++ b/src/or/command.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -276,8 +276,8 @@ command_process_create_cell(cell_t *cell, or_connection_t *conn)
if (node) {
char *p = esc_for_log(node_get_platform(node));
log_fn(LOG_PROTOCOL_WARN, LD_PROTOCOL,
- "Details: nickname \"%s\", platform %s.",
- node_get_nickname(node), p);
+ "Details: router %s, platform %s.",
+ node_describe(node), p);
tor_free(p);
}
return;
@@ -310,7 +310,8 @@ command_process_create_cell(cell_t *cell, or_connection_t *conn)
char keys[CPATH_KEY_MATERIAL_LEN];
char reply[DIGEST_LEN*2];
tor_assert(cell->command == CELL_CREATE_FAST);
- if (fast_server_handshake(cell->payload, reply, keys, sizeof(keys))<0) {
+ if (fast_server_handshake(cell->payload, (uint8_t*)reply,
+ (uint8_t*)keys, sizeof(keys))<0) {
log_warn(LD_OR,"Failed to generate key material. Closing.");
circuit_mark_for_close(TO_CIRCUIT(circ), END_CIRC_REASON_INTERNAL);
return;
@@ -357,7 +358,7 @@ command_process_created_cell(cell_t *cell, or_connection_t *conn)
int err_reason = 0;
log_debug(LD_OR,"at OP. Finishing handshake.");
if ((err_reason = circuit_finish_handshake(origin_circ, cell->command,
- cell->payload)) < 0) {
+ cell->payload)) < 0) {
log_warn(LD_OR,"circuit_finish_handshake failed.");
circuit_mark_for_close(circ, -err_reason);
return;
@@ -373,7 +374,7 @@ command_process_created_cell(cell_t *cell, or_connection_t *conn)
log_debug(LD_OR,
"Converting created cell to extended relay cell, sending.");
relay_send_command_from_edge(0, circ, RELAY_COMMAND_EXTENDED,
- cell->payload, ONIONSKIN_REPLY_LEN,
+ (char*)cell->payload, ONIONSKIN_REPLY_LEN,
NULL);
}
}
@@ -503,7 +504,7 @@ static void
command_process_versions_cell(var_cell_t *cell, or_connection_t *conn)
{
int highest_supported_version = 0;
- const char *cp, *end;
+ const uint8_t *cp, *end;
if (conn->link_proto != 0 ||
conn->_base.state != OR_CONN_STATE_OR_HANDSHAKING ||
(conn->handshake_state && conn->handshake_state->received_versions)) {
@@ -557,8 +558,8 @@ command_process_netinfo_cell(cell_t *cell, or_connection_t *conn)
time_t timestamp;
uint8_t my_addr_type;
uint8_t my_addr_len;
- const char *my_addr_ptr;
- const char *cp, *end;
+ const uint8_t *my_addr_ptr;
+ const uint8_t *cp, *end;
uint8_t n_other_addrs;
time_t now = time(NULL);
@@ -586,7 +587,7 @@ command_process_netinfo_cell(cell_t *cell, or_connection_t *conn)
my_addr_type = (uint8_t) cell->payload[4];
my_addr_len = (uint8_t) cell->payload[5];
- my_addr_ptr = cell->payload + 6;
+ my_addr_ptr = (uint8_t*) cell->payload + 6;
end = cell->payload + CELL_PAYLOAD_SIZE;
cp = cell->payload + 6 + my_addr_len;
if (cp >= end) {
@@ -603,7 +604,8 @@ command_process_netinfo_cell(cell_t *cell, or_connection_t *conn)
/* Consider all the other addresses; if any matches, this connection is
* "canonical." */
tor_addr_t addr;
- const char *next = decode_address_from_payload(&addr, cp, (int)(end-cp));
+ const uint8_t *next =
+ decode_address_from_payload(&addr, cp, (int)(end-cp));
if (next == NULL) {
log_fn(LOG_PROTOCOL_WARN, LD_OR,
"Bad address in netinfo cell; closing connection.");
@@ -647,6 +649,7 @@ command_process_netinfo_cell(cell_t *cell, or_connection_t *conn)
/* XXX maybe act on my_apparent_addr, if the source is sufficiently
* trustworthy. */
+ (void)my_apparent_addr;
if (connection_or_set_state_open(conn)<0)
connection_mark_for_close(TO_CONN(conn));
diff --git a/src/or/command.h b/src/or/command.h
index 1aa56207f6..95b0f3a931 100644
--- a/src/or/command.h
+++ b/src/or/command.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/config.c b/src/or/config.c
index d2dbdaa5dd..cdf0122f75 100644
--- a/src/or/config.c
+++ b/src/or/config.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -38,17 +38,23 @@
#include <shlobj.h>
#endif
+#include "procmon.h"
+
/** Enumeration of types which option values can take */
typedef enum config_type_t {
CONFIG_TYPE_STRING = 0, /**< An arbitrary string. */
CONFIG_TYPE_FILENAME, /**< A filename: some prefixes get expanded. */
CONFIG_TYPE_UINT, /**< A non-negative integer less than MAX_INT */
+ CONFIG_TYPE_PORT, /**< A port from 1...65535, 0 for "not set", or
+ * "auto". */
CONFIG_TYPE_INTERVAL, /**< A number of seconds, with optional units*/
CONFIG_TYPE_MSEC_INTERVAL,/**< A number of milliseconds, with optional
* units */
CONFIG_TYPE_MEMUNIT, /**< A number of bytes, with optional units*/
CONFIG_TYPE_DOUBLE, /**< A floating-point value */
CONFIG_TYPE_BOOL, /**< A boolean value, expressed as 0 or 1. */
+ CONFIG_TYPE_AUTOBOOL, /**< A boolean+auto value, expressed 0 for false,
+ * 1 for true, and -1 for auto */
CONFIG_TYPE_ISOTIME, /**< An ISO-formatted time relative to GMT. */
CONFIG_TYPE_CSV, /**< A list of strings, separated by commas and
* optional whitespace. */
@@ -198,6 +204,8 @@ static config_var_t _option_vars[] = {
V(CircuitPriorityHalflife, DOUBLE, "-100.0"), /*negative:'Use default'*/
V(ClientDNSRejectInternalAddresses, BOOL,"1"),
V(ClientOnly, BOOL, "0"),
+ V(ClientRejectInternalAddresses, BOOL, "1"),
+ V(ClientTransportPlugin, LINELIST, NULL),
V(ConsensusParams, STRING, NULL),
V(ConnLimit, UINT, "1000"),
V(ConnDirectionStatistics, BOOL, "0"),
@@ -205,11 +213,15 @@ static config_var_t _option_vars[] = {
V(ConstrainedSockSize, MEMUNIT, "8192"),
V(ContactInfo, STRING, NULL),
V(ControlListenAddress, LINELIST, NULL),
- V(ControlPort, UINT, "0"),
+ V(ControlPort, PORT, "0"),
+ V(ControlPortFileGroupReadable,BOOL, "0"),
+ V(ControlPortWriteToFile, FILENAME, NULL),
V(ControlSocket, LINELIST, NULL),
+ V(ControlSocketsGroupWritable, BOOL, "0"),
V(CookieAuthentication, BOOL, "0"),
V(CookieAuthFileGroupReadable, BOOL, "0"),
V(CookieAuthFile, STRING, NULL),
+ V(CountPrivateBandwidth, BOOL, "0"),
V(DataDirectory, FILENAME, NULL),
OBSOLETE("DebugLogFile"),
V(DirAllowPrivateAddresses, BOOL, NULL),
@@ -217,18 +229,18 @@ static config_var_t _option_vars[] = {
V(DirListenAddress, LINELIST, NULL),
OBSOLETE("DirFetchPeriod"),
V(DirPolicy, LINELIST, NULL),
- V(DirPort, UINT, "0"),
+ V(DirPort, PORT, "0"),
V(DirPortFrontPage, FILENAME, NULL),
OBSOLETE("DirPostPeriod"),
OBSOLETE("DirRecordUsageByCountry"),
OBSOLETE("DirRecordUsageGranularity"),
OBSOLETE("DirRecordUsageRetainIPs"),
OBSOLETE("DirRecordUsageSaveInterval"),
- V(DirReqStatistics, BOOL, "0"),
+ V(DirReqStatistics, BOOL, "1"),
VAR("DirServer", LINELIST, DirServers, NULL),
V(DisableAllSwap, BOOL, "0"),
V(DisableIOCP, BOOL, "1"),
- V(DNSPort, UINT, "0"),
+ V(DNSPort, PORT, "0"),
V(DNSListenAddress, LINELIST, NULL),
V(DownloadExtraInfo, BOOL, "0"),
V(EnforceDistinctSubnets, BOOL, "1"),
@@ -242,7 +254,7 @@ static config_var_t _option_vars[] = {
V(ExitPolicy, LINELIST, NULL),
V(ExitPolicyRejectPrivate, BOOL, "1"),
V(ExitPortStatistics, BOOL, "0"),
- V(ExtraInfoStatistics, BOOL, "0"),
+ V(ExtraInfoStatistics, BOOL, "1"),
#if defined (WINCE)
V(FallbackNetworkstatusFile, FILENAME, "fallback-consensus"),
@@ -258,6 +270,7 @@ static config_var_t _option_vars[] = {
V(FetchServerDescriptors, BOOL, "1"),
V(FetchHidServDescriptors, BOOL, "1"),
V(FetchUselessDescriptors, BOOL, "0"),
+ V(FetchV2Networkstatus, BOOL, "0"),
#ifdef WIN32
V(GeoIPFile, FILENAME, "<default>"),
#else
@@ -266,6 +279,7 @@ static config_var_t _option_vars[] = {
#endif
OBSOLETE("Group"),
V(HardwareAccel, BOOL, "0"),
+ V(HeartbeatPeriod, INTERVAL, "6 hours"),
V(AccelName, STRING, NULL),
V(AccelDir, FILENAME, NULL),
V(HashedControlPassword, LINELIST, NULL),
@@ -291,12 +305,13 @@ static config_var_t _option_vars[] = {
OBSOLETE("IgnoreVersion"),
V(KeepalivePeriod, INTERVAL, "5 minutes"),
VAR("Log", LINELIST, Logs, NULL),
+ V(LogMessageDomains, BOOL, "0"),
OBSOLETE("LinkPadding"),
OBSOLETE("LogLevel"),
OBSOLETE("LogFile"),
V(LogTimeGranularity, MSEC_INTERVAL, "1 second"),
V(LongLivedPorts, CSV,
- "21,22,706,1863,5050,5190,5222,5223,6667,6697,8300"),
+ "21,22,706,1863,5050,5190,5222,5223,6523,6667,6697,8300"),
VAR("MapAddress", LINELIST, AddressMap, NULL),
V(MaxAdvertisedBandwidth, MEMUNIT, "1 GB"),
V(MaxCircuitDirtiness, INTERVAL, "10 minutes"),
@@ -306,7 +321,7 @@ static config_var_t _option_vars[] = {
V(NewCircuitPeriod, INTERVAL, "30 seconds"),
VAR("NamingAuthoritativeDirectory",BOOL, NamingAuthoritativeDir, "0"),
V(NATDListenAddress, LINELIST, NULL),
- V(NATDPort, UINT, "0"),
+ V(NATDPort, PORT, "0"),
V(Nickname, STRING, NULL),
V(WarnUnsafeSocks, BOOL, "1"),
OBSOLETE("NoPublish"),
@@ -314,7 +329,7 @@ static config_var_t _option_vars[] = {
V(NumCPUs, UINT, "0"),
V(NumEntryGuards, UINT, "3"),
V(ORListenAddress, LINELIST, NULL),
- V(ORPort, UINT, "0"),
+ V(ORPort, PORT, "0"),
V(OutboundBindAddress, STRING, NULL),
OBSOLETE("PathlenCoinWeight"),
V(PerConnBWBurst, MEMUNIT, "0"),
@@ -334,7 +349,7 @@ static config_var_t _option_vars[] = {
V(RecommendedClientVersions, LINELIST, NULL),
V(RecommendedServerVersions, LINELIST, NULL),
OBSOLETE("RedirectExit"),
- V(RefuseUnknownExits, STRING, "auto"),
+ V(RefuseUnknownExits, AUTOBOOL, "auto"),
V(RejectPlaintextPorts, CSV, ""),
V(RelayBandwidthBurst, MEMUNIT, "0"),
V(RelayBandwidthRate, MEMUNIT, "0"),
@@ -359,7 +374,7 @@ static config_var_t _option_vars[] = {
V(ShutdownWaitLength, INTERVAL, "30 seconds"),
V(SocksListenAddress, LINELIST, NULL),
V(SocksPolicy, LINELIST, NULL),
- V(SocksPort, UINT, "9050"),
+ V(SocksPort, PORT, "9050"),
V(SocksTimeout, INTERVAL, "2 minutes"),
OBSOLETE("StatusFetchPeriod"),
V(StrictNodes, BOOL, "0"),
@@ -370,11 +385,12 @@ static config_var_t _option_vars[] = {
V(TrackHostExitsExpire, INTERVAL, "30 minutes"),
OBSOLETE("TrafficShaping"),
V(TransListenAddress, LINELIST, NULL),
- V(TransPort, UINT, "0"),
+ V(TransPort, PORT, "0"),
V(TunnelDirConns, BOOL, "1"),
V(UpdateBridgesFromAuthority, BOOL, "0"),
V(UseBridges, BOOL, "0"),
V(UseEntryGuards, BOOL, "1"),
+ V(UseMicrodescriptors, AUTOBOOL, "0"),
V(User, STRING, NULL),
VAR("V1AuthoritativeDirectory",BOOL, V1AuthoritativeDir, "0"),
VAR("V2AuthoritativeDirectory",BOOL, V2AuthoritativeDir, "0"),
@@ -398,14 +414,16 @@ static config_var_t _option_vars[] = {
VAR("__LeaveStreamsUnattached",BOOL, LeaveStreamsUnattached, "0"),
VAR("__HashedControlSessionPassword", LINELIST, HashedControlSessionPassword,
NULL),
+ VAR("__OwningControllerProcess",STRING,OwningControllerProcess, NULL),
V(MinUptimeHidServDirectoryV2, INTERVAL, "24 hours"),
+ V(_UsingTestNetworkDefaults, BOOL, "0"),
{ NULL, CONFIG_TYPE_OBSOLETE, 0, NULL }
};
/** Override default values with these if the user sets the TestingTorNetwork
* option. */
-static config_var_t testing_tor_network_defaults[] = {
+static const config_var_t testing_tor_network_defaults[] = {
V(ServerDNSAllowBrokenConfig, BOOL, "1"),
V(DirAllowPrivateAddresses, BOOL, "1"),
V(EnforceDistinctSubnets, BOOL, "0"),
@@ -413,6 +431,8 @@ static config_var_t testing_tor_network_defaults[] = {
V(AuthDirMaxServersPerAddr, UINT, "0"),
V(AuthDirMaxServersPerAuthAddr,UINT, "0"),
V(ClientDNSRejectInternalAddresses, BOOL,"0"),
+ V(ClientRejectInternalAddresses, BOOL, "0"),
+ V(CountPrivateBandwidth, BOOL, "1"),
V(ExitPolicyRejectPrivate, BOOL, "0"),
V(V3AuthVotingInterval, INTERVAL, "5 minutes"),
V(V3AuthVoteDelay, INTERVAL, "20 seconds"),
@@ -423,6 +443,8 @@ static config_var_t testing_tor_network_defaults[] = {
V(TestingAuthDirTimeToLearnReachability, INTERVAL, "0 minutes"),
V(TestingEstimatedDescriptorPropagationTime, INTERVAL, "0 minutes"),
V(MinUptimeHidServDirectoryV2, INTERVAL, "0 minutes"),
+ V(_UsingTestNetworkDefaults, BOOL, "1"),
+
{ NULL, CONFIG_TYPE_OBSOLETE, 0, NULL }
};
#undef VAR
@@ -451,15 +473,19 @@ static config_var_t _state_vars[] = {
V(BWHistoryReadEnds, ISOTIME, NULL),
V(BWHistoryReadInterval, UINT, "900"),
V(BWHistoryReadValues, CSV, ""),
+ V(BWHistoryReadMaxima, CSV, ""),
V(BWHistoryWriteEnds, ISOTIME, NULL),
V(BWHistoryWriteInterval, UINT, "900"),
V(BWHistoryWriteValues, CSV, ""),
+ V(BWHistoryWriteMaxima, CSV, ""),
V(BWHistoryDirReadEnds, ISOTIME, NULL),
V(BWHistoryDirReadInterval, UINT, "900"),
V(BWHistoryDirReadValues, CSV, ""),
+ V(BWHistoryDirReadMaxima, CSV, ""),
V(BWHistoryDirWriteEnds, ISOTIME, NULL),
V(BWHistoryDirWriteInterval, UINT, "900"),
V(BWHistoryDirWriteValues, CSV, ""),
+ V(BWHistoryDirWriteMaxima, CSV, ""),
V(TorVersion, STRING, NULL),
@@ -521,44 +547,49 @@ static char *get_windows_conf_root(void);
#endif
static void config_line_append(config_line_t **lst,
const char *key, const char *val);
-static void option_clear(config_format_t *fmt, or_options_t *options,
- config_var_t *var);
-static void option_reset(config_format_t *fmt, or_options_t *options,
- config_var_t *var, int use_defaults);
-static void config_free(config_format_t *fmt, void *options);
+static void option_clear(const config_format_t *fmt, or_options_t *options,
+ const config_var_t *var);
+static void option_reset(const config_format_t *fmt, or_options_t *options,
+ const config_var_t *var, int use_defaults);
+static void config_free(const config_format_t *fmt, void *options);
static int config_lines_eq(config_line_t *a, config_line_t *b);
-static int option_is_same(config_format_t *fmt,
- or_options_t *o1, or_options_t *o2,
+static int option_is_same(const config_format_t *fmt,
+ const or_options_t *o1, const or_options_t *o2,
const char *name);
-static or_options_t *options_dup(config_format_t *fmt, or_options_t *old);
-static int options_validate(or_options_t *old_options, or_options_t *options,
+static or_options_t *options_dup(const config_format_t *fmt,
+ const or_options_t *old);
+static int options_validate(or_options_t *old_options,
+ or_options_t *options,
int from_setconf, char **msg);
-static int options_act_reversible(or_options_t *old_options, char **msg);
-static int options_act(or_options_t *old_options);
-static int options_transition_allowed(or_options_t *old, or_options_t *new,
+static int options_act_reversible(const or_options_t *old_options, char **msg);
+static int options_act(const or_options_t *old_options);
+static int options_transition_allowed(const or_options_t *old,
+ const or_options_t *new,
char **msg);
-static int options_transition_affects_workers(or_options_t *old_options,
- or_options_t *new_options);
-static int options_transition_affects_descriptor(or_options_t *old_options,
- or_options_t *new_options);
+static int options_transition_affects_workers(
+ const or_options_t *old_options, const or_options_t *new_options);
+static int options_transition_affects_descriptor(
+ const or_options_t *old_options, const or_options_t *new_options);
static int check_nickname_list(const char *lst, const char *name, char **msg);
static int parse_bridge_line(const char *line, int validate_only);
+static int parse_client_transport_line(const char *line, int validate_only);
static int parse_dir_server_line(const char *line,
- authority_type_t required_type,
+ dirinfo_type_t required_type,
int validate_only);
static int validate_data_directory(or_options_t *options);
-static int write_configuration_file(const char *fname, or_options_t *options);
-static config_line_t *get_assigned_option(config_format_t *fmt,
- void *options, const char *key,
- int escape_val);
-static void config_init(config_format_t *fmt, void *options);
+static int write_configuration_file(const char *fname,
+ const or_options_t *options);
+static config_line_t *get_assigned_option(const config_format_t *fmt,
+ const void *options, const char *key,
+ int escape_val);
+static void config_init(const config_format_t *fmt, void *options);
static int or_state_validate(or_state_t *old_options, or_state_t *options,
int from_setconf, char **msg);
static int or_state_load(void);
static int options_init_logs(or_options_t *options, int validate_only);
-static int is_listening_on_low_port(uint16_t port_option,
+static int is_listening_on_low_port(int port_option,
const config_line_t *listen_options);
static uint64_t config_parse_memunit(const char *s, int *ok);
@@ -591,7 +622,7 @@ static config_var_t state_extra_var = {
};
/** Configuration format for or_state_t. */
-static config_format_t state_format = {
+static const config_format_t state_format = {
sizeof(or_state_t),
OR_STATE_MAGIC,
STRUCT_OFFSET(or_state_t, _magic),
@@ -625,7 +656,7 @@ get_dirportfrontpage(void)
/** Allocate an empty configuration object of a given format type. */
static void *
-config_alloc(config_format_t *fmt)
+config_alloc(const config_format_t *fmt)
{
void *opts = tor_malloc_zero(fmt->size);
*(uint32_t*)STRUCT_VAR_P(opts, fmt->magic_offset) = fmt->magic;
@@ -635,12 +666,19 @@ config_alloc(config_format_t *fmt)
/** Return the currently configured options. */
or_options_t *
-get_options(void)
+get_options_mutable(void)
{
tor_assert(global_options);
return global_options;
}
+/** Returns the currently configured options */
+const or_options_t *
+get_options(void)
+{
+ return get_options_mutable();
+}
+
/** Change the current global options to contain <b>new_val</b> instead of
* their current value; take action based on the new value; free the old value
* as necessary. Returns 0 on success, -1 on failure.
@@ -785,7 +823,7 @@ escaped_safe_str(const char *address)
/** Add the default directory authorities directly into the trusted dir list,
* but only add them insofar as they share bits with <b>type</b>. */
static void
-add_default_trusted_dir_authorities(authority_type_t type)
+add_default_trusted_dir_authorities(dirinfo_type_t type)
{
int i;
const char *dirservers[] = {
@@ -800,9 +838,9 @@ add_default_trusted_dir_authorities(authority_type_t type)
"4A0C CD2D DC79 9508 3D73 F5D6 6710 0C8A 5831 F16D",
"ides orport=9090 no-v2 v3ident=27B6B5996C426270A5C95488AA5BCEB6BCC86956 "
"216.224.124.114:9030 F397 038A DC51 3361 35E7 B80B D99C A384 4360 292B",
- "gabelmoo orport=8080 no-v2 "
+ "gabelmoo orport=443 no-v2 "
"v3ident=ED03BB616EB2F60BEC80151114BB25CEF515B226 "
- "80.190.246.100:8180 F204 4413 DAC2 E02E 3D6B CF47 35A1 9BCA 1DE9 7281",
+ "212.112.245.170:80 F204 4413 DAC2 E02E 3D6B CF47 35A1 9BCA 1DE9 7281",
"dannenberg orport=443 no-v2 "
"v3ident=585769C78764D58426B8B52B6651A5A71137189A "
"193.23.244.244:80 7BE6 83E6 5D48 1413 21C5 ED92 F075 C553 64AC 7123",
@@ -859,16 +897,16 @@ validate_dir_authorities(or_options_t *options, or_options_t *old_options)
/* Now go through the four ways you can configure an alternate
* set of directory authorities, and make sure none are broken. */
for (cl = options->DirServers; cl; cl = cl->next)
- if (parse_dir_server_line(cl->value, NO_AUTHORITY, 1)<0)
+ if (parse_dir_server_line(cl->value, NO_DIRINFO, 1)<0)
return -1;
for (cl = options->AlternateBridgeAuthority; cl; cl = cl->next)
- if (parse_dir_server_line(cl->value, NO_AUTHORITY, 1)<0)
+ if (parse_dir_server_line(cl->value, NO_DIRINFO, 1)<0)
return -1;
for (cl = options->AlternateDirAuthority; cl; cl = cl->next)
- if (parse_dir_server_line(cl->value, NO_AUTHORITY, 1)<0)
+ if (parse_dir_server_line(cl->value, NO_DIRINFO, 1)<0)
return -1;
for (cl = options->AlternateHSAuthority; cl; cl = cl->next)
- if (parse_dir_server_line(cl->value, NO_AUTHORITY, 1)<0)
+ if (parse_dir_server_line(cl->value, NO_DIRINFO, 1)<0)
return -1;
return 0;
}
@@ -877,8 +915,8 @@ validate_dir_authorities(or_options_t *options, or_options_t *old_options)
* as appropriate.
*/
static int
-consider_adding_dir_authorities(or_options_t *options,
- or_options_t *old_options)
+consider_adding_dir_authorities(const or_options_t *options,
+ const or_options_t *old_options)
{
config_line_t *cl;
int need_to_update =
@@ -899,27 +937,28 @@ consider_adding_dir_authorities(or_options_t *options,
if (!options->DirServers) {
/* then we may want some of the defaults */
- authority_type_t type = NO_AUTHORITY;
+ dirinfo_type_t type = NO_DIRINFO;
if (!options->AlternateBridgeAuthority)
- type |= BRIDGE_AUTHORITY;
+ type |= BRIDGE_DIRINFO;
if (!options->AlternateDirAuthority)
- type |= V1_AUTHORITY | V2_AUTHORITY | V3_AUTHORITY;
+ type |= V1_DIRINFO | V2_DIRINFO | V3_DIRINFO | EXTRAINFO_DIRINFO |
+ MICRODESC_DIRINFO;
if (!options->AlternateHSAuthority)
- type |= HIDSERV_AUTHORITY;
+ type |= HIDSERV_DIRINFO;
add_default_trusted_dir_authorities(type);
}
for (cl = options->DirServers; cl; cl = cl->next)
- if (parse_dir_server_line(cl->value, NO_AUTHORITY, 0)<0)
+ if (parse_dir_server_line(cl->value, NO_DIRINFO, 0)<0)
return -1;
for (cl = options->AlternateBridgeAuthority; cl; cl = cl->next)
- if (parse_dir_server_line(cl->value, NO_AUTHORITY, 0)<0)
+ if (parse_dir_server_line(cl->value, NO_DIRINFO, 0)<0)
return -1;
for (cl = options->AlternateDirAuthority; cl; cl = cl->next)
- if (parse_dir_server_line(cl->value, NO_AUTHORITY, 0)<0)
+ if (parse_dir_server_line(cl->value, NO_DIRINFO, 0)<0)
return -1;
for (cl = options->AlternateHSAuthority; cl; cl = cl->next)
- if (parse_dir_server_line(cl->value, NO_AUTHORITY, 0)<0)
+ if (parse_dir_server_line(cl->value, NO_DIRINFO, 0)<0)
return -1;
return 0;
}
@@ -931,12 +970,12 @@ consider_adding_dir_authorities(or_options_t *options,
* Return 0 if all goes well, return -1 if things went badly.
*/
static int
-options_act_reversible(or_options_t *old_options, char **msg)
+options_act_reversible(const or_options_t *old_options, char **msg)
{
smartlist_t *new_listeners = smartlist_create();
smartlist_t *replaced_listeners = smartlist_create();
static int libevent_initialized = 0;
- or_options_t *options = get_options();
+ or_options_t *options = get_options_mutable();
int running_tor = options->command == CMD_RUN_TOR;
int set_conn_limit = 0;
int r = -1;
@@ -951,9 +990,15 @@ options_act_reversible(or_options_t *old_options, char **msg)
}
#ifndef HAVE_SYS_UN_H
- if (options->ControlSocket) {
- *msg = tor_strdup("Unix domain sockets (ControlSocket) not supported"
- " on this OS/with this build.");
+ if (options->ControlSocket || options->ControlSocketsGroupWritable) {
+ *msg = tor_strdup("Unix domain sockets (ControlSocket) not supported "
+ "on this OS/with this build.");
+ goto rollback;
+ }
+#else
+ if (options->ControlSocketsGroupWritable && !options->ControlSocket) {
+ *msg = tor_strdup("Setting ControlSocketGroupWritable without setting"
+ "a ControlSocket makes no sense.");
goto rollback;
}
#endif
@@ -1014,7 +1059,8 @@ options_act_reversible(or_options_t *old_options, char **msg)
/* Ensure data directory is private; create if possible. */
if (check_private_dir(options->DataDirectory,
- running_tor ? CPD_CREATE : CPD_CHECK)<0) {
+ running_tor ? CPD_CREATE : CPD_CHECK,
+ options->User)<0) {
tor_asprintf(msg,
"Couldn't access/create private data directory \"%s\"",
options->DataDirectory);
@@ -1022,12 +1068,13 @@ options_act_reversible(or_options_t *old_options, char **msg)
/* No need to roll back, since you can't change the value. */
}
- if (directory_caches_v2_dir_info(options)) {
+ if (directory_caches_v2_dir_info(options)) {
size_t len = strlen(options->DataDirectory)+32;
char *fn = tor_malloc(len);
tor_snprintf(fn, len, "%s"PATH_SEPARATOR"cached-status",
options->DataDirectory);
- if (check_private_dir(fn, running_tor ? CPD_CREATE : CPD_CHECK) < 0) {
+ if (check_private_dir(fn, running_tor ? CPD_CREATE : CPD_CHECK,
+ options->User) < 0) {
tor_asprintf(msg,
"Couldn't access/create private data directory \"%s\"", fn);
tor_free(fn);
@@ -1097,7 +1144,7 @@ options_act_reversible(or_options_t *old_options, char **msg)
/** If we need to have a GEOIP ip-to-country map to run with our configured
* options, return 1 and set *<b>reason_out</b> to a description of why. */
int
-options_need_geoip_info(or_options_t *options, const char **reason_out)
+options_need_geoip_info(const or_options_t *options, const char **reason_out)
{
int bridge_usage =
options->BridgeRelay && options->BridgeRecordUsageByCountry;
@@ -1122,7 +1169,7 @@ options_need_geoip_info(or_options_t *options, const char **reason_out)
/** Return the bandwidthrate that we are going to report to the authorities
* based on the config options. */
uint32_t
-get_effective_bwrate(or_options_t *options)
+get_effective_bwrate(const or_options_t *options)
{
uint64_t bw = options->BandwidthRate;
if (bw > options->MaxAdvertisedBandwidth)
@@ -1136,7 +1183,7 @@ get_effective_bwrate(or_options_t *options)
/** Return the bandwidthburst that we are going to report to the authorities
* based on the config options. */
uint32_t
-get_effective_bwburst(or_options_t *options)
+get_effective_bwburst(const or_options_t *options)
{
uint64_t bw = options->BandwidthBurst;
if (options->RelayBandwidthBurst > 0 && bw > options->RelayBandwidthBurst)
@@ -1155,12 +1202,14 @@ get_effective_bwburst(or_options_t *options)
* here yet. Some is still in do_hup() and other places.
*/
static int
-options_act(or_options_t *old_options)
+options_act(const or_options_t *old_options)
{
config_line_t *cl;
- or_options_t *options = get_options();
+ or_options_t *options = get_options_mutable();
int running_tor = options->command == CMD_RUN_TOR;
char *msg;
+ const int transition_affects_workers =
+ old_options && options_transition_affects_workers(old_options, options);
if (running_tor && !have_lockfile()) {
if (try_locking(options, 1) < 0)
@@ -1170,8 +1219,20 @@ options_act(or_options_t *old_options)
if (consider_adding_dir_authorities(options, old_options) < 0)
return -1;
+ clear_transport_list();
+ if (options->ClientTransportPlugin) {
+ for (cl = options->ClientTransportPlugin; cl; cl = cl->next) {
+ if (parse_client_transport_line(cl->value, 0)<0) {
+ log_warn(LD_BUG,
+ "Previously validated ClientTransportPlugin line "
+ "could not be added!");
+ return -1;
+ }
+ }
+ }
+
if (options->Bridges) {
- clear_bridge_list();
+ mark_bridge_list();
for (cl = options->Bridges; cl; cl = cl->next) {
if (parse_bridge_line(cl->value, 0)<0) {
log_warn(LD_BUG,
@@ -1179,8 +1240,14 @@ options_act(or_options_t *old_options)
return -1;
}
}
+ sweep_bridge_list();
}
+ /* If we have pluggable transport related options enabled, see if we
+ should warn the user about potential configuration problems. */
+ if (options->Bridges || options->ClientTransportPlugin)
+ validate_pluggable_transports_config();
+
if (running_tor && rend_config_services(options, 0)<0) {
log_warn(LD_BUG,
"Previously validated hidden services line could not be added!");
@@ -1211,6 +1278,17 @@ options_act(or_options_t *old_options)
finish_daemon(options->DataDirectory);
}
+ /* We want to reinit keys as needed before we do much of anything else:
+ keys are important, and other things can depend on them. */
+ if (transition_affects_workers ||
+ (options->V3AuthoritativeDir && (!old_options ||
+ !old_options->V3AuthoritativeDir))) {
+ if (init_keys() < 0) {
+ log_warn(LD_BUG,"Error initializing keys; exiting");
+ return -1;
+ }
+ }
+
/* Write our PID to the PID file. If we do not have write permissions we
* will log a warning */
if (options->PidFile)
@@ -1232,6 +1310,8 @@ options_act(or_options_t *old_options)
return -1;
}
+ monitor_owning_controller_process(options->OwningControllerProcess);
+
/* reload keys as needed for rendezvous services. */
if (rend_service_load_keys()<0) {
log_warn(LD_GENERAL,"Error loading rendezvous service keys");
@@ -1257,42 +1337,54 @@ options_act(or_options_t *old_options)
connection_bucket_init();
#endif
- /* parse RefuseUnknownExits tristate */
- if (!strcmp(options->RefuseUnknownExits, "0"))
- options->RefuseUnknownExits_ = 0;
- else if (!strcmp(options->RefuseUnknownExits, "1"))
- options->RefuseUnknownExits_ = 1;
- else if (!strcmp(options->RefuseUnknownExits, "auto"))
- options->RefuseUnknownExits_ = -1;
- else {
- /* Should have caught this in options_validate */
- return -1;
- }
-
/* Change the cell EWMA settings */
cell_ewma_set_scale_factor(options, networkstatus_get_latest_consensus());
/* Check for transitions that need action. */
if (old_options) {
-
+ int revise_trackexithosts = 0;
+ int revise_automap_entries = 0;
if ((options->UseEntryGuards && !old_options->UseEntryGuards) ||
- (options->ExcludeNodes &&
- !routerset_equal(old_options->ExcludeNodes,options->ExcludeNodes)) ||
- (options->ExcludeExitNodes &&
- !routerset_equal(old_options->ExcludeExitNodes,
- options->ExcludeExitNodes)) ||
- (options->EntryNodes &&
- !routerset_equal(old_options->EntryNodes, options->EntryNodes)) ||
- (options->ExitNodes &&
- !routerset_equal(old_options->ExitNodes, options->ExitNodes)) ||
+ options->UseBridges != old_options->UseBridges ||
+ (options->UseBridges &&
+ !config_lines_eq(options->Bridges, old_options->Bridges)) ||
+ !routerset_equal(old_options->ExcludeNodes,options->ExcludeNodes) ||
+ !routerset_equal(old_options->ExcludeExitNodes,
+ options->ExcludeExitNodes) ||
+ !routerset_equal(old_options->EntryNodes, options->EntryNodes) ||
+ !routerset_equal(old_options->ExitNodes, options->ExitNodes) ||
options->StrictNodes != old_options->StrictNodes) {
log_info(LD_CIRC,
- "Changed to using entry guards, or changed preferred or "
- "excluded node lists. Abandoning previous circuits.");
+ "Changed to using entry guards or bridges, or changed "
+ "preferred or excluded node lists. "
+ "Abandoning previous circuits.");
circuit_mark_all_unused_circs();
circuit_expire_all_dirty_circs();
+ revise_trackexithosts = 1;
+ }
+
+ if (!smartlist_strings_eq(old_options->TrackHostExits,
+ options->TrackHostExits))
+ revise_trackexithosts = 1;
+
+ if (revise_trackexithosts)
+ addressmap_clear_excluded_trackexithosts(options);
+
+ if (!options->AutomapHostsOnResolve) {
+ if (old_options->AutomapHostsOnResolve)
+ revise_automap_entries = 1;
+ } else {
+ if (!smartlist_strings_eq(old_options->AutomapHostsSuffixes,
+ options->AutomapHostsSuffixes))
+ revise_automap_entries = 1;
+ else if (!opt_streq(old_options->VirtualAddrNetwork,
+ options->VirtualAddrNetwork))
+ revise_automap_entries = 1;
}
+ if (revise_automap_entries)
+ addressmap_clear_invalid_automaps(options);
+
/* How long should we delay counting bridge stats after becoming a bridge?
* We use this so we don't count people who used our bridge thinking it is
* a relay. If you change this, don't forget to change the log message
@@ -1319,14 +1411,11 @@ options_act(or_options_t *old_options)
}
}
- if (options_transition_affects_workers(old_options, options)) {
+ if (transition_affects_workers) {
log_info(LD_GENERAL,
"Worker-related options changed. Rotating workers.");
+
if (server_mode(options) && !server_mode(old_options)) {
- if (init_keys() < 0) {
- log_warn(LD_BUG,"Error initializing keys; exiting");
- return -1;
- }
ip_address_changed(0);
if (can_complete_circuit || !any_predicted_circuits(time(NULL)))
inform_testing_reachability();
@@ -1339,9 +1428,6 @@ options_act(or_options_t *old_options)
return -1;
}
- if (options->V3AuthoritativeDir && !old_options->V3AuthoritativeDir)
- init_keys();
-
if (options->PerConnBWRate != old_options->PerConnBWRate ||
options->PerConnBWBurst != old_options->PerConnBWBurst)
connection_or_update_token_buckets(get_connection_array(), options);
@@ -1353,7 +1439,7 @@ options_act(or_options_t *old_options)
|| !geoip_is_loaded())) {
/* XXXX Don't use this "<default>" junk; make our filename options
* understand prefixes somehow. -NM */
- /* XXXX021 Reload GeoIPFile on SIGHUP. -NM */
+ /* XXXX023 Reload GeoIPFile on SIGHUP. -NM */
char *actual_fname = tor_strdup(options->GeoIPFile);
#ifdef WIN32
if (!strcmp(actual_fname, "<default>")) {
@@ -1368,48 +1454,54 @@ options_act(or_options_t *old_options)
tor_free(actual_fname);
}
- if (options->DirReqStatistics && !geoip_is_loaded()) {
- /* Check if GeoIP database could be loaded. */
- log_warn(LD_CONFIG, "Configured to measure directory request "
- "statistics, but no GeoIP database found!");
- return -1;
- }
-
- if (options->EntryStatistics) {
- if (should_record_bridge_info(options)) {
- /* Don't allow measuring statistics on entry guards when configured
- * as bridge. */
- log_warn(LD_CONFIG, "Bridges cannot be configured to measure "
- "additional GeoIP statistics as entry guards.");
- return -1;
- } else if (!geoip_is_loaded()) {
- /* Check if GeoIP database could be loaded. */
- log_warn(LD_CONFIG, "Configured to measure entry node statistics, "
- "but no GeoIP database found!");
- return -1;
- }
- }
-
if (options->CellStatistics || options->DirReqStatistics ||
options->EntryStatistics || options->ExitPortStatistics ||
options->ConnDirectionStatistics) {
time_t now = time(NULL);
+ int print_notice = 0;
if ((!old_options || !old_options->CellStatistics) &&
- options->CellStatistics)
+ options->CellStatistics) {
rep_hist_buffer_stats_init(now);
+ print_notice = 1;
+ }
if ((!old_options || !old_options->DirReqStatistics) &&
- options->DirReqStatistics)
- geoip_dirreq_stats_init(now);
+ options->DirReqStatistics) {
+ if (geoip_is_loaded()) {
+ geoip_dirreq_stats_init(now);
+ print_notice = 1;
+ } else {
+ options->DirReqStatistics = 0;
+ /* Don't warn Tor clients, they don't use statistics */
+ if (options->ORPort)
+ log_notice(LD_CONFIG, "Configured to measure directory request "
+ "statistics, but no GeoIP database found. "
+ "Please specify a GeoIP database using the "
+ "GeoIPFile option.");
+ }
+ }
if ((!old_options || !old_options->EntryStatistics) &&
- options->EntryStatistics)
- geoip_entry_stats_init(now);
+ options->EntryStatistics && !should_record_bridge_info(options)) {
+ if (geoip_is_loaded()) {
+ geoip_entry_stats_init(now);
+ print_notice = 1;
+ } else {
+ options->EntryStatistics = 0;
+ log_notice(LD_CONFIG, "Configured to measure entry node "
+ "statistics, but no GeoIP database found. "
+ "Please specify a GeoIP database using the "
+ "GeoIPFile option.");
+ }
+ }
if ((!old_options || !old_options->ExitPortStatistics) &&
- options->ExitPortStatistics)
+ options->ExitPortStatistics) {
rep_hist_exit_stats_init(now);
+ print_notice = 1;
+ }
if ((!old_options || !old_options->ConnDirectionStatistics) &&
- options->ConnDirectionStatistics)
+ options->ConnDirectionStatistics) {
rep_hist_conn_stats_init(now);
- if (!old_options)
+ }
+ if (print_notice)
log_notice(LD_CONFIG, "Configured to measure statistics. Look for "
"the *-stats files that will first be written to the "
"data directory in 24 hours from now.");
@@ -1434,7 +1526,8 @@ options_act(or_options_t *old_options)
/* Check if we need to parse and add the EntryNodes config option. */
if (options->EntryNodes &&
(!old_options ||
- (!routerset_equal(old_options->EntryNodes,options->EntryNodes))))
+ !routerset_equal(old_options->EntryNodes,options->EntryNodes) ||
+ !routerset_equal(old_options->ExcludeNodes,options->ExcludeNodes)))
entry_nodes_should_be_added();
/* Since our options changed, we might need to regenerate and upload our
@@ -1442,7 +1535,7 @@ options_act(or_options_t *old_options)
*/
if (!old_options ||
options_transition_affects_descriptor(old_options, options))
- mark_my_descriptor_dirty();
+ mark_my_descriptor_dirty("config change");
/* We may need to reschedule some directory stuff if our status changed. */
if (old_options) {
@@ -1486,7 +1579,7 @@ options_act(or_options_t *old_options)
* apply abbreviations that work for the config file and the command line.
* If <b>warn_obsolete</b> is set, warn about deprecated names. */
static const char *
-expand_abbrev(config_format_t *fmt, const char *option, int command_line,
+expand_abbrev(const config_format_t *fmt, const char *option, int command_line,
int warn_obsolete)
{
int i;
@@ -1646,12 +1739,9 @@ config_free_lines(config_line_t *front)
}
}
-/** If <b>key</b> is a configuration option, return the corresponding
- * config_var_t. Otherwise, if <b>key</b> is a non-standard abbreviation,
- * warn, and return the corresponding config_var_t. Otherwise return NULL.
- */
+/** As config_find_option, but return a non-const pointer. */
static config_var_t *
-config_find_option(config_format_t *fmt, const char *key)
+config_find_option_mutable(config_format_t *fmt, const char *key)
{
int i;
size_t keylen = strlen(key);
@@ -1676,9 +1766,20 @@ config_find_option(config_format_t *fmt, const char *key)
return NULL;
}
+/** If <b>key</b> is a configuration option, return the corresponding const
+ * config_var_t. Otherwise, if <b>key</b> is a non-standard abbreviation,
+ * warn, and return the corresponding const config_var_t. Otherwise return
+ * NULL.
+ */
+static const config_var_t *
+config_find_option(const config_format_t *fmt, const char *key)
+{
+ return config_find_option_mutable((config_format_t*)fmt, key);
+}
+
/** Return the number of option entries in <b>fmt</b>. */
static int
-config_count_options(config_format_t *fmt)
+config_count_options(const config_format_t *fmt)
{
int i;
for (i=0; fmt->vars[i].name; ++i)
@@ -1696,11 +1797,11 @@ config_count_options(config_format_t *fmt)
* Called from config_assign_line() and option_reset().
*/
static int
-config_assign_value(config_format_t *fmt, or_options_t *options,
+config_assign_value(const config_format_t *fmt, or_options_t *options,
config_line_t *c, char **msg)
{
int i, ok;
- config_var_t *var;
+ const config_var_t *var;
void *lvalue;
CHECK(fmt, options);
@@ -1712,8 +1813,16 @@ config_assign_value(config_format_t *fmt, or_options_t *options,
switch (var->type) {
+ case CONFIG_TYPE_PORT:
+ if (!strcasecmp(c->value, "auto")) {
+ *(int *)lvalue = CFG_AUTO_PORT;
+ break;
+ }
+ /* fall through */
case CONFIG_TYPE_UINT:
- i = (int)tor_parse_long(c->value, 10, 0, INT_MAX, &ok, NULL);
+ i = (int)tor_parse_long(c->value, 10, 0,
+ var->type==CONFIG_TYPE_PORT ? 65535 : INT_MAX,
+ &ok, NULL);
if (!ok) {
tor_asprintf(msg,
"Int keyword '%s %s' is malformed or out of bounds.",
@@ -1770,6 +1879,20 @@ config_assign_value(config_format_t *fmt, or_options_t *options,
*(int *)lvalue = i;
break;
+ case CONFIG_TYPE_AUTOBOOL:
+ if (!strcmp(c->value, "auto"))
+ *(int *)lvalue = -1;
+ else if (!strcmp(c->value, "0"))
+ *(int *)lvalue = 0;
+ else if (!strcmp(c->value, "1"))
+ *(int *)lvalue = 1;
+ else {
+ tor_asprintf(msg, "Boolean '%s %s' expects 0, 1, or 'auto'.",
+ c->key, c->value);
+ return -1;
+ }
+ break;
+
case CONFIG_TYPE_STRING:
case CONFIG_TYPE_FILENAME:
tor_free(*(char **)lvalue);
@@ -1840,11 +1963,11 @@ config_assign_value(config_format_t *fmt, or_options_t *options,
* Called from config_assign().
*/
static int
-config_assign_line(config_format_t *fmt, or_options_t *options,
+config_assign_line(const config_format_t *fmt, or_options_t *options,
config_line_t *c, int use_defaults,
int clear_first, bitarray_t *options_seen, char **msg)
{
- config_var_t *var;
+ const config_var_t *var;
CHECK(fmt, options);
@@ -1905,10 +2028,10 @@ config_assign_line(config_format_t *fmt, or_options_t *options,
/** Restore the option named <b>key</b> in options to its default value.
* Called from config_assign(). */
static void
-config_reset_line(config_format_t *fmt, or_options_t *options,
+config_reset_line(const config_format_t *fmt, or_options_t *options,
const char *key, int use_defaults)
{
- config_var_t *var;
+ const config_var_t *var;
CHECK(fmt, options);
@@ -1923,7 +2046,7 @@ config_reset_line(config_format_t *fmt, or_options_t *options,
int
option_is_recognized(const char *key)
{
- config_var_t *var = config_find_option(&options_format, key);
+ const config_var_t *var = config_find_option(&options_format, key);
return (var != NULL);
}
@@ -1932,14 +2055,14 @@ option_is_recognized(const char *key)
const char *
option_get_canonical_name(const char *key)
{
- config_var_t *var = config_find_option(&options_format, key);
+ const config_var_t *var = config_find_option(&options_format, key);
return var ? var->name : NULL;
}
/** Return a canonical list of the options assigned for key.
*/
config_line_t *
-option_get_assignment(or_options_t *options, const char *key)
+option_get_assignment(const or_options_t *options, const char *key)
{
return get_assigned_option(&options_format, options, key, 1);
}
@@ -1992,10 +2115,10 @@ config_lines_dup(const config_line_t *inp)
* value needs to be quoted before it's put in a config file, quote and
* escape that value. Return NULL if no such key exists. */
static config_line_t *
-get_assigned_option(config_format_t *fmt, void *options,
+get_assigned_option(const config_format_t *fmt, const void *options,
const char *key, int escape_val)
{
- config_var_t *var;
+ const config_var_t *var;
const void *value;
config_line_t *result;
tor_assert(options && key);
@@ -2033,6 +2156,13 @@ get_assigned_option(config_format_t *fmt, void *options,
}
escape_val = 0; /* Can't need escape. */
break;
+ case CONFIG_TYPE_PORT:
+ if (*(int*)value == CFG_AUTO_PORT) {
+ result->value = tor_strdup("auto");
+ escape_val = 0;
+ break;
+ }
+ /* fall through */
case CONFIG_TYPE_INTERVAL:
case CONFIG_TYPE_MSEC_INTERVAL:
case CONFIG_TYPE_UINT:
@@ -2050,6 +2180,14 @@ get_assigned_option(config_format_t *fmt, void *options,
tor_asprintf(&result->value, "%f", *(double*)value);
escape_val = 0; /* Can't need escape. */
break;
+
+ case CONFIG_TYPE_AUTOBOOL:
+ if (*(int*)value == -1) {
+ result->value = tor_strdup("auto");
+ escape_val = 0;
+ break;
+ }
+ /* fall through */
case CONFIG_TYPE_BOOL:
result->value = tor_strdup(*(int*)value ? "1" : "0");
escape_val = 0; /* Can't need escape. */
@@ -2162,7 +2300,7 @@ options_trial_assign() calls config_assign(1, 1)
returns.
*/
static int
-config_assign(config_format_t *fmt, void *options, config_line_t *list,
+config_assign(const config_format_t *fmt, void *options, config_line_t *list,
int use_defaults, int clear_first, char **msg)
{
config_line_t *p;
@@ -2224,7 +2362,7 @@ options_trial_assign(config_line_t *list, int use_defaults,
return r;
}
- if (options_validate(get_options(), trial_options, 1, msg) < 0) {
+ if (options_validate(get_options_mutable(), trial_options, 1, msg) < 0) {
config_free(&options_format, trial_options);
return SETOPT_ERR_PARSE; /*XXX make this a separate return value. */
}
@@ -2246,7 +2384,8 @@ options_trial_assign(config_line_t *list, int use_defaults,
/** Reset config option <b>var</b> to 0, 0.0, NULL, or the equivalent.
* Called from option_reset() and config_free(). */
static void
-option_clear(config_format_t *fmt, or_options_t *options, config_var_t *var)
+option_clear(const config_format_t *fmt, or_options_t *options,
+ const config_var_t *var)
{
void *lvalue = STRUCT_VAR_P(options, var->var_offset);
(void)fmt; /* unused */
@@ -2264,9 +2403,13 @@ option_clear(config_format_t *fmt, or_options_t *options, config_var_t *var)
case CONFIG_TYPE_INTERVAL:
case CONFIG_TYPE_MSEC_INTERVAL:
case CONFIG_TYPE_UINT:
+ case CONFIG_TYPE_PORT:
case CONFIG_TYPE_BOOL:
*(int*)lvalue = 0;
break;
+ case CONFIG_TYPE_AUTOBOOL:
+ *(int*)lvalue = -1;
+ break;
case CONFIG_TYPE_MEMUNIT:
*(uint64_t*)lvalue = 0;
break;
@@ -2300,8 +2443,8 @@ option_clear(config_format_t *fmt, or_options_t *options, config_var_t *var)
* <b>use_defaults</b>, set it to its default value.
* Called by config_init() and option_reset_line() and option_assign_line(). */
static void
-option_reset(config_format_t *fmt, or_options_t *options,
- config_var_t *var, int use_defaults)
+option_reset(const config_format_t *fmt, or_options_t *options,
+ const config_var_t *var, int use_defaults)
{
config_line_t *c;
char *msg = NULL;
@@ -2328,7 +2471,7 @@ print_usage(void)
printf(
"Copyright (c) 2001-2004, Roger Dingledine\n"
"Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson\n"
-"Copyright (c) 2007-2010, The Tor Project, Inc.\n\n"
+"Copyright (c) 2007-2011, The Tor Project, Inc.\n\n"
"tor -f <torrc> [args]\n"
"See man page for options, or https://www.torproject.org/ for "
"documentation.\n");
@@ -2341,7 +2484,7 @@ list_torrc_options(void)
int i;
smartlist_t *lines = smartlist_create();
for (i = 0; _option_vars[i].name; ++i) {
- config_var_t *var = &_option_vars[i];
+ const config_var_t *var = &_option_vars[i];
if (var->type == CONFIG_TYPE_OBSOLETE ||
var->type == CONFIG_TYPE_LINELIST_V)
continue;
@@ -2360,7 +2503,7 @@ static uint32_t last_resolved_addr = 0;
* public IP address.
*/
int
-resolve_my_address(int warn_severity, or_options_t *options,
+resolve_my_address(int warn_severity, const or_options_t *options,
uint32_t *addr_out, char **hostname_out)
{
struct in_addr in;
@@ -2517,7 +2660,7 @@ is_local_addr(const tor_addr_t *addr)
if (get_options()->EnforceDistinctSubnets == 0)
return 0;
if (tor_addr_family(addr) == AF_INET) {
- /*XXXX022 IP6 what corresponds to an /24? */
+ /*XXXX023 IP6 what corresponds to an /24? */
uint32_t ip = tor_addr_to_ipv4h(addr);
/* It's possible that this next check will hit before the first time
@@ -2534,57 +2677,9 @@ is_local_addr(const tor_addr_t *addr)
return 0;
}
-/** Called when we don't have a nickname set. Try to guess a good nickname
- * based on the hostname, and return it in a newly allocated string. If we
- * can't, return NULL and let the caller warn if it wants to. */
-static char *
-get_default_nickname(void)
-{
- static const char * const bad_default_nicknames[] = {
- "localhost",
- NULL,
- };
- char localhostname[256];
- char *cp, *out, *outp;
- int i;
-
- if (gethostname(localhostname, sizeof(localhostname)) < 0)
- return NULL;
-
- /* Put it in lowercase; stop at the first dot. */
- if ((cp = strchr(localhostname, '.')))
- *cp = '\0';
- tor_strlower(localhostname);
-
- /* Strip invalid characters. */
- cp = localhostname;
- out = outp = tor_malloc(strlen(localhostname) + 1);
- while (*cp) {
- if (strchr(LEGAL_NICKNAME_CHARACTERS, *cp))
- *outp++ = *cp++;
- else
- cp++;
- }
- *outp = '\0';
-
- /* Enforce length. */
- if (strlen(out) > MAX_NICKNAME_LEN)
- out[MAX_NICKNAME_LEN]='\0';
-
- /* Check for dumb names. */
- for (i = 0; bad_default_nicknames[i]; ++i) {
- if (!strcmp(out, bad_default_nicknames[i])) {
- tor_free(out);
- return NULL;
- }
- }
-
- return out;
-}
-
/** Release storage held by <b>options</b>. */
static void
-config_free(config_format_t *fmt, void *options)
+config_free(const config_format_t *fmt, void *options)
{
int i;
@@ -2623,8 +2718,9 @@ config_lines_eq(config_line_t *a, config_line_t *b)
* and <b>o2</b>. Must not be called for LINELIST_S or OBSOLETE options.
*/
static int
-option_is_same(config_format_t *fmt,
- or_options_t *o1, or_options_t *o2, const char *name)
+option_is_same(const config_format_t *fmt,
+ const or_options_t *o1, const or_options_t *o2,
+ const char *name)
{
config_line_t *c1, *c2;
int r = 1;
@@ -2641,7 +2737,7 @@ option_is_same(config_format_t *fmt,
/** Copy storage held by <b>old</b> into a new or_options_t and return it. */
static or_options_t *
-options_dup(config_format_t *fmt, or_options_t *old)
+options_dup(const config_format_t *fmt, const or_options_t *old)
{
or_options_t *newopts;
int i;
@@ -2689,7 +2785,7 @@ options_init(or_options_t *options)
* it is, or 0 if it isn't or the concept of a low port isn't applicable for
* the platform we're on. */
static int
-is_listening_on_low_port(uint16_t port_option,
+is_listening_on_low_port(int port_option,
const config_line_t *listen_options)
{
#ifdef MS_WINDOWS
@@ -2717,10 +2813,10 @@ is_listening_on_low_port(uint16_t port_option,
/** Set all vars in the configuration object <b>options</b> to their default
* values. */
static void
-config_init(config_format_t *fmt, void *options)
+config_init(const config_format_t *fmt, void *options)
{
int i;
- config_var_t *var;
+ const config_var_t *var;
CHECK(fmt, options);
for (i=0; fmt->vars[i].name; ++i) {
@@ -2736,7 +2832,7 @@ config_init(config_format_t *fmt, void *options)
* Else, if comment_defaults, write default values as comments.
*/
static char *
-config_dump(config_format_t *fmt, void *options, int minimal,
+config_dump(const config_format_t *fmt, const void *options, int minimal,
int comment_defaults)
{
smartlist_t *elements;
@@ -2804,7 +2900,7 @@ config_dump(config_format_t *fmt, void *options, int minimal,
* include options that are the same as Tor's defaults.
*/
char *
-options_dump(or_options_t *options, int minimal)
+options_dump(const or_options_t *options, int minimal)
{
return config_dump(&options_format, options, minimal, 0);
}
@@ -2863,26 +2959,28 @@ static int
compute_publishserverdescriptor(or_options_t *options)
{
smartlist_t *list = options->PublishServerDescriptor;
- authority_type_t *auth = &options->_PublishServerDescriptor;
- *auth = NO_AUTHORITY;
+ dirinfo_type_t *auth = &options->_PublishServerDescriptor;
+ *auth = NO_DIRINFO;
if (!list) /* empty list, answer is none */
return 0;
SMARTLIST_FOREACH(list, const char *, string, {
if (!strcasecmp(string, "v1"))
- *auth |= V1_AUTHORITY;
+ *auth |= V1_DIRINFO;
else if (!strcmp(string, "1"))
if (options->BridgeRelay)
- *auth |= BRIDGE_AUTHORITY;
+ *auth |= BRIDGE_DIRINFO;
else
- *auth |= V2_AUTHORITY | V3_AUTHORITY;
+ *auth |= V2_DIRINFO | V3_DIRINFO;
else if (!strcasecmp(string, "v2"))
- *auth |= V2_AUTHORITY;
+ *auth |= V2_DIRINFO;
else if (!strcasecmp(string, "v3"))
- *auth |= V3_AUTHORITY;
+ *auth |= V3_DIRINFO;
else if (!strcasecmp(string, "bridge"))
- *auth |= BRIDGE_AUTHORITY;
+ *auth |= BRIDGE_DIRINFO;
else if (!strcasecmp(string, "hidserv"))
- *auth |= HIDSERV_AUTHORITY;
+ log_warn(LD_CONFIG,
+ "PublishServerDescriptor hidserv is invalid. See "
+ "PublishHidServDescriptors.");
else if (!strcasecmp(string, "") || !strcmp(string, "0"))
/* no authority */;
else
@@ -2906,6 +3004,10 @@ compute_publishserverdescriptor(or_options_t *options)
* will generate too many circuits and potentially overload the network. */
#define MIN_CIRCUIT_STREAM_TIMEOUT 10
+/** Lowest allowable value for HeartbeatPeriod; if this is too low, we might
+ * expose more information than we're comfortable with. */
+#define MIN_HEARTBEAT_PERIOD (30*60)
+
/** Return 0 if every setting in <b>options</b> is reasonable, and a
* permissible transition from <b>old_options</b>. Else return -1.
* Should have no side effects, except for normalizing the contents of
@@ -2932,9 +3034,6 @@ options_validate(or_options_t *old_options, or_options_t *options,
tor_assert(msg);
*msg = NULL;
- if (options->ORPort < 0 || options->ORPort > 65535)
- REJECT("ORPort option out of bounds.");
-
if (server_mode(options) &&
(!strcmpstart(uname, "Windows 95") ||
!strcmpstart(uname, "Windows 98") ||
@@ -3008,14 +3107,7 @@ options_validate(or_options_t *old_options, or_options_t *options,
if (options->Nickname == NULL) {
if (server_mode(options)) {
- if (!(options->Nickname = get_default_nickname())) {
- log_notice(LD_CONFIG, "Couldn't pick a nickname based on "
- "our hostname; using %s instead.", UNNAMED_ROUTER_NICKNAME);
options->Nickname = tor_strdup(UNNAMED_ROUTER_NICKNAME);
- } else {
- log_notice(LD_CONFIG, "Choosing default nickname '%s'",
- options->Nickname);
- }
}
} else {
if (!is_legal_nickname(options->Nickname)) {
@@ -3045,29 +3137,11 @@ options_validate(or_options_t *old_options, or_options_t *options,
REJECT("Failed to resolve/guess local address. See logs for details.");
}
- if (strcmp(options->RefuseUnknownExits, "0") &&
- strcmp(options->RefuseUnknownExits, "1") &&
- strcmp(options->RefuseUnknownExits, "auto")) {
- REJECT("RefuseUnknownExits must be 0, 1, or auto");
- }
-
#ifndef MS_WINDOWS
if (options->RunAsDaemon && torrc_fname && path_is_relative(torrc_fname))
REJECT("Can't use a relative path to torrc when RunAsDaemon is set.");
#endif
- if (options->SocksPort < 0 || options->SocksPort > 65535)
- REJECT("SocksPort option out of bounds.");
-
- if (options->DNSPort < 0 || options->DNSPort > 65535)
- REJECT("DNSPort option out of bounds.");
-
- if (options->TransPort < 0 || options->TransPort > 65535)
- REJECT("TransPort option out of bounds.");
-
- if (options->NATDPort < 0 || options->NATDPort > 65535)
- REJECT("NATDPort option out of bounds.");
-
if (options->SocksPort == 0 && options->TransPort == 0 &&
options->NATDPort == 0 && options->ORPort == 0 &&
options->DNSPort == 0 && !options->RendConfigLines)
@@ -3076,12 +3150,6 @@ options_validate(or_options_t *old_options, or_options_t *options,
"undefined, and there aren't any hidden services configured. "
"Tor will still run, but probably won't do anything.");
- if (options->ControlPort < 0 || options->ControlPort > 65535)
- REJECT("ControlPort option out of bounds.");
-
- if (options->DirPort < 0 || options->DirPort > 65535)
- REJECT("DirPort option out of bounds.");
-
#ifndef USE_TRANSPARENT
if (options->TransPort || options->TransListenAddress)
REJECT("TransPort and TransListenAddress are disabled in this build.");
@@ -3174,6 +3242,10 @@ options_validate(or_options_t *old_options, or_options_t *options,
REJECT("FetchDirInfoExtraEarly requires that you also set "
"FetchDirInfoEarly");
+ if (options->HSAuthoritativeDir && proxy_mode(options))
+ REJECT("Running as authoritative v0 HS directory, but also configured "
+ "as a client.");
+
if (options->ConnLimit <= 0) {
tor_asprintf(msg,
"ConnLimit must be greater than 0, but was set to %d",
@@ -3282,6 +3354,12 @@ options_validate(or_options_t *old_options, or_options_t *options,
REJECT("Servers must be able to freely connect to the rest "
"of the Internet, so they must not set UseBridges.");
+ /* If both of these are set, we'll end up with funny behavior where we
+ * demand enough entrynodes be up and running else we won't build
+ * circuits, yet we never actually use them. */
+ if (options->UseBridges && options->EntryNodes)
+ REJECT("You cannot set both UseBridges and EntryNodes.");
+
options->_AllowInvalid = 0;
if (options->AllowInvalidNodes) {
SMARTLIST_FOREACH(options->AllowInvalidNodes, const char *, cp, {
@@ -3323,14 +3401,20 @@ options_validate(or_options_t *old_options, or_options_t *options,
}
if ((options->BridgeRelay
- || options->_PublishServerDescriptor & BRIDGE_AUTHORITY)
+ || options->_PublishServerDescriptor & BRIDGE_DIRINFO)
&& (options->_PublishServerDescriptor
- & (V1_AUTHORITY|V2_AUTHORITY|V3_AUTHORITY))) {
+ & (V1_DIRINFO|V2_DIRINFO|V3_DIRINFO))) {
REJECT("Bridges are not supposed to publish router descriptors to the "
"directory authorities. Please correct your "
"PublishServerDescriptor line.");
}
+ if (options->BridgeRelay && options->DirPort) {
+ log_warn(LD_CONFIG, "Can't set a DirPort on a bridge relay; disabling "
+ "DirPort");
+ options->DirPort = 0;
+ }
+
if (options->MinUptimeHidServDirectoryV2 < 0) {
log_warn(LD_CONFIG, "MinUptimeHidServDirectoryV2 option must be at "
"least 0 seconds. Changing to 0.");
@@ -3362,6 +3446,13 @@ options_validate(or_options_t *old_options, or_options_t *options,
options->CircuitStreamTimeout = MIN_CIRCUIT_STREAM_TIMEOUT;
}
+ if (options->HeartbeatPeriod &&
+ options->HeartbeatPeriod < MIN_HEARTBEAT_PERIOD) {
+ log_warn(LD_CONFIG, "HeartbeatPeriod option is too short; "
+ "raising to %d seconds.", MIN_HEARTBEAT_PERIOD);
+ options->HeartbeatPeriod = MIN_HEARTBEAT_PERIOD;
+ }
+
if (options->KeepalivePeriod < 1)
REJECT("KeepalivePeriod option must be positive.");
@@ -3387,6 +3478,11 @@ options_validate(or_options_t *old_options, or_options_t *options,
"PerConnBWBurst", msg) < 0)
return -1;
+ if (options->RelayBandwidthRate && !options->RelayBandwidthBurst)
+ options->RelayBandwidthBurst = options->RelayBandwidthRate;
+ if (options->RelayBandwidthBurst && !options->RelayBandwidthRate)
+ options->RelayBandwidthRate = options->RelayBandwidthBurst;
+
if (server_mode(options)) {
if (options->BandwidthRate < ROUTER_REQUIRED_MIN_BANDWIDTH) {
tor_asprintf(msg,
@@ -3415,9 +3511,6 @@ options_validate(or_options_t *old_options, or_options_t *options,
}
}
- if (options->RelayBandwidthRate && !options->RelayBandwidthBurst)
- options->RelayBandwidthBurst = options->RelayBandwidthRate;
-
if (options->RelayBandwidthRate > options->RelayBandwidthBurst)
REJECT("RelayBandwidthBurst must be at least equal "
"to RelayBandwidthRate.");
@@ -3445,8 +3538,8 @@ options_validate(or_options_t *old_options, or_options_t *options,
}
if (options->HTTPProxyAuthenticator) {
- if (strlen(options->HTTPProxyAuthenticator) >= 48)
- REJECT("HTTPProxyAuthenticator is too long (>= 48 chars).");
+ if (strlen(options->HTTPProxyAuthenticator) >= 512)
+ REJECT("HTTPProxyAuthenticator is too long (>= 512 chars).");
}
if (options->HTTPSProxy) { /* parse it now */
@@ -3459,8 +3552,8 @@ options_validate(or_options_t *old_options, or_options_t *options,
}
if (options->HTTPSProxyAuthenticator) {
- if (strlen(options->HTTPSProxyAuthenticator) >= 48)
- REJECT("HTTPSProxyAuthenticator is too long (>= 48 chars).");
+ if (strlen(options->HTTPSProxyAuthenticator) >= 512)
+ REJECT("HTTPSProxyAuthenticator is too long (>= 512 chars).");
}
if (options->Socks4Proxy) { /* parse it now */
@@ -3483,8 +3576,11 @@ options_validate(or_options_t *old_options, or_options_t *options,
}
}
- if (options->Socks4Proxy && options->Socks5Proxy)
- REJECT("You cannot specify both Socks4Proxy and SOCKS5Proxy");
+ /* Check if more than one proxy type has been enabled. */
+ if (!!options->Socks4Proxy + !!options->Socks5Proxy +
+ !!options->HTTPSProxy + !!options->ClientTransportPlugin > 1)
+ REJECT("You have configured more than one proxy type. "
+ "(Socks4Proxy|Socks5Proxy|HTTPSProxy|ClientTransportPlugin)");
if (options->Socks5ProxyUsername) {
size_t len;
@@ -3523,6 +3619,16 @@ options_validate(or_options_t *old_options, or_options_t *options,
}
}
+ if (options->OwningControllerProcess) {
+ const char *validate_pspec_msg = NULL;
+ if (tor_validate_process_specifier(options->OwningControllerProcess,
+ &validate_pspec_msg)) {
+ tor_asprintf(msg, "Bad OwningControllerProcess: %s",
+ validate_pspec_msg);
+ return -1;
+ }
+ }
+
if (options->ControlListenAddress) {
int all_are_local = 1;
config_line_t *ln;
@@ -3566,10 +3672,9 @@ options_validate(or_options_t *old_options, or_options_t *options,
}
if (options->CookieAuthFileGroupReadable && !options->CookieAuthFile) {
- log_warn(LD_CONFIG, "You set the CookieAuthFileGroupReadable but did "
- "not configure a the path for the cookie file via "
- "CookieAuthFile. This means your cookie will not be group "
- "readable.");
+ log_warn(LD_CONFIG, "CookieAuthFileGroupReadable is set, but will have "
+ "no effect: you must specify an explicit CookieAuthFile to "
+ "have it group-readable.");
}
if (options->UseEntryGuards && ! options->NumEntryGuards)
@@ -3596,11 +3701,15 @@ options_validate(or_options_t *old_options, or_options_t *options,
REJECT("If you set UseBridges, you must specify at least one bridge.");
if (options->UseBridges && !options->TunnelDirConns)
REJECT("If you set UseBridges, you must set TunnelDirConns.");
- if (options->Bridges) {
- for (cl = options->Bridges; cl; cl = cl->next) {
- if (parse_bridge_line(cl->value, 1)<0)
- REJECT("Bridge line did not parse. See logs for details.");
- }
+
+ for (cl = options->ClientTransportPlugin; cl; cl = cl->next) {
+ if (parse_client_transport_line(cl->value, 1)<0)
+ REJECT("Transport line did not parse. See logs for details.");
+ }
+
+ for (cl = options->Bridges; cl; cl = cl->next) {
+ if (parse_bridge_line(cl->value, 1)<0)
+ REJECT("Bridge line did not parse. See logs for details.");
}
if (options->ConstrainedSockets) {
@@ -3687,12 +3796,12 @@ options_validate(or_options_t *old_options, or_options_t *options,
"ignore you.");
}
- /*XXXX022 checking for defaults manually like this is a bit fragile.*/
+ /*XXXX023 checking for defaults manually like this is a bit fragile.*/
/* Keep changes to hard-coded values synchronous to man page and default
* values table. */
if (options->TestingV3AuthInitialVotingInterval != 30*60 &&
- !options->TestingTorNetwork) {
+ !options->TestingTorNetwork && !options->_UsingTestNetworkDefaults) {
REJECT("TestingV3AuthInitialVotingInterval may only be changed in testing "
"Tor networks!");
} else if (options->TestingV3AuthInitialVotingInterval < MIN_VOTE_INTERVAL) {
@@ -3703,7 +3812,8 @@ options_validate(or_options_t *old_options, or_options_t *options,
}
if (options->TestingV3AuthInitialVoteDelay != 5*60 &&
- !options->TestingTorNetwork) {
+ !options->TestingTorNetwork && !options->_UsingTestNetworkDefaults) {
+
REJECT("TestingV3AuthInitialVoteDelay may only be changed in testing "
"Tor networks!");
} else if (options->TestingV3AuthInitialVoteDelay < MIN_VOTE_SECONDS) {
@@ -3711,7 +3821,7 @@ options_validate(or_options_t *old_options, or_options_t *options,
}
if (options->TestingV3AuthInitialDistDelay != 5*60 &&
- !options->TestingTorNetwork) {
+ !options->TestingTorNetwork && !options->_UsingTestNetworkDefaults) {
REJECT("TestingV3AuthInitialDistDelay may only be changed in testing "
"Tor networks!");
} else if (options->TestingV3AuthInitialDistDelay < MIN_DIST_SECONDS) {
@@ -3726,7 +3836,7 @@ options_validate(or_options_t *old_options, or_options_t *options,
}
if (options->TestingAuthDirTimeToLearnReachability != 30*60 &&
- !options->TestingTorNetwork) {
+ !options->TestingTorNetwork && !options->_UsingTestNetworkDefaults) {
REJECT("TestingAuthDirTimeToLearnReachability may only be changed in "
"testing Tor networks!");
} else if (options->TestingAuthDirTimeToLearnReachability < 0) {
@@ -3736,7 +3846,7 @@ options_validate(or_options_t *old_options, or_options_t *options,
}
if (options->TestingEstimatedDescriptorPropagationTime != 10*60 &&
- !options->TestingTorNetwork) {
+ !options->TestingTorNetwork && !options->_UsingTestNetworkDefaults) {
REJECT("TestingEstimatedDescriptorPropagationTime may only be changed in "
"testing Tor networks!");
} else if (options->TestingEstimatedDescriptorPropagationTime < 0) {
@@ -3792,7 +3902,8 @@ opt_streq(const char *s1, const char *s2)
/** Check if any of the previous options have changed but aren't allowed to. */
static int
-options_transition_allowed(or_options_t *old, or_options_t *new_val,
+options_transition_allowed(const or_options_t *old,
+ const or_options_t *new_val,
char **msg)
{
if (!old)
@@ -3848,17 +3959,19 @@ options_transition_allowed(or_options_t *old, or_options_t *new_val,
/** Return 1 if any change from <b>old_options</b> to <b>new_options</b>
* will require us to rotate the CPU and DNS workers; else return 0. */
static int
-options_transition_affects_workers(or_options_t *old_options,
- or_options_t *new_options)
+options_transition_affects_workers(const or_options_t *old_options,
+ const or_options_t *new_options)
{
if (!opt_streq(old_options->DataDirectory, new_options->DataDirectory) ||
old_options->NumCPUs != new_options->NumCPUs ||
old_options->ORPort != new_options->ORPort ||
old_options->ServerDNSSearchDomains !=
new_options->ServerDNSSearchDomains ||
- old_options->SafeLogging != new_options->SafeLogging ||
+ old_options->_SafeLogging != new_options->_SafeLogging ||
old_options->ClientOnly != new_options->ClientOnly ||
- !config_lines_eq(old_options->Logs, new_options->Logs))
+ public_server_mode(old_options) != public_server_mode(new_options) ||
+ !config_lines_eq(old_options->Logs, new_options->Logs) ||
+ old_options->LogMessageDomains != new_options->LogMessageDomains)
return 1;
/* Check whether log options match. */
@@ -3870,8 +3983,8 @@ options_transition_affects_workers(or_options_t *old_options,
/** Return 1 if any change from <b>old_options</b> to <b>new_options</b>
* will require us to generate a new descriptor; else return 0. */
static int
-options_transition_affects_descriptor(or_options_t *old_options,
- or_options_t *new_options)
+options_transition_affects_descriptor(const or_options_t *old_options,
+ const or_options_t *new_options)
{
/* XXX We can be smarter here. If your DirPort isn't being
* published and you just turned it off, no need to republish. Etc. */
@@ -3892,7 +4005,8 @@ options_transition_affects_descriptor(or_options_t *old_options,
!opt_streq(old_options->ContactInfo, new_options->ContactInfo) ||
!opt_streq(old_options->MyFamily, new_options->MyFamily) ||
!opt_streq(old_options->AccountingStart, new_options->AccountingStart) ||
- old_options->AccountingMax != new_options->AccountingMax)
+ old_options->AccountingMax != new_options->AccountingMax ||
+ public_server_mode(old_options) != public_server_mode(new_options))
return 1;
return 0;
@@ -4075,6 +4189,8 @@ load_torrc_from_disk(int argc, char **argv)
"Unable to open configuration file \"%s\".", fname);
goto err;
}
+ } else {
+ log(LOG_NOTICE, LD_CONFIG, "Read configuration file \"%s\".", fname);
}
return cf;
@@ -4235,9 +4351,9 @@ options_init_from_string(const char *cf,
/* Change defaults. */
int i;
for (i = 0; testing_tor_network_defaults[i].name; ++i) {
- config_var_t *new_var = &testing_tor_network_defaults[i];
+ const config_var_t *new_var = &testing_tor_network_defaults[i];
config_var_t *old_var =
- config_find_option(&options_format, new_var->name);
+ config_find_option_mutable(&options_format, new_var->name);
tor_assert(new_var);
tor_assert(old_var);
old_var->initvalue = new_var->initvalue;
@@ -4314,7 +4430,7 @@ get_torrc_fname(void)
* configuration <b>options</b>
*/
void
-config_register_addressmaps(or_options_t *options)
+config_register_addressmaps(const or_options_t *options)
{
smartlist_t *elts;
config_line_t *opt;
@@ -4443,11 +4559,13 @@ options_init_logs(or_options_t *options, int validate_only)
if (smartlist_len(elts) == 2 &&
!strcasecmp(smartlist_get(elts,0), "file")) {
if (!validate_only) {
- if (add_file_log(severity, smartlist_get(elts, 1)) < 0) {
+ char *fname = expand_filename(smartlist_get(elts, 1));
+ if (add_file_log(severity, fname) < 0) {
log_warn(LD_CONFIG, "Couldn't open file for 'Log %s': %s",
opt->value, strerror(errno));
ok = 0;
}
+ tor_free(fname);
}
goto cleanup;
}
@@ -4463,6 +4581,9 @@ options_init_logs(or_options_t *options, int validate_only)
}
smartlist_free(elts);
+ if (ok && !validate_only)
+ logs_set_domain_logging(options->LogMessageDomains);
+
return ok?0:-1;
}
@@ -4476,6 +4597,8 @@ parse_bridge_line(const char *line, int validate_only)
smartlist_t *items = NULL;
int r;
char *addrport=NULL, *fingerprint=NULL;
+ char *transport_name=NULL;
+ char *field1=NULL;
tor_addr_t addr;
uint16_t port = 0;
char digest[DIGEST_LEN];
@@ -4487,8 +4610,24 @@ parse_bridge_line(const char *line, int validate_only)
log_warn(LD_CONFIG, "Too few arguments to Bridge line.");
goto err;
}
- addrport = smartlist_get(items, 0);
+
+ /* field1 is either a transport name or addrport */
+ field1 = smartlist_get(items, 0);
smartlist_del_keeporder(items, 0);
+
+ if (!(strstr(field1, ".") || strstr(field1, ":"))) {
+ /* new-style bridge line */
+ transport_name = field1;
+ if (smartlist_len(items) < 1) {
+ log_warn(LD_CONFIG, "Too few items to Bridge line.");
+ goto err;
+ }
+ addrport = smartlist_get(items, 0);
+ smartlist_del_keeporder(items, 0);
+ } else {
+ addrport = field1;
+ }
+
if (tor_addr_port_parse(addrport, &addr, &port)<0) {
log_warn(LD_CONFIG, "Error parsing Bridge address '%s'", addrport);
goto err;
@@ -4513,23 +4652,101 @@ parse_bridge_line(const char *line, int validate_only)
}
if (!validate_only) {
- log_debug(LD_DIR, "Bridge at %s:%d (%s)", fmt_addr(&addr),
- (int)port,
+ log_debug(LD_DIR, "Bridge at %s:%d (transport: %s) (%s)",
+ fmt_addr(&addr), (int)port,
+ transport_name ? transport_name : "no transport",
fingerprint ? fingerprint : "no key listed");
- bridge_add_from_config(&addr, port, fingerprint ? digest : NULL);
+ bridge_add_from_config(&addr, port,
+ fingerprint ? digest : NULL, transport_name);
}
r = 0;
goto done;
- err:
+ err:
r = -1;
- done:
+ done:
SMARTLIST_FOREACH(items, char*, s, tor_free(s));
smartlist_free(items);
tor_free(addrport);
tor_free(fingerprint);
+ tor_free(transport_name);
+ return r;
+}
+
+/** Read the contents of a ClientTransportPlugin line from
+ * <b>line</b>. Return 0 if the line is well-formed, and -1 if it
+ * isn't. If <b>validate_only</b> is 0, and the line is well-formed,
+ * then add the transport described in the line to our internal
+ * transport list.
+*/
+static int
+parse_client_transport_line(const char *line, int validate_only)
+{
+ smartlist_t *items = NULL;
+ int r;
+ char *socks_ver_str=NULL;
+ char *name=NULL;
+ char *addrport=NULL;
+ int socks_ver;
+ tor_addr_t addr;
+ uint16_t port = 0;
+
+ items = smartlist_create();
+ smartlist_split_string(items, line, NULL,
+ SPLIT_SKIP_SPACE|SPLIT_IGNORE_BLANK, -1);
+
+ if (smartlist_len(items) < 3) {
+ log_warn(LD_CONFIG, "Too few arguments on ClientTransportPlugin line.");
+ goto err;
+ }
+
+ name = smartlist_get(items, 0);
+
+ socks_ver_str = smartlist_get(items, 1);
+
+ if (!strcmp(socks_ver_str,"socks4"))
+ socks_ver = PROXY_SOCKS4;
+ else if (!strcmp(socks_ver_str,"socks5"))
+ socks_ver = PROXY_SOCKS5;
+ else {
+ log_warn(LD_CONFIG, "Strange ClientTransportPlugin proxy type '%s'.",
+ socks_ver_str);
+ goto err;
+ }
+
+ addrport = smartlist_get(items, 2);
+
+ if (tor_addr_port_parse(addrport, &addr, &port)<0) {
+ log_warn(LD_CONFIG, "Error parsing transport "
+ "address '%s'", addrport);
+ goto err;
+ }
+
+ if (!port) {
+ log_warn(LD_CONFIG,
+ "Transport address '%s' has no port.", addrport);
+ goto err;
+ }
+
+ if (!validate_only) {
+ log_debug(LD_DIR, "Transport %s found at %s:%d", name,
+ fmt_addr(&addr), (int)port);
+
+ if (transport_add_from_config(&addr, port, name, socks_ver) < 0)
+ goto err;
+ }
+
+ r = 0;
+ goto done;
+
+ err:
+ r = -1;
+
+ done:
+ SMARTLIST_FOREACH(items, char*, s, tor_free(s));
+ smartlist_free(items);
return r;
}
@@ -4540,7 +4757,7 @@ parse_bridge_line(const char *line, int validate_only)
* bits it's missing) as a valid authority. Return 0 on success,
* or -1 if the line isn't well-formed or if we can't add it. */
static int
-parse_dir_server_line(const char *line, authority_type_t required_type,
+parse_dir_server_line(const char *line, dirinfo_type_t required_type,
int validate_only)
{
smartlist_t *items = NULL;
@@ -4549,7 +4766,7 @@ parse_dir_server_line(const char *line, authority_type_t required_type,
uint16_t dir_port = 0, or_port = 0;
char digest[DIGEST_LEN];
char v3_digest[DIGEST_LEN];
- authority_type_t type = V2_AUTHORITY;
+ dirinfo_type_t type = V2_DIRINFO;
int is_not_hidserv_authority = 0, is_not_v2_authority = 0;
items = smartlist_create();
@@ -4570,13 +4787,13 @@ parse_dir_server_line(const char *line, authority_type_t required_type,
if (TOR_ISDIGIT(flag[0]))
break;
if (!strcasecmp(flag, "v1")) {
- type |= (V1_AUTHORITY | HIDSERV_AUTHORITY);
+ type |= (V1_DIRINFO | HIDSERV_DIRINFO);
} else if (!strcasecmp(flag, "hs")) {
- type |= HIDSERV_AUTHORITY;
+ type |= HIDSERV_DIRINFO;
} else if (!strcasecmp(flag, "no-hs")) {
is_not_hidserv_authority = 1;
} else if (!strcasecmp(flag, "bridge")) {
- type |= BRIDGE_AUTHORITY;
+ type |= BRIDGE_DIRINFO;
} else if (!strcasecmp(flag, "no-v2")) {
is_not_v2_authority = 1;
} else if (!strcasecmpstart(flag, "orport=")) {
@@ -4593,7 +4810,7 @@ parse_dir_server_line(const char *line, authority_type_t required_type,
log_warn(LD_CONFIG, "Bad v3 identity digest '%s' on DirServer line",
flag);
} else {
- type |= V3_AUTHORITY;
+ type |= V3_DIRINFO|EXTRAINFO_DIRINFO|MICRODESC_DIRINFO;
}
} else {
log_warn(LD_CONFIG, "Unrecognized flag '%s' on DirServer line",
@@ -4603,9 +4820,9 @@ parse_dir_server_line(const char *line, authority_type_t required_type,
smartlist_del_keeporder(items, 0);
}
if (is_not_hidserv_authority)
- type &= ~HIDSERV_AUTHORITY;
+ type &= ~HIDSERV_DIRINFO;
if (is_not_v2_authority)
- type &= ~V2_AUTHORITY;
+ type &= ~V2_DIRINFO;
if (smartlist_len(items) < 2) {
log_warn(LD_CONFIG, "Too few arguments to DirServer line.");
@@ -4739,7 +4956,7 @@ validate_data_directory(or_options_t *options)
* doesn't begin with GENERATED_FILE_PREFIX, rename it. Otherwise
* replace it. Return 0 on success, -1 on failure. */
static int
-write_configuration_file(const char *fname, or_options_t *options)
+write_configuration_file(const char *fname, const or_options_t *options)
{
char *old_val=NULL, *new_val=NULL, *new_conf=NULL;
int rename_old = 0, r;
@@ -4749,7 +4966,7 @@ write_configuration_file(const char *fname, or_options_t *options)
switch (file_status(fname)) {
case FN_FILE:
old_val = read_file_to_str(fname, 0, NULL);
- if (strcmpstart(old_val, GENERATED_FILE_PREFIX)) {
+ if (!old_val || strcmpstart(old_val, GENERATED_FILE_PREFIX)) {
rename_old = 1;
}
tor_free(old_val);
@@ -4828,10 +5045,10 @@ options_save_current(void)
}
/** Mapping from a unit name to a multiplier for converting that unit into a
- * base unit. */
+ * base unit. Used by config_parse_unit. */
struct unit_table_t {
- const char *unit;
- uint64_t multiplier;
+ const char *unit; /**< The name of the unit */
+ uint64_t multiplier; /**< How many of the base unit appear in this unit */
};
/** Table to map the names of memory units to the number of bytes they
@@ -5076,7 +5293,7 @@ get_or_state(void)
* Note: Consider using the get_datadir_fname* macros in or.h.
*/
char *
-options_get_datadir_fname2_suffix(or_options_t *options,
+options_get_datadir_fname2_suffix(const or_options_t *options,
const char *sub1, const char *sub2,
const char *suffix)
{
@@ -5281,6 +5498,26 @@ or_state_load(void)
return r;
}
+/** Did the last time we tried to write the state file fail? If so, we
+ * should consider disabling such features as preemptive circuit generation
+ * to compute circuit-build-time. */
+static int last_state_file_write_failed = 0;
+
+/** Return whether the state file failed to write last time we tried. */
+int
+did_last_state_file_write_fail(void)
+{
+ return last_state_file_write_failed;
+}
+
+/** If writing the state to disk fails, try again after this many seconds. */
+#define STATE_WRITE_RETRY_INTERVAL 3600
+
+/** If we're a relay, how often should we checkpoint our state file even
+ * if nothing else dirties it? This will checkpoint ongoing stats like
+ * bandwidth used, per-country user stats, etc. */
+#define STATE_RELAY_CHECKPOINT_INTERVAL (12*60*60)
+
/** Write the persistent state to disk. Return 0 for success, <0 on failure. */
int
or_state_save(time_t now)
@@ -5302,11 +5539,13 @@ or_state_save(time_t now)
if (accounting_is_enabled(get_options()))
accounting_run_housekeeping(now);
+ global_state->LastWritten = now;
+
tor_free(global_state->TorVersion);
tor_asprintf(&global_state->TorVersion, "Tor %s", get_version());
state = config_dump(&state_format, global_state, 1, 0);
- format_local_iso_time(tbuf, time(NULL));
+ format_local_iso_time(tbuf, now);
tor_asprintf(&contents,
"# Tor state file last generated on %s local time\n"
"# Other times below are in GMT\n"
@@ -5315,19 +5554,27 @@ or_state_save(time_t now)
tor_free(state);
fname = get_datadir_fname("state");
if (write_str_to_file(fname, contents, 0)<0) {
- log_warn(LD_FS, "Unable to write state to file \"%s\"", fname);
- global_state->LastWritten = -1;
+ log_warn(LD_FS, "Unable to write state to file \"%s\"; "
+ "will try again later", fname);
+ last_state_file_write_failed = 1;
tor_free(fname);
tor_free(contents);
+ /* Try again after STATE_WRITE_RETRY_INTERVAL (or sooner, if the state
+ * changes sooner). */
+ global_state->next_write = now + STATE_WRITE_RETRY_INTERVAL;
return -1;
}
- global_state->LastWritten = time(NULL);
+ last_state_file_write_failed = 0;
log_info(LD_GENERAL, "Saved state to \"%s\"", fname);
tor_free(fname);
tor_free(contents);
- global_state->next_write = TIME_MAX;
+ if (server_mode(get_options()))
+ global_state->next_write = now + STATE_RELAY_CHECKPOINT_INTERVAL;
+ else
+ global_state->next_write = TIME_MAX;
+
return 0;
}
@@ -5363,18 +5610,20 @@ getinfo_helper_config(control_connection_t *conn,
smartlist_t *sl = smartlist_create();
int i;
for (i = 0; _option_vars[i].name; ++i) {
- config_var_t *var = &_option_vars[i];
+ const config_var_t *var = &_option_vars[i];
const char *type;
char *line;
switch (var->type) {
case CONFIG_TYPE_STRING: type = "String"; break;
case CONFIG_TYPE_FILENAME: type = "Filename"; break;
case CONFIG_TYPE_UINT: type = "Integer"; break;
+ case CONFIG_TYPE_PORT: type = "Port"; break;
case CONFIG_TYPE_INTERVAL: type = "TimeInterval"; break;
case CONFIG_TYPE_MSEC_INTERVAL: type = "TimeMsecInterval"; break;
case CONFIG_TYPE_MEMUNIT: type = "DataSize"; break;
case CONFIG_TYPE_DOUBLE: type = "Float"; break;
case CONFIG_TYPE_BOOL: type = "Boolean"; break;
+ case CONFIG_TYPE_AUTOBOOL: type = "Boolean+Auto"; break;
case CONFIG_TYPE_ISOTIME: type = "Time"; break;
case CONFIG_TYPE_ROUTERSET: type = "RouterList"; break;
case CONFIG_TYPE_CSV: type = "CommaList"; break;
diff --git a/src/or/config.h b/src/or/config.h
index db871d472a..8a06f4443a 100644
--- a/src/or/config.h
+++ b/src/or/config.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -13,7 +13,8 @@
#define _TOR_CONFIG_H
const char *get_dirportfrontpage(void);
-or_options_t *get_options(void);
+const or_options_t *get_options(void);
+or_options_t *get_options_mutable(void);
int set_options(or_options_t *new_val, char **msg);
void config_free_all(void);
const char *safe_str_client(const char *address);
@@ -26,21 +27,21 @@ int config_get_lines(const char *string, config_line_t **result);
void config_free_lines(config_line_t *front);
setopt_err_t options_trial_assign(config_line_t *list, int use_defaults,
int clear_first, char **msg);
-int resolve_my_address(int warn_severity, or_options_t *options,
+int resolve_my_address(int warn_severity, const or_options_t *options,
uint32_t *addr, char **hostname_out);
int is_local_addr(const tor_addr_t *addr) ATTR_PURE;
void options_init(or_options_t *options);
-char *options_dump(or_options_t *options, int minimal);
+char *options_dump(const or_options_t *options, int minimal);
int options_init_from_torrc(int argc, char **argv);
setopt_err_t options_init_from_string(const char *cf,
int command, const char *command_arg, char **msg);
int option_is_recognized(const char *key);
const char *option_get_canonical_name(const char *key);
-config_line_t *option_get_assignment(or_options_t *options,
+config_line_t *option_get_assignment(const or_options_t *options,
const char *key);
int options_save_current(void);
const char *get_torrc_fname(void);
-char *options_get_datadir_fname2_suffix(or_options_t *options,
+char *options_get_datadir_fname2_suffix(const or_options_t *options,
const char *sub1, const char *sub2,
const char *suffix);
#define get_datadir_fname2_suffix(sub1, sub2, suffix) \
@@ -60,23 +61,25 @@ char *options_get_datadir_fname2_suffix(or_options_t *options,
int get_num_cpus(const or_options_t *options);
or_state_t *get_or_state(void);
+int did_last_state_file_write_fail(void);
int or_state_save(time_t now);
-int options_need_geoip_info(or_options_t *options, const char **reason_out);
+int options_need_geoip_info(const or_options_t *options,
+ const char **reason_out);
int getinfo_helper_config(control_connection_t *conn,
const char *question, char **answer,
const char **errmsg);
const char *tor_get_digests(void);
-uint32_t get_effective_bwrate(or_options_t *options);
-uint32_t get_effective_bwburst(or_options_t *options);
+uint32_t get_effective_bwrate(const or_options_t *options);
+uint32_t get_effective_bwburst(const or_options_t *options);
#ifdef CONFIG_PRIVATE
/* Used only by config.c and test.c */
or_options_t *options_new(void);
#endif
-void config_register_addressmaps(or_options_t *options);
+void config_register_addressmaps(const or_options_t *options);
#endif
diff --git a/src/or/connection.c b/src/or/connection.c
index 2a4a6f7626..8b9fb126d3 100644
--- a/src/or/connection.c
+++ b/src/or/connection.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -41,7 +41,7 @@
#endif
static connection_t *connection_create_listener(
- struct sockaddr *listensockaddr,
+ const struct sockaddr *listensockaddr,
socklen_t listensocklen, int type,
char* address);
static void connection_init(time_t now, connection_t *conn, int type,
@@ -57,15 +57,17 @@ static int connection_finished_flushing(connection_t *conn);
static int connection_flushed_some(connection_t *conn);
static int connection_finished_connecting(connection_t *conn);
static int connection_reached_eof(connection_t *conn);
-static int connection_read_to_buf(connection_t *conn, int *max_to_read,
+static int connection_read_to_buf(connection_t *conn, ssize_t *max_to_read,
int *socket_error);
static int connection_process_inbuf(connection_t *conn, int package_partial);
-static void client_check_address_changed(int sock);
-static void set_constrained_socket_buffers(int sock, int size);
+static void client_check_address_changed(tor_socket_t sock);
+static void set_constrained_socket_buffers(tor_socket_t sock, int size);
static const char *connection_proxy_state_to_string(int state);
static int connection_read_https_proxy_response(connection_t *conn);
static void connection_send_socks5_connect(connection_t *conn);
+static const char *proxy_type_to_string(int proxy_type);
+static int get_proxy_type(void);
/** The last IPv4 address that our network interface seemed to have been
* binding to, in host order. We use this to detect when our IP changes. */
@@ -476,8 +478,8 @@ _connection_free(connection_t *conn)
rend_data_free(dir_conn->rend_data);
}
- if (conn->s >= 0) {
- log_debug(LD_NET,"closing fd %d.",conn->s);
+ if (SOCKET_OK(conn->s)) {
+ log_debug(LD_NET,"closing fd %d.",(int)conn->s);
tor_close_socket(conn->s);
conn->s = -1;
}
@@ -521,8 +523,7 @@ connection_free(connection_t *conn)
}
}
if (conn->type == CONN_TYPE_CONTROL) {
- TO_CONTROL_CONN(conn)->event_mask = 0;
- control_update_global_event_mask();
+ connection_control_closed(TO_CONTROL_CONN(conn));
}
connection_unregister_events(conn);
_connection_free(conn);
@@ -551,6 +552,9 @@ connection_free_all(void)
/* Unlink everything from the identity map. */
connection_or_clear_identity_map();
+ /* Clear out our list of broken connections */
+ clear_broken_connection_map(0);
+
SMARTLIST_FOREACH(conns, connection_t *, conn, _connection_free(conn));
if (outgoing_addrs) {
@@ -560,7 +564,9 @@ connection_free_all(void)
}
}
-/** Do any cleanup needed:
+/**
+ * Called when we're about to finally unlink and free a connection:
+ * perform necessary accounting and cleanup
* - Directory conns that failed to fetch a rendezvous descriptor
* need to inform pending rendezvous streams.
* - OR conns need to call rep_hist_note_*() to record status.
@@ -573,114 +579,20 @@ connection_free_all(void)
void
connection_about_to_close_connection(connection_t *conn)
{
- circuit_t *circ;
- dir_connection_t *dir_conn;
- or_connection_t *or_conn;
- edge_connection_t *edge_conn;
- time_t now = time(NULL);
-
tor_assert(conn->marked_for_close);
- if (CONN_IS_EDGE(conn)) {
- edge_conn = TO_EDGE_CONN(conn);
- if (!edge_conn->edge_has_sent_end) {
- log_warn(LD_BUG, "(Harmless.) Edge connection (marked at %s:%d) "
- "hasn't sent end yet?",
- conn->marked_for_close_file, conn->marked_for_close);
- tor_fragile_assert();
- }
- }
-
switch (conn->type) {
case CONN_TYPE_DIR:
- dir_conn = TO_DIR_CONN(conn);
- if (conn->state < DIR_CONN_STATE_CLIENT_FINISHED) {
- /* It's a directory connection and connecting or fetching
- * failed: forget about this router, and maybe try again. */
- connection_dir_request_failed(dir_conn);
- }
- /* If we were trying to fetch a v2 rend desc and did not succeed,
- * retry as needed. (If a fetch is successful, the connection state
- * is changed to DIR_PURPOSE_HAS_FETCHED_RENDDESC to mark that
- * refetching is unnecessary.) */
- if (conn->purpose == DIR_PURPOSE_FETCH_RENDDESC_V2 &&
- dir_conn->rend_data &&
- strlen(dir_conn->rend_data->onion_address) ==
- REND_SERVICE_ID_LEN_BASE32)
- rend_client_refetch_v2_renddesc(dir_conn->rend_data);
+ connection_dir_about_to_close(TO_DIR_CONN(conn));
break;
case CONN_TYPE_OR:
- or_conn = TO_OR_CONN(conn);
- /* Remember why we're closing this connection. */
- if (conn->state != OR_CONN_STATE_OPEN) {
- /* Inform any pending (not attached) circs that they should
- * give up. */
- circuit_n_conn_done(TO_OR_CONN(conn), 0);
- /* now mark things down as needed */
- if (connection_or_nonopen_was_started_here(or_conn)) {
- or_options_t *options = get_options();
- rep_hist_note_connect_failed(or_conn->identity_digest, now);
- entry_guard_register_connect_status(or_conn->identity_digest,0,
- !options->HTTPSProxy, now);
- if (conn->state >= OR_CONN_STATE_TLS_HANDSHAKING) {
- int reason = tls_error_to_orconn_end_reason(or_conn->tls_error);
- control_event_or_conn_status(or_conn, OR_CONN_EVENT_FAILED,
- reason);
- if (!authdir_mode_tests_reachability(options))
- control_event_bootstrap_problem(
- orconn_end_reason_to_control_string(reason), reason);
- }
- }
- } else if (conn->hold_open_until_flushed) {
- /* We only set hold_open_until_flushed when we're intentionally
- * closing a connection. */
- rep_hist_note_disconnect(or_conn->identity_digest, now);
- control_event_or_conn_status(or_conn, OR_CONN_EVENT_CLOSED,
- tls_error_to_orconn_end_reason(or_conn->tls_error));
- } else if (!tor_digest_is_zero(or_conn->identity_digest)) {
- rep_hist_note_connection_died(or_conn->identity_digest, now);
- control_event_or_conn_status(or_conn, OR_CONN_EVENT_CLOSED,
- tls_error_to_orconn_end_reason(or_conn->tls_error));
- }
- /* Now close all the attached circuits on it. */
- circuit_unlink_all_from_or_conn(TO_OR_CONN(conn),
- END_CIRC_REASON_OR_CONN_CLOSED);
+ connection_or_about_to_close(TO_OR_CONN(conn));
break;
case CONN_TYPE_AP:
- edge_conn = TO_EDGE_CONN(conn);
- if (edge_conn->socks_request->has_finished == 0) {
- /* since conn gets removed right after this function finishes,
- * there's no point trying to send back a reply at this point. */
- log_warn(LD_BUG,"Closing stream (marked at %s:%d) without sending"
- " back a socks reply.",
- conn->marked_for_close_file, conn->marked_for_close);
- }
- if (!edge_conn->end_reason) {
- log_warn(LD_BUG,"Closing stream (marked at %s:%d) without having"
- " set end_reason.",
- conn->marked_for_close_file, conn->marked_for_close);
- }
- if (edge_conn->dns_server_request) {
- log_warn(LD_BUG,"Closing stream (marked at %s:%d) without having"
- " replied to DNS request.",
- conn->marked_for_close_file, conn->marked_for_close);
- dnsserv_reject_request(edge_conn);
- }
- control_event_stream_bandwidth(edge_conn);
- control_event_stream_status(edge_conn, STREAM_EVENT_CLOSED,
- edge_conn->end_reason);
- circ = circuit_get_by_edge_conn(edge_conn);
- if (circ)
- circuit_detach_stream(circ, edge_conn);
+ connection_ap_about_to_close(TO_EDGE_CONN(conn));
break;
case CONN_TYPE_EXIT:
- edge_conn = TO_EDGE_CONN(conn);
- circ = circuit_get_by_edge_conn(edge_conn);
- if (circ)
- circuit_detach_stream(circ, edge_conn);
- if (conn->state == EXIT_CONN_STATE_RESOLVING) {
- connection_dns_remove(edge_conn);
- }
+ connection_exit_about_to_close(TO_EDGE_CONN(conn));
break;
}
}
@@ -705,14 +617,14 @@ connection_close_immediate(connection_t *conn)
}
if (conn->outbuf_flushlen) {
log_info(LD_NET,"fd %d, type %s, state %s, %d bytes on outbuf.",
- conn->s, conn_type_to_string(conn->type),
+ (int)conn->s, conn_type_to_string(conn->type),
conn_state_to_string(conn->type, conn->state),
(int)conn->outbuf_flushlen);
}
connection_unregister_events(conn);
- if (conn->s >= 0)
+ if (SOCKET_OK(conn->s))
tor_close_socket(conn->s);
conn->s = -1;
if (conn->linked)
@@ -781,7 +693,7 @@ connection_expire_held_open(void)
log_fn(severity, LD_NET,
"Giving up on marked_for_close conn that's been flushing "
"for 15s (fd %d, type %s, state %s).",
- conn->s, conn_type_to_string(conn->type),
+ (int)conn->s, conn_type_to_string(conn->type),
conn_state_to_string(conn->type, conn->state));
conn->hold_open_until_flushed = 0;
}
@@ -800,7 +712,7 @@ connection_expire_held_open(void)
* The listenaddr struct has to be freed by the caller.
*/
static struct sockaddr_in *
-create_inet_sockaddr(const char *listenaddress, uint16_t listenport,
+create_inet_sockaddr(const char *listenaddress, int listenport,
char **readable_address, socklen_t *socklen_out) {
struct sockaddr_in *listenaddr = NULL;
uint32_t addr;
@@ -812,8 +724,10 @@ create_inet_sockaddr(const char *listenaddress, uint16_t listenport,
"Error parsing/resolving ListenAddress %s", listenaddress);
goto err;
}
- if (usePort==0)
- usePort = listenport;
+ if (usePort==0) {
+ if (listenport != CFG_AUTO_PORT)
+ usePort = listenport;
+ }
listenaddr = tor_malloc_zero(sizeof(struct sockaddr_in));
listenaddr->sin_addr.s_addr = htonl(addr);
@@ -851,7 +765,13 @@ create_unix_sockaddr(const char *listenaddress, char **readable_address,
sockaddr = tor_malloc_zero(sizeof(struct sockaddr_un));
sockaddr->sun_family = AF_UNIX;
- strncpy(sockaddr->sun_path, listenaddress, sizeof(sockaddr->sun_path));
+ if (strlcpy(sockaddr->sun_path, listenaddress, sizeof(sockaddr->sun_path))
+ >= sizeof(sockaddr->sun_path)) {
+ log_warn(LD_CONFIG, "Unix socket path '%s' is too long to fit.",
+ escaped(listenaddress));
+ tor_free(sockaddr);
+ return NULL;
+ }
if (readable_address)
*readable_address = tor_strdup(listenaddress);
@@ -892,6 +812,62 @@ warn_too_many_conns(void)
}
}
+#ifdef HAVE_SYS_UN_H
+/** Check whether we should be willing to open an AF_UNIX socket in
+ * <b>path</b>. Return 0 if we should go ahead and -1 if we shouldn't. */
+static int
+check_location_for_unix_socket(const or_options_t *options, const char *path)
+{
+ int r = -1;
+ char *p = tor_strdup(path);
+ cpd_check_t flags = CPD_CHECK_MODE_ONLY;
+ if (get_parent_directory(p)<0)
+ goto done;
+
+ if (options->ControlSocketsGroupWritable)
+ flags |= CPD_GROUP_OK;
+
+ if (check_private_dir(p, flags, options->User) < 0) {
+ char *escpath, *escdir;
+ escpath = esc_for_log(path);
+ escdir = esc_for_log(p);
+ log_warn(LD_GENERAL, "Before Tor can create a control socket in %s, the "
+ "directory %s needs to exist, and to be accessible only by the "
+ "user%s account that is running Tor. (On some Unix systems, "
+ "anybody who can list a socket can conect to it, so Tor is "
+ "being careful.)", escpath, escdir,
+ options->ControlSocketsGroupWritable ? " and group" : "");
+ tor_free(escpath);
+ tor_free(escdir);
+ goto done;
+ }
+
+ r = 0;
+ done:
+ tor_free(p);
+ return r;
+}
+#endif
+
+/** Tell the TCP stack that it shouldn't wait for a long time after
+ * <b>sock</b> has closed before reusing its port. */
+static void
+make_socket_reuseable(tor_socket_t sock)
+{
+#ifdef MS_WINDOWS
+ (void) sock;
+#else
+ int one=1;
+
+ /* REUSEADDR on normal places means you can rebind to the port
+ * right after somebody else has let it go. But REUSEADDR on win32
+ * means you can bind to the port _even when somebody else
+ * already has it bound_. So, don't do that on Win32. */
+ setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (void*) &one,
+ (socklen_t)sizeof(one));
+#endif
+}
+
/** Bind a new non-blocking socket listening to the socket described
* by <b>listensockaddr</b>.
*
@@ -899,12 +875,13 @@ warn_too_many_conns(void)
* to the conn.
*/
static connection_t *
-connection_create_listener(struct sockaddr *listensockaddr, socklen_t socklen,
+connection_create_listener(const struct sockaddr *listensockaddr,
+ socklen_t socklen,
int type, char* address)
{
connection_t *conn;
- int s; /* the socket we're going to make */
- uint16_t usePort = 0;
+ tor_socket_t s; /* the socket we're going to make */
+ uint16_t usePort = 0, gotPort = 0;
int start_reading = 0;
if (get_n_open_sockets() >= get_options()->_ConnLimit-1) {
@@ -913,35 +890,25 @@ connection_create_listener(struct sockaddr *listensockaddr, socklen_t socklen,
}
if (listensockaddr->sa_family == AF_INET) {
+ tor_addr_t addr;
int is_tcp = (type != CONN_TYPE_AP_DNS_LISTENER);
-#ifndef MS_WINDOWS
- int one=1;
-#endif
if (is_tcp)
start_reading = 1;
- usePort = ntohs( (uint16_t)
- ((struct sockaddr_in *)listensockaddr)->sin_port);
+ tor_addr_from_sockaddr(&addr, listensockaddr, &usePort);
log_notice(LD_NET, "Opening %s on %s:%d",
- conn_type_to_string(type), address, usePort);
+ conn_type_to_string(type), fmt_addr(&addr), usePort);
s = tor_open_socket(PF_INET,
is_tcp ? SOCK_STREAM : SOCK_DGRAM,
is_tcp ? IPPROTO_TCP: IPPROTO_UDP);
- if (s < 0) {
+ if (!SOCKET_OK(s)) {
log_warn(LD_NET,"Socket creation failed.");
goto err;
}
-#ifndef MS_WINDOWS
- /* REUSEADDR on normal places means you can rebind to the port
- * right after somebody else has let it go. But REUSEADDR on win32
- * means you can bind to the port _even when somebody else
- * already has it bound_. So, don't do that on Win32. */
- setsockopt(s, SOL_SOCKET, SO_REUSEADDR, (void*) &one,
- (socklen_t)sizeof(one));
-#endif
+ make_socket_reuseable(s);
if (bind(s,listensockaddr,socklen) < 0) {
const char *helpfulhint = "";
@@ -962,6 +929,21 @@ connection_create_listener(struct sockaddr *listensockaddr, socklen_t socklen,
goto err;
}
}
+
+ if (usePort != 0) {
+ gotPort = usePort;
+ } else {
+ tor_addr_t addr2;
+ struct sockaddr_storage ss;
+ socklen_t ss_len=sizeof(ss);
+ if (getsockname(s, (struct sockaddr*)&ss, &ss_len)<0) {
+ log_warn(LD_NET, "getsockname() couldn't learn address for %s: %s",
+ conn_type_to_string(type),
+ tor_socket_strerror(tor_socket_errno(s)));
+ gotPort = 0;
+ }
+ tor_addr_from_sockaddr(&addr2, (struct sockaddr*)&ss, &gotPort);
+ }
#ifdef HAVE_SYS_UN_H
} else if (listensockaddr->sa_family == AF_UNIX) {
start_reading = 1;
@@ -970,6 +952,9 @@ connection_create_listener(struct sockaddr *listensockaddr, socklen_t socklen,
* and listeners at the same time */
tor_assert(type == CONN_TYPE_CONTROL_LISTENER);
+ if (check_location_for_unix_socket(get_options(), address) < 0)
+ goto err;
+
log_notice(LD_NET, "Opening %s on %s",
conn_type_to_string(type), address);
@@ -989,6 +974,15 @@ connection_create_listener(struct sockaddr *listensockaddr, socklen_t socklen,
tor_socket_strerror(tor_socket_errno(s)));
goto err;
}
+ if (get_options()->ControlSocketsGroupWritable) {
+ /* We need to use chmod; fchmod doesn't work on sockets on all
+ * platforms. */
+ if (chmod(address, 0660) < 0) {
+ log_warn(LD_FS,"Unable to make %s group-writable.", address);
+ tor_close_socket(s);
+ goto err;
+ }
+ }
if (listen(s,SOMAXCONN) < 0) {
log_warn(LD_NET, "Could not listen on %s: %s", address,
@@ -1009,7 +1003,7 @@ connection_create_listener(struct sockaddr *listensockaddr, socklen_t socklen,
conn->socket_family = listensockaddr->sa_family;
conn->s = s;
conn->address = tor_strdup(address);
- conn->port = usePort;
+ conn->port = gotPort;
if (connection_add(conn) < 0) { /* no space, forget it */
log_warn(LD_NET,"connection_add for listener failed. Giving up.");
@@ -1017,8 +1011,12 @@ connection_create_listener(struct sockaddr *listensockaddr, socklen_t socklen,
goto err;
}
- log_debug(LD_NET,"%s listening on port %u.",
- conn_type_to_string(type), usePort);
+ log_fn(usePort==gotPort ? LOG_DEBUG : LOG_NOTICE, LD_NET,
+ "%s listening on port %u.",
+ conn_type_to_string(type), gotPort);
+
+ if (type == CONN_TYPE_CONTROL_LISTENER)
+ control_ports_write_to_file();
conn->state = LISTENER_STATE_READY;
if (start_reading) {
@@ -1098,20 +1096,20 @@ check_sockaddr_family_match(sa_family_t got, connection_t *listener)
static int
connection_handle_listener_read(connection_t *conn, int new_type)
{
- int news; /* the new socket */
+ tor_socket_t news; /* the new socket */
connection_t *newconn;
/* information about the remote peer when connecting to other routers */
char addrbuf[256];
struct sockaddr *remote = (struct sockaddr*)addrbuf;
/* length of the remote address. Must be whatever accept() needs. */
socklen_t remotelen = (socklen_t)sizeof(addrbuf);
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
tor_assert((size_t)remotelen >= sizeof(struct sockaddr_in));
memset(addrbuf, 0, sizeof(addrbuf));
news = tor_accept_socket(conn->s,remote,&remotelen);
- if (news < 0) { /* accept() error */
+ if (!SOCKET_OK(news)) { /* accept() error */
int e = tor_socket_errno(conn->s);
if (ERRNO_IS_ACCEPT_EAGAIN(e)) {
return 0; /* he hung up before we could accept(). that's fine. */
@@ -1127,8 +1125,9 @@ connection_handle_listener_read(connection_t *conn, int new_type)
}
log_debug(LD_NET,
"Connection accepted on socket %d (child of fd %d).",
- news,conn->s);
+ (int)news,(int)conn->s);
+ make_socket_reuseable(news);
set_socket_nonblocking(news);
if (options->ConstrainedSockets)
@@ -1219,7 +1218,8 @@ connection_handle_listener_read(connection_t *conn, int new_type)
}
if (connection_init_accepted_conn(newconn, conn->type) < 0) {
- connection_mark_for_close(newconn);
+ if (! newconn->marked_for_close)
+ connection_mark_for_close(newconn);
return 0;
}
return 0;
@@ -1245,9 +1245,11 @@ connection_init_accepted_conn(connection_t *conn, uint8_t listener_type)
conn->state = AP_CONN_STATE_SOCKS_WAIT;
break;
case CONN_TYPE_AP_TRANS_LISTENER:
+ TO_EDGE_CONN(conn)->is_transparent_ap = 1;
conn->state = AP_CONN_STATE_CIRCUIT_WAIT;
return connection_ap_process_transparent(TO_EDGE_CONN(conn));
case CONN_TYPE_AP_NATD_LISTENER:
+ TO_EDGE_CONN(conn)->is_transparent_ap = 1;
conn->state = AP_CONN_STATE_NATD_WAIT;
break;
}
@@ -1276,11 +1278,12 @@ int
connection_connect(connection_t *conn, const char *address,
const tor_addr_t *addr, uint16_t port, int *socket_error)
{
- int s, inprogress = 0;
+ tor_socket_t s;
+ int inprogress = 0;
char addrbuf[256];
- struct sockaddr *dest_addr = (struct sockaddr*) addrbuf;
+ struct sockaddr *dest_addr;
int dest_addr_len;
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
int protocol_family;
if (get_n_open_sockets() >= get_options()->_ConnLimit-1) {
@@ -1335,6 +1338,8 @@ connection_connect(connection_t *conn, const char *address,
log_debug(LD_NET, "Connecting to %s:%u.",
escaped_safe_str_client(address), port);
+ make_socket_reuseable(s);
+
if (connect(s, dest_addr, (socklen_t)dest_addr_len) < 0) {
int e = tor_socket_errno(s);
if (!ERRNO_IS_CONN_EINPROGRESS(e)) {
@@ -1373,6 +1378,7 @@ connection_proxy_state_to_string(int state)
static const char *unknown = "???";
static const char *states[] = {
"PROXY_NONE",
+ "PROXY_INFANT",
"PROXY_HTTPS_WANT_CONNECT_OK",
"PROXY_SOCKS4_WANT_CONNECT_OK",
"PROXY_SOCKS5_WANT_AUTH_METHOD_NONE",
@@ -1401,7 +1407,7 @@ connection_proxy_state_to_string(int state)
int
connection_proxy_connect(connection_t *conn, int type)
{
- or_options_t *options;
+ const or_options_t *options;
tor_assert(conn);
@@ -1542,10 +1548,20 @@ connection_read_https_proxy_response(connection_t *conn)
return 1;
}
/* else, bad news on the status code */
- log_warn(LD_NET,
- "The https proxy sent back an unexpected status code %d (%s). "
- "Closing.",
- status_code, escaped(reason));
+ switch (status_code) {
+ case 403:
+ log_warn(LD_NET,
+ "The https proxy refused to allow connection to %s "
+ "(status code %d, %s). Closing.",
+ conn->address, status_code, escaped(reason));
+ break;
+ default:
+ log_warn(LD_NET,
+ "The https proxy sent back an unexpected status code %d (%s). "
+ "Closing.",
+ status_code, escaped(reason));
+ break;
+ }
tor_free(reason);
return -1;
}
@@ -1794,10 +1810,23 @@ retry_listeners(int type, config_line_t *cfg,
if (!parse_addr_port(LOG_WARN,
wanted->value, &address, NULL, &port)) {
int addr_matches = !strcasecmp(address, conn->address);
+ int port_matches;
tor_free(address);
- if (! port)
- port = port_option;
- if (port == conn->port && addr_matches) {
+ if (port) {
+ /* The Listener line has a port */
+ port_matches = (port == conn->port);
+ } else if (port_option == CFG_AUTO_PORT) {
+ /* The Listener line has no port, and the Port line is "auto".
+ * "auto" matches anything; transitions from any port to
+ * "auto" succeed. */
+ port_matches = 1;
+ } else {
+ /* The Listener line has no port, and the Port line is "auto".
+ * "auto" matches anything; transitions from any port to
+ * "auto" succeed. */
+ port_matches = (port_option == conn->port);
+ }
+ if (port_matches && addr_matches) {
line = wanted;
break;
}
@@ -1845,7 +1874,7 @@ retry_listeners(int type, config_line_t *cfg,
case AF_INET:
listensockaddr = (struct sockaddr *)
create_inet_sockaddr(cfg_line->value,
- (uint16_t) port_option,
+ port_option,
&address, &listensocklen);
break;
case AF_UNIX:
@@ -1894,38 +1923,41 @@ int
retry_all_listeners(smartlist_t *replaced_conns,
smartlist_t *new_conns)
{
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
+ int retval = 0;
+ const uint16_t old_or_port = router_get_advertised_or_port(options);
+ const uint16_t old_dir_port = router_get_advertised_dir_port(options, 0);
if (retry_listeners(CONN_TYPE_OR_LISTENER, options->ORListenAddress,
options->ORPort, "0.0.0.0",
replaced_conns, new_conns, options->ClientOnly,
AF_INET)<0)
- return -1;
+ retval = -1;
if (retry_listeners(CONN_TYPE_DIR_LISTENER, options->DirListenAddress,
options->DirPort, "0.0.0.0",
replaced_conns, new_conns, options->ClientOnly,
AF_INET)<0)
- return -1;
+ retval = -1;
if (retry_listeners(CONN_TYPE_AP_LISTENER, options->SocksListenAddress,
options->SocksPort, "127.0.0.1",
replaced_conns, new_conns, 0,
AF_INET)<0)
- return -1;
+ retval = -1;
if (retry_listeners(CONN_TYPE_AP_TRANS_LISTENER, options->TransListenAddress,
options->TransPort, "127.0.0.1",
replaced_conns, new_conns, 0,
AF_INET)<0)
- return -1;
+ retval = -1;
if (retry_listeners(CONN_TYPE_AP_NATD_LISTENER, options->NATDListenAddress,
options->NATDPort, "127.0.0.1",
replaced_conns, new_conns, 0,
AF_INET)<0)
- return -1;
+ retval = -1;
if (retry_listeners(CONN_TYPE_AP_DNS_LISTENER, options->DNSListenAddress,
options->DNSPort, "127.0.0.1",
replaced_conns, new_conns, 0,
AF_INET)<0)
- return -1;
+ retval = -1;
if (retry_listeners(CONN_TYPE_CONTROL_LISTENER,
options->ControlListenAddress,
options->ControlPort, "127.0.0.1",
@@ -1939,7 +1971,16 @@ retry_all_listeners(smartlist_t *replaced_conns,
AF_UNIX)<0)
return -1;
- return 0;
+ if (old_or_port != router_get_advertised_or_port(options) ||
+ old_dir_port != router_get_advertised_dir_port(options, 0)) {
+ /* Our chosen ORPort or DirPort is not what it used to be: the
+ * descriptor we had (if any) should be regenerated. (We won't
+ * automatically notice this because of changes in the option,
+ * since the value could be "auto".) */
+ mark_my_descriptor_dirty("Chosen Or/DirPort changed");
+ }
+
+ return retval;
}
/** Return 1 if we should apply rate limiting to <b>conn</b>,
@@ -1948,10 +1989,13 @@ retry_all_listeners(smartlist_t *replaced_conns,
static int
connection_is_rate_limited(connection_t *conn)
{
- if (conn->linked || /* internal connection */
- tor_addr_family(&conn->addr) == AF_UNSPEC || /* no address */
- tor_addr_is_internal(&conn->addr, 0)) /* internal address */
- return 0;
+ const or_options_t *options = get_options();
+ if (conn->linked)
+ return 0; /* Internal connection */
+ else if (! options->CountPrivateBandwidth &&
+ (tor_addr_family(&conn->addr) == AF_UNSPEC || /* no address */
+ tor_addr_is_internal(&conn->addr, 0)))
+ return 0; /* Internal address */
else
return 1;
}
@@ -2143,7 +2187,7 @@ global_write_bucket_low(connection_t *conn, size_t attempt, int priority)
if (priority == 1) { /* old-style v1 query */
/* Could we handle *two* of these requests within the next two seconds? */
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
int64_t can_write = (int64_t)smaller_bucket
+ 2*(options->RelayBandwidthRate ? options->RelayBandwidthRate :
options->BandwidthRate);
@@ -2261,7 +2305,7 @@ connection_consider_empty_write_buckets(connection_t *conn)
void
connection_bucket_init(void)
{
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
/* start it at max traffic */
global_read_bucket = (int)options->BandwidthBurst;
global_write_bucket = (int)options->BandwidthBurst;
@@ -2306,7 +2350,7 @@ connection_bucket_refill_helper(int *bucket, int rate, int burst,
void
connection_bucket_refill(int seconds_elapsed, time_t now)
{
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
smartlist_t *conns = get_connection_array();
int relayrate, relayburst;
@@ -2369,7 +2413,7 @@ connection_bucket_refill(int seconds_elapsed, time_t now)
TO_OR_CONN(conn)->read_bucket > 0)) {
/* and either a non-cell conn or a cell conn with non-empty bucket */
LOG_FN_CONN(conn, (LOG_DEBUG,LD_NET,
- "waking up conn (fd %d) for read", conn->s));
+ "waking up conn (fd %d) for read", (int)conn->s));
conn->read_blocked_on_bw = 0;
connection_start_reading(conn);
}
@@ -2382,7 +2426,7 @@ connection_bucket_refill(int seconds_elapsed, time_t now)
conn->state != OR_CONN_STATE_OPEN ||
TO_OR_CONN(conn)->write_bucket > 0)) {
LOG_FN_CONN(conn, (LOG_DEBUG,LD_NET,
- "waking up conn (fd %d) for write", conn->s));
+ "waking up conn (fd %d) for write", (int)conn->s));
conn->write_blocked_on_bw = 0;
connection_start_writing(conn);
}
@@ -2426,7 +2470,7 @@ connection_bucket_refill(int seconds_elapsed, time_t now)
void
connection_bucket_init(void)
{
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
const struct timeval *tick = tor_libevent_get_one_tick_timeout();
struct ev_token_bucket_cfg *bucket_cfg;
@@ -2502,7 +2546,7 @@ connection_consider_empty_read_buckets(connection_t *conn)
static int
connection_handle_read_impl(connection_t *conn)
{
- int max_to_read=-1, try_to_read;
+ ssize_t max_to_read=-1, try_to_read;
size_t before, n_read = 0;
int socket_error = 0;
@@ -2620,7 +2664,8 @@ connection_handle_read(connection_t *conn)
* Return -1 if we want to break conn, else return 0.
*/
static int
-connection_read_to_buf(connection_t *conn, int *max_to_read, int *socket_error)
+connection_read_to_buf(connection_t *conn, ssize_t *max_to_read,
+ int *socket_error)
{
int result;
ssize_t at_most = *max_to_read;
@@ -2655,7 +2700,7 @@ connection_read_to_buf(connection_t *conn, int *max_to_read, int *socket_error)
log_debug(LD_NET,
"%d: starting, inbuf_datalen %ld (%d pending in tls object)."
" at_most %ld.",
- conn->s,(long)buf_datalen(conn->inbuf),
+ (int)conn->s,(long)buf_datalen(conn->inbuf),
tor_tls_get_pending_bytes(or_conn->tls), (long)at_most);
initial_size = buf_datalen(conn->inbuf);
@@ -2738,15 +2783,19 @@ connection_read_to_buf(connection_t *conn, int *max_to_read, int *socket_error)
n_read = (size_t) result;
}
- if (n_read > 0) { /* change *max_to_read */
- /*XXXX022 check for overflow*/
- *max_to_read = (int)(at_most - n_read);
- }
+ if (n_read > 0) {
+ /* change *max_to_read */
+ *max_to_read = at_most - n_read;
- if (conn->type == CONN_TYPE_AP) {
- edge_connection_t *edge_conn = TO_EDGE_CONN(conn);
- /*XXXX022 check for overflow*/
- edge_conn->n_read += (int)n_read;
+ /* Update edge_conn->n_read */
+ if (conn->type == CONN_TYPE_AP) {
+ edge_connection_t *edge_conn = TO_EDGE_CONN(conn);
+ /* Check for overflow: */
+ if (PREDICT_LIKELY(UINT32_MAX - edge_conn->n_read > n_read))
+ edge_conn->n_read += (int)n_read;
+ else
+ edge_conn->n_read = UINT32_MAX;
+ }
}
connection_buckets_decrement(conn, approx_time(), n_read, n_written);
@@ -2820,9 +2869,11 @@ connection_handle_read_cb(struct bufferevent *bufev, void *arg)
{
connection_t *conn = arg;
(void) bufev;
- if (!conn->marked_for_close)
+ if (!conn->marked_for_close) {
if (connection_process_inbuf(conn, 1)<0) /* XXXX Always 1? */
- connection_mark_for_close(conn);
+ if (!conn->marked_for_close)
+ connection_mark_for_close(conn);
+ }
}
/** Callback: invoked whenever a bufferevent has written data. */
@@ -2832,7 +2883,8 @@ connection_handle_write_cb(struct bufferevent *bufev, void *arg)
connection_t *conn = arg;
struct evbuffer *output;
if (connection_flushed_some(conn)<0) {
- connection_mark_for_close(conn);
+ if (!conn->marked_for_close)
+ connection_mark_for_close(conn);
return;
}
@@ -2983,15 +3035,15 @@ connection_outbuf_too_full(connection_t *conn)
return (conn->outbuf_flushlen > 10*CELL_PAYLOAD_SIZE);
}
-/** Try to flush more bytes onto conn-\>s.
+/** Try to flush more bytes onto <b>conn</b>-\>s.
*
* This function gets called either from conn_write() in main.c
* when poll() has declared that conn wants to write, or below
* from connection_write_to_buf() when an entire TLS record is ready.
*
- * Update conn-\>timestamp_lastwritten to now, and call flush_buf
+ * Update <b>conn</b>-\>timestamp_lastwritten to now, and call flush_buf
* or flush_buf_tls appropriately. If it succeeds and there are no more
- * more bytes on conn->outbuf, then call connection_finished_flushing
+ * more bytes on <b>conn</b>-\>outbuf, then call connection_finished_flushing
* on it too.
*
* If <b>force</b>, then write as many bytes as possible, ignoring bandwidth
@@ -3013,7 +3065,7 @@ connection_handle_write_impl(connection_t *conn, int force)
tor_assert(!connection_is_listener(conn));
- if (conn->marked_for_close || conn->s < 0)
+ if (conn->marked_for_close || !SOCKET_OK(conn->s))
return 0; /* do nothing */
if (conn->in_flushed_some) {
@@ -3137,10 +3189,14 @@ connection_handle_write_impl(connection_t *conn, int force)
n_written = (size_t) result;
}
- if (conn->type == CONN_TYPE_AP) {
+ if (n_written && conn->type == CONN_TYPE_AP) {
edge_connection_t *edge_conn = TO_EDGE_CONN(conn);
- /*XXXX022 check for overflow.*/
- edge_conn->n_written += (int)n_written;
+
+ /* Check for overflow: */
+ if (PREDICT_LIKELY(UINT32_MAX - edge_conn->n_written > n_written))
+ edge_conn->n_written += (int)n_written;
+ else
+ edge_conn->n_written = UINT32_MAX;
}
connection_buckets_decrement(conn, approx_time(), n_read, n_written);
@@ -3179,6 +3235,25 @@ connection_handle_write(connection_t *conn, int force)
return res;
}
+/**
+ * Try to flush data that's waiting for a write on <b>conn</b>. Return
+ * -1 on failure, 0 on success.
+ *
+ * Don't use this function for regular writing; the buffers/bufferevents
+ * system should be good enough at scheduling writes there. Instead, this
+ * function is for cases when we're about to exit or something and we want
+ * to report it right away.
+ */
+int
+connection_flush(connection_t *conn)
+{
+ IF_HAS_BUFFEREVENT(conn, {
+ int r = bufferevent_flush(conn->bufev, EV_WRITE, BEV_FLUSH);
+ return (r < 0) ? -1 : 0;
+ });
+ return connection_handle_write(conn, 1);
+}
+
/** OpenSSL TLS record size is 16383; this is close. The goal here is to
* push data out as soon as we know there's enough for a TLS record, so
* during periods of high load we won't read entire megabytes from
@@ -3243,18 +3318,25 @@ _connection_write_to_buf_impl(const char *string, size_t len,
/* if it failed, it means we have our package/delivery windows set
wrong compared to our max outbuf size. close the whole circuit. */
log_warn(LD_NET,
- "write_to_buf failed. Closing circuit (fd %d).", conn->s);
+ "write_to_buf failed. Closing circuit (fd %d).", (int)conn->s);
circuit_mark_for_close(circuit_get_by_edge_conn(TO_EDGE_CONN(conn)),
END_CIRC_REASON_INTERNAL);
} else {
log_warn(LD_NET,
- "write_to_buf failed. Closing connection (fd %d).", conn->s);
+ "write_to_buf failed. Closing connection (fd %d).",
+ (int)conn->s);
connection_mark_for_close(conn);
}
return;
}
- connection_start_writing(conn);
+ /* If we receive optimistic data in the EXIT_CONN_STATE_RESOLVING
+ * state, we don't want to try to write it right away, since
+ * conn->write_event won't be set yet. Otherwise, write data from
+ * this conn as the socket is available. */
+ if (conn->write_event) {
+ connection_start_writing(conn);
+ }
if (zlib) {
conn->outbuf_flushlen += buf_datalen(conn->outbuf) - old_datalen;
} else {
@@ -3288,7 +3370,7 @@ _connection_write_to_buf_impl(const char *string, size_t len,
/* this connection is broken. remove it. */
log_warn(LD_BUG, "unhandled error on write for "
"conn (type %d, fd %d); removing",
- conn->type, conn->s);
+ conn->type, (int)conn->s);
tor_fragile_assert();
/* do a close-immediate here, so we don't try to flush */
connection_close_immediate(conn);
@@ -3516,8 +3598,17 @@ alloc_http_authenticator(const char *authenticator)
authenticator, authenticator_length) < 0) {
tor_free(base64_authenticator); /* free and set to null */
} else {
- /* remove extra \n at end of encoding */
- base64_authenticator[strlen(base64_authenticator) - 1] = 0;
+ int i = 0, j = 0;
+ ssize_t len = strlen(base64_authenticator);
+
+ /* remove all newline occurrences within the string */
+ for (i=0; i < len; ++i) {
+ if ('\n' != base64_authenticator[i]) {
+ base64_authenticator[j] = base64_authenticator[i];
+ ++j;
+ }
+ }
+ base64_authenticator[j]='\0';
}
return base64_authenticator;
}
@@ -3528,7 +3619,7 @@ alloc_http_authenticator(const char *authenticator)
* call init_keys().
*/
static void
-client_check_address_changed(int sock)
+client_check_address_changed(tor_socket_t sock)
{
uint32_t iface_ip, ip_out; /* host order */
struct sockaddr_in out_addr;
@@ -3584,7 +3675,7 @@ client_check_address_changed(int sock)
* to the desired size to stay below system TCP buffer limits.
*/
static void
-set_constrained_socket_buffers(int sock, int size)
+set_constrained_socket_buffers(tor_socket_t sock, int size)
{
void *sz = (void*)&size;
socklen_t sz_sz = (socklen_t) sizeof(size);
@@ -3643,6 +3734,8 @@ connection_flushed_some(connection_t *conn)
r = connection_dirserv_flushed_some(TO_DIR_CONN(conn));
} else if (conn->type == CONN_TYPE_OR) {
r = connection_or_flushed_some(TO_OR_CONN(conn));
+ } else if (CONN_IS_EDGE(conn)) {
+ r = connection_edge_flushed_some(TO_EDGE_CONN(conn));
}
conn->in_flushed_some = 0;
return r;
@@ -3827,11 +3920,18 @@ assert_connection_ok(connection_t *conn, time_t now)
tor_assert(conn->linked);
}
if (conn->linked)
- tor_assert(conn->s < 0);
+ tor_assert(!SOCKET_OK(conn->s));
if (conn->outbuf_flushlen > 0) {
- tor_assert(connection_is_writing(conn) || conn->write_blocked_on_bw ||
- (CONN_IS_EDGE(conn) && TO_EDGE_CONN(conn)->edge_blocked_on_circ));
+ /* With optimistic data, we may have queued data in
+ * EXIT_CONN_STATE_RESOLVING while the conn is not yet marked to writing.
+ * */
+ tor_assert((conn->type == CONN_TYPE_EXIT &&
+ conn->state == EXIT_CONN_STATE_RESOLVING) ||
+ connection_is_writing(conn) ||
+ conn->write_blocked_on_bw ||
+ (CONN_IS_EDGE(conn) &&
+ TO_EDGE_CONN(conn)->edge_blocked_on_circ));
}
if (conn->hold_open_until_flushed)
@@ -3938,3 +4038,101 @@ assert_connection_ok(connection_t *conn, time_t now)
}
}
+/** Fills <b>addr</b> and <b>port</b> with the details of the global
+ * proxy server we are using.
+ * <b>conn</b> contains the connection we are using the proxy for.
+ *
+ * Return 0 on success, -1 on failure.
+ */
+int
+get_proxy_addrport(tor_addr_t *addr, uint16_t *port, int *proxy_type,
+ const connection_t *conn)
+{
+ const or_options_t *options = get_options();
+
+ if (options->HTTPSProxy) {
+ tor_addr_copy(addr, &options->HTTPSProxyAddr);
+ *port = options->HTTPSProxyPort;
+ *proxy_type = PROXY_CONNECT;
+ return 0;
+ } else if (options->Socks4Proxy) {
+ tor_addr_copy(addr, &options->Socks4ProxyAddr);
+ *port = options->Socks4ProxyPort;
+ *proxy_type = PROXY_SOCKS4;
+ return 0;
+ } else if (options->Socks5Proxy) {
+ tor_addr_copy(addr, &options->Socks5ProxyAddr);
+ *port = options->Socks5ProxyPort;
+ *proxy_type = PROXY_SOCKS5;
+ return 0;
+ } else if (options->ClientTransportPlugin ||
+ options->Bridges) {
+ const transport_t *transport = NULL;
+ int r;
+ r = find_transport_by_bridge_addrport(&conn->addr, conn->port, &transport);
+ if (r<0)
+ return -1;
+ if (transport) { /* transport found */
+ tor_addr_copy(addr, &transport->addr);
+ *port = transport->port;
+ *proxy_type = transport->socks_version;
+ return 0;
+ }
+ }
+
+ *proxy_type = PROXY_NONE;
+ return 0;
+}
+
+/** Returns the global proxy type used by tor. */
+static int
+get_proxy_type(void)
+{
+ const or_options_t *options = get_options();
+
+ if (options->HTTPSProxy)
+ return PROXY_CONNECT;
+ else if (options->Socks4Proxy)
+ return PROXY_SOCKS4;
+ else if (options->Socks5Proxy)
+ return PROXY_SOCKS5;
+ else if (options->ClientTransportPlugin)
+ return PROXY_PLUGGABLE;
+ else
+ return PROXY_NONE;
+}
+
+/** Log a failed connection to a proxy server.
+ * <b>conn</b> is the connection we use the proxy server for. */
+void
+log_failed_proxy_connection(connection_t *conn)
+{
+ tor_addr_t proxy_addr;
+ uint16_t proxy_port;
+ int proxy_type;
+
+ if (get_proxy_addrport(&proxy_addr, &proxy_port, &proxy_type, conn) != 0)
+ return; /* if we have no proxy set up, leave this function. */
+
+ log_warn(LD_NET,
+ "The connection to the %s proxy server at %s:%u just failed. "
+ "Make sure that the proxy server is up and running.",
+ proxy_type_to_string(get_proxy_type()), fmt_addr(&proxy_addr),
+ proxy_port);
+}
+
+/** Return string representation of <b>proxy_type</b>. */
+static const char *
+proxy_type_to_string(int proxy_type)
+{
+ switch (proxy_type) {
+ case PROXY_CONNECT: return "HTTP";
+ case PROXY_SOCKS4: return "SOCKS4";
+ case PROXY_SOCKS5: return "SOCKS5";
+ case PROXY_PLUGGABLE: return "pluggable transports SOCKS";
+ case PROXY_NONE: return "NULL";
+ default: tor_assert(0);
+ }
+ return NULL; /*Unreached*/
+}
+
diff --git a/src/or/connection.h b/src/or/connection.h
index dc8c5df812..fedeba4b3a 100644
--- a/src/or/connection.h
+++ b/src/or/connection.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -57,6 +57,9 @@ int connection_connect(connection_t *conn, const char *address,
int connection_proxy_connect(connection_t *conn, int type);
int connection_read_proxy_handshake(connection_t *conn);
+void log_failed_proxy_connection(connection_t *conn);
+int get_proxy_addrport(tor_addr_t *addr, uint16_t *port, int *proxy_type,
+ const connection_t *conn);
int retry_all_listeners(smartlist_t *replaced_conns,
smartlist_t *new_conns);
@@ -79,6 +82,8 @@ int connection_fetch_from_buf_http(connection_t *conn,
int connection_wants_to_flush(connection_t *conn);
int connection_outbuf_too_full(connection_t *conn);
int connection_handle_write(connection_t *conn, int force);
+int connection_flush(connection_t *conn);
+
void _connection_write_to_buf_impl(const char *string, size_t len,
connection_t *conn, int zlib);
static void connection_write_to_buf(const char *string, size_t len,
diff --git a/src/or/connection_edge.c b/src/or/connection_edge.c
index bff73d4a9e..c19e8b74d6 100644
--- a/src/or/connection_edge.c
+++ b/src/or/connection_edge.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -301,6 +301,23 @@ connection_edge_end_errno(edge_connection_t *conn)
return connection_edge_end(conn, reason);
}
+/** We just wrote some data to <b>conn</b>; act appropriately.
+ *
+ * (That is, if it's open, consider sending a stream-level sendme cell if we
+ * have just flushed enough.)
+ */
+int
+connection_edge_flushed_some(edge_connection_t *conn)
+{
+ switch (conn->_base.state) {
+ case AP_CONN_STATE_OPEN:
+ case EXIT_CONN_STATE_OPEN:
+ connection_edge_consider_sending_sendme(conn);
+ break;
+ }
+ return 0;
+}
+
/** Connection <b>conn</b> has finished writing and has no bytes left on
* its outbuf.
*
@@ -391,6 +408,71 @@ connection_edge_finished_connecting(edge_connection_t *edge_conn)
return connection_edge_process_inbuf(edge_conn, 1);
}
+/** Common code to connection_(ap|exit)_about_to_close. */
+static void
+connection_edge_about_to_close(edge_connection_t *edge_conn)
+{
+ if (!edge_conn->edge_has_sent_end) {
+ connection_t *conn = TO_CONN(edge_conn);
+ log_warn(LD_BUG, "(Harmless.) Edge connection (marked at %s:%d) "
+ "hasn't sent end yet?",
+ conn->marked_for_close_file, conn->marked_for_close);
+ tor_fragile_assert();
+ }
+}
+
+/* Called when we're about to finally unlink and free an AP (client)
+ * connection: perform necessary accounting and cleanup */
+void
+connection_ap_about_to_close(edge_connection_t *edge_conn)
+{
+ circuit_t *circ;
+ connection_t *conn = TO_CONN(edge_conn);
+
+ if (edge_conn->socks_request->has_finished == 0) {
+ /* since conn gets removed right after this function finishes,
+ * there's no point trying to send back a reply at this point. */
+ log_warn(LD_BUG,"Closing stream (marked at %s:%d) without sending"
+ " back a socks reply.",
+ conn->marked_for_close_file, conn->marked_for_close);
+ }
+ if (!edge_conn->end_reason) {
+ log_warn(LD_BUG,"Closing stream (marked at %s:%d) without having"
+ " set end_reason.",
+ conn->marked_for_close_file, conn->marked_for_close);
+ }
+ if (edge_conn->dns_server_request) {
+ log_warn(LD_BUG,"Closing stream (marked at %s:%d) without having"
+ " replied to DNS request.",
+ conn->marked_for_close_file, conn->marked_for_close);
+ dnsserv_reject_request(edge_conn);
+ }
+ control_event_stream_bandwidth(edge_conn);
+ control_event_stream_status(edge_conn, STREAM_EVENT_CLOSED,
+ edge_conn->end_reason);
+ circ = circuit_get_by_edge_conn(edge_conn);
+ if (circ)
+ circuit_detach_stream(circ, edge_conn);
+}
+
+/* Called when we're about to finally unlink and free an exit
+ * connection: perform necessary accounting and cleanup */
+void
+connection_exit_about_to_close(edge_connection_t *edge_conn)
+{
+ circuit_t *circ;
+ connection_t *conn = TO_CONN(edge_conn);
+
+ connection_edge_about_to_close(edge_conn);
+
+ circ = circuit_get_by_edge_conn(edge_conn);
+ if (circ)
+ circuit_detach_stream(circ, edge_conn);
+ if (conn->state == EXIT_CONN_STATE_RESOLVING) {
+ connection_dns_remove(edge_conn);
+ }
+}
+
/** Define a schedule for how long to wait between retrying
* application connections. Rather than waiting a fixed amount of
* time between each retry, we wait 10 seconds each for the first
@@ -422,7 +504,7 @@ connection_ap_expire_beginning(void)
edge_connection_t *conn;
circuit_t *circ;
time_t now = time(NULL);
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
int severity;
int cutoff;
int seconds_idle, seconds_since_born;
@@ -486,12 +568,12 @@ connection_ap_expire_beginning(void)
}
tor_assert(circ->purpose == CIRCUIT_PURPOSE_C_GENERAL);
log_fn(cutoff < 15 ? LOG_INFO : severity, LD_APP,
- "We tried for %d seconds to connect to '%s' using exit '%s'."
+ "We tried for %d seconds to connect to '%s' using exit %s."
" Retrying on a new circuit.",
seconds_idle,
safe_str_client(conn->socks_request->address),
conn->cpath_layer ?
- conn->cpath_layer->extend_info->nickname : "*unnamed*");
+ extend_info_describe(conn->cpath_layer->extend_info): "*unnamed*");
/* send an end down the circuit */
connection_edge_end(conn, END_STREAM_REASON_TIMEOUT);
/* un-mark it as ending, since we're going to reuse it */
@@ -500,6 +582,7 @@ connection_ap_expire_beginning(void)
/* kludge to make us not try this circuit again, yet to allow
* current streams on it to survive if they can: make it
* unattractive to use for new streams */
+ /* XXXX023 this is a kludgy way to do this. */
tor_assert(circ->timestamp_dirty);
circ->timestamp_dirty -= options->MaxCircuitDirtiness;
/* give our stream another 'cutoff' seconds to try */
@@ -540,7 +623,7 @@ connection_ap_attach_pending(void)
/** Tell any AP streams that are waiting for a one-hop tunnel to
* <b>failed_digest</b> that they are going to fail. */
-/* XXX022 We should get rid of this function, and instead attach
+/* XXX023 We should get rid of this function, and instead attach
* one-hop streams to circ->p_streams so they get marked in
* circuit_mark_for_close like normal p_streams. */
void
@@ -559,7 +642,7 @@ connection_ap_fail_onehop(const char *failed_digest,
if (!edge_conn->want_onehop)
continue;
if (hexdigest_to_digest(edge_conn->chosen_exit_name, digest) < 0 ||
- memcmp(digest, failed_digest, DIGEST_LEN))
+ tor_memneq(digest, failed_digest, DIGEST_LEN))
continue;
if (tor_digest_is_zero(digest)) {
/* we don't know the digest; have to compare addr:port */
@@ -781,7 +864,8 @@ clear_trackexithost_mappings(const char *exitname)
tor_strlower(suffix);
STRMAP_FOREACH_MODIFY(addressmap, address, addressmap_entry_t *, ent) {
- if (ent->source == ADDRMAPSRC_TRACKEXIT && !strcmpend(address, suffix)) {
+ if (ent->source == ADDRMAPSRC_TRACKEXIT &&
+ !strcmpend(ent->new_address, suffix)) {
addressmap_ent_remove(address, ent);
MAP_DEL_CURRENT(address);
}
@@ -790,6 +874,101 @@ clear_trackexithost_mappings(const char *exitname)
tor_free(suffix);
}
+/** Remove all TRACKEXIT mappings from the addressmap for which the target
+ * host is unknown or no longer allowed, or for which the source address
+ * is no longer in trackexithosts. */
+void
+addressmap_clear_excluded_trackexithosts(const or_options_t *options)
+{
+ const routerset_t *allow_nodes = options->ExitNodes;
+ const routerset_t *exclude_nodes = options->_ExcludeExitNodesUnion;
+
+ if (!addressmap)
+ return;
+ if (routerset_is_empty(allow_nodes))
+ allow_nodes = NULL;
+ if (allow_nodes == NULL && routerset_is_empty(exclude_nodes))
+ return;
+
+ STRMAP_FOREACH_MODIFY(addressmap, address, addressmap_entry_t *, ent) {
+ size_t len;
+ const char *target = ent->new_address, *dot;
+ char *nodename;
+ const node_t *node;
+
+ if (strcmpend(target, ".exit")) {
+ /* Not a .exit mapping */
+ continue;
+ } else if (ent->source != ADDRMAPSRC_TRACKEXIT) {
+ /* Not a trackexit mapping. */
+ continue;
+ }
+ len = strlen(target);
+ if (len < 6)
+ continue; /* malformed. */
+ dot = target + len - 6; /* dot now points to just before .exit */
+ dot = strrchr(dot, '.'); /* dot now points to the . before .exit or NULL */
+ if (!dot) {
+ nodename = tor_strndup(target, len-5);
+ } else {
+ nodename = tor_strndup(dot+1, strlen(dot+1)-5);
+ }
+ node = node_get_by_nickname(nodename, 0);
+ tor_free(nodename);
+ if (!node ||
+ (allow_nodes && !routerset_contains_node(allow_nodes, node)) ||
+ routerset_contains_node(exclude_nodes, node) ||
+ !hostname_in_track_host_exits(options, address)) {
+ /* We don't know this one, or we want to be rid of it. */
+ addressmap_ent_remove(address, ent);
+ MAP_DEL_CURRENT(address);
+ }
+ } STRMAP_FOREACH_END;
+}
+
+/** Remove all AUTOMAP mappings from the addressmap for which the
+ * source address no longer matches AutomapHostsSuffixes, which is
+ * no longer allowed by AutomapHostsOnResolve, or for which the
+ * target address is no longer in the virtual network. */
+void
+addressmap_clear_invalid_automaps(const or_options_t *options)
+{
+ int clear_all = !options->AutomapHostsOnResolve;
+ const smartlist_t *suffixes = options->AutomapHostsSuffixes;
+
+ if (!addressmap)
+ return;
+
+ if (!suffixes)
+ clear_all = 1; /* This should be impossible, but let's be sure. */
+
+ STRMAP_FOREACH_MODIFY(addressmap, src_address, addressmap_entry_t *, ent) {
+ int remove = clear_all;
+ if (ent->source != ADDRMAPSRC_AUTOMAP)
+ continue; /* not an automap mapping. */
+
+ if (!remove) {
+ int suffix_found = 0;
+ SMARTLIST_FOREACH(suffixes, const char *, suffix, {
+ if (!strcasecmpend(src_address, suffix)) {
+ suffix_found = 1;
+ break;
+ }
+ });
+ if (!suffix_found)
+ remove = 1;
+ }
+
+ if (!remove && ! address_is_in_virtual_range(ent->new_address))
+ remove = 1;
+
+ if (remove) {
+ addressmap_ent_remove(src_address, ent);
+ MAP_DEL_CURRENT(src_address);
+ }
+ } STRMAP_FOREACH_END;
+}
+
/** Remove all entries from the addressmap that were set via the
* configuration file or the command line. */
void
@@ -1177,9 +1356,23 @@ address_is_in_virtual_range(const char *address)
return 0;
}
+/** Increment the value of next_virtual_addr; reset it to the start of the
+ * virtual address range if it wraps around.
+ */
+static INLINE void
+increment_virtual_addr(void)
+{
+ ++next_virtual_addr;
+ if (addr_mask_cmp_bits(next_virtual_addr, virtual_addr_network,
+ virtual_addr_netmask_bits))
+ next_virtual_addr = virtual_addr_network;
+}
+
/** Return a newly allocated string holding an address of <b>type</b>
* (one of RESOLVED_TYPE_{IPV4|HOSTNAME}) that has not yet been mapped,
* and that is very unlikely to be the address of any real host.
+ *
+ * May return NULL if we have run out of virtual addresses.
*/
static char *
addressmap_get_virtual_address(int type)
@@ -1198,28 +1391,32 @@ addressmap_get_virtual_address(int type)
} else if (type == RESOLVED_TYPE_IPV4) {
// This is an imperfect estimate of how many addresses are available, but
// that's ok.
+ struct in_addr in;
uint32_t available = 1u << (32-virtual_addr_netmask_bits);
while (available) {
/* Don't hand out any .0 or .255 address. */
while ((next_virtual_addr & 0xff) == 0 ||
(next_virtual_addr & 0xff) == 0xff) {
- ++next_virtual_addr;
+ increment_virtual_addr();
+ if (! --available) {
+ log_warn(LD_CONFIG, "Ran out of virtual addresses!");
+ return NULL;
+ }
}
- if (!strmap_get(addressmap, fmt_addr32(next_virtual_addr))) {
- ++next_virtual_addr;
+ in.s_addr = htonl(next_virtual_addr);
+ tor_inet_ntoa(&in, buf, sizeof(buf));
+ if (!strmap_get(addressmap, buf)) {
+ increment_virtual_addr();
break;
}
- ++next_virtual_addr;
+ increment_virtual_addr();
--available;
- log_info(LD_CONFIG, "%d addrs available", (int)available);
- if (! --available) {
+ // log_info(LD_CONFIG, "%d addrs available", (int)available);
+ if (! available) {
log_warn(LD_CONFIG, "Ran out of virtual addresses!");
return NULL;
}
- if (addr_mask_cmp_bits(next_virtual_addr, virtual_addr_network,
- virtual_addr_netmask_bits))
- next_virtual_addr = virtual_addr_network;
}
return tor_strdup(buf);
} else {
@@ -1234,14 +1431,15 @@ addressmap_get_virtual_address(int type)
* allocated string. If another address of the same type is already
* mapped to <b>new_address</b>, try to return a copy of that address.
*
- * The string in <b>new_address</b> may be freed, or inserted into a map
- * as appropriate.
+ * The string in <b>new_address</b> may be freed or inserted into a map
+ * as appropriate. May return NULL if are out of virtual addresses.
**/
const char *
addressmap_register_virtual_address(int type, char *new_address)
{
char **addrp;
virtaddress_entry_t *vent;
+ int vent_needs_to_be_added = 0;
tor_assert(new_address);
tor_assert(addressmap);
@@ -1250,7 +1448,7 @@ addressmap_register_virtual_address(int type, char *new_address)
vent = strmap_get(virtaddress_reversemap, new_address);
if (!vent) {
vent = tor_malloc_zero(sizeof(virtaddress_entry_t));
- strmap_set(virtaddress_reversemap, new_address, vent);
+ vent_needs_to_be_added = 1;
}
addrp = (type == RESOLVED_TYPE_IPV4) ?
@@ -1260,6 +1458,7 @@ addressmap_register_virtual_address(int type, char *new_address)
if (ent && ent->new_address &&
!strcasecmp(new_address, ent->new_address)) {
tor_free(new_address);
+ tor_assert(!vent_needs_to_be_added);
return tor_strdup(*addrp);
} else
log_warn(LD_BUG,
@@ -1273,8 +1472,15 @@ addressmap_register_virtual_address(int type, char *new_address)
tor_free(*addrp);
*addrp = addressmap_get_virtual_address(type);
+ if (!*addrp) {
+ tor_free(vent);
+ tor_free(new_address);
+ return NULL;
+ }
log_info(LD_APP, "Registering map from %s to %s", *addrp, new_address);
- addressmap_register(*addrp, new_address, 2, ADDRMAPSRC_CONTROLLER);
+ if (vent_needs_to_be_added)
+ strmap_set(virtaddress_reversemap, new_address, vent);
+ addressmap_register(*addrp, new_address, 2, ADDRMAPSRC_AUTOMAP);
#if 0
{
@@ -1379,7 +1585,7 @@ addressmap_get_mappings(smartlist_t *sl, time_t min_expires,
static int
consider_plaintext_ports(edge_connection_t *conn, uint16_t port)
{
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
int reject = smartlist_string_num_isin(options->RejectPlaintextPorts, port);
if (smartlist_string_num_isin(options->WarnPlaintextPorts, port)) {
@@ -1416,7 +1622,7 @@ connection_ap_rewrite_and_attach_if_allowed(edge_connection_t *conn,
origin_circuit_t *circ,
crypt_path_t *cpath)
{
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
if (options->LeaveStreamsUnattached) {
conn->_base.state = AP_CONN_STATE_CONTROLLER_WAIT;
@@ -1447,11 +1653,15 @@ connection_ap_handshake_rewrite_and_attach(edge_connection_t *conn,
{
socks_request_t *socks = conn->socks_request;
hostname_type_t addresstype;
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
struct in_addr addr_tmp;
+ /* We set this to true if this is an address we should automatically
+ * remap to a local address in VirtualAddrNetwork */
int automap = 0;
char orig_address[MAX_SOCKS_ADDR_LEN];
time_t map_expires = TIME_MAX;
+ /* This will be set to true iff the address starts out as a non-.exit
+ address, and we remap it to one because of an entry in the addressmap. */
int remapped_to_exit = 0;
time_t now = time(NULL);
@@ -1473,7 +1683,12 @@ connection_ap_handshake_rewrite_and_attach(edge_connection_t *conn,
const char *new_addr;
new_addr = addressmap_register_virtual_address(
RESOLVED_TYPE_IPV4, tor_strdup(socks->address));
- tor_assert(new_addr);
+ if (! new_addr) {
+ log_warn(LD_APP, "Unable to automap address %s",
+ escaped_safe_str(socks->address));
+ connection_mark_unattached_ap(conn, END_STREAM_REASON_INTERNAL);
+ return -1;
+ }
log_info(LD_APP, "Automapping %s to %s",
escaped_safe_str_client(socks->address),
safe_str_client(new_addr));
@@ -1489,7 +1704,8 @@ connection_ap_handshake_rewrite_and_attach(edge_connection_t *conn,
tor_snprintf(socks->address, sizeof(socks->address), "REVERSE[%s]",
orig_address);
connection_ap_handshake_socks_resolved(conn, RESOLVED_TYPE_HOSTNAME,
- strlen(result), result, -1,
+ strlen(result), (uint8_t*)result,
+ -1,
map_expires);
connection_mark_unattached_ap(conn,
END_STREAM_REASON_DONE |
@@ -1556,14 +1772,23 @@ connection_ap_handshake_rewrite_and_attach(edge_connection_t *conn,
/* foo.exit -- modify conn->chosen_exit_node to specify the exit
* node, and conn->address to hold only the address portion. */
char *s = strrchr(socks->address,'.');
+
+ /* If StrictNodes is not set, then .exit overrides ExcludeNodes. */
+ routerset_t *excludeset = options->StrictNodes ?
+ options->_ExcludeExitNodesUnion : options->ExcludeExitNodes;
+ const node_t *node;
+
tor_assert(!automap);
if (s) {
+ /* The address was of the form "(stuff).(name).exit */
if (s[1] != '\0') {
conn->chosen_exit_name = tor_strdup(s+1);
+ node = node_get_by_nickname(conn->chosen_exit_name, 1);
if (remapped_to_exit) /* 5 tries before it expires the addressmap */
conn->chosen_exit_retries = TRACKHOSTEXITS_RETRIES;
*s = 0;
} else {
+ /* Oops, the address was (stuff)..exit. That's not okay. */
log_warn(LD_APP,"Malformed exit address '%s.exit'. Refusing.",
safe_str_client(socks->address));
control_event_client_status(LOG_WARN, "SOCKS_BAD_HOSTNAME HOSTNAME=%s",
@@ -1572,20 +1797,34 @@ connection_ap_handshake_rewrite_and_attach(edge_connection_t *conn,
return -1;
}
} else {
- const node_t *r;
+ /* It looks like they just asked for "foo.exit". */
+
conn->chosen_exit_name = tor_strdup(socks->address);
- r = node_get_by_nickname(conn->chosen_exit_name, 1);
- *socks->address = 0;
- if (r) {
- node_get_address_string(r, socks->address, sizeof(socks->address));
- } else {
- log_warn(LD_APP,
- "Unrecognized server in exit address '%s.exit'. Refusing.",
- safe_str_client(socks->address));
- connection_mark_unattached_ap(conn, END_STREAM_REASON_TORPROTOCOL);
- return -1;
+ node = node_get_by_nickname(conn->chosen_exit_name, 1);
+ if (node) {
+ *socks->address = 0;
+ node_get_address_string(node, socks->address, sizeof(socks->address));
}
}
+ /* Now make sure that the chosen exit exists... */
+ if (!node) {
+ log_warn(LD_APP,
+ "Unrecognized relay in exit address '%s.exit'. Refusing.",
+ safe_str_client(socks->address));
+ connection_mark_unattached_ap(conn, END_STREAM_REASON_TORPROTOCOL);
+ return -1;
+ }
+ /* ...and make sure that it isn't excluded. */
+ if (routerset_contains_node(excludeset, node)) {
+ log_warn(LD_APP,
+ "Excluded relay in exit address '%s.exit'. Refusing.",
+ safe_str_client(socks->address));
+ connection_mark_unattached_ap(conn, END_STREAM_REASON_TORPROTOCOL);
+ return -1;
+ }
+ /* XXXX022-1090 Should we also allow foo.bar.exit if ExitNodes is set and
+ Bar is not listed in it? I say yes, but our revised manpage branch
+ implies no. */
}
if (addresstype != ONION_HOSTNAME) {
@@ -1610,7 +1849,8 @@ connection_ap_handshake_rewrite_and_attach(edge_connection_t *conn,
/* remember _what_ is supposed to have been resolved. */
strlcpy(socks->address, orig_address, sizeof(socks->address));
connection_ap_handshake_socks_resolved(conn,RESOLVED_TYPE_IPV4,4,
- (char*)&answer,-1,map_expires);
+ (uint8_t*)&answer,
+ -1,map_expires);
connection_mark_unattached_ap(conn,
END_STREAM_REASON_DONE |
END_STREAM_REASON_FLAG_ALREADY_SOCKS_REPLIED);
@@ -1625,6 +1865,28 @@ connection_ap_handshake_rewrite_and_attach(edge_connection_t *conn,
connection_mark_unattached_ap(conn, END_STREAM_REASON_TORPROTOCOL);
return -1;
}
+ if (options->ClientRejectInternalAddresses &&
+ !conn->use_begindir && !conn->chosen_exit_name && !circ) {
+ tor_addr_t addr;
+ if (tor_addr_from_str(&addr, socks->address) >= 0 &&
+ tor_addr_is_internal(&addr, 0)) {
+ /* If this is an explicit private address with no chosen exit node,
+ * then we really don't want to try to connect to it. That's
+ * probably an error. */
+ if (conn->is_transparent_ap) {
+ log_warn(LD_NET,
+ "Rejecting request for anonymous connection to private "
+ "address %s on a TransPort or NATDPort. Possible loop "
+ "in your NAT rules?", safe_str_client(socks->address));
+ } else {
+ log_warn(LD_NET,
+ "Rejecting SOCKS request for anonymous connection to "
+ "private address %s", safe_str_client(socks->address));
+ }
+ connection_mark_unattached_ap(conn, END_STREAM_REASON_PRIVATE_ADDR);
+ return -1;
+ }
+ }
if (!conn->use_begindir && !conn->chosen_exit_name && !circ) {
/* see if we can find a suitable enclave exit */
@@ -1633,7 +1895,7 @@ connection_ap_handshake_rewrite_and_attach(edge_connection_t *conn,
if (r) {
log_info(LD_APP,
"Redirecting address %s to exit at enclave router %s",
- safe_str_client(socks->address), node_get_nickname(r));
+ safe_str_client(socks->address), node_describe(r));
/* use the hex digest, not nickname, in case there are two
routers with this nickname */
conn->chosen_exit_name =
@@ -1882,7 +2144,7 @@ connection_ap_handshake_process_socks(edge_connection_t *conn)
{
socks_request_t *socks;
int sockshere;
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
int had_reply = 0;
tor_assert(conn);
@@ -2093,8 +2355,14 @@ connection_ap_handshake_send_begin(edge_connection_t *ap_conn)
ap_conn->stream_id = get_unique_stream_id_by_circ(circ);
if (ap_conn->stream_id==0) {
+ /* XXXX023 Instead of closing this stream, we should make it get
+ * retried on another circuit. */
connection_mark_unattached_ap(ap_conn, END_STREAM_REASON_INTERNAL);
- circuit_mark_for_close(TO_CIRCUIT(circ), END_CIRC_REASON_RESOURCELIMIT);
+
+ /* Mark this circuit "unusable for new streams". */
+ /* XXXX023 this is a kludgy way to do this. */
+ tor_assert(circ->_base.timestamp_dirty);
+ circ->_base.timestamp_dirty -= get_options()->MaxCircuitDirtiness;
return -1;
}
@@ -2154,9 +2422,14 @@ connection_ap_handshake_send_resolve(edge_connection_t *ap_conn)
ap_conn->stream_id = get_unique_stream_id_by_circ(circ);
if (ap_conn->stream_id==0) {
+ /* XXXX023 Instead of closing this stream, we should make it get
+ * retried on another circuit. */
connection_mark_unattached_ap(ap_conn, END_STREAM_REASON_INTERNAL);
- /*XXXX022 _close_ the circuit because it's full? That sounds dumb. */
- circuit_mark_for_close(TO_CIRCUIT(circ), END_CIRC_REASON_RESOURCELIMIT);
+
+ /* Mark this circuit "unusable for new streams". */
+ /* XXXX023 this is a kludgy way to do this. */
+ tor_assert(circ->_base.timestamp_dirty);
+ circ->_base.timestamp_dirty -= get_options()->MaxCircuitDirtiness;
return -1;
}
@@ -2316,13 +2589,13 @@ tell_controller_about_resolved_result(edge_connection_t *conn,
* certain errors or for values that didn't come via DNS. <b>expires</b> is
* a time when the answer expires, or -1 or TIME_MAX if there's a good TTL.
**/
-/* XXXX022 the use of the ttl and expires fields is nutty. Let's make this
+/* XXXX023 the use of the ttl and expires fields is nutty. Let's make this
* interface and those that use it less ugly. */
void
connection_ap_handshake_socks_resolved(edge_connection_t *conn,
int answer_type,
size_t answer_len,
- const char *answer,
+ const uint8_t *answer,
int ttl,
time_t expires)
{
@@ -2336,7 +2609,7 @@ connection_ap_handshake_socks_resolved(edge_connection_t *conn,
client_dns_set_addressmap(conn->socks_request->address, a,
conn->chosen_exit_name, ttl);
} else if (answer_type == RESOLVED_TYPE_HOSTNAME && answer_len < 256) {
- char *cp = tor_strndup(answer, answer_len);
+ char *cp = tor_strndup((char*)answer, answer_len);
client_dns_set_reverse_addressmap(conn->socks_request->address,
cp,
conn->chosen_exit_name, ttl);
@@ -2347,14 +2620,14 @@ connection_ap_handshake_socks_resolved(edge_connection_t *conn,
if (conn->is_dns_request) {
if (conn->dns_server_request) {
/* We had a request on our DNS port: answer it. */
- dnsserv_resolved(conn, answer_type, answer_len, answer, ttl);
+ dnsserv_resolved(conn, answer_type, answer_len, (char*)answer, ttl);
conn->socks_request->has_finished = 1;
return;
} else {
/* This must be a request from the controller. We already sent
* a mapaddress if there's a ttl. */
tell_controller_about_resolved_result(conn, answer_type, answer_len,
- answer, ttl, expires);
+ (char*)answer, ttl, expires);
conn->socks_request->has_finished = 1;
return;
}
@@ -2409,7 +2682,8 @@ connection_ap_handshake_socks_resolved(edge_connection_t *conn,
}
connection_ap_handshake_socks_reply(conn, buf, replylen,
(answer_type == RESOLVED_TYPE_IPV4 ||
- answer_type == RESOLVED_TYPE_IPV6) ?
+ answer_type == RESOLVED_TYPE_IPV6 ||
+ answer_type == RESOLVED_TYPE_HOSTNAME) ?
0 : END_STREAM_REASON_RESOLVEFAILED);
}
@@ -2492,13 +2766,15 @@ connection_exit_begin_conn(cell_t *cell, circuit_t *circ)
char *address=NULL;
uint16_t port;
or_circuit_t *or_circ = NULL;
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
assert_circuit_ok(circ);
if (!CIRCUIT_IS_ORIGIN(circ))
or_circ = TO_OR_CIRCUIT(circ);
relay_header_unpack(&rh, cell->payload);
+ if (rh.length > RELAY_PAYLOAD_SIZE)
+ return -1;
/* Note: we have to use relay_send_command_from_edge here, not
* connection_edge_end or connection_edge_send_command, since those require
@@ -2522,7 +2798,8 @@ connection_exit_begin_conn(cell_t *cell, circuit_t *circ)
END_STREAM_REASON_TORPROTOCOL, NULL);
return 0;
}
- if (parse_addr_port(LOG_PROTOCOL_WARN, cell->payload+RELAY_HEADER_SIZE,
+ if (parse_addr_port(LOG_PROTOCOL_WARN,
+ (char*)(cell->payload+RELAY_HEADER_SIZE),
&address,NULL,&port)<0) {
log_fn(LOG_PROTOCOL_WARN, LD_PROTOCOL,
"Unable to parse addr:port in relay begin cell. Closing.");
@@ -2687,6 +2964,8 @@ connection_exit_begin_resolve(cell_t *cell, or_circuit_t *circ)
assert_circuit_ok(TO_CIRCUIT(circ));
relay_header_unpack(&rh, cell->payload);
+ if (rh.length > RELAY_PAYLOAD_SIZE)
+ return -1;
/* This 'dummy_conn' only exists to remember the stream ID
* associated with the resolve request; and to make the
@@ -2697,8 +2976,9 @@ connection_exit_begin_resolve(cell_t *cell, or_circuit_t *circ)
*/
dummy_conn = edge_connection_new(CONN_TYPE_EXIT, AF_INET);
dummy_conn->stream_id = rh.stream_id;
- dummy_conn->_base.address = tor_strndup(cell->payload+RELAY_HEADER_SIZE,
- rh.length);
+ dummy_conn->_base.address = tor_strndup(
+ (char*)cell->payload+RELAY_HEADER_SIZE,
+ rh.length);
dummy_conn->_base.port = 0;
dummy_conn->_base.state = EXIT_CONN_STATE_RESOLVEFAILED;
dummy_conn->_base.purpose = EXIT_PURPOSE_RESOLVE;
@@ -2751,13 +3031,13 @@ connection_exit_connect(edge_connection_t *edge_conn)
log_debug(LD_EXIT,"about to try connecting");
switch (connection_connect(conn, conn->address, addr, port, &socket_error)) {
- case -1:
- /* XXX021 use socket_error below rather than trying to piece things
- * together from the current errno, which may have been clobbered. */
- connection_edge_end_errno(edge_conn);
+ case -1: {
+ int reason = errno_to_stream_end_reason(socket_error);
+ connection_edge_end(edge_conn, reason);
circuit_detach_stream(circuit_get_by_edge_conn(edge_conn), edge_conn);
connection_free(conn);
return;
+ }
case 0:
conn->state = EXIT_CONN_STATE_CONNECTING;
@@ -2883,15 +3163,11 @@ connection_edge_is_rendezvous_stream(edge_connection_t *conn)
* to exit from it, or 0 if it probably will not allow it.
* (We might be uncertain if conn's destination address has not yet been
* resolved.)
- *
- * If <b>excluded_means_no</b> is 1 and Exclude*Nodes is set and excludes
- * this relay, return 0.
*/
int
-connection_ap_can_use_exit(edge_connection_t *conn, const node_t *exit,
- int excluded_means_no)
+connection_ap_can_use_exit(edge_connection_t *conn, const node_t *exit)
{
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
tor_assert(conn);
tor_assert(conn->_base.type == CONN_TYPE_AP);
@@ -2904,7 +3180,7 @@ connection_ap_can_use_exit(edge_connection_t *conn, const node_t *exit,
if (conn->chosen_exit_name) {
const node_t *chosen_exit =
node_get_by_nickname(conn->chosen_exit_name, 1);
- if (!chosen_exit || memcmp(chosen_exit->identity,
+ if (!chosen_exit || tor_memneq(chosen_exit->identity,
exit->identity, DIGEST_LEN)) {
/* doesn't match */
// log_debug(LD_APP,"Requested node '%s', considering node '%s'. No.",
@@ -2932,18 +3208,8 @@ connection_ap_can_use_exit(edge_connection_t *conn, const node_t *exit,
if (!conn->chosen_exit_name && node_exit_policy_rejects_all(exit))
return 0;
}
- if (options->_ExcludeExitNodesUnion &&
- (options->StrictNodes || excluded_means_no) &&
- routerset_contains_node(options->_ExcludeExitNodesUnion, exit)) {
- /* If we are trying to avoid this node as exit, and we have StrictNodes
- * set, then this is not a suitable exit. Refuse it.
- *
- * If we don't have StrictNodes set, then this function gets called in
- * two contexts. First, we've got a circuit open and we want to know
- * whether we can use it. In that case, we somehow built this circuit
- * despite having the last hop in ExcludeExitNodes, so we should be
- * willing to use it. Second, we are evaluating whether this is an
- * acceptable exit for a new circuit. In that case, skip it. */
+ if (routerset_contains_node(options->_ExcludeExitNodesUnion, exit)) {
+ /* Not a suitable exit. Refuse it. */
return 0;
}
diff --git a/src/or/connection_edge.h b/src/or/connection_edge.h
index f54d7a44ec..1cb1281dbd 100644
--- a/src/or/connection_edge.h
+++ b/src/or/connection_edge.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -23,9 +23,13 @@ int connection_edge_process_inbuf(edge_connection_t *conn,
int connection_edge_destroy(circid_t circ_id, edge_connection_t *conn);
int connection_edge_end(edge_connection_t *conn, uint8_t reason);
int connection_edge_end_errno(edge_connection_t *conn);
+int connection_edge_flushed_some(edge_connection_t *conn);
int connection_edge_finished_flushing(edge_connection_t *conn);
int connection_edge_finished_connecting(edge_connection_t *conn);
+void connection_ap_about_to_close(edge_connection_t *edge_conn);
+void connection_exit_about_to_close(edge_connection_t *edge_conn);
+
int connection_ap_handshake_send_begin(edge_connection_t *ap_conn);
int connection_ap_handshake_send_resolve(edge_connection_t *ap_conn);
@@ -39,7 +43,7 @@ void connection_ap_handshake_socks_reply(edge_connection_t *conn, char *reply,
void connection_ap_handshake_socks_resolved(edge_connection_t *conn,
int answer_type,
size_t answer_len,
- const char *answer,
+ const uint8_t *answer,
int ttl,
time_t expires);
@@ -48,8 +52,7 @@ int connection_exit_begin_resolve(cell_t *cell, or_circuit_t *circ);
void connection_exit_connect(edge_connection_t *conn);
int connection_edge_is_rendezvous_stream(edge_connection_t *conn);
int connection_ap_can_use_exit(edge_connection_t *conn,
- const node_t *exit,
- int excluded_means_no);
+ const node_t *exit);
void connection_ap_expire_beginning(void);
void connection_ap_attach_pending(void);
void connection_ap_fail_onehop(const char *failed_digest,
@@ -63,6 +66,8 @@ int connection_ap_process_transparent(edge_connection_t *conn);
int address_is_invalid_destination(const char *address, int client);
void addressmap_init(void);
+void addressmap_clear_excluded_trackexithosts(const or_options_t *options);
+void addressmap_clear_invalid_automaps(const or_options_t *options);
void addressmap_clean(time_t now);
void addressmap_clear_configured(void);
void addressmap_clear_transient(void);
diff --git a/src/or/connection_or.c b/src/or/connection_or.c
index a79c1e5079..2871f1f36a 100644
--- a/src/or/connection_or.c
+++ b/src/or/connection_or.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -13,6 +13,7 @@
#include "or.h"
#include "buffers.h"
#include "circuitbuild.h"
+#include "circuitlist.h"
#include "command.h"
#include "config.h"
#include "connection.h"
@@ -124,7 +125,7 @@ connection_or_set_identity_digest(or_connection_t *conn, const char *digest)
if (!orconn_identity_map)
orconn_identity_map = digestmap_new();
- if (!memcmp(conn->identity_digest, digest, DIGEST_LEN))
+ if (tor_memeq(conn->identity_digest, digest, DIGEST_LEN))
return;
/* If the identity was set previously, remove the old mapping. */
@@ -143,12 +144,147 @@ connection_or_set_identity_digest(or_connection_t *conn, const char *digest)
#if 1
/* Testing code to check for bugs in representation. */
for (; tmp; tmp = tmp->next_with_same_id) {
- tor_assert(!memcmp(tmp->identity_digest, digest, DIGEST_LEN));
+ tor_assert(tor_memeq(tmp->identity_digest, digest, DIGEST_LEN));
tor_assert(tmp != conn);
}
#endif
}
+/**************************************************************/
+
+/** Map from a string describing what a non-open OR connection was doing when
+ * failed, to an intptr_t describing the count of connections that failed that
+ * way. Note that the count is stored _as_ the pointer.
+ */
+static strmap_t *broken_connection_counts;
+
+/** If true, do not record information in <b>broken_connection_counts</b>. */
+static int disable_broken_connection_counts = 0;
+
+/** Record that an OR connection failed in <b>state</b>. */
+static void
+note_broken_connection(const char *state)
+{
+ void *ptr;
+ intptr_t val;
+ if (disable_broken_connection_counts)
+ return;
+
+ if (!broken_connection_counts)
+ broken_connection_counts = strmap_new();
+
+ ptr = strmap_get(broken_connection_counts, state);
+ val = (intptr_t)ptr;
+ val++;
+ ptr = (void*)val;
+ strmap_set(broken_connection_counts, state, ptr);
+}
+
+/** Forget all recorded states for failed connections. If
+ * <b>stop_recording</b> is true, don't record any more. */
+void
+clear_broken_connection_map(int stop_recording)
+{
+ if (broken_connection_counts)
+ strmap_free(broken_connection_counts, NULL);
+ broken_connection_counts = NULL;
+ if (stop_recording)
+ disable_broken_connection_counts = 1;
+}
+
+/** Write a detailed description the state of <b>orconn</b> into the
+ * <b>buflen</b>-byte buffer at <b>buf</b>. This description includes not
+ * only the OR-conn level state but also the TLS state. It's useful for
+ * diagnosing broken handshakes. */
+static void
+connection_or_get_state_description(or_connection_t *orconn,
+ char *buf, size_t buflen)
+{
+ connection_t *conn = TO_CONN(orconn);
+ const char *conn_state;
+ char tls_state[256];
+
+ tor_assert(conn->type == CONN_TYPE_OR);
+
+ conn_state = conn_state_to_string(conn->type, conn->state);
+ tor_tls_get_state_description(orconn->tls, tls_state, sizeof(tls_state));
+
+ tor_snprintf(buf, buflen, "%s with SSL state %s", conn_state, tls_state);
+}
+
+/** Record the current state of <b>orconn</b> as the state of a broken
+ * connection. */
+static void
+connection_or_note_state_when_broken(or_connection_t *orconn)
+{
+ char buf[256];
+ if (disable_broken_connection_counts)
+ return;
+ connection_or_get_state_description(orconn, buf, sizeof(buf));
+ log_info(LD_HANDSHAKE,"Connection died in state '%s'", buf);
+ note_broken_connection(buf);
+}
+
+/** Helper type used to sort connection states and find the most frequent. */
+typedef struct broken_state_count_t {
+ intptr_t count;
+ const char *state;
+} broken_state_count_t;
+
+/** Helper function used to sort broken_state_count_t by frequency. */
+static int
+broken_state_count_compare(const void **a_ptr, const void **b_ptr)
+{
+ const broken_state_count_t *a = *a_ptr, *b = *b_ptr;
+ if (b->count < a->count)
+ return -1;
+ else if (b->count == a->count)
+ return 0;
+ else
+ return 1;
+}
+
+/** Upper limit on the number of different states to report for connection
+ * failure. */
+#define MAX_REASONS_TO_REPORT 10
+
+/** Report a list of the top states for failed OR connections at log level
+ * <b>severity</b>, in log domain <b>domain</b>. */
+void
+connection_or_report_broken_states(int severity, int domain)
+{
+ int total = 0;
+ smartlist_t *items;
+
+ if (!broken_connection_counts || disable_broken_connection_counts)
+ return;
+
+ items = smartlist_create();
+ STRMAP_FOREACH(broken_connection_counts, state, void *, countptr) {
+ broken_state_count_t *c = tor_malloc(sizeof(broken_state_count_t));
+ total += c->count = (intptr_t)countptr;
+ c->state = state;
+ smartlist_add(items, c);
+ } STRMAP_FOREACH_END;
+
+ smartlist_sort(items, broken_state_count_compare);
+
+ log(severity, domain, "%d connections have failed%s", total,
+ smartlist_len(items) > MAX_REASONS_TO_REPORT ? ". Top reasons:" : ":");
+
+ SMARTLIST_FOREACH_BEGIN(items, const broken_state_count_t *, c) {
+ if (c_sl_idx > MAX_REASONS_TO_REPORT)
+ break;
+ log(severity, domain,
+ " %d connections died in state %s", (int)c->count, c->state);
+ } SMARTLIST_FOREACH_END(c);
+
+ SMARTLIST_FOREACH(items, broken_state_count_t *, c, tor_free(c));
+ smartlist_free(items);
+}
+
+/**************************************************************/
+
/** Pack the cell_t host-order structure <b>src</b> into network-order
* in the buffer <b>dest</b>. See tor-spec.txt for details about the
* wire format.
@@ -191,7 +327,8 @@ var_cell_pack_header(const var_cell_t *cell, char *hdr_out)
var_cell_t *
var_cell_new(uint16_t payload_len)
{
- var_cell_t *cell = tor_malloc(sizeof(var_cell_t)+payload_len-1);
+ size_t size = STRUCT_OFFSET(var_cell_t, payload) + payload_len;
+ var_cell_t *cell = tor_malloc(size);
cell->payload_len = payload_len;
cell->command = 0;
cell->circ_id = 0;
@@ -316,7 +453,7 @@ connection_or_finished_flushing(or_connection_t *conn)
int
connection_or_finished_connecting(or_connection_t *or_conn)
{
- int proxy_type;
+ const int proxy_type = or_conn->proxy_type;
connection_t *conn;
tor_assert(or_conn);
conn = TO_CONN(or_conn);
@@ -326,15 +463,6 @@ connection_or_finished_connecting(or_connection_t *or_conn)
conn->address,conn->port);
control_event_bootstrap(BOOTSTRAP_STATUS_HANDSHAKE, 0);
- proxy_type = PROXY_NONE;
-
- if (get_options()->HTTPSProxy)
- proxy_type = PROXY_CONNECT;
- else if (get_options()->Socks4Proxy)
- proxy_type = PROXY_SOCKS4;
- else if (get_options()->Socks5Proxy)
- proxy_type = PROXY_SOCKS5;
-
if (proxy_type != PROXY_NONE) {
/* start proxy handshake */
if (connection_proxy_connect(conn, proxy_type) < 0) {
@@ -355,6 +483,51 @@ connection_or_finished_connecting(or_connection_t *or_conn)
return 0;
}
+/* Called when we're about to finally unlink and free an OR connection:
+ * perform necessary accounting and cleanup */
+void
+connection_or_about_to_close(or_connection_t *or_conn)
+{
+ time_t now = time(NULL);
+ connection_t *conn = TO_CONN(or_conn);
+
+ /* Remember why we're closing this connection. */
+ if (conn->state != OR_CONN_STATE_OPEN) {
+ /* Inform any pending (not attached) circs that they should
+ * give up. */
+ circuit_n_conn_done(TO_OR_CONN(conn), 0);
+ /* now mark things down as needed */
+ if (connection_or_nonopen_was_started_here(or_conn)) {
+ const or_options_t *options = get_options();
+ connection_or_note_state_when_broken(or_conn);
+ rep_hist_note_connect_failed(or_conn->identity_digest, now);
+ entry_guard_register_connect_status(or_conn->identity_digest,0,
+ !options->HTTPSProxy, now);
+ if (conn->state >= OR_CONN_STATE_TLS_HANDSHAKING) {
+ int reason = tls_error_to_orconn_end_reason(or_conn->tls_error);
+ control_event_or_conn_status(or_conn, OR_CONN_EVENT_FAILED,
+ reason);
+ if (!authdir_mode_tests_reachability(options))
+ control_event_bootstrap_problem(
+ orconn_end_reason_to_control_string(reason), reason);
+ }
+ }
+ } else if (conn->hold_open_until_flushed) {
+ /* We only set hold_open_until_flushed when we're intentionally
+ * closing a connection. */
+ rep_hist_note_disconnect(or_conn->identity_digest, now);
+ control_event_or_conn_status(or_conn, OR_CONN_EVENT_CLOSED,
+ tls_error_to_orconn_end_reason(or_conn->tls_error));
+ } else if (!tor_digest_is_zero(or_conn->identity_digest)) {
+ rep_hist_note_connection_died(or_conn->identity_digest, now);
+ control_event_or_conn_status(or_conn, OR_CONN_EVENT_CLOSED,
+ tls_error_to_orconn_end_reason(or_conn->tls_error));
+ }
+ /* Now close all the attached circuits on it. */
+ circuit_unlink_all_from_or_conn(TO_OR_CONN(conn),
+ END_CIRC_REASON_OR_CONN_CLOSED);
+}
+
/** Return 1 if identity digest <b>id_digest</b> is known to be a
* currently or recently running relay. Otherwise return 0. */
int
@@ -373,10 +546,13 @@ connection_or_digest_is_known_relay(const char *id_digest)
* per-conn limits that are big enough they'll never matter. But if it's
* not a known relay, first check if we set PerConnBwRate/Burst, then
* check if the consensus sets them, else default to 'big enough'.
+ *
+ * If <b>reset</b> is true, set the bucket to be full. Otherwise, just
+ * clip the bucket if it happens to be <em>too</em> full.
*/
static void
connection_or_update_token_buckets_helper(or_connection_t *conn, int reset,
- or_options_t *options)
+ const or_options_t *options)
{
int rate, burst; /* per-connection rate limiting params */
if (connection_or_digest_is_known_relay(conn->identity_digest)) {
@@ -390,11 +566,11 @@ connection_or_update_token_buckets_helper(or_connection_t *conn, int reset,
* bandwidth parameters in the consensus, but allow local config
* options to override. */
rate = options->PerConnBWRate ? (int)options->PerConnBWRate :
- (int)networkstatus_get_param(NULL, "perconnbwrate",
- (int)options->BandwidthRate);
+ networkstatus_get_param(NULL, "perconnbwrate",
+ (int)options->BandwidthRate, 1, INT32_MAX);
burst = options->PerConnBWBurst ? (int)options->PerConnBWBurst :
- (int)networkstatus_get_param(NULL, "perconnbwburst",
- (int)options->BandwidthBurst);
+ networkstatus_get_param(NULL, "perconnbwburst",
+ (int)options->BandwidthBurst, 1, INT32_MAX);
}
conn->bandwidthrate = rate;
@@ -429,9 +605,11 @@ connection_or_update_token_buckets_helper(or_connection_t *conn, int reset,
}
/** Either our set of relays or our per-conn rate limits have changed.
- * Go through all the OR connections and update their token buckets. */
+ * Go through all the OR connections and update their token buckets to make
+ * sure they don't exceed their maximum values. */
void
-connection_or_update_token_buckets(smartlist_t *conns, or_options_t *options)
+connection_or_update_token_buckets(smartlist_t *conns,
+ const or_options_t *options)
{
SMARTLIST_FOREACH(conns, connection_t *, conn,
{
@@ -506,7 +684,7 @@ connection_or_init_conn_from_address(or_connection_t *conn,
* Requires that both input connections are open; not is_bad_for_new_circs,
* and not impossibly non-canonical.
*
- * If </b>forgive_new_connections</b> is true, then we do not call
+ * If <b>forgive_new_connections</b> is true, then we do not call
* <b>a</b>better than <b>b</b> simply because b has no circuits,
* unless b is also relatively old.
*/
@@ -580,7 +758,7 @@ connection_or_get_for_extend(const char *digest,
for (; conn; conn = conn->next_with_same_id) {
tor_assert(conn->_base.magic == OR_CONNECTION_MAGIC);
tor_assert(conn->_base.type == CONN_TYPE_OR);
- tor_assert(!memcmp(conn->identity_digest, digest, DIGEST_LEN));
+ tor_assert(tor_memeq(conn->identity_digest, digest, DIGEST_LEN));
if (conn->_base.marked_for_close)
continue;
/* Never return a non-open connection. */
@@ -783,7 +961,7 @@ connection_or_set_bad_connections(const char *digest, int force)
return;
DIGESTMAP_FOREACH(orconn_identity_map, identity, or_connection_t *, conn) {
- if (!digest || !memcmp(digest, conn->identity_digest, DIGEST_LEN))
+ if (!digest || tor_memeq(digest, conn->identity_digest, DIGEST_LEN))
connection_or_group_set_badness(conn, force);
} DIGESTMAP_FOREACH_END;
}
@@ -822,11 +1000,15 @@ connection_or_connect(const tor_addr_t *_addr, uint16_t port,
const char *id_digest)
{
or_connection_t *conn;
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
int socket_error = 0;
- int using_proxy = 0;
tor_addr_t addr;
+ int r;
+ tor_addr_t proxy_addr;
+ uint16_t proxy_port;
+ int proxy_type;
+
tor_assert(_addr);
tor_assert(id_digest);
tor_addr_copy(&addr, _addr);
@@ -843,19 +1025,20 @@ connection_or_connect(const tor_addr_t *_addr, uint16_t port,
conn->_base.state = OR_CONN_STATE_CONNECTING;
control_event_or_conn_status(conn, OR_CONN_EVENT_LAUNCHED, 0);
- /* use a proxy server if available */
- if (options->HTTPSProxy) {
- using_proxy = 1;
- tor_addr_copy(&addr, &options->HTTPSProxyAddr);
- port = options->HTTPSProxyPort;
- } else if (options->Socks4Proxy) {
- using_proxy = 1;
- tor_addr_copy(&addr, &options->Socks4ProxyAddr);
- port = options->Socks4ProxyPort;
- } else if (options->Socks5Proxy) {
- using_proxy = 1;
- tor_addr_copy(&addr, &options->Socks5ProxyAddr);
- port = options->Socks5ProxyPort;
+ /* If we are using a proxy server, find it and use it. */
+ r = get_proxy_addrport(&proxy_addr, &proxy_port, &proxy_type, TO_CONN(conn));
+ if (r == 0) {
+ conn->proxy_type = proxy_type;
+ if (proxy_type != PROXY_NONE) {
+ tor_addr_copy(&addr, &proxy_addr);
+ port = proxy_port;
+ conn->_base.proxy_state = PROXY_INFANT;
+ }
+ } else {
+ log_warn(LD_GENERAL, "Tried to connect through proxy, but proxy address "
+ "could not be found.");
+ connection_free(TO_CONN(conn));
+ return NULL;
}
switch (connection_connect(TO_CONN(conn), conn->_base.address,
@@ -863,7 +1046,7 @@ connection_or_connect(const tor_addr_t *_addr, uint16_t port,
case -1:
/* If the connection failed immediately, and we're using
* a proxy, our proxy is down. Don't blame the Tor server. */
- if (!using_proxy)
+ if (conn->_base.proxy_state == PROXY_INFANT)
entry_guard_register_connect_status(conn->identity_digest,
0, 1, time(NULL));
connection_or_connect_failed(conn,
@@ -991,13 +1174,16 @@ connection_tls_continue_handshake(or_connection_t *conn)
if (! tor_tls_used_v1_handshake(conn->tls)) {
if (!tor_tls_is_server(conn->tls)) {
if (conn->_base.state == OR_CONN_STATE_TLS_HANDSHAKING) {
- // log_notice(LD_OR,"Done. state was TLS_HANDSHAKING.");
+ log_debug(LD_OR, "Done with initial SSL handshake (client-side). "
+ "Requesting renegotiation.");
conn->_base.state = OR_CONN_STATE_TLS_CLIENT_RENEGOTIATING;
goto again;
}
// log_notice(LD_OR,"Done. state was %d.", conn->_base.state);
} else {
/* improved handshake, but not a client. */
+ log_debug(LD_OR, "Done with initial SSL handshake (server-side). "
+ "Expecting renegotiation.");
tor_tls_set_renegotiate_callback(conn->tls,
connection_or_tls_renegotiated_cb,
conn);
@@ -1139,7 +1325,7 @@ connection_or_check_valid_tls_handshake(or_connection_t *conn,
char *digest_rcvd_out)
{
crypto_pk_env_t *identity_rcvd=NULL;
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
int severity = server_mode(options) ? LOG_PROTOCOL_WARN : LOG_WARN;
const char *safe_address =
started_here ? conn->_base.address :
@@ -1216,7 +1402,7 @@ connection_or_check_valid_tls_handshake(or_connection_t *conn,
int as_advertised = 1;
tor_assert(has_cert);
tor_assert(has_identity);
- if (memcmp(digest_rcvd_out, conn->identity_digest, DIGEST_LEN)) {
+ if (tor_memneq(digest_rcvd_out, conn->identity_digest, DIGEST_LEN)) {
/* I was aiming for a particular digest. I didn't get it! */
char seen[HEX_DIGEST_LEN+1];
char expected[HEX_DIGEST_LEN+1];
@@ -1236,9 +1422,6 @@ connection_or_check_valid_tls_handshake(or_connection_t *conn,
as_advertised = 0;
}
if (authdir_mode_tests_reachability(options)) {
- /* We initiated this connection to address:port. Drop all routers
- * with the same address:port and a different key.
- */
dirserv_orconn_tls_done(conn->_base.address, conn->_base.port,
digest_rcvd_out, as_advertised);
}
@@ -1403,7 +1586,8 @@ connection_or_write_var_cell_to_buf(const var_cell_t *cell,
tor_assert(conn);
var_cell_pack_header(cell, hdr);
connection_write_to_buf(hdr, sizeof(hdr), TO_CONN(conn));
- connection_write_to_buf(cell->payload, cell->payload_len, TO_CONN(conn));
+ connection_write_to_buf((char*)cell->payload,
+ cell->payload_len, TO_CONN(conn));
if (cell->command != CELL_PADDING)
conn->timestamp_last_added_nonpadding = approx_time();
}
@@ -1538,7 +1722,7 @@ connection_or_send_netinfo(or_connection_t *conn)
time_t now = time(NULL);
const routerinfo_t *me;
int len;
- char *out;
+ uint8_t *out;
memset(&cell, 0, sizeof(cell_t));
cell.command = CELL_NETINFO;
@@ -1562,9 +1746,8 @@ connection_or_send_netinfo(or_connection_t *conn)
len = append_address_to_payload(out, &my_addr);
if (len < 0)
return -1;
- out += len;
} else {
- *out++ = 0;
+ *out = 0;
}
connection_or_write_cell_to_buf(&cell, conn);
diff --git a/src/or/connection_or.h b/src/or/connection_or.h
index 216a9bd648..072edbd8cf 100644
--- a/src/or/connection_or.h
+++ b/src/or/connection_or.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -14,6 +14,7 @@
void connection_or_remove_from_identity_map(or_connection_t *conn);
void connection_or_clear_identity_map(void);
+void clear_broken_connection_map(int disable);
or_connection_t *connection_or_get_for_extend(const char *digest,
const tor_addr_t *target_addr,
const char **msg_out,
@@ -25,15 +26,18 @@ int connection_or_process_inbuf(or_connection_t *conn);
int connection_or_flushed_some(or_connection_t *conn);
int connection_or_finished_flushing(or_connection_t *conn);
int connection_or_finished_connecting(or_connection_t *conn);
+void connection_or_about_to_close(or_connection_t *conn);
int connection_or_digest_is_known_relay(const char *id_digest);
void connection_or_update_token_buckets(smartlist_t *conns,
- or_options_t *options);
+ const or_options_t *options);
void connection_or_connect_failed(or_connection_t *conn,
int reason, const char *msg);
or_connection_t *connection_or_connect(const tor_addr_t *addr, uint16_t port,
const char *id_digest);
+void connection_or_report_broken_states(int severity, int domain);
+
int connection_tls_start_handshake(or_connection_t *conn, int receiving);
int connection_tls_continue_handshake(or_connection_t *conn);
diff --git a/src/or/control.c b/src/or/control.c
index 5e2bcc702f..fa0c6cf4e0 100644
--- a/src/or/control.c
+++ b/src/or/control.c
@@ -1,5 +1,5 @@
/* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -18,6 +18,7 @@
#include "config.h"
#include "connection.h"
#include "connection_edge.h"
+#include "connection_or.h"
#include "control.h"
#include "directory.h"
#include "dirserv.h"
@@ -33,6 +34,13 @@
#include "routerlist.h"
#include "routerparse.h"
+#ifndef MS_WINDOWS
+#include <pwd.h>
+#include <sys/resource.h>
+#endif
+
+#include "procmon.h"
+
/** Yield true iff <b>s</b> is the state of a control_connection_t that has
* finished authentication and is accepting commands. */
#define STATE_IS_OPEN(s) ((s) == CONTROL_CONN_STATE_OPEN)
@@ -98,7 +106,7 @@ static int disable_log_messages = 0;
static int authentication_cookie_is_set = 0;
/** If authentication_cookie_is_set, a secret cookie that we've stored to disk
* and which we're using to authenticate controllers. (If the controller can
- * read it off disk, it has permission to connect. */
+ * read it off disk, it has permission to connect.) */
static char authentication_cookie[AUTHENTICATION_COOKIE_LEN];
/** A sufficiently large size to record the last bootstrap phase string. */
@@ -336,7 +344,7 @@ write_escaped_data(const char *data, size_t len, char **out)
}
*outp++ = *data++;
}
- if (outp < *out+2 || memcmp(outp-2, "\r\n", 2)) {
+ if (outp < *out+2 || fast_memcmp(outp-2, "\r\n", 2)) {
*outp++ = '\r';
*outp++ = '\n';
}
@@ -481,33 +489,73 @@ decode_escaped_string(const char *start, size_t in_len_max,
}
/** Acts like sprintf, but writes its formatted string to the end of
- * <b>conn</b>-\>outbuf. The message may be truncated if it is too long,
- * but it will always end with a CRLF sequence.
- *
- * Currently the length of the message is limited to 1024 (including the
- * ending CR LF NUL ("\\r\\n\\0"). */
+ * <b>conn</b>-\>outbuf. */
static void
connection_printf_to_buf(control_connection_t *conn, const char *format, ...)
{
-#define CONNECTION_PRINTF_TO_BUF_BUFFERSIZE 1024
va_list ap;
- char buf[CONNECTION_PRINTF_TO_BUF_BUFFERSIZE];
- int r;
- size_t len;
+ char *buf = NULL;
+ int len;
+
va_start(ap,format);
- r = tor_vsnprintf(buf, sizeof(buf), format, ap);
+ len = tor_vasprintf(&buf, format, ap);
va_end(ap);
- if (r<0) {
+
+ if (len < 0) {
log_warn(LD_BUG, "Unable to format string for controller.");
return;
}
- len = strlen(buf);
- if (memcmp("\r\n\0", buf+len-2, 3)) {
- buf[CONNECTION_PRINTF_TO_BUF_BUFFERSIZE-1] = '\0';
- buf[CONNECTION_PRINTF_TO_BUF_BUFFERSIZE-2] = '\n';
- buf[CONNECTION_PRINTF_TO_BUF_BUFFERSIZE-3] = '\r';
+
+ connection_write_to_buf(buf, (size_t)len, TO_CONN(conn));
+
+ tor_free(buf);
+}
+
+/** Write all of the open control ports to ControlPortWriteToFile */
+void
+control_ports_write_to_file(void)
+{
+ smartlist_t *lines;
+ char *joined = NULL;
+ const or_options_t *options = get_options();
+
+ if (!options->ControlPortWriteToFile)
+ return;
+
+ lines = smartlist_create();
+
+ SMARTLIST_FOREACH_BEGIN(get_connection_array(), const connection_t *, conn) {
+ char *port_str = NULL;
+ if (conn->type != CONN_TYPE_CONTROL_LISTENER || conn->marked_for_close)
+ continue;
+#ifdef AF_UNIX
+ if (conn->socket_family == AF_UNIX) {
+ tor_asprintf(&port_str, "UNIX_PORT=%s\n", conn->address);
+ smartlist_add(lines, port_str);
+ continue;
+ }
+#endif
+ tor_asprintf(&port_str, "PORT=%s:%d\n", conn->address, conn->port);
+ smartlist_add(lines, port_str);
+ } SMARTLIST_FOREACH_END(conn);
+
+ joined = smartlist_join_strings(lines, "", 0, NULL);
+
+ if (write_str_to_file(options->ControlPortWriteToFile, joined, 0) < 0) {
+ log_warn(LD_CONTROL, "Writing %s failed: %s",
+ options->ControlPortWriteToFile, strerror(errno));
+ }
+#ifndef MS_WINDOWS
+ if (options->ControlPortFileGroupReadable) {
+ if (chmod(options->ControlPortWriteToFile, 0640)) {
+ log_warn(LD_FS,"Unable to make %s group-readable.",
+ options->ControlPortWriteToFile);
+ }
}
- connection_write_to_buf(buf, len, TO_CONN(conn));
+#endif
+ tor_free(joined);
+ SMARTLIST_FOREACH(lines, char *, cp, tor_free(cp));
+ smartlist_free(lines);
}
/** Send a "DONE" message down the control connection <b>conn</b>. */
@@ -553,52 +601,37 @@ send_control_event_string(uint16_t event, event_format_t which,
else if (event == EVENT_STATUS_SERVER)
is_err = !strcmpstart(msg, "STATUS_SERVER ERR ");
if (is_err)
- connection_handle_write(TO_CONN(control_conn), 1);
+ connection_flush(TO_CONN(control_conn));
}
}
} SMARTLIST_FOREACH_END(conn);
}
-/** Helper for send_control1_event and send_control1_event_extended:
+/** Helper for send_control_event and control_event_status:
* Send an event to all v1 controllers that are listening for code
* <b>event</b>. The event's body is created by the printf-style format in
- * <b>format</b>, and other arguments as provided.
- *
- * Currently the length of the message is limited to 1024 (including the
- * ending \\r\\n\\0). */
+ * <b>format</b>, and other arguments as provided. */
static void
send_control_event_impl(uint16_t event, event_format_t which,
const char *format, va_list ap)
{
- /* This is just a little longer than the longest allowed log message */
-#define SEND_CONTROL1_EVENT_BUFFERSIZE 10064
- int r;
- char buf[SEND_CONTROL1_EVENT_BUFFERSIZE];
- size_t len;
+ char *buf = NULL;
+ int len;
- r = tor_vsnprintf(buf, sizeof(buf), format, ap);
- if (r<0) {
+ len = tor_vasprintf(&buf, format, ap);
+ if (len < 0) {
log_warn(LD_BUG, "Unable to format event for controller.");
return;
}
- len = strlen(buf);
- if (memcmp("\r\n\0", buf+len-2, 3)) {
- /* if it is not properly terminated, do it now */
- buf[SEND_CONTROL1_EVENT_BUFFERSIZE-1] = '\0';
- buf[SEND_CONTROL1_EVENT_BUFFERSIZE-2] = '\n';
- buf[SEND_CONTROL1_EVENT_BUFFERSIZE-3] = '\r';
- }
-
send_control_event_string(event, which|ALL_FORMATS, buf);
+
+ tor_free(buf);
}
/** Send an event to all v1 controllers that are listening for code
* <b>event</b>. The event's body is created by the printf-style format in
- * <b>format</b>, and other arguments as provided.
- *
- * Currently the length of the message is limited to 1024 (including the
- * ending \\n\\r\\0. */
+ * <b>format</b>, and other arguments as provided. */
static void
send_control_event(uint16_t event, event_format_t which,
const char *format, ...)
@@ -773,7 +806,7 @@ handle_control_getconf(control_connection_t *conn, uint32_t body_len,
smartlist_t *unrecognized = smartlist_create();
char *msg = NULL;
size_t msg_len;
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
int i, len;
(void) body_len; /* body is NUL-terminated; so we can ignore len. */
@@ -885,13 +918,44 @@ handle_control_loadconf(control_connection_t *conn, uint32_t len,
return 0;
}
+struct control_event_t {
+ uint16_t event_code;
+ const char *event_name;
+};
+static const struct control_event_t control_event_table[] = {
+ { EVENT_CIRCUIT_STATUS, "CIRC" },
+ { EVENT_STREAM_STATUS, "STREAM" },
+ { EVENT_OR_CONN_STATUS, "ORCONN" },
+ { EVENT_BANDWIDTH_USED, "BW" },
+ { EVENT_DEBUG_MSG, "DEBUG" },
+ { EVENT_INFO_MSG, "INFO" },
+ { EVENT_NOTICE_MSG, "NOTICE" },
+ { EVENT_WARN_MSG, "WARN" },
+ { EVENT_ERR_MSG, "ERR" },
+ { EVENT_NEW_DESC, "NEWDESC" },
+ { EVENT_ADDRMAP, "ADDRMAP" },
+ { EVENT_AUTHDIR_NEWDESCS, "AUTHDIR_NEWDESCS" },
+ { EVENT_DESCCHANGED, "DESCCHANGED" },
+ { EVENT_NS, "NS" },
+ { EVENT_STATUS_GENERAL, "STATUS_GENERAL" },
+ { EVENT_STATUS_CLIENT, "STATUS_CLIENT" },
+ { EVENT_STATUS_SERVER, "STATUS_SERVER" },
+ { EVENT_GUARD, "GUARD" },
+ { EVENT_STREAM_BANDWIDTH_USED, "STREAM_BW" },
+ { EVENT_CLIENTS_SEEN, "CLIENTS_SEEN" },
+ { EVENT_NEWCONSENSUS, "NEWCONSENSUS" },
+ { EVENT_BUILDTIMEOUT_SET, "BUILDTIMEOUT_SET" },
+ { EVENT_SIGNAL, "SIGNAL" },
+ { 0, NULL },
+};
+
/** Called when we get a SETEVENTS message: update conn->event_mask,
* and reply with DONE or ERROR. */
static int
handle_control_setevents(control_connection_t *conn, uint32_t len,
const char *body)
{
- uint16_t event_code;
+ int event_code = -1;
uint32_t event_mask = 0;
smartlist_t *events = smartlist_create();
@@ -903,58 +967,22 @@ handle_control_setevents(control_connection_t *conn, uint32_t len,
{
if (!strcasecmp(ev, "EXTENDED")) {
continue;
- } else if (!strcasecmp(ev, "CIRC"))
- event_code = EVENT_CIRCUIT_STATUS;
- else if (!strcasecmp(ev, "STREAM"))
- event_code = EVENT_STREAM_STATUS;
- else if (!strcasecmp(ev, "ORCONN"))
- event_code = EVENT_OR_CONN_STATUS;
- else if (!strcasecmp(ev, "BW"))
- event_code = EVENT_BANDWIDTH_USED;
- else if (!strcasecmp(ev, "DEBUG"))
- event_code = EVENT_DEBUG_MSG;
- else if (!strcasecmp(ev, "INFO"))
- event_code = EVENT_INFO_MSG;
- else if (!strcasecmp(ev, "NOTICE"))
- event_code = EVENT_NOTICE_MSG;
- else if (!strcasecmp(ev, "WARN"))
- event_code = EVENT_WARN_MSG;
- else if (!strcasecmp(ev, "ERR"))
- event_code = EVENT_ERR_MSG;
- else if (!strcasecmp(ev, "NEWDESC"))
- event_code = EVENT_NEW_DESC;
- else if (!strcasecmp(ev, "ADDRMAP"))
- event_code = EVENT_ADDRMAP;
- else if (!strcasecmp(ev, "AUTHDIR_NEWDESCS"))
- event_code = EVENT_AUTHDIR_NEWDESCS;
- else if (!strcasecmp(ev, "DESCCHANGED"))
- event_code = EVENT_DESCCHANGED;
- else if (!strcasecmp(ev, "NS"))
- event_code = EVENT_NS;
- else if (!strcasecmp(ev, "STATUS_GENERAL"))
- event_code = EVENT_STATUS_GENERAL;
- else if (!strcasecmp(ev, "STATUS_CLIENT"))
- event_code = EVENT_STATUS_CLIENT;
- else if (!strcasecmp(ev, "STATUS_SERVER"))
- event_code = EVENT_STATUS_SERVER;
- else if (!strcasecmp(ev, "GUARD"))
- event_code = EVENT_GUARD;
- else if (!strcasecmp(ev, "STREAM_BW"))
- event_code = EVENT_STREAM_BANDWIDTH_USED;
- else if (!strcasecmp(ev, "CLIENTS_SEEN"))
- event_code = EVENT_CLIENTS_SEEN;
- else if (!strcasecmp(ev, "NEWCONSENSUS"))
- event_code = EVENT_NEWCONSENSUS;
- else if (!strcasecmp(ev, "BUILDTIMEOUT_SET"))
- event_code = EVENT_BUILDTIMEOUT_SET;
- else if (!strcasecmp(ev, "SIGNAL"))
- event_code = EVENT_SIGNAL;
- else {
- connection_printf_to_buf(conn, "552 Unrecognized event \"%s\"\r\n",
- ev);
- SMARTLIST_FOREACH(events, char *, e, tor_free(e));
- smartlist_free(events);
- return 0;
+ } else {
+ int i;
+ for (i = 0; control_event_table[i].event_name != NULL; ++i) {
+ if (!strcasecmp(ev, control_event_table[i].event_name)) {
+ event_code = control_event_table[i].event_code;
+ break;
+ }
+ }
+
+ if (event_code == -1) {
+ connection_printf_to_buf(conn, "552 Unrecognized event \"%s\"\r\n",
+ ev);
+ SMARTLIST_FOREACH(events, char *, e, tor_free(e));
+ smartlist_free(events);
+ return 0;
+ }
}
event_mask |= (1 << event_code);
}
@@ -1016,7 +1044,7 @@ handle_control_authenticate(control_connection_t *conn, uint32_t len,
const char *body)
{
int used_quoted_string = 0;
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
const char *errstr = NULL;
char *password;
size_t password_len;
@@ -1073,7 +1101,7 @@ handle_control_authenticate(control_connection_t *conn, uint32_t len,
goto err;
}
bad_cookie = 1;
- } else if (memcmp(authentication_cookie, password, password_len)) {
+ } else if (tor_memneq(authentication_cookie, password, password_len)) {
if (!also_password) {
log_warn(LD_CONTROL, "Got mismatched authentication cookie");
errstr = "Authentication cookie did not match expected value.";
@@ -1123,7 +1151,7 @@ handle_control_authenticate(control_connection_t *conn, uint32_t len,
SMARTLIST_FOREACH(sl, char *, expected,
{
secret_to_key(received,DIGEST_LEN,password,password_len,expected);
- if (!memcmp(expected+S2K_SPECIFIER_LEN, received, DIGEST_LEN))
+ if (tor_memeq(expected+S2K_SPECIFIER_LEN, received, DIGEST_LEN))
goto ok;
});
SMARTLIST_FOREACH(sl, char *, cp, tor_free(cp));
@@ -1225,8 +1253,30 @@ handle_control_signal(control_connection_t *conn, uint32_t len,
send_control_done(conn);
/* Flush the "done" first if the signal might make us shut down. */
if (sig == SIGTERM || sig == SIGINT)
- connection_handle_write(TO_CONN(conn), 1);
- control_signal_act(sig);
+ connection_flush(TO_CONN(conn));
+
+ process_signal(sig);
+
+ return 0;
+}
+
+/** Called when we get a TAKEOWNERSHIP command. Mark this connection
+ * as an owning connection, so that we will exit if the connection
+ * closes. */
+static int
+handle_control_takeownership(control_connection_t *conn, uint32_t len,
+ const char *body)
+{
+ (void)len;
+ (void)body;
+
+ conn->is_owning_control_connection = 1;
+
+ log_info(LD_CONTROL, "Control connection %d has taken ownership of this "
+ "Tor instance.",
+ (int)(conn->_base.s));
+
+ send_control_done(conn);
return 0;
}
@@ -1332,10 +1382,16 @@ getinfo_helper_misc(control_connection_t *conn, const char *question,
} else if (!strcmp(question, "info/names")) {
*answer = list_getinfo_options();
} else if (!strcmp(question, "events/names")) {
- *answer = tor_strdup("CIRC STREAM ORCONN BW DEBUG INFO NOTICE WARN ERR "
- "NEWDESC ADDRMAP AUTHDIR_NEWDESCS DESCCHANGED "
- "NS STATUS_GENERAL STATUS_CLIENT STATUS_SERVER "
- "GUARD STREAM_BW CLIENTS_SEEN NEWCONSENSUS");
+ int i;
+ smartlist_t *event_names = smartlist_create();
+
+ for (i = 0; control_event_table[i].event_name != NULL; ++i) {
+ smartlist_add(event_names, (char *)control_event_table[i].event_name);
+ }
+
+ *answer = smartlist_join_strings(event_names, " ", 0, NULL);
+
+ smartlist_free(event_names);
} else if (!strcmp(question, "features/names")) {
*answer = tor_strdup("VERBOSE_NAMES EXTENDED_EVENTS");
} else if (!strcmp(question, "address")) {
@@ -1345,6 +1401,61 @@ getinfo_helper_misc(control_connection_t *conn, const char *question,
return -1;
}
*answer = tor_dup_ip(addr);
+ } else if (!strcmp(question, "traffic/read")) {
+ tor_asprintf(answer, U64_FORMAT, U64_PRINTF_ARG(get_bytes_read()));
+ } else if (!strcmp(question, "traffic/written")) {
+ tor_asprintf(answer, U64_FORMAT, U64_PRINTF_ARG(get_bytes_written()));
+ } else if (!strcmp(question, "process/pid")) {
+ int myPid = -1;
+
+ #ifdef MS_WINDOWS
+ myPid = _getpid();
+ #else
+ myPid = getpid();
+ #endif
+
+ tor_asprintf(answer, "%d", myPid);
+ } else if (!strcmp(question, "process/uid")) {
+ #ifdef MS_WINDOWS
+ *answer = tor_strdup("-1");
+ #else
+ int myUid = geteuid();
+ tor_asprintf(answer, "%d", myUid);
+ #endif
+ } else if (!strcmp(question, "process/user")) {
+ #ifdef MS_WINDOWS
+ *answer = tor_strdup("");
+ #else
+ int myUid = geteuid();
+ struct passwd *myPwEntry = getpwuid(myUid);
+
+ if (myPwEntry) {
+ *answer = tor_strdup(myPwEntry->pw_name);
+ } else {
+ *answer = tor_strdup("");
+ }
+ #endif
+ } else if (!strcmp(question, "process/descriptor-limit")) {
+ /** platform specifc limits are from the set_max_file_descriptors function
+ * of src/common/compat.c */
+ /* XXXX023 This is duplicated code from compat.c; it should turn into a
+ * function. */
+ #ifdef HAVE_GETRLIMIT
+ struct rlimit descriptorLimit;
+
+ if (getrlimit(RLIMIT_NOFILE, &descriptorLimit) == 0) {
+ tor_asprintf(answer, U64_FORMAT,
+ U64_PRINTF_ARG(descriptorLimit.rlim_max));
+ } else {
+ *answer = tor_strdup("-1");
+ }
+ #elif defined(CYGWIN) || defined(__CYGWIN__)
+ *answer = tor_strdup("3200");
+ #elif defined(MS_WINDOWS)
+ *answer = tor_strdup("15000");
+ #else
+ *answer = tor_strdup("15000");
+ #endif
} else if (!strcmp(question, "dir-usage")) {
*answer = directory_dump_request_log();
} else if (!strcmp(question, "fingerprint")) {
@@ -1410,6 +1521,63 @@ munge_extrainfo_into_routerinfo(const char *ri_body,
return tor_strndup(ri_body, ri->signed_descriptor_len);
}
+/** Implementation helper for GETINFO: answers requests for information about
+ * which ports are bound. */
+static int
+getinfo_helper_listeners(control_connection_t *control_conn,
+ const char *question,
+ char **answer, const char **errmsg)
+{
+ int type;
+ smartlist_t *res;
+
+ (void)control_conn;
+ (void)errmsg;
+
+ if (!strcmp(question, "net/listeners/or"))
+ type = CONN_TYPE_OR_LISTENER;
+ else if (!strcmp(question, "net/listeners/dir"))
+ type = CONN_TYPE_DIR_LISTENER;
+ else if (!strcmp(question, "net/listeners/socks"))
+ type = CONN_TYPE_AP_LISTENER;
+ else if (!strcmp(question, "net/listeners/trans"))
+ type = CONN_TYPE_AP_TRANS_LISTENER;
+ else if (!strcmp(question, "net/listeners/natd"))
+ type = CONN_TYPE_AP_NATD_LISTENER;
+ else if (!strcmp(question, "net/listeners/dns"))
+ type = CONN_TYPE_AP_DNS_LISTENER;
+ else if (!strcmp(question, "net/listeners/control"))
+ type = CONN_TYPE_CONTROL_LISTENER;
+ else
+ return 0; /* unknown key */
+
+ res = smartlist_create();
+ SMARTLIST_FOREACH_BEGIN(get_connection_array(), connection_t *, conn) {
+ char *addr;
+ struct sockaddr_storage ss;
+ socklen_t ss_len = sizeof(ss);
+
+ if (conn->type != type || conn->marked_for_close || !SOCKET_OK(conn->s))
+ continue;
+
+ if (getsockname(conn->s, (struct sockaddr *)&ss, &ss_len) < 0) {
+ tor_asprintf(&addr, "%s:%d", conn->address, (int)conn->port);
+ } else {
+ char *tmp = tor_sockaddr_to_str((struct sockaddr *)&ss);
+ addr = esc_for_log(tmp);
+ tor_free(tmp);
+ }
+ if (addr)
+ smartlist_add(res, addr);
+ } SMARTLIST_FOREACH_END(conn);
+
+ *answer = smartlist_join_strings(res, " ", 0, NULL);
+
+ SMARTLIST_FOREACH(res, char *, cp, tor_free(cp));
+ smartlist_free(res);
+ return 0;
+}
+
/** Implementation helper for GETINFO: knows the answers for questions about
* directory information. */
static int
@@ -1785,18 +1953,18 @@ getinfo_helper_events(control_connection_t *control_conn,
} else if (!strcmp(question, "status/version/num-versioning") ||
!strcmp(question, "status/version/num-concurring")) {
char s[33];
- tor_snprintf(s, sizeof(s), "%d", get_n_authorities(V3_AUTHORITY));
+ tor_snprintf(s, sizeof(s), "%d", get_n_authorities(V3_DIRINFO));
*answer = tor_strdup(s);
log_warn(LD_GENERAL, "%s is deprecated; it no longer gives useful "
"information", question);
}
} else if (!strcmp(question, "status/clients-seen")) {
- const char *bridge_stats = geoip_get_bridge_stats_controller(time(NULL));
+ char *bridge_stats = geoip_get_bridge_stats_controller(time(NULL));
if (!bridge_stats) {
*errmsg = "No bridge-client stats available";
return -1;
}
- *answer = tor_strdup(bridge_stats);
+ *answer = bridge_stats;
} else {
return 0;
}
@@ -1865,6 +2033,7 @@ static const getinfo_item_t getinfo_items[] = {
"All non-expired, non-superseded router descriptors."),
ITEM("desc/all-recent-extrainfo-hack", dir, NULL), /* Hack. */
PREFIX("extra-info/digest/", dir, "Extra-info documents by digest."),
+ PREFIX("net/listeners/", listeners, "Bound addresses by type"),
ITEM("ns/all", networkstatus,
"Brief summary of router status (v2 directory format)"),
PREFIX("ns/id/", networkstatus,
@@ -1902,6 +2071,14 @@ static const getinfo_item_t getinfo_items[] = {
"Number of versioning authorities agreeing on the status of the "
"current version"),
ITEM("address", misc, "IP address of this Tor host, if we can guess it."),
+ ITEM("traffic/read", misc,"Bytes read since the process was started."),
+ ITEM("traffic/written", misc,
+ "Bytes written since the process was started."),
+ ITEM("process/pid", misc, "Process id belonging to the main tor process."),
+ ITEM("process/uid", misc, "User id running the tor process."),
+ ITEM("process/user", misc,
+ "Username under which the tor process is running."),
+ ITEM("process/descriptor-limit", misc, "File descriptor limit."),
ITEM("dir-usage", misc, "Breakdown of bytes transferred over DirPort."),
PREFIX("desc-annotations/id/", dir, "Router annotations by hexdigest."),
PREFIX("dir/server/", dir,"Router descriptors as retrieved from a DirPort."),
@@ -1909,8 +2086,8 @@ static const getinfo_item_t getinfo_items[] = {
"v2 networkstatus docs as retrieved from a DirPort."),
ITEM("dir/status-vote/current/consensus", dir,
"v3 Networkstatus consensus as retrieved from a DirPort."),
- PREFIX("exit-policy/default", policies,
- "The default value appended to the configured exit policy."),
+ ITEM("exit-policy/default", policies,
+ "The default value appended to the configured exit policy."),
PREFIX("ip-to-country/", geoip, "Perform a GEOIP lookup"),
{ NULL, NULL, NULL, 0 }
};
@@ -2652,7 +2829,7 @@ handle_control_protocolinfo(control_connection_t *conn, uint32_t len,
connection_mark_for_close(TO_CONN(conn));
goto done;
} else {
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
int cookies = options->CookieAuthentication;
char *cfile = get_cookie_file();
char *esc_cfile = esc_for_log(cfile);
@@ -2744,6 +2921,43 @@ connection_control_reached_eof(control_connection_t *conn)
return 0;
}
+/** Shut down this Tor instance in the same way that SIGINT would, but
+ * with a log message appropriate for the loss of an owning controller. */
+static void
+lost_owning_controller(const char *owner_type, const char *loss_manner)
+{
+ int shutdown_slowly = server_mode(get_options());
+
+ log_notice(LD_CONTROL, "Owning controller %s has %s -- %s.",
+ owner_type, loss_manner,
+ shutdown_slowly ? "shutting down" : "exiting now");
+
+ /* XXXX Perhaps this chunk of code should be a separate function,
+ * called here and by process_signal(SIGINT). */
+
+ if (!shutdown_slowly) {
+ tor_cleanup();
+ exit(0);
+ }
+ /* XXXX This will close all listening sockets except control-port
+ * listeners. Perhaps we should close those too. */
+ hibernate_begin_shutdown();
+}
+
+/** Called when <b>conn</b> is being freed. */
+void
+connection_control_closed(control_connection_t *conn)
+{
+ tor_assert(conn);
+
+ conn->event_mask = 0;
+ control_update_global_event_mask();
+
+ if (conn->is_owning_control_connection) {
+ lost_owning_controller("connection", "closed");
+ }
+}
+
/** Return true iff <b>cmd</b> is allowable (or at least forgivable) at this
* stage of the protocol. */
static int
@@ -2851,13 +3065,13 @@ connection_control_process_inbuf(control_connection_t *conn)
break;
/* XXXX this code duplication is kind of dumb. */
if (last_idx+3 == conn->incoming_cmd_cur_len &&
- !memcmp(conn->incoming_cmd + last_idx, ".\r\n", 3)) {
+ tor_memeq(conn->incoming_cmd + last_idx, ".\r\n", 3)) {
/* Just appended ".\r\n"; we're done. Remove it. */
conn->incoming_cmd[last_idx] = '\0';
conn->incoming_cmd_cur_len -= 3;
break;
} else if (last_idx+2 == conn->incoming_cmd_cur_len &&
- !memcmp(conn->incoming_cmd + last_idx, ".\n", 2)) {
+ tor_memeq(conn->incoming_cmd + last_idx, ".\n", 2)) {
/* Just appended ".\n"; we're done. Remove it. */
conn->incoming_cmd[last_idx] = '\0';
conn->incoming_cmd_cur_len -= 2;
@@ -2908,6 +3122,9 @@ connection_control_process_inbuf(control_connection_t *conn)
return 0;
}
+ /* XXXX Why is this not implemented as a table like the GETINFO
+ * items are? Even handling the plus signs at the beginnings of
+ * commands wouldn't be very hard with proper macros. */
cmd_data_len = (uint32_t)data_len;
if (!strcasecmp(conn->incoming_cmd, "SETCONF")) {
if (handle_control_setconf(conn, cmd_data_len, args))
@@ -2933,6 +3150,9 @@ connection_control_process_inbuf(control_connection_t *conn)
} else if (!strcasecmp(conn->incoming_cmd, "SIGNAL")) {
if (handle_control_signal(conn, cmd_data_len, args))
return -1;
+ } else if (!strcasecmp(conn->incoming_cmd, "TAKEOWNERSHIP")) {
+ if (handle_control_takeownership(conn, cmd_data_len, args))
+ return -1;
} else if (!strcasecmp(conn->incoming_cmd, "MAPADDRESS")) {
if (handle_control_mapaddress(conn, cmd_data_len, args))
return -1;
@@ -2988,7 +3208,6 @@ control_event_circuit_status(origin_circuit_t *circ, circuit_status_event_t tp,
{
const char *status;
char extended_buf[96];
- int providing_reason=0;
if (!EVENT_IS_INTERESTING(EVENT_CIRCUIT_STATUS))
return 0;
tor_assert(circ);
@@ -3012,7 +3231,6 @@ control_event_circuit_status(origin_circuit_t *circ, circuit_status_event_t tp,
const char *reason_str = circuit_end_reason_to_control_string(reason_code);
char *reason = NULL;
size_t n=strlen(extended_buf);
- providing_reason=1;
if (!reason_str) {
reason = tor_malloc(16);
tor_snprintf(reason, 16, "UNKNOWN_%d", reason_code);
@@ -3783,7 +4001,7 @@ control_event_guard(const char *nickname, const char *digest,
static char *
get_cookie_file(void)
{
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
if (options->CookieAuthFile && strlen(options->CookieAuthFile)) {
return tor_strdup(options->CookieAuthFile);
} else {
@@ -3831,6 +4049,75 @@ init_cookie_authentication(int enabled)
return 0;
}
+/** A copy of the process specifier of Tor's owning controller, or
+ * NULL if this Tor instance is not currently owned by a process. */
+static char *owning_controller_process_spec = NULL;
+
+/** A process-termination monitor for Tor's owning controller, or NULL
+ * if this Tor instance is not currently owned by a process. */
+static tor_process_monitor_t *owning_controller_process_monitor = NULL;
+
+/** Process-termination monitor callback for Tor's owning controller
+ * process. */
+static void
+owning_controller_procmon_cb(void *unused)
+{
+ (void)unused;
+
+ lost_owning_controller("process", "vanished");
+}
+
+/** Set <b>process_spec</b> as Tor's owning controller process.
+ * Exit on failure. */
+void
+monitor_owning_controller_process(const char *process_spec)
+{
+ const char *msg;
+
+ tor_assert((owning_controller_process_spec == NULL) ==
+ (owning_controller_process_monitor == NULL));
+
+ if (owning_controller_process_spec != NULL) {
+ if ((process_spec != NULL) && !strcmp(process_spec,
+ owning_controller_process_spec)) {
+ /* Same process -- return now, instead of disposing of and
+ * recreating the process-termination monitor. */
+ return;
+ }
+
+ /* We are currently owned by a process, and we should no longer be
+ * owned by it. Free the process-termination monitor. */
+ tor_process_monitor_free(owning_controller_process_monitor);
+ owning_controller_process_monitor = NULL;
+
+ tor_free(owning_controller_process_spec);
+ owning_controller_process_spec = NULL;
+ }
+
+ tor_assert((owning_controller_process_spec == NULL) &&
+ (owning_controller_process_monitor == NULL));
+
+ if (process_spec == NULL)
+ return;
+
+ owning_controller_process_spec = tor_strdup(process_spec);
+ owning_controller_process_monitor =
+ tor_process_monitor_new(tor_libevent_get_base(),
+ owning_controller_process_spec,
+ LD_CONTROL,
+ owning_controller_procmon_cb, NULL,
+ &msg);
+
+ if (owning_controller_process_monitor == NULL) {
+ log_err(LD_BUG, "Couldn't create process-termination monitor for "
+ "owning controller: %s. Exiting.",
+ msg);
+ owning_controller_process_spec = NULL;
+ tor_cleanup();
+ exit(0);
+ }
+}
+
/** Convert the name of a bootstrapping phase <b>s</b> into strings
* <b>tag</b> and <b>summary</b> suitable for display by the controller. */
static int
@@ -3927,7 +4214,7 @@ static int bootstrap_problems = 0;
* information and initial circuits.
*
* <b>status</b> is the new status, that is, what task we will be doing
- * next. <b>percent</b> is zero if we just started this task, else it
+ * next. <b>progress</b> is zero if we just started this task, else it
* represents progress on the task. */
void
control_event_bootstrap(bootstrap_status_t status, int progress)
@@ -3982,6 +4269,10 @@ control_event_bootstrap_problem(const char *warn, int reason)
const char *tag, *summary;
char buf[BOOTSTRAP_MSG_LEN];
const char *recommendation = "ignore";
+ int severity;
+
+ /* bootstrap_percent must not be in "undefined" state here. */
+ tor_assert(status >= 0);
if (bootstrap_percent == 100)
return; /* already bootstrapped; nothing to be done here. */
@@ -4003,12 +4294,17 @@ control_event_bootstrap_problem(const char *warn, int reason)
status--; /* find a recognized status string based on current progress */
status = bootstrap_percent; /* set status back to the actual number */
- log_fn(!strcmp(recommendation, "warn") ? LOG_WARN : LOG_INFO,
+ severity = !strcmp(recommendation, "warn") ? LOG_WARN : LOG_INFO;
+
+ log_fn(severity,
LD_CONTROL, "Problem bootstrapping. Stuck at %d%%: %s. (%s; %s; "
"count %d; recommendation %s)",
status, summary, warn,
orconn_end_reason_to_control_string(reason),
bootstrap_problems, recommendation);
+
+ connection_or_report_broken_states(severity, LD_HANDSHAKE);
+
tor_snprintf(buf, sizeof(buf),
"BOOTSTRAP PROGRESS=%d TAG=%s SUMMARY=\"%s\" WARNING=\"%s\" REASON=%s "
"COUNT=%d RECOMMENDATION=%s",
diff --git a/src/or/control.h b/src/or/control.h
index ef91f06c26..147a5af0bb 100644
--- a/src/or/control.h
+++ b/src/or/control.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -15,6 +15,8 @@
void control_update_global_event_mask(void);
void control_adjust_event_log_severity(void);
+void control_ports_write_to_file(void);
+
/** Log information about the connection <b>conn</b>, protecting it as with
* CONN_LOG_PROTECT. Example:
*
@@ -25,6 +27,8 @@ void control_adjust_event_log_severity(void);
int connection_control_finished_flushing(control_connection_t *conn);
int connection_control_reached_eof(control_connection_t *conn);
+void connection_control_closed(control_connection_t *conn);
+
int connection_control_process_inbuf(control_connection_t *conn);
#define EVENT_AUTHDIR_NEWDESCS 0x000D
@@ -71,6 +75,8 @@ smartlist_t *decode_hashed_passwords(config_line_t *passwords);
void disable_control_logging(void);
void enable_control_logging(void);
+void monitor_owning_controller_process(const char *process_spec);
+
void control_event_bootstrap(bootstrap_status_t status, int progress);
void control_event_bootstrap_problem(const char *warn, int reason);
diff --git a/src/or/cpuworker.c b/src/or/cpuworker.c
index cfe9f3af9c..bf8964c29c 100644
--- a/src/or/cpuworker.c
+++ b/src/or/cpuworker.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -225,8 +225,8 @@ cpuworker_main(void *data)
{
char question[ONIONSKIN_CHALLENGE_LEN];
uint8_t question_type;
- int *fdarray = data;
- int fd;
+ tor_socket_t *fdarray = data;
+ tor_socket_t fd;
/* variables for onion processing */
char keys[CPATH_KEY_MATERIAL_LEN];
@@ -249,7 +249,7 @@ cpuworker_main(void *data)
for (;;) {
ssize_t r;
- if ((r = recv(fd, &question_type, 1, 0)) != 1) {
+ if ((r = recv(fd, (void *)&question_type, 1, 0)) != 1) {
// log_fn(LOG_ERR,"read type failed. Exiting.");
if (r == 0) {
log_info(LD_OR,
@@ -316,12 +316,12 @@ cpuworker_main(void *data)
static int
spawn_cpuworker(void)
{
- int *fdarray;
- int fd;
+ tor_socket_t *fdarray;
+ tor_socket_t fd;
connection_t *conn;
int err;
- fdarray = tor_malloc(sizeof(int)*2);
+ fdarray = tor_malloc(sizeof(tor_socket_t)*2);
if ((err = tor_socketpair(AF_UNIX, SOCK_STREAM, 0, fdarray)) < 0) {
log_warn(LD_NET, "Couldn't construct socketpair for cpuworker: %s",
tor_socket_strerror(-err));
diff --git a/src/or/cpuworker.h b/src/or/cpuworker.h
index e09703f217..04e37ee459 100644
--- a/src/or/cpuworker.h
+++ b/src/or/cpuworker.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/directory.c b/src/or/directory.c
index 8dece8629a..ac35d3c599 100644
--- a/src/or/directory.c
+++ b/src/or/directory.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "or.h"
@@ -66,7 +66,7 @@ static int purpose_needs_anonymity(uint8_t dir_purpose,
uint8_t router_purpose);
static char *http_get_header(const char *headers, const char *which);
static void http_set_address_origin(const char *headers, connection_t *conn);
-static void connection_dir_download_networkstatus_failed(
+static void connection_dir_download_v2_networkstatus_failed(
dir_connection_t *conn, int status_code);
static void connection_dir_download_routerdesc_failed(dir_connection_t *conn);
static void connection_dir_bridge_routerdesc_failed(dir_connection_t *conn);
@@ -147,21 +147,22 @@ purpose_needs_anonymity(uint8_t dir_purpose, uint8_t router_purpose)
return 1;
}
-/** Return a newly allocated string describing <b>auth</b>. */
-char *
-authority_type_to_string(authority_type_t auth)
+/** Return a newly allocated string describing <b>auth</b>. Only describes
+ * authority features. */
+static char *
+authdir_type_to_string(dirinfo_type_t auth)
{
char *result;
smartlist_t *lst = smartlist_create();
- if (auth & V1_AUTHORITY)
+ if (auth & V1_DIRINFO)
smartlist_add(lst, (void*)"V1");
- if (auth & V2_AUTHORITY)
+ if (auth & V2_DIRINFO)
smartlist_add(lst, (void*)"V2");
- if (auth & V3_AUTHORITY)
+ if (auth & V3_DIRINFO)
smartlist_add(lst, (void*)"V3");
- if (auth & BRIDGE_AUTHORITY)
+ if (auth & BRIDGE_DIRINFO)
smartlist_add(lst, (void*)"Bridge");
- if (auth & HIDSERV_AUTHORITY)
+ if (auth & HIDSERV_DIRINFO)
smartlist_add(lst, (void*)"Hidden service");
if (smartlist_len(lst)) {
result = smartlist_join_strings(lst, ", ", 0, NULL);
@@ -251,7 +252,7 @@ int
directories_have_accepted_server_descriptor(void)
{
smartlist_t *servers = router_get_trusted_dir_servers();
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
SMARTLIST_FOREACH(servers, trusted_dir_server_t *, d, {
if ((d->type & options->_PublishServerDescriptor) &&
d->has_accepted_serverdesc) {
@@ -262,10 +263,13 @@ directories_have_accepted_server_descriptor(void)
}
/** Start a connection to every suitable directory authority, using
- * connection purpose 'purpose' and uploading the payload 'payload'
- * (length 'payload_len'). dir_purpose should be one of
+ * connection purpose <b>dir_purpose</b> and uploading <b>payload</b>
+ * (of length <b>payload_len</b>). The dir_purpose should be one of
* 'DIR_PURPOSE_UPLOAD_DIR' or 'DIR_PURPOSE_UPLOAD_RENDDESC'.
*
+ * <b>router_purpose</b> describes the type of descriptor we're
+ * publishing, if we're publishing a descriptor -- e.g. general or bridge.
+ *
* <b>type</b> specifies what sort of dir authorities (V1, V2,
* HIDSERV, BRIDGE) we should upload to.
*
@@ -277,13 +281,16 @@ directories_have_accepted_server_descriptor(void)
*/
void
directory_post_to_dirservers(uint8_t dir_purpose, uint8_t router_purpose,
- authority_type_t type,
+ dirinfo_type_t type,
const char *payload,
size_t payload_len, size_t extrainfo_len)
{
+ const or_options_t *options = get_options();
int post_via_tor;
smartlist_t *dirservers = router_get_trusted_dir_servers();
int found = 0;
+ const int exclude_self = (dir_purpose == DIR_PURPOSE_UPLOAD_VOTE ||
+ dir_purpose == DIR_PURPOSE_UPLOAD_SIGNATURES);
tor_assert(dirservers);
/* This tries dirservers which we believe to be down, but ultimately, that's
* harmless, and we may as well err on the side of getting things uploaded.
@@ -296,6 +303,19 @@ directory_post_to_dirservers(uint8_t dir_purpose, uint8_t router_purpose,
if ((type & ds->type) == 0)
continue;
+ if (exclude_self && router_digest_is_me(ds->digest))
+ continue;
+
+ if (options->StrictNodes &&
+ routerset_contains_routerstatus(options->ExcludeNodes, rs, -1)) {
+ log_warn(LD_DIR, "Wanted to contact authority '%s' for %s, but "
+ "it's in our ExcludedNodes list and StrictNodes is set. "
+ "Skipping.",
+ ds->nickname,
+ dir_conn_purpose_to_string(dir_purpose));
+ continue;
+ }
+
found = 1; /* at least one authority of this type was listed */
if (dir_purpose == DIR_PURPOSE_UPLOAD_DIR)
ds->has_accepted_serverdesc = 0;
@@ -314,7 +334,7 @@ directory_post_to_dirservers(uint8_t dir_purpose, uint8_t router_purpose,
NULL, payload, upload_len, 0);
} SMARTLIST_FOREACH_END(ds);
if (!found) {
- char *s = authority_type_to_string(type);
+ char *s = authdir_type_to_string(type);
log_warn(LD_DIR, "Publishing server descriptor to directory authorities "
"of type '%s', but no authorities of that type listed!", s);
tor_free(s);
@@ -332,40 +352,41 @@ directory_get_from_dirserver(uint8_t dir_purpose, uint8_t router_purpose,
const char *resource, int pds_flags)
{
const routerstatus_t *rs = NULL;
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
int prefer_authority = directory_fetches_from_authorities(options);
int get_via_tor = purpose_needs_anonymity(dir_purpose, router_purpose);
- authority_type_t type;
+ dirinfo_type_t type;
time_t if_modified_since = 0;
/* FFFF we could break this switch into its own function, and call
* it elsewhere in directory.c. -RD */
switch (dir_purpose) {
case DIR_PURPOSE_FETCH_EXTRAINFO:
- type = EXTRAINFO_CACHE |
- (router_purpose == ROUTER_PURPOSE_BRIDGE ? BRIDGE_AUTHORITY :
- V3_AUTHORITY);
+ type = EXTRAINFO_DIRINFO |
+ (router_purpose == ROUTER_PURPOSE_BRIDGE ? BRIDGE_DIRINFO :
+ V3_DIRINFO);
break;
case DIR_PURPOSE_FETCH_V2_NETWORKSTATUS:
- type = V2_AUTHORITY;
+ type = V2_DIRINFO;
+ prefer_authority = 1; /* Only v2 authorities have these anyway. */
break;
case DIR_PURPOSE_FETCH_SERVERDESC:
- type = (router_purpose == ROUTER_PURPOSE_BRIDGE ? BRIDGE_AUTHORITY :
- V3_AUTHORITY);
+ type = (router_purpose == ROUTER_PURPOSE_BRIDGE ? BRIDGE_DIRINFO :
+ V3_DIRINFO);
break;
case DIR_PURPOSE_FETCH_RENDDESC:
- type = HIDSERV_AUTHORITY;
+ type = HIDSERV_DIRINFO;
break;
case DIR_PURPOSE_FETCH_STATUS_VOTE:
case DIR_PURPOSE_FETCH_DETACHED_SIGNATURES:
- type = V3_AUTHORITY;
+ type = V3_DIRINFO;
break;
case DIR_PURPOSE_FETCH_CONSENSUS:
case DIR_PURPOSE_FETCH_CERTIFICATE:
- type = V3_AUTHORITY;
+ type = V3_DIRINFO;
break;
case DIR_PURPOSE_FETCH_MICRODESC:
- type = V3_AUTHORITY;
+ type = MICRODESC_DIRINFO;
break;
default:
log_warn(LD_BUG, "Unexpected purpose %d", (int)dir_purpose);
@@ -393,13 +414,13 @@ directory_get_from_dirserver(uint8_t dir_purpose, uint8_t router_purpose,
}
}
- if (!options->FetchServerDescriptors && type != HIDSERV_AUTHORITY)
+ if (!options->FetchServerDescriptors && type != HIDSERV_DIRINFO)
return;
if (!get_via_tor) {
- if (options->UseBridges && type != BRIDGE_AUTHORITY) {
+ if (options->UseBridges && type != BRIDGE_DIRINFO) {
/* want to ask a running bridge for which we have a descriptor. */
- /* XXX022 we assume that all of our bridges can answer any
+ /* XXX023 we assume that all of our bridges can answer any
* possible directory question. This won't be true forever. -RD */
/* It certainly is not true with conditional consensus downloading,
* so, for now, never assume the server supports that. */
@@ -421,7 +442,7 @@ directory_get_from_dirserver(uint8_t dir_purpose, uint8_t router_purpose,
"nodes are available yet.");
return;
} else {
- if (prefer_authority || type == BRIDGE_AUTHORITY) {
+ if (prefer_authority || type == BRIDGE_DIRINFO) {
/* only ask authdirservers, and don't ask myself */
rs = router_pick_trusteddirserver(type, pds_flags);
if (rs == NULL && (pds_flags & (PDS_NO_EXISTING_SERVERDESC_FETCH|
@@ -443,7 +464,7 @@ directory_get_from_dirserver(uint8_t dir_purpose, uint8_t router_purpose,
}
}
}
- if (!rs && type != BRIDGE_AUTHORITY) {
+ if (!rs && type != BRIDGE_DIRINFO) {
/* anybody with a non-zero dirport will do */
rs = router_pick_directory_server(type, pds_flags);
if (!rs) {
@@ -460,7 +481,7 @@ directory_get_from_dirserver(uint8_t dir_purpose, uint8_t router_purpose,
if (dir_purpose == DIR_PURPOSE_FETCH_RENDDESC) {
/* only ask hidserv authorities, any of them will do */
pds_flags |= PDS_IGNORE_FASCISTFIREWALL|PDS_ALLOW_SELF;
- rs = router_pick_trusteddirserver(HIDSERV_AUTHORITY, pds_flags);
+ rs = router_pick_trusteddirserver(HIDSERV_DIRINFO, pds_flags);
} else {
/* anybody with a non-zero dirport will do. Disregard firewalls. */
pds_flags |= PDS_IGNORE_FASCISTFIREWALL;
@@ -506,7 +527,7 @@ directory_get_from_all_authorities(uint8_t dir_purpose,
routerstatus_t *rs;
if (router_digest_is_me(ds->digest))
continue;
- if (!(ds->type & V3_AUTHORITY))
+ if (!(ds->type & V3_DIRINFO))
continue;
rs = &ds->fake_status;
directory_initiate_command_routerstatus(rs, dir_purpose, router_purpose,
@@ -527,15 +548,18 @@ directory_initiate_command_routerstatus_rend(const routerstatus_t *status,
time_t if_modified_since,
const rend_data_t *rend_query)
{
+ const or_options_t *options = get_options();
const node_t *node;
char address_buf[INET_NTOA_BUF_LEN+1];
struct in_addr in;
const char *address;
tor_addr_t addr;
node = node_get_by_id(status->identity_digest);
+
if (!node && anonymized_connection) {
log_info(LD_DIR, "Not sending anonymized request to directory '%s'; we "
- "don't have its router descriptor.", status->nickname);
+ "don't have its router descriptor.",
+ routerstatus_describe(status));
return;
} else if (node) {
node_get_address_string(node, address_buf, sizeof(address_buf));
@@ -546,6 +570,17 @@ directory_initiate_command_routerstatus_rend(const routerstatus_t *status,
address = address_buf;
}
tor_addr_from_ipv4h(&addr, status->addr);
+
+ if (options->ExcludeNodes && options->StrictNodes &&
+ routerset_contains_routerstatus(options->ExcludeNodes, status, -1)) {
+ log_warn(LD_DIR, "Wanted to contact directory mirror %s for %s, but "
+ "it's in our ExcludedNodes list and StrictNodes is set. "
+ "Skipping. This choice might make your Tor not work.",
+ routerstatus_describe(status),
+ dir_conn_purpose_to_string(dir_purpose));
+ return;
+ }
+
directory_initiate_command_rend(address, &addr,
status->or_port, status->dir_port,
status->version_supports_conditional_consensus,
@@ -610,7 +645,7 @@ directory_conn_is_self_reachability_test(dir_connection_t *conn)
* server due to a network error: Mark the router as down and try again if
* possible.
*/
-void
+static void
connection_dir_request_failed(dir_connection_t *conn)
{
if (directory_conn_is_self_reachability_test(conn)) {
@@ -621,7 +656,7 @@ connection_dir_request_failed(dir_connection_t *conn)
if (conn->_base.purpose == DIR_PURPOSE_FETCH_V2_NETWORKSTATUS) {
log_info(LD_DIR, "Giving up on directory server at '%s'; retrying",
conn->_base.address);
- connection_dir_download_networkstatus_failed(conn, -1);
+ connection_dir_download_v2_networkstatus_failed(conn, -1);
} else if (conn->_base.purpose == DIR_PURPOSE_FETCH_SERVERDESC ||
conn->_base.purpose == DIR_PURPOSE_FETCH_EXTRAINFO) {
log_info(LD_DIR, "Giving up on serverdesc/extrainfo fetch from "
@@ -631,9 +666,8 @@ connection_dir_request_failed(dir_connection_t *conn)
connection_dir_bridge_routerdesc_failed(conn);
connection_dir_download_routerdesc_failed(conn);
} else if (conn->_base.purpose == DIR_PURPOSE_FETCH_CONSENSUS) {
- const char *flavname =
- conn->requested_resource ? conn->requested_resource : "ns";
- networkstatus_consensus_download_failed(0, flavname);
+ if (conn->requested_resource)
+ networkstatus_consensus_download_failed(0, conn->requested_resource);
} else if (conn->_base.purpose == DIR_PURPOSE_FETCH_CERTIFICATE) {
log_info(LD_DIR, "Giving up on certificate fetch from directory server "
"at '%s'; retrying",
@@ -657,7 +691,7 @@ connection_dir_request_failed(dir_connection_t *conn)
* retry the fetch now, later, or never.
*/
static void
-connection_dir_download_networkstatus_failed(dir_connection_t *conn,
+connection_dir_download_v2_networkstatus_failed(dir_connection_t *conn,
int status_code)
{
if (!conn->requested_resource) {
@@ -783,7 +817,7 @@ connection_dir_download_cert_failed(dir_connection_t *conn, int status)
* 3) Else yes.
*/
static int
-directory_command_should_use_begindir(or_options_t *options,
+directory_command_should_use_begindir(const or_options_t *options,
const tor_addr_t *addr,
int or_port, uint8_t router_purpose,
int anonymized_connection)
@@ -824,6 +858,20 @@ directory_initiate_command(const char *address, const tor_addr_t *_addr,
if_modified_since, NULL);
}
+/** Return non-zero iff a directory connection with purpose
+ * <b>dir_purpose</b> reveals sensitive information about a Tor
+ * instance's client activities. (Such connections must be performed
+ * through normal three-hop Tor circuits.) */
+static int
+is_sensitive_dir_purpose(uint8_t dir_purpose)
+{
+ return ((dir_purpose == DIR_PURPOSE_FETCH_RENDDESC) ||
+ (dir_purpose == DIR_PURPOSE_HAS_FETCHED_RENDDESC) ||
+ (dir_purpose == DIR_PURPOSE_UPLOAD_RENDDESC) ||
+ (dir_purpose == DIR_PURPOSE_UPLOAD_RENDDESC_V2) ||
+ (dir_purpose == DIR_PURPOSE_FETCH_RENDDESC_V2));
+}
+
/** Same as directory_initiate_command(), but accepts rendezvous data to
* fetch a hidden service descriptor. */
static void
@@ -839,7 +887,7 @@ directory_initiate_command_rend(const char *address, const tor_addr_t *_addr,
const rend_data_t *rend_query)
{
dir_connection_t *conn;
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
int socket_error = 0;
int use_begindir = supports_begindir &&
directory_command_should_use_begindir(options, _addr,
@@ -858,6 +906,9 @@ directory_initiate_command_rend(const char *address, const tor_addr_t *_addr,
log_debug(LD_DIR, "Initiating %s", dir_conn_purpose_to_string(dir_purpose));
+ tor_assert(!(is_sensitive_dir_purpose(dir_purpose) &&
+ !anonymized_connection));
+
/* ensure that we don't make direct connections when a SOCKS server is
* configured. */
if (!anonymized_connection && !use_begindir && !options->HTTPProxy &&
@@ -1004,8 +1055,14 @@ directory_get_consensus_url(int supports_conditional_consensus,
const char *resource)
{
char *url = NULL;
- const char *hyphen = resource ? "-" : "";
- const char *flavor = resource ? resource : "";
+ const char *hyphen, *flavor;
+ if (resource==NULL || strcmp(resource, "ns")==0) {
+ flavor = ""; /* Request ns consensuses as "", so older servers will work*/
+ hyphen = "";
+ } else {
+ flavor = resource;
+ hyphen = "-";
+ }
if (supports_conditional_consensus) {
char *authority_id_list;
@@ -1015,7 +1072,7 @@ directory_get_consensus_url(int supports_conditional_consensus,
trusted_dir_server_t *, ds,
{
char *hex;
- if (!(ds->type & V3_AUTHORITY))
+ if (!(ds->type & V3_DIRINFO))
continue;
hex = tor_malloc(2*CONDITIONAL_CONSENSUS_FPR_LEN+1);
@@ -1585,9 +1642,10 @@ connection_dir_client_reached_eof(dir_connection_t *conn)
delta>0 ? "ahead" : "behind", dbuf,
delta>0 ? "behind" : "ahead");
skewed = 1; /* don't check the recommended-versions line */
- control_event_general_status(trusted ? LOG_WARN : LOG_NOTICE,
- "CLOCK_SKEW SKEW=%ld SOURCE=DIRSERV:%s:%d",
- delta, conn->_base.address, conn->_base.port);
+ if (trusted)
+ control_event_general_status(LOG_WARN,
+ "CLOCK_SKEW SKEW=%ld SOURCE=DIRSERV:%s:%d",
+ delta, conn->_base.address, conn->_base.port);
} else {
log_debug(LD_HTTP, "Time on received directory is within tolerance; "
"we are %ld seconds skewed. (That's okay.)", delta);
@@ -1596,27 +1654,20 @@ connection_dir_client_reached_eof(dir_connection_t *conn)
(void) skewed; /* skewed isn't used yet. */
if (status_code == 503) {
- if (body_len < 16) {
- routerstatus_t *rs;
- trusted_dir_server_t *ds;
- log_info(LD_DIR,"Received http status code %d (%s) from server "
- "'%s:%d'. I'll try again soon.",
- status_code, escaped(reason), conn->_base.address,
- conn->_base.port);
- rs = router_get_mutable_consensus_status_by_id(conn->identity_digest);
- if (rs)
- rs->last_dir_503_at = now;
- if ((ds = router_get_trusteddirserver_by_digest(conn->identity_digest)))
- ds->fake_status.last_dir_503_at = now;
+ routerstatus_t *rs;
+ trusted_dir_server_t *ds;
+ const char *id_digest = conn->identity_digest;
+ log_info(LD_DIR,"Received http status code %d (%s) from server "
+ "'%s:%d'. I'll try again soon.",
+ status_code, escaped(reason), conn->_base.address,
+ conn->_base.port);
+ if ((rs = router_get_mutable_consensus_status_by_id(id_digest)))
+ rs->last_dir_503_at = now;
+ if ((ds = router_get_trusteddirserver_by_digest(id_digest)))
+ ds->fake_status.last_dir_503_at = now;
- tor_free(body); tor_free(headers); tor_free(reason);
- return -1;
- }
- /* XXXX022 Remove this once every server with bug 539 is obsolete. */
- log_info(LD_DIR, "Server at '%s:%d' sent us a 503 response, but included "
- "a body anyway. We'll pretend it gave us a 200.",
- conn->_base.address, conn->_base.port);
- status_code = 200;
+ tor_free(body); tor_free(headers); tor_free(reason);
+ return -1;
}
plausible = body_is_plausible(body, body_len, conn->_base.purpose);
@@ -1685,13 +1736,19 @@ connection_dir_client_reached_eof(dir_connection_t *conn)
log_info(LD_DIR,"Received networkstatus objects (size %d) from server "
"'%s:%d'", (int)body_len, conn->_base.address, conn->_base.port);
if (status_code != 200) {
- log_warn(LD_DIR,
- "Received http status code %d (%s) from server "
- "'%s:%d' while fetching \"/tor/status/%s\". I'll try again soon.",
- status_code, escaped(reason), conn->_base.address,
- conn->_base.port, conn->requested_resource);
+ static ratelim_t warning_limit = RATELIM_INIT(3600);
+ char *m;
+ if ((m = rate_limit_log(&warning_limit, now))) {
+ log_warn(LD_DIR,
+ "Received http status code %d (%s) from server "
+ "'%s:%d' while fetching \"/tor/status/%s\". "
+ "I'll try again soon.%s",
+ status_code, escaped(reason), conn->_base.address,
+ conn->_base.port, conn->requested_resource, m);
+ tor_free(m);
+ }
tor_free(body); tor_free(headers); tor_free(reason);
- connection_dir_download_networkstatus_failed(conn, status_code);
+ connection_dir_download_v2_networkstatus_failed(conn, status_code);
return -1;
}
if (conn->requested_resource &&
@@ -1745,8 +1802,7 @@ connection_dir_client_reached_eof(dir_connection_t *conn)
if (conn->_base.purpose == DIR_PURPOSE_FETCH_CONSENSUS) {
int r;
- const char *flavname =
- conn->requested_resource ? conn->requested_resource : "ns";
+ const char *flavname = conn->requested_resource;
if (status_code != 200) {
int severity = (status_code == 304) ? LOG_INFO : LOG_WARN;
log(severity, LD_DIR,
@@ -1956,6 +2012,7 @@ connection_dir_client_reached_eof(dir_connection_t *conn)
}
SMARTLIST_FOREACH(which, char *, cp, tor_free(cp));
smartlist_free(which);
+ smartlist_free(mds);
}
}
@@ -1966,7 +2023,6 @@ connection_dir_client_reached_eof(dir_connection_t *conn)
router_get_trusteddirserver_by_digest(conn->identity_digest);
char *rejected_hdr = http_get_header(headers,
"X-Descriptor-Not-New: ");
- int rejected = 0;
if (rejected_hdr) {
if (!strcmp(rejected_hdr, "Yes")) {
log_info(LD_GENERAL,
@@ -1974,12 +2030,11 @@ connection_dir_client_reached_eof(dir_connection_t *conn)
ds->nickname);
/* XXXX use this information; be sure to upload next one
* sooner. -NM */
- /* XXXX021 On further thought, the task above implies that we're
+ /* XXXX023 On further thought, the task above implies that we're
* basing our regenerate-descriptor time on when we uploaded the
* last descriptor, not on the published time of the last
* descriptor. If those are different, that's a bad thing to
* do. -NM */
- rejected = 1;
}
tor_free(rejected_hdr);
}
@@ -2069,7 +2124,8 @@ connection_dir_client_reached_eof(dir_connection_t *conn)
(int)body_len, status_code, escaped(reason));
switch (status_code) {
case 200:
- if (rend_cache_store(body, body_len, 0) < -1) {
+ if (rend_cache_store(body, body_len, 0,
+ conn->rend_data->onion_address) < -1) {
log_warn(LD_REND,"Failed to parse rendezvous descriptor.");
/* Any pending rendezvous attempts will notice when
* connection_about_to_close_connection()
@@ -2245,6 +2301,28 @@ connection_dir_process_inbuf(dir_connection_t *conn)
return 0;
}
+/** Called when we're about to finally unlink and free a directory connection:
+ * perform necessary accounting and cleanup */
+void
+connection_dir_about_to_close(dir_connection_t *dir_conn)
+{
+ connection_t *conn = TO_CONN(dir_conn);
+
+ if (conn->state < DIR_CONN_STATE_CLIENT_FINISHED) {
+ /* It's a directory connection and connecting or fetching
+ * failed: forget about this router, and maybe try again. */
+ connection_dir_request_failed(dir_conn);
+ }
+ /* If we were trying to fetch a v2 rend desc and did not succeed,
+ * retry as needed. (If a fetch is successful, the connection state
+ * is changed to DIR_PURPOSE_HAS_FETCHED_RENDDESC to mark that
+ * refetching is unnecessary.) */
+ if (conn->purpose == DIR_PURPOSE_FETCH_RENDDESC_V2 &&
+ dir_conn->rend_data &&
+ strlen(dir_conn->rend_data->onion_address) == REND_SERVICE_ID_LEN_BASE32)
+ rend_client_refetch_v2_renddesc(dir_conn->rend_data);
+}
+
/** Create an http response for the client <b>conn</b> out of
* <b>status</b> and <b>reason_phrase</b>. Write it to <b>conn</b>.
*/
@@ -2513,7 +2591,7 @@ client_likes_consensus(networkstatus_t *v, const char *want_url)
SMARTLIST_FOREACH_BEGIN(v->voters, networkstatus_voter_info_t *, vi) {
if (smartlist_len(vi->sigs) &&
- !memcmp(vi->identity_digest, want_digest, want_len)) {
+ tor_memeq(vi->identity_digest, want_digest, want_len)) {
have++;
break;
};
@@ -2536,18 +2614,18 @@ client_likes_consensus(networkstatus_t *v, const char *want_url)
* Always return 0. */
static int
directory_handle_command_get(dir_connection_t *conn, const char *headers,
- const char *body, size_t body_len)
+ const char *req_body, size_t req_body_len)
{
size_t dlen;
char *url, *url_mem, *header;
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
time_t if_modified_since = 0;
int compressed;
size_t url_len;
/* We ignore the body of a GET request. */
- (void)body;
- (void)body_len;
+ (void)req_body;
+ (void)req_body_len;
log_debug(LD_DIRSERV,"Received GET command.");
@@ -2804,7 +2882,7 @@ directory_handle_command_get(dir_connection_t *conn, const char *headers,
ssize_t estimated_len = 0;
smartlist_t *items = smartlist_create();
smartlist_t *dir_items = smartlist_create();
- int lifetime = 60; /* XXXX022 should actually use vote intervals. */
+ int lifetime = 60; /* XXXX023 should actually use vote intervals. */
url += strlen("/tor/status-vote/");
current = !strcmpstart(url, "current/");
url = strchr(url, '/');
@@ -3256,7 +3334,7 @@ directory_handle_command_post(dir_connection_t *conn, const char *headers,
const char *body, size_t body_len)
{
char *url = NULL;
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
log_debug(LD_DIRSERV,"Received POST command.");
@@ -3337,7 +3415,7 @@ directory_handle_command_post(dir_connection_t *conn, const char *headers,
!strcmpstart(url,"/tor/rendezvous/publish")) {
/* rendezvous descriptor post */
log_info(LD_REND, "Handling rendezvous descriptor post.");
- if (rend_cache_store(body, body_len, 1) < 0) {
+ if (rend_cache_store(body, body_len, 1, NULL) < 0) {
log_fn(LOG_PROTOCOL_WARN, LD_DIRSERV,
"Rejected rend descriptor (length %d) from %s.",
(int)body_len, conn->_base.address);
@@ -3357,6 +3435,8 @@ directory_handle_command_post(dir_connection_t *conn, const char *headers,
write_http_status_line(conn, status, "Vote stored");
} else {
tor_assert(msg);
+ log_warn(LD_DIRSERV, "Rejected vote from %s (\"%s\").",
+ conn->_base.address, msg);
write_http_status_line(conn, status, msg);
}
goto done;
@@ -3714,17 +3794,17 @@ dir_microdesc_download_failed(smartlist_t *failed,
} SMARTLIST_FOREACH_END(d);
}
-/** Helper. Compare two fp_pair_t objects, and return -1, 0, or 1 as
- * appropriate. */
+/** Helper. Compare two fp_pair_t objects, and return negative, 0, or
+ * positive as appropriate. */
static int
_compare_pairs(const void **a, const void **b)
{
const fp_pair_t *fp1 = *a, *fp2 = *b;
int r;
- if ((r = memcmp(fp1->first, fp2->first, DIGEST_LEN)))
+ if ((r = fast_memcmp(fp1->first, fp2->first, DIGEST_LEN)))
return r;
else
- return memcmp(fp1->second, fp2->second, DIGEST_LEN);
+ return fast_memcmp(fp1->second, fp2->second, DIGEST_LEN);
}
/** Divide a string <b>res</b> of the form FP1-FP2+FP3-FP4...[.z], where each
diff --git a/src/or/directory.h b/src/or/directory.h
index 5782df9267..8c63bb5dfd 100644
--- a/src/or/directory.h
+++ b/src/or/directory.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -13,9 +13,8 @@
#define _TOR_DIRECTORY_H
int directories_have_accepted_server_descriptor(void);
-char *authority_type_to_string(authority_type_t auth);
void directory_post_to_dirservers(uint8_t dir_purpose, uint8_t router_purpose,
- authority_type_t type, const char *payload,
+ dirinfo_type_t type, const char *payload,
size_t payload_len, size_t extrainfo_len);
void directory_get_from_dirserver(uint8_t dir_purpose, uint8_t router_purpose,
const char *resource,
@@ -49,7 +48,7 @@ int connection_dir_reached_eof(dir_connection_t *conn);
int connection_dir_process_inbuf(dir_connection_t *conn);
int connection_dir_finished_flushing(dir_connection_t *conn);
int connection_dir_finished_connecting(dir_connection_t *conn);
-void connection_dir_request_failed(dir_connection_t *conn);
+void connection_dir_about_to_close(dir_connection_t *dir_conn);
void directory_initiate_command(const char *address, const tor_addr_t *addr,
uint16_t or_port, uint16_t dir_port,
int supports_conditional_consensus,
diff --git a/src/or/dirserv.c b/src/or/dirserv.c
index ec848a64b1..0ea1ef6489 100644
--- a/src/or/dirserv.c
+++ b/src/or/dirserv.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define DIRSERV_PRIVATE
@@ -44,6 +44,8 @@
extern time_t time_of_process_start; /* from main.c */
+extern long stats_n_seconds_working; /* from main.c */
+
/** Do we need to regenerate the v1 directory when someone asks for it? */
static time_t the_directory_is_dirty = 1;
/** Do we need to regenerate the v1 runningrouters document when somebody
@@ -210,7 +212,7 @@ dirserv_load_fingerprint_file(void)
authdir_config_t *fingerprint_list_new;
int result;
config_line_t *front=NULL, *list;
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
fname = get_datadir_fname("approved-routers");
log_info(LD_GENERAL,
@@ -516,14 +518,15 @@ dirserv_router_has_valid_address(routerinfo_t *ri)
if (get_options()->DirAllowPrivateAddresses)
return 0; /* whatever it is, we're fine with it */
if (!tor_inet_aton(ri->address, &iaddr)) {
- log_info(LD_DIRSERV,"Router '%s' published non-IP address '%s'. Refusing.",
- ri->nickname, ri->address);
+ log_info(LD_DIRSERV,"Router %s published non-IP address '%s'. Refusing.",
+ router_describe(ri),
+ ri->address);
return -1;
}
if (is_internal_IP(ntohl(iaddr.s_addr), 0)) {
log_info(LD_DIRSERV,
- "Router '%s' published internal IP address '%s'. Refusing.",
- ri->nickname, ri->address);
+ "Router %s published internal IP address '%s'. Refusing.",
+ router_describe(ri), ri->address);
return -1; /* it's a private IP, we should reject it */
}
return 0;
@@ -552,10 +555,11 @@ authdir_wants_to_reject_router(routerinfo_t *ri, const char **msg,
/* Is there too much clock skew? */
now = time(NULL);
if (ri->cache_info.published_on > now+ROUTER_ALLOW_SKEW) {
- log_fn(severity, LD_DIRSERV, "Publication time for nickname '%s' is too "
+ log_fn(severity, LD_DIRSERV, "Publication time for %s is too "
"far (%d minutes) in the future; possible clock skew. Not adding "
"(%s)",
- ri->nickname, (int)((ri->cache_info.published_on-now)/60),
+ router_describe(ri),
+ (int)((ri->cache_info.published_on-now)/60),
esc_router_info(ri));
*msg = "Rejected: Your clock is set too far in the future, or your "
"timezone is not correct.";
@@ -563,9 +567,10 @@ authdir_wants_to_reject_router(routerinfo_t *ri, const char **msg,
}
if (ri->cache_info.published_on < now-ROUTER_MAX_AGE_TO_PUBLISH) {
log_fn(severity, LD_DIRSERV,
- "Publication time for router with nickname '%s' is too far "
+ "Publication time for %s is too far "
"(%d minutes) in the past. Not adding (%s)",
- ri->nickname, (int)((now-ri->cache_info.published_on)/60),
+ router_describe(ri),
+ (int)((now-ri->cache_info.published_on)/60),
esc_router_info(ri));
*msg = "Rejected: Server is expired, or your clock is too far in the past,"
" or your timezone is not correct.";
@@ -573,9 +578,10 @@ authdir_wants_to_reject_router(routerinfo_t *ri, const char **msg,
}
if (dirserv_router_has_valid_address(ri) < 0) {
log_fn(severity, LD_DIRSERV,
- "Router with nickname '%s' has invalid address '%s'. "
+ "Router %s has invalid address '%s'. "
"Not adding (%s).",
- ri->nickname, ri->address,
+ router_describe(ri),
+ ri->address,
esc_router_info(ri));
*msg = "Rejected: Address is not an IP, or IP is a private address.";
return -1;
@@ -727,9 +733,9 @@ dirserv_add_descriptor(routerinfo_t *ri, const char **msg, const char *source)
&& router_differences_are_cosmetic(ri_old, ri)
&& !router_is_me(ri)) {
log_info(LD_DIRSERV,
- "Not replacing descriptor from '%s' (source: %s); "
+ "Not replacing descriptor from %s (source: %s); "
"differences are cosmetic.",
- ri->nickname, source);
+ router_describe(ri), source);
*msg = "Not replacing router descriptor; no information has changed since "
"the last one with this identity.";
control_event_or_authdir_new_descriptor("DROPPED",
@@ -829,13 +835,15 @@ directory_remove_invalid(void)
SMARTLIST_FOREACH_BEGIN(nodes, node_t *, node) {
const char *msg;
routerinfo_t *ent = node->ri;
+ char description[NODE_DESC_BUF_LEN];
uint32_t r;
if (!ent)
continue;
r = dirserv_router_get_status(ent, &msg);
+ router_get_description(description, ent);
if (r & FP_REJECT) {
- log_info(LD_DIRSERV, "Router '%s' is now rejected: %s",
- ent->nickname, msg?msg:"");
+ log_info(LD_DIRSERV, "Router %s is now rejected: %s",
+ description, msg?msg:"");
routerlist_remove(rl, ent, 0, time(NULL));
changed = 1;
continue;
@@ -843,33 +851,33 @@ directory_remove_invalid(void)
#if 0
if (bool_neq((r & FP_NAMED), ent->auth_says_is_named)) {
log_info(LD_DIRSERV,
- "Router '%s' is now %snamed.", ent->nickname,
+ "Router %s is now %snamed.", description,
(r&FP_NAMED)?"":"un");
ent->is_named = (r&FP_NAMED)?1:0;
changed = 1;
}
if (bool_neq((r & FP_UNNAMED), ent->auth_says_is_unnamed)) {
log_info(LD_DIRSERV,
- "Router '%s' is now %snamed. (FP_UNNAMED)", ent->nickname,
+ "Router '%s' is now %snamed. (FP_UNNAMED)", description,
(r&FP_NAMED)?"":"un");
ent->is_named = (r&FP_NUNAMED)?0:1;
changed = 1;
}
#endif
if (bool_neq((r & FP_INVALID), !node->is_valid)) {
- log_info(LD_DIRSERV, "Router '%s' is now %svalid.", ent->nickname,
+ log_info(LD_DIRSERV, "Router '%s' is now %svalid.", description,
(r&FP_INVALID) ? "in" : "");
node->is_valid = (r&FP_INVALID)?0:1;
changed = 1;
}
if (bool_neq((r & FP_BADDIR), node->is_bad_directory)) {
- log_info(LD_DIRSERV, "Router '%s' is now a %s directory", ent->nickname,
+ log_info(LD_DIRSERV, "Router '%s' is now a %s directory", description,
(r & FP_BADDIR) ? "bad" : "good");
node->is_bad_directory = (r&FP_BADDIR) ? 1: 0;
changed = 1;
}
if (bool_neq((r & FP_BADEXIT), node->is_bad_exit)) {
- log_info(LD_DIRSERV, "Router '%s' is now a %s exit", ent->nickname,
+ log_info(LD_DIRSERV, "Router '%s' is now a %s exit", description,
(r & FP_BADEXIT) ? "bad" : "good");
node->is_bad_exit = (r&FP_BADEXIT) ? 1: 0;
changed = 1;
@@ -965,7 +973,7 @@ running_long_enough_to_decide_unreachable(void)
void
dirserv_set_router_is_running(routerinfo_t *router, time_t now)
{
- /*XXXX022 This function is a mess. Separate out the part that calculates
+ /*XXXX023 This function is a mess. Separate out the part that calculates
whether it's reachable and the part that tells rephist that the router was
unreachable.
*/
@@ -992,8 +1000,18 @@ dirserv_set_router_is_running(routerinfo_t *router, time_t now)
}
if (!answer && running_long_enough_to_decide_unreachable()) {
- /* not considered reachable. tell rephist. */
- rep_hist_note_router_unreachable(router->cache_info.identity_digest, now);
+ /* Not considered reachable. tell rephist about that.
+
+ Because we launch a reachability test for each router every
+ REACHABILITY_TEST_CYCLE_PERIOD seconds, then the router has probably
+ been down since at least that time after we last successfully reached
+ it.
+ */
+ time_t when = now;
+ if (router->last_reachable &&
+ router->last_reachable + REACHABILITY_TEST_CYCLE_PERIOD < now)
+ when = router->last_reachable + REACHABILITY_TEST_CYCLE_PERIOD;
+ rep_hist_note_router_unreachable(router->cache_info.identity_digest, when);
}
node->is_running = answer;
@@ -1014,7 +1032,7 @@ list_server_status_v1(smartlist_t *routers, char **router_status_out,
smartlist_t *rs_entries;
time_t now = time(NULL);
time_t cutoff = now - ROUTER_MAX_AGE_TO_PUBLISH;
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
/* We include v2 dir auths here too, because they need to answer
* controllers. Eventually we'll deprecate this whole function;
* see also networkstatus_getinfo_by_purpose(). */
@@ -1181,7 +1199,7 @@ dirserv_dump_directory_to_string(char **dir_out,
/** Return 1 if we fetch our directory material directly from the
* authorities, rather than from a mirror. */
int
-directory_fetches_from_authorities(or_options_t *options)
+directory_fetches_from_authorities(const or_options_t *options)
{
const routerinfo_t *me;
uint32_t addr;
@@ -1208,7 +1226,7 @@ directory_fetches_from_authorities(or_options_t *options)
* on the "mirror" schedule rather than the "client" schedule.
*/
int
-directory_fetches_dir_info_early(or_options_t *options)
+directory_fetches_dir_info_early(const or_options_t *options)
{
return directory_fetches_from_authorities(options);
}
@@ -1220,7 +1238,7 @@ directory_fetches_dir_info_early(or_options_t *options)
* client as a directory guard.
*/
int
-directory_fetches_dir_info_later(or_options_t *options)
+directory_fetches_dir_info_later(const or_options_t *options)
{
return options->UseBridges != 0;
}
@@ -1228,7 +1246,7 @@ directory_fetches_dir_info_later(or_options_t *options)
/** Return 1 if we want to cache v2 dir info (each status file).
*/
int
-directory_caches_v2_dir_info(or_options_t *options)
+directory_caches_v2_dir_info(const or_options_t *options)
{
return options->DirPort != 0;
}
@@ -1237,7 +1255,7 @@ directory_caches_v2_dir_info(or_options_t *options)
* and we're willing to serve them to others. Else return 0.
*/
int
-directory_caches_dir_info(or_options_t *options)
+directory_caches_dir_info(const or_options_t *options)
{
if (options->BridgeRelay || options->DirPort)
return 1;
@@ -1253,7 +1271,7 @@ directory_caches_dir_info(or_options_t *options)
* requests via the "begin_dir" interface, which doesn't require
* having any separate port open. */
int
-directory_permits_begindir_requests(or_options_t *options)
+directory_permits_begindir_requests(const or_options_t *options)
{
return options->BridgeRelay != 0 || options->DirPort != 0;
}
@@ -1262,7 +1280,7 @@ directory_permits_begindir_requests(or_options_t *options)
* requests via the controller interface, which doesn't require
* having any separate port open. */
int
-directory_permits_controller_requests(or_options_t *options)
+directory_permits_controller_requests(const or_options_t *options)
{
return options->DirPort != 0;
}
@@ -1272,7 +1290,8 @@ directory_permits_controller_requests(or_options_t *options)
* lately.
*/
int
-directory_too_idle_to_fetch_descriptors(or_options_t *options, time_t now)
+directory_too_idle_to_fetch_descriptors(const or_options_t *options,
+ time_t now)
{
return !directory_caches_dir_info(options) &&
!options->FetchUselessDescriptors &&
@@ -1540,11 +1559,11 @@ dirserv_pick_cached_dir_obj(cached_dir_t *cache_src,
cached_dir_t *auth_src,
time_t dirty, cached_dir_t *(*regenerate)(void),
const char *name,
- authority_type_t auth_type)
+ dirinfo_type_t auth_type)
{
- or_options_t *options = get_options();
- int authority = (auth_type == V1_AUTHORITY && authdir_mode_v1(options)) ||
- (auth_type == V2_AUTHORITY && authdir_mode_v2(options));
+ const or_options_t *options = get_options();
+ int authority = (auth_type == V1_DIRINFO && authdir_mode_v1(options)) ||
+ (auth_type == V2_DIRINFO && authdir_mode_v2(options));
if (!authority || authdir_mode_bridge(options)) {
return cache_src;
@@ -1573,7 +1592,7 @@ dirserv_get_directory(void)
return dirserv_pick_cached_dir_obj(cached_directory, the_directory,
the_directory_is_dirty,
dirserv_regenerate_directory,
- "v1 server directory", V1_AUTHORITY);
+ "v1 server directory", V1_DIRINFO);
}
/** Only called by v1 auth dirservers.
@@ -1666,7 +1685,7 @@ dirserv_get_runningrouters(void)
&cached_runningrouters, &the_runningrouters,
runningrouters_is_dirty,
generate_runningrouters,
- "v1 network status list", V1_AUTHORITY);
+ "v1 network status list", V1_DIRINFO);
}
/** Return the latest downloaded consensus networkstatus in encoded, signed,
@@ -1769,9 +1788,12 @@ dirserv_thinks_router_is_unreliable(time_t now,
{
if (need_uptime) {
if (!enough_mtbf_info) {
- /* XXX022 Once most authorities are on v3, we should change the rule from
+ /* XXX023 Once most authorities are on v3, we should change the rule from
* "use uptime if we don't have mtbf data" to "don't advertise Stable on
- * v3 if we don't have enough mtbf data." */
+ * v3 if we don't have enough mtbf data." Or maybe not, since if we ever
+ * hit a point where we need to reset a lot of authorities at once,
+ * none of them would be in a position to declare Stable.
+ */
long uptime = real_uptime(router, now);
if ((unsigned)uptime < stable_uptime &&
(unsigned)uptime < UPTIME_TO_GUARANTEE_STABLE)
@@ -1803,12 +1825,30 @@ static int
dirserv_thinks_router_is_hs_dir(const routerinfo_t *router,
const node_t *node, time_t now)
{
- long uptime = real_uptime(router, now);
+
+ long uptime;
+
+ /* If we haven't been running for at least
+ * get_options()->MinUptimeHidServDirectoryV2 seconds, we can't
+ * have accurate data telling us a relay has been up for at least
+ * that long. We also want to allow a bit of slack: Reachability
+ * tests aren't instant. If we haven't been running long enough,
+ * trust the relay. */
+
+ if (stats_n_seconds_working >
+ get_options()->MinUptimeHidServDirectoryV2 * 1.1)
+ uptime = MIN(rep_hist_get_uptime(router->cache_info.identity_digest, now),
+ real_uptime(router, now));
+ else
+ uptime = real_uptime(router, now);
/* XXX We shouldn't need to check dir_port, but we do because of
* bug 1693. In the future, once relays set wants_to_be_hs_dir
* correctly, we can revert to only checking dir_port if router's
* version is too old. */
+ /* XXX Unfortunately, we need to keep checking dir_port until all
+ * *clients* suffering from bug 2722 are obsolete. The first version
+ * to fix the bug was 0.2.2.25-alpha. */
return (router->wants_to_be_hs_dir && router->dir_port &&
uptime > get_options()->MinUptimeHidServDirectoryV2 &&
node->is_running);
@@ -2083,7 +2123,7 @@ routerstatus_format_entry(char *buf, size_t buf_len,
/* This assert can fire for the control port, because
* it can request NS documents before all descriptors
* have been fetched. */
- if (memcmp(desc->cache_info.signed_descriptor_digest,
+ if (tor_memneq(desc->cache_info.signed_descriptor_digest,
rs->descriptor_digest,
DIGEST_LEN)) {
char rl_d[HEX_DIGEST_LEN+1];
@@ -2099,7 +2139,7 @@ routerstatus_format_entry(char *buf, size_t buf_len,
"(router %s)\n",
rl_d, rs_d, id);
- tor_assert(!memcmp(desc->cache_info.signed_descriptor_digest,
+ tor_assert(tor_memeq(desc->cache_info.signed_descriptor_digest,
rs->descriptor_digest,
DIGEST_LEN));
};
@@ -2201,9 +2241,9 @@ _compare_routerinfo_by_ip_and_bw(const void **a, const void **b)
/* They're equal! Compare by identity digest, so there's a
* deterministic order and we avoid flapping. */
- return memcmp(first->cache_info.identity_digest,
- second->cache_info.identity_digest,
- DIGEST_LEN);
+ return fast_memcmp(first->cache_info.identity_digest,
+ second->cache_info.identity_digest,
+ DIGEST_LEN);
}
/** Given a list of routerinfo_t in <b>routers</b>, return a new digestmap_t
@@ -2212,7 +2252,7 @@ _compare_routerinfo_by_ip_and_bw(const void **a, const void **b)
static digestmap_t *
get_possible_sybil_list(const smartlist_t *routers)
{
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
digestmap_t *omit_as_sybil;
smartlist_t *routers_by_ip = smartlist_create();
uint32_t last_addr;
@@ -2400,7 +2440,7 @@ measured_bw_line_parse(measured_bw_line_t *out, const char *orig_line)
tor_free(line);
return -1;
}
- strncpy(out->node_hex, cp, sizeof(out->node_hex));
+ strlcpy(out->node_hex, cp, sizeof(out->node_hex));
got_node_id=1;
}
} while ((cp = tor_strtok_r(NULL, " \t", &strtok_state)));
@@ -2512,7 +2552,7 @@ networkstatus_t *
dirserv_generate_networkstatus_vote_obj(crypto_pk_env_t *private_key,
authority_cert_t *cert)
{
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
networkstatus_t *v3_out = NULL;
uint32_t addr;
char *hostname = NULL, *client_versions = NULL, *server_versions = NULL;
@@ -2693,13 +2733,16 @@ dirserv_generate_networkstatus_vote_obj(crypto_pk_env_t *private_key,
voter->sigs = smartlist_create();
voter->address = hostname;
voter->addr = addr;
- voter->dir_port = options->DirPort;
- voter->or_port = options->ORPort;
+ voter->dir_port = router_get_advertised_dir_port(options, 0);
+ voter->or_port = router_get_advertised_or_port(options);
voter->contact = tor_strdup(contact);
if (options->V3AuthUseLegacyKey) {
authority_cert_t *c = get_my_v3_legacy_cert();
if (c) {
- crypto_pk_get_digest(c->identity_key, voter->legacy_id_digest);
+ if (crypto_pk_get_digest(c->identity_key, voter->legacy_id_digest)) {
+ log_warn(LD_BUG, "Unable to compute digest of legacy v3 identity key");
+ memset(voter->legacy_id_digest, 0, DIGEST_LEN);
+ }
}
}
@@ -2724,7 +2767,7 @@ generate_v2_networkstatus_opinion(void)
char *status = NULL, *client_versions = NULL, *server_versions = NULL,
*identity_pkey = NULL, *hostname = NULL;
char *outp, *endp;
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
char fingerprint[FINGERPRINT_LEN+1];
char published[ISO_TIME_LEN+1];
char digest[DIGEST_LEN];
@@ -2793,7 +2836,8 @@ generate_v2_networkstatus_opinion(void)
"dir-options%s%s%s%s\n"
"%s" /* client version line, server version line. */
"dir-signing-key\n%s",
- hostname, fmt_addr32(addr), (int)options->DirPort,
+ hostname, fmt_addr32(addr),
+ (int)router_get_advertised_dir_port(options, 0),
fingerprint,
contact,
published,
@@ -2931,7 +2975,7 @@ dirserv_get_networkstatus_v2_fingerprints(smartlist_t *result,
} else {
SMARTLIST_FOREACH(router_get_trusted_dir_servers(),
trusted_dir_server_t *, ds,
- if (ds->type & V2_AUTHORITY)
+ if (ds->type & V2_DIRINFO)
smartlist_add(result, tor_memdup(ds->digest, DIGEST_LEN)));
}
smartlist_sort_digests(result);
@@ -2997,6 +3041,8 @@ dirserv_get_routerdesc_fingerprints(smartlist_t *fps_out, const char *key,
SMARTLIST_FOREACH(rl->routers, routerinfo_t *, r,
smartlist_add(fps_out,
tor_memdup(r->cache_info.identity_digest, DIGEST_LEN)));
+ /* Treat "all" requests as if they were unencrypted */
+ for_unencrypted_conn = 1;
} else if (!strcmp(key, "authority")) {
const routerinfo_t *ri = router_get_my_routerinfo();
if (ri)
@@ -3141,20 +3187,28 @@ dirserv_orconn_tls_done(const char *address,
tor_assert(address);
tor_assert(digest_rcvd);
- SMARTLIST_FOREACH(rl->routers, routerinfo_t *, ri, {
+ /* XXX023 Doing a loop like this is stupid. We should just look up the
+ * router by digest_rcvd, and see if address, orport, and as_advertised
+ * match up. -NM */
+ SMARTLIST_FOREACH_BEGIN(rl->routers, routerinfo_t *, ri) {
if (!strcasecmp(address, ri->address) && or_port == ri->or_port &&
as_advertised &&
- !memcmp(ri->cache_info.identity_digest, digest_rcvd, DIGEST_LEN)) {
+ fast_memeq(ri->cache_info.identity_digest, digest_rcvd, DIGEST_LEN)) {
/* correct digest. mark this router reachable! */
if (!bridge_auth || ri->purpose == ROUTER_PURPOSE_BRIDGE) {
- log_info(LD_DIRSERV, "Found router %s to be reachable. Yay.",
- ri->nickname);
- rep_hist_note_router_reachable(digest_rcvd, now);
+ tor_addr_t addr, *addrp=NULL;
+ log_info(LD_DIRSERV, "Found router %s to be reachable at %s:%d. Yay.",
+ router_describe(ri),
+ address, ri->or_port);
+ if (tor_addr_from_str(&addr, ri->address) != -1)
+ addrp = &addr;
+ else
+ log_warn(LD_BUG, "Couldn't parse IP address \"%s\"", ri->address);
+ rep_hist_note_router_reachable(digest_rcvd, addrp, or_port, now);
ri->last_reachable = now;
}
}
- });
-
+ } SMARTLIST_FOREACH_END(ri);
/* FFFF Maybe we should reinstate the code that dumps routers with the same
* addr/port but with nonmatching keys, but instead of dumping, we should
* skip testing. */
@@ -3206,8 +3260,8 @@ dirserv_single_reachability_test(time_t now, routerinfo_t *router)
* try a few connections per call.
*
* The load balancing is such that if we get called once every ten
- * seconds, we will cycle through all the tests in 1280 seconds (a
- * bit over 20 minutes).
+ * seconds, we will cycle through all the tests in
+ * REACHABILITY_TEST_CYCLE_PERIOD seconds (a bit over 20 minutes).
*/
void
dirserv_test_reachability(time_t now)
@@ -3233,11 +3287,11 @@ dirserv_test_reachability(time_t now)
continue; /* bridge authorities only test reachability on bridges */
// if (router->cache_info.published_on > cutoff)
// continue;
- if ((((uint8_t)id_digest[0]) % 128) == ctr) {
+ if ((((uint8_t)id_digest[0]) % REACHABILITY_MODULO_PER_TEST) == ctr) {
dirserv_single_reachability_test(now, router);
}
} SMARTLIST_FOREACH_END(router);
- ctr = (ctr + 1) % 128; /* increment ctr */
+ ctr = (ctr + 1) % REACHABILITY_MODULO_PER_TEST; /* increment ctr */
}
/** Given a fingerprint <b>fp</b> which is either set if we're looking for a
@@ -3252,7 +3306,7 @@ lookup_cached_dir_by_fp(const char *fp)
d = strmap_get(cached_consensuses, "ns");
else if (memchr(fp, '\0', DIGEST_LEN) && cached_consensuses &&
(d = strmap_get(cached_consensuses, fp))) {
- /* this here interface is a nasty hack XXXX022 */;
+ /* this here interface is a nasty hack XXXX023 */;
} else if (router_digest_is_me(fp) && the_v2_networkstatus)
d = the_v2_networkstatus;
else if (cached_v2_networkstatus)
diff --git a/src/or/dirserv.h b/src/or/dirserv.h
index a779632430..d3fd90ceb5 100644
--- a/src/or/dirserv.h
+++ b/src/or/dirserv.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -12,6 +12,18 @@
#ifndef _TOR_DIRSERV_H
#define _TOR_DIRSERV_H
+/** What fraction (1 over this number) of the relay ID space do we
+ * (as a directory authority) launch connections to at each reachability
+ * test? */
+#define REACHABILITY_MODULO_PER_TEST 128
+
+/** How often (in seconds) do we launch reachability tests? */
+#define REACHABILITY_TEST_INTERVAL 10
+
+/** How many seconds apart are the reachability tests for a given relay? */
+#define REACHABILITY_TEST_CYCLE_PERIOD \
+ (REACHABILITY_TEST_INTERVAL*REACHABILITY_MODULO_PER_TEST)
+
/** Maximum length of an exit policy summary. */
#define MAX_EXITPOLICY_SUMMARY_LEN 1000
@@ -59,15 +71,16 @@ int list_server_status_v1(smartlist_t *routers, char **router_status_out,
int dirserv_dump_directory_to_string(char **dir_out,
crypto_pk_env_t *private_key);
-int directory_fetches_from_authorities(or_options_t *options);
-int directory_fetches_dir_info_early(or_options_t *options);
-int directory_fetches_dir_info_later(or_options_t *options);
-int directory_caches_v2_dir_info(or_options_t *options);
+int directory_fetches_from_authorities(const or_options_t *options);
+int directory_fetches_dir_info_early(const or_options_t *options);
+int directory_fetches_dir_info_later(const or_options_t *options);
+int directory_caches_v2_dir_info(const or_options_t *options);
#define directory_caches_v1_dir_info(o) directory_caches_v2_dir_info(o)
-int directory_caches_dir_info(or_options_t *options);
-int directory_permits_begindir_requests(or_options_t *options);
-int directory_permits_controller_requests(or_options_t *options);
-int directory_too_idle_to_fetch_descriptors(or_options_t *options, time_t now);
+int directory_caches_dir_info(const or_options_t *options);
+int directory_permits_begindir_requests(const or_options_t *options);
+int directory_permits_controller_requests(const or_options_t *options);
+int directory_too_idle_to_fetch_descriptors(const or_options_t *options,
+ time_t now);
void directory_set_dirty(void);
cached_dir_t *dirserv_get_directory(void);
diff --git a/src/or/dirvote.c b/src/or/dirvote.c
index 1cb35637d7..bf34c62af3 100644
--- a/src/or/dirvote.c
+++ b/src/or/dirvote.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define DIRVOTE_PRIVATE
@@ -50,7 +50,7 @@ static int dirvote_publish_consensus(void);
static char *make_consensus_method_list(int low, int high, const char *sep);
/** The highest consensus method that we currently support. */
-#define MAX_SUPPORTED_CONSENSUS_METHOD 10
+#define MAX_SUPPORTED_CONSENSUS_METHOD 11
/** Lowest consensus method that contains a 'directory-footer' marker */
#define MIN_METHOD_FOR_FOOTER 9
@@ -337,7 +337,7 @@ static int
_compare_votes_by_authority_id(const void **_a, const void **_b)
{
const networkstatus_t *a = *_a, *b = *_b;
- return memcmp(get_voter(a)->identity_digest,
+ return fast_memcmp(get_voter(a)->identity_digest,
get_voter(b)->identity_digest, DIGEST_LEN);
}
@@ -354,7 +354,7 @@ _compare_dir_src_ents_by_authority_id(const void **_a, const void **_b)
a_id = a->is_legacy ? a_v->legacy_id_digest : a_v->identity_digest;
b_id = b->is_legacy ? b_v->legacy_id_digest : b_v->identity_digest;
- return memcmp(a_id, b_id, DIGEST_LEN);
+ return fast_memcmp(a_id, b_id, DIGEST_LEN);
}
/** Given a sorted list of strings <b>in</b>, add every member to <b>out</b>
@@ -391,11 +391,12 @@ static int
compare_vote_rs(const vote_routerstatus_t *a, const vote_routerstatus_t *b)
{
int r;
- if ((r = memcmp(a->status.identity_digest, b->status.identity_digest,
+ if ((r = fast_memcmp(a->status.identity_digest, b->status.identity_digest,
DIGEST_LEN)))
return r;
- if ((r = memcmp(a->status.descriptor_digest, b->status.descriptor_digest,
- DIGEST_LEN)))
+ if ((r = fast_memcmp(a->status.descriptor_digest,
+ b->status.descriptor_digest,
+ DIGEST_LEN)))
return r;
if ((r = (int)(b->status.published_on - a->status.published_on)))
return r;
@@ -441,9 +442,9 @@ compute_routerstatus_consensus(smartlist_t *votes, int consensus_method,
if (cur && !compare_vote_rs(cur, rs)) {
++cur_n;
} else {
- if (cur_n > most_n ||
- (cur && cur_n == most_n &&
- cur->status.published_on > most_published)) {
+ if (cur && (cur_n > most_n ||
+ (cur_n == most_n &&
+ cur->status.published_on > most_published))) {
most = cur;
most_n = cur_n;
most_published = cur->status.published_on;
@@ -1584,7 +1585,7 @@ networkstatus_compute_consensus(smartlist_t *votes,
* is the same flag as votes[j]->known_flags[b]. */
int *named_flag; /* Index of the flag "Named" for votes[j] */
int *unnamed_flag; /* Index of the flag "Unnamed" for votes[j] */
- int chosen_named_idx, chosen_unnamed_idx;
+ int chosen_named_idx;
strmap_t *name_to_id_map = strmap_new();
char conflict[DIGEST_LEN];
@@ -1602,7 +1603,6 @@ networkstatus_compute_consensus(smartlist_t *votes,
for (i = 0; i < smartlist_len(votes); ++i)
unnamed_flag[i] = named_flag[i] = -1;
chosen_named_idx = smartlist_string_pos(flags, "Named");
- chosen_unnamed_idx = smartlist_string_pos(flags, "Unnamed");
/* Build the flag index. */
SMARTLIST_FOREACH(votes, networkstatus_t *, v,
@@ -1641,7 +1641,7 @@ networkstatus_compute_consensus(smartlist_t *votes,
strmap_set_lc(name_to_id_map, rs->status.nickname,
rs->status.identity_digest);
} else if (d != conflict &&
- memcmp(d, rs->status.identity_digest, DIGEST_LEN)) {
+ fast_memcmp(d, rs->status.identity_digest, DIGEST_LEN)) {
/* Authorities disagree about this nickname. */
strmap_set_lc(name_to_id_map, rs->status.nickname, conflict);
} else {
@@ -1665,7 +1665,7 @@ networkstatus_compute_consensus(smartlist_t *votes,
} else if (!d) {
/* We have no name officially mapped to this digest. */
strmap_set_lc(name_to_id_map, rs->status.nickname, unknown);
- } else if (!memcmp(d, rs->status.identity_digest, DIGEST_LEN)) {
+ } else if (fast_memeq(d, rs->status.identity_digest, DIGEST_LEN)) {
/* Authorities disagree about this nickname. */
strmap_set_lc(name_to_id_map, rs->status.nickname, conflict);
} else {
@@ -1686,7 +1686,7 @@ networkstatus_compute_consensus(smartlist_t *votes,
const char *chosen_name = NULL;
int exitsummary_disagreement = 0;
int is_named = 0, is_unnamed = 0, is_running = 0;
- int is_guard = 0, is_exit = 0;
+ int is_guard = 0, is_exit = 0, is_bad_exit = 0;
int naming_conflict = 0;
int n_listing = 0;
int i;
@@ -1698,7 +1698,8 @@ networkstatus_compute_consensus(smartlist_t *votes,
if (index[v_sl_idx] < size[v_sl_idx]) {
rs = smartlist_get(v->routerstatus_list, index[v_sl_idx]);
if (!lowest_id ||
- memcmp(rs->status.identity_digest, lowest_id, DIGEST_LEN) < 0)
+ fast_memcmp(rs->status.identity_digest,
+ lowest_id, DIGEST_LEN) < 0)
lowest_id = rs->status.identity_digest;
}
});
@@ -1717,7 +1718,7 @@ networkstatus_compute_consensus(smartlist_t *votes,
if (index[v_sl_idx] >= size[v_sl_idx])
continue; /* out of entries. */
rs = smartlist_get(v->routerstatus_list, index[v_sl_idx]);
- if (memcmp(rs->status.identity_digest, lowest_id, DIGEST_LEN))
+ if (fast_memcmp(rs->status.identity_digest, lowest_id, DIGEST_LEN))
continue; /* doesn't include this router. */
/* At this point, we know that we're looking at a routerstatus with
* identity "lowest".
@@ -1762,7 +1763,7 @@ networkstatus_compute_consensus(smartlist_t *votes,
rs = compute_routerstatus_consensus(matching_descs, consensus_method,
microdesc_digest);
/* Copy bits of that into rs_out. */
- tor_assert(!memcmp(lowest_id, rs->status.identity_digest, DIGEST_LEN));
+ tor_assert(fast_memeq(lowest_id, rs->status.identity_digest,DIGEST_LEN));
memcpy(rs_out.identity_digest, lowest_id, DIGEST_LEN);
memcpy(rs_out.descriptor_digest, rs->status.descriptor_digest,
DIGEST_LEN);
@@ -1786,7 +1787,7 @@ networkstatus_compute_consensus(smartlist_t *votes,
const char *d = strmap_get_lc(name_to_id_map, rs_out.nickname);
if (!d) {
is_named = is_unnamed = 0;
- } else if (!memcmp(d, lowest_id, DIGEST_LEN)) {
+ } else if (fast_memeq(d, lowest_id, DIGEST_LEN)) {
is_named = 1; is_unnamed = 0;
} else {
is_named = 0; is_unnamed = 1;
@@ -1812,6 +1813,8 @@ networkstatus_compute_consensus(smartlist_t *votes,
is_guard = 1;
else if (!strcmp(fl, "Running"))
is_running = 1;
+ else if (!strcmp(fl, "BadExit"))
+ is_bad_exit = 1;
}
}
});
@@ -1838,6 +1841,11 @@ networkstatus_compute_consensus(smartlist_t *votes,
rs_out.bandwidth = median_uint32(bandwidths, num_bandwidths);
}
+ /* Fix bug 2203: Do not count BadExit nodes as Exits for bw weights */
+ if (consensus_method >= 11) {
+ is_exit = is_exit && !is_bad_exit;
+ }
+
if (consensus_method >= MIN_METHOD_FOR_BW_WEIGHTS) {
if (rs_out.has_bandwidth) {
T += rs_out.bandwidth;
@@ -1877,11 +1885,11 @@ networkstatus_compute_consensus(smartlist_t *votes,
SMARTLIST_FOREACH(matching_descs, vote_routerstatus_t *, vsr, {
/* Check if the vote where this status comes from had the
* proper descriptor */
- tor_assert(!memcmp(rs_out.identity_digest,
+ tor_assert(fast_memeq(rs_out.identity_digest,
vsr->status.identity_digest,
DIGEST_LEN));
if (vsr->status.has_exitsummary &&
- !memcmp(rs_out.descriptor_digest,
+ fast_memeq(rs_out.descriptor_digest,
vsr->status.descriptor_digest,
DIGEST_LEN)) {
tor_assert(vsr->status.exitsummary);
@@ -2197,7 +2205,8 @@ networkstatus_add_detached_signatures(networkstatus_t *target,
}
for (alg = DIGEST_SHA1; alg < N_DIGEST_ALGORITHMS; ++alg) {
if (!tor_mem_is_zero(digests->d[alg], DIGEST256_LEN)) {
- if (!memcmp(target->digests.d[alg], digests->d[alg], DIGEST256_LEN)) {
+ if (fast_memeq(target->digests.d[alg], digests->d[alg],
+ DIGEST256_LEN)) {
++n_matches;
} else {
*msg_out = "Mismatched digest.";
@@ -2495,7 +2504,7 @@ authority_cert_dup(authority_cert_t *cert)
void
dirvote_get_preferred_voting_intervals(vote_timing_t *timing_out)
{
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
tor_assert(timing_out);
@@ -2569,7 +2578,7 @@ static struct {
/** Set voting_schedule to hold the timing for the next vote we should be
* doing. */
void
-dirvote_recalculate_timing(or_options_t *options, time_t now)
+dirvote_recalculate_timing(const or_options_t *options, time_t now)
{
int interval, vote_delay, dist_delay;
time_t start;
@@ -2620,7 +2629,7 @@ dirvote_recalculate_timing(or_options_t *options, time_t now)
/** Entry point: Take whatever voting actions are pending as of <b>now</b>. */
void
-dirvote_act(or_options_t *options, time_t now)
+dirvote_act(const or_options_t *options, time_t now)
{
if (!authdir_mode_v3(options))
return;
@@ -2735,7 +2744,7 @@ dirvote_perform_vote(void)
directory_post_to_dirservers(DIR_PURPOSE_UPLOAD_VOTE,
ROUTER_PURPOSE_GENERAL,
- V3_AUTHORITY,
+ V3_DIRINFO,
pending_vote->vote_body->dir,
pending_vote->vote_body->dir_len, 0);
log_notice(LD_DIR, "Vote posted.");
@@ -2754,7 +2763,7 @@ dirvote_fetch_missing_votes(void)
SMARTLIST_FOREACH(router_get_trusted_dir_servers(),
trusted_dir_server_t *, ds,
{
- if (!(ds->type & V3_AUTHORITY))
+ if (!(ds->type & V3_DIRINFO))
continue;
if (!dirvote_get_vote(ds->v3_identity_digest,
DGV_BY_ID|DGV_INCLUDE_PENDING)) {
@@ -2867,7 +2876,7 @@ list_v3_auth_ids(void)
char *keys;
SMARTLIST_FOREACH(router_get_trusted_dir_servers(),
trusted_dir_server_t *, ds,
- if ((ds->type & V3_AUTHORITY) &&
+ if ((ds->type & V3_DIRINFO) &&
!tor_digest_is_zero(ds->v3_identity_digest))
smartlist_add(known_v3_keys,
tor_strdup(hex_str(ds->v3_identity_digest, DIGEST_LEN))));
@@ -2961,11 +2970,11 @@ dirvote_add_vote(const char *vote_body, const char **msg_out, int *status_out)
/* Now see whether we already have a vote from this authority. */
SMARTLIST_FOREACH(pending_vote_list, pending_vote_t *, v, {
- if (! memcmp(v->vote->cert->cache_info.identity_digest,
+ if (fast_memeq(v->vote->cert->cache_info.identity_digest,
vote->cert->cache_info.identity_digest,
DIGEST_LEN)) {
networkstatus_voter_info_t *vi_old = get_voter(v->vote);
- if (!memcmp(vi_old->vote_digest, vi->vote_digest, DIGEST_LEN)) {
+ if (fast_memeq(vi_old->vote_digest, vi->vote_digest, DIGEST_LEN)) {
/* Ah, it's the same vote. Not a problem. */
log_info(LD_DIR, "Discarding a vote we already have (from %s).",
vi->address);
@@ -3062,11 +3071,11 @@ dirvote_compute_consensuses(void)
if (!pending_vote_list)
pending_vote_list = smartlist_create();
- n_voters = get_n_authorities(V3_AUTHORITY);
+ n_voters = get_n_authorities(V3_DIRINFO);
n_votes = smartlist_len(pending_vote_list);
if (n_votes <= n_voters/2) {
log_warn(LD_DIR, "We don't have enough votes to generate a consensus: "
- "%d of %d", n_votes, n_voters/2);
+ "%d of %d", n_votes, n_voters/2+1);
goto err;
}
tor_assert(pending_vote_list);
@@ -3115,8 +3124,12 @@ dirvote_compute_consensuses(void)
authority_cert_t *cert = get_my_v3_legacy_cert();
legacy_sign = get_my_v3_legacy_signing_key();
if (cert) {
- crypto_pk_get_digest(cert->identity_key, legacy_dbuf);
- legacy_id_digest = legacy_dbuf;
+ if (crypto_pk_get_digest(cert->identity_key, legacy_dbuf)) {
+ log_warn(LD_BUG,
+ "Unable to compute digest of legacy v3 identity key");
+ } else {
+ legacy_id_digest = legacy_dbuf;
+ }
}
}
@@ -3197,7 +3210,7 @@ dirvote_compute_consensuses(void)
directory_post_to_dirservers(DIR_PURPOSE_UPLOAD_SIGNATURES,
ROUTER_PURPOSE_GENERAL,
- V3_AUTHORITY,
+ V3_DIRINFO,
pending_consensus_signatures,
strlen(pending_consensus_signatures), 0);
log_notice(LD_DIR, "Signature(s) posted.");
@@ -3462,23 +3475,23 @@ dirvote_get_vote(const char *fp, int flags)
if (by_id) {
if (pending_vote_list && include_pending) {
SMARTLIST_FOREACH(pending_vote_list, pending_vote_t *, pv,
- if (!memcmp(get_voter(pv->vote)->identity_digest, fp, DIGEST_LEN))
+ if (fast_memeq(get_voter(pv->vote)->identity_digest, fp, DIGEST_LEN))
return pv->vote_body);
}
if (previous_vote_list && include_previous) {
SMARTLIST_FOREACH(previous_vote_list, pending_vote_t *, pv,
- if (!memcmp(get_voter(pv->vote)->identity_digest, fp, DIGEST_LEN))
+ if (fast_memeq(get_voter(pv->vote)->identity_digest, fp, DIGEST_LEN))
return pv->vote_body);
}
} else {
if (pending_vote_list && include_pending) {
SMARTLIST_FOREACH(pending_vote_list, pending_vote_t *, pv,
- if (!memcmp(pv->vote->digests.d[DIGEST_SHA1], fp, DIGEST_LEN))
+ if (fast_memeq(pv->vote->digests.d[DIGEST_SHA1], fp, DIGEST_LEN))
return pv->vote_body);
}
if (previous_vote_list && include_previous) {
SMARTLIST_FOREACH(previous_vote_list, pending_vote_t *, pv,
- if (!memcmp(pv->vote->digests.d[DIGEST_SHA1], fp, DIGEST_LEN))
+ if (fast_memeq(pv->vote->digests.d[DIGEST_SHA1], fp, DIGEST_LEN))
return pv->vote_body);
}
}
@@ -3597,7 +3610,7 @@ vote_routerstatus_find_microdesc_hash(char *digest256_out,
* the first part. */
while (1) {
num_len = strspn(cp, "1234567890");
- if (num_len == mlen && !memcmp(mstr, cp, mlen)) {
+ if (num_len == mlen && fast_memeq(mstr, cp, mlen)) {
/* This is the line. */
char buf[BASE64_DIGEST256_LEN+1];
/* XXXX ignores extraneous stuff if the digest is too long. This
diff --git a/src/or/dirvote.h b/src/or/dirvote.h
index 33213a88c6..b6746c6557 100644
--- a/src/or/dirvote.h
+++ b/src/or/dirvote.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -19,9 +19,6 @@
/** Smallest allowable voting interval. */
#define MIN_VOTE_INTERVAL 300
-/** Precision multiplier for the Bw weights */
-#define BW_WEIGHT_SCALE 10000
-
void dirvote_free_all(void);
/* vote manipulation */
@@ -44,8 +41,8 @@ authority_cert_t *authority_cert_dup(authority_cert_t *cert);
/* vote scheduling */
void dirvote_get_preferred_voting_intervals(vote_timing_t *timing_out);
time_t dirvote_get_start_of_next_interval(time_t now, int interval);
-void dirvote_recalculate_timing(or_options_t *options, time_t now);
-void dirvote_act(or_options_t *options, time_t now);
+void dirvote_recalculate_timing(const or_options_t *options, time_t now);
+void dirvote_act(const or_options_t *options, time_t now);
/* invoked on timers and by outside triggers. */
struct pending_vote_t * dirvote_add_vote(const char *vote_body,
diff --git a/src/or/dns.c b/src/or/dns.c
index 83d47914e4..5d86e81fa0 100644
--- a/src/or/dns.c
+++ b/src/or/dns.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -54,12 +54,19 @@ struct evdns_request;
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_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))
+ ((evdns_resolve_ipv4((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) \
@@ -269,7 +276,7 @@ dns_init(void)
int
dns_reset(void)
{
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
if (! server_mode(options)) {
if (!the_evdns_base) {
@@ -1019,7 +1026,7 @@ add_answer_to_cache(const char *address, uint8_t is_reverse, uint32_t addr,
static INLINE int
is_test_address(const char *address)
{
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
return options->ServerDNSTestAddresses &&
smartlist_string_isin_case(options->ServerDNSTestAddresses, address);
}
@@ -1170,7 +1177,7 @@ evdns_err_is_transient(int err)
static int
configure_nameservers(int force)
{
- or_options_t *options;
+ const or_options_t *options;
const char *conf_fname;
struct stat st;
int r;
@@ -1199,7 +1206,7 @@ configure_nameservers(int force)
struct sockaddr_storage ss;
socklen = tor_addr_to_sockaddr(&addr, 0,
(struct sockaddr *)&ss, sizeof(ss));
- if (socklen < 0) {
+ if (socklen <= 0) {
log_warn(LD_BUG, "Couldn't convert outbound bind address to sockaddr."
" Ignoring.");
} else {
@@ -1288,14 +1295,17 @@ configure_nameservers(int force)
nameservers_configured = 1;
if (nameserver_config_failed) {
nameserver_config_failed = 0;
- mark_my_descriptor_dirty();
+ /* XXX the three calls to republish the descriptor might be producing
+ * descriptors that are only cosmetically different, especially on
+ * non-exit relays! -RD */
+ mark_my_descriptor_dirty("dns resolvers back");
}
return 0;
err:
nameservers_configured = 0;
if (! nameserver_config_failed) {
nameserver_config_failed = 1;
- mark_my_descriptor_dirty();
+ mark_my_descriptor_dirty("dns resolvers failed");
}
return -1;
}
@@ -1515,7 +1525,7 @@ add_wildcarded_test_address(const char *address)
"broken.", address, n);
if (!dns_is_completely_invalid) {
dns_is_completely_invalid = 1;
- mark_my_descriptor_dirty();
+ mark_my_descriptor_dirty("dns hijacking confirmed");
}
if (!dns_wildcarded_test_address_notice_given)
control_event_server_status(LOG_WARN, "DNS_USELESS");
@@ -1585,7 +1595,7 @@ launch_wildcard_check(int min_len, int max_len, const char *suffix)
static void
launch_test_addresses(int fd, short event, void *args)
{
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
struct evdns_request *req;
(void)fd;
(void)event;
diff --git a/src/or/dns.h b/src/or/dns.h
index c4fd4d1fb7..25ff86e2c6 100644
--- a/src/or/dns.h
+++ b/src/or/dns.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/dnsserv.c b/src/or/dnsserv.c
index ad4f4122bc..f2c473dfc5 100644
--- a/src/or/dnsserv.c
+++ b/src/or/dnsserv.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2007-2010, The Tor Project, Inc. */
+/* Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -19,7 +19,7 @@
#ifdef HAVE_EVENT2_DNS_H
#include <event2/dns.h>
#include <event2/dns_compat.h>
-/* XXXX022 this implies we want an improved evdns */
+/* XXXX023 this implies we want an improved evdns */
#include <event2/dns_struct.h>
#else
#include "eventdns.h"
@@ -95,8 +95,8 @@ evdns_server_callback(struct evdns_server_request *req, void *_data)
}
if (!q) {
log_info(LD_APP, "None of the questions we got were ones we're willing "
- "to support. Sending NODATA.");
- evdns_server_request_respond(req, DNS_ERR_NONE);
+ "to support. Sending NOTIMPL.");
+ evdns_server_request_respond(req, DNS_ERR_NOTIMPL);
return;
}
if (q->type != EVDNS_TYPE_A) {
@@ -280,13 +280,14 @@ dnsserv_resolved(edge_connection_t *conn,
conn->socks_request->command == SOCKS_COMMAND_RESOLVE) {
evdns_server_request_add_a_reply(req,
name,
- 1, (char*)answer, ttl);
+ 1, answer, ttl);
} else if (answer_type == RESOLVED_TYPE_HOSTNAME &&
+ answer_len < 256 &&
conn->socks_request->command == SOCKS_COMMAND_RESOLVE_PTR) {
char *ans = tor_strndup(answer, answer_len);
evdns_server_request_add_ptr_reply(req, NULL,
name,
- (char*)answer, ttl);
+ ans, ttl);
tor_free(ans);
} else if (answer_type == RESOLVED_TYPE_ERROR) {
err = DNS_ERR_NOTEXIST;
@@ -305,7 +306,7 @@ void
dnsserv_configure_listener(connection_t *conn)
{
tor_assert(conn);
- tor_assert(conn->s >= 0);
+ tor_assert(SOCKET_OK(conn->s));
tor_assert(conn->type == CONN_TYPE_AP_DNS_LISTENER);
conn->dns_server_port =
diff --git a/src/or/dnsserv.h b/src/or/dnsserv.h
index 5bf154ebb2..fcca868885 100644
--- a/src/or/dnsserv.h
+++ b/src/or/dnsserv.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/eventdns.c b/src/or/eventdns.c
index 4c6f60e89d..7fe376baff 100644
--- a/src/or/eventdns.c
+++ b/src/or/eventdns.c
@@ -461,7 +461,7 @@ sockaddr_eq(const struct sockaddr *sa1, const struct sockaddr *sa2,
const struct sockaddr_in6 *sin1, *sin2;
sin1 = (const struct sockaddr_in6 *)sa1;
sin2 = (const struct sockaddr_in6 *)sa2;
- if (memcmp(sin1->sin6_addr.s6_addr, sin2->sin6_addr.s6_addr, 16))
+ 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;
@@ -1028,6 +1028,9 @@ request_parse(u8 *packet, ssize_t length, struct evdns_server_port *port, struct
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. */
@@ -1245,7 +1248,8 @@ nameserver_read(struct nameserver *ns) {
for (;;) {
const int r =
- (int)recvfrom(ns->socket, packet, (socklen_t)sizeof(packet), 0,
+ (int)recvfrom(ns->socket, (void*)packet,
+ (socklen_t)sizeof(packet), 0,
sa, &addrlen);
if (r < 0) {
int err = last_error(ns->socket);
@@ -1276,7 +1280,7 @@ server_port_read(struct evdns_server_port *s) {
for (;;) {
addrlen = (socklen_t)sizeof(struct sockaddr_storage);
- r = recvfrom(s->socket, packet, sizeof(packet), 0,
+ r = recvfrom(s->socket, (void*)packet, sizeof(packet), 0,
(struct sockaddr*) &addr, &addrlen);
if (r < 0) {
int err = last_error(s->socket);
@@ -1559,7 +1563,7 @@ evdns_request_data_build(const char *const name, const size_t name_len,
/* exported function */
struct evdns_server_port *
-evdns_add_server_port(int socket, int is_tcp, evdns_request_callback_fn_type cb, void *user_data)
+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))))
@@ -1667,7 +1671,7 @@ evdns_server_request_add_reply(struct evdns_server_request *_req, int section, c
/* exported function */
int
-evdns_server_request_add_a_reply(struct evdns_server_request *req, const char *name, int n, void *addrs, int ttl)
+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,
@@ -1676,7 +1680,7 @@ evdns_server_request_add_a_reply(struct evdns_server_request *req, const char *n
/* exported function */
int
-evdns_server_request_add_aaaa_reply(struct evdns_server_request *req, const char *name, int n, void *addrs, int ttl)
+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,
@@ -1827,8 +1831,8 @@ evdns_server_request_respond(struct evdns_server_request *_req, int err)
r = sendto(port->socket, req->response, req->response_len, 0,
(struct sockaddr*) &req->addr, req->addrlen);
if (r<0) {
- int err = last_error(port->socket);
- if (! error_is_eagain(err))
+ int error = last_error(port->socket);
+ if (! error_is_eagain(error))
return -1;
if (port->pending_replies) {
@@ -1903,7 +1907,7 @@ server_request_free(struct server_request *req)
if (req->port) {
if (req->port->pending_replies == req) {
- if (req->next_pending)
+ if (req->next_pending && req->next_pending != req)
req->port->pending_replies = req->next_pending;
else
req->port->pending_replies = NULL;
@@ -1998,7 +2002,7 @@ evdns_request_timeout_callback(int fd, short events, void *arg) {
/* retransmit it */
/* Stop waiting for the timeout. No need to do this in
* request_finished; that one already deletes the timeout event.
- * XXXX021 port this change to libevent. */
+ * XXXX023 port this change to libevent. */
del_timeout_event(req);
evdns_request_transmit(req);
}
@@ -2012,7 +2016,8 @@ evdns_request_timeout_callback(int fd, short events, void *arg) {
/* 2 other failure */
static int
evdns_request_transmit_to(struct evdns_request *req, struct nameserver *server) {
- const ssize_t r = send(server->socket, req->request, req->request_len, 0);
+ 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;
@@ -2251,7 +2256,7 @@ sockaddr_is_loopback(const struct sockaddr *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 !memcmp(sin6->sin6_addr.s6_addr, LOOPBACK_S6, 16);
+ return fast_memeq(sin6->sin6_addr.s6_addr, LOOPBACK_S6, 16);
}
return 0;
}
@@ -2286,7 +2291,7 @@ _evdns_nameserver_add_impl(const struct sockaddr *address,
evtimer_set(&ns->timeout_event, nameserver_prod_callback, ns);
- ns->socket = tor_open_socket(PF_INET, SOCK_DGRAM, 0);
+ ns->socket = tor_open_socket(address->sa_family, SOCK_DGRAM, 0);
if (ns->socket < 0) { err = 1; goto out1; }
#ifdef WIN32
{
diff --git a/src/or/eventdns.h b/src/or/eventdns.h
index bf3b64d08a..3ff8bba4b6 100644
--- a/src/or/eventdns.h
+++ b/src/or/eventdns.h
@@ -319,12 +319,12 @@ typedef void (*evdns_request_callback_fn_type)(struct evdns_server_request *, vo
#define EVDNS_CLASS_INET 1
-struct evdns_server_port *evdns_add_server_port(int socket, int is_tcp, evdns_request_callback_fn_type callback, void *user_data);
+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, void *addrs, int ttl);
-int evdns_server_request_add_aaaa_reply(struct evdns_server_request *req, const char *name, int n, void *addrs, int ttl);
+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);
diff --git a/src/or/eventdns_tor.h b/src/or/eventdns_tor.h
index 141ff09f1e..6a178938b6 100644
--- a/src/or/eventdns_tor.h
+++ b/src/or/eventdns_tor.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2007-2010, The Tor Project, Inc. */
+/* Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
diff --git a/src/or/geoip.c b/src/or/geoip.c
index 84681821b0..62c7a5c394 100644
--- a/src/or/geoip.c
+++ b/src/or/geoip.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2007-2010, The Tor Project, Inc. */
+/* Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -116,10 +116,10 @@ geoip_parse_entry(const char *line)
++line;
if (*line == '#')
return 0;
- if (sscanf(line,"%u,%u,%2s", &low, &high, b) == 3) {
+ if (tor_sscanf(line,"%u,%u,%2s", &low, &high, b) == 3) {
geoip_add_entry(low, high, b);
return 0;
- } else if (sscanf(line,"\"%u\",\"%u\",\"%2s\",", &low, &high, b) == 3) {
+ } else if (tor_sscanf(line,"\"%u\",\"%u\",\"%2s\",", &low, &high, b) == 3) {
geoip_add_entry(low, high, b);
return 0;
} else {
@@ -162,7 +162,7 @@ _geoip_compare_key_to_entry(const void *_key, const void **_member)
/** Return 1 if we should collect geoip stats on bridge users, and
* include them in our extrainfo descriptor. Else return 0. */
int
-should_record_bridge_info(or_options_t *options)
+should_record_bridge_info(const or_options_t *options)
{
return options->BridgeRelay && options->BridgeRecordUsageByCountry;
}
@@ -199,7 +199,7 @@ init_geoip_countries(void)
* with '#' (comments).
*/
int
-geoip_load_file(const char *filename, or_options_t *options)
+geoip_load_file(const char *filename, const or_options_t *options)
{
FILE *f;
const char *msg = "";
@@ -219,7 +219,7 @@ geoip_load_file(const char *filename, or_options_t *options)
}
geoip_entries = smartlist_create();
geoip_digest_env = crypto_new_digest_env();
- log_notice(LD_GENERAL, "Parsing GEOIP file.");
+ log_notice(LD_GENERAL, "Parsing GEOIP file %s.", filename);
while (!feof(f)) {
char buf[512];
if (fgets(buf, (int)sizeof(buf), f) == NULL)
@@ -304,11 +304,18 @@ geoip_db_digest(void)
typedef struct clientmap_entry_t {
HT_ENTRY(clientmap_entry_t) node;
uint32_t ipaddr;
+ /** Time when we last saw this IP address, in MINUTES since the epoch.
+ *
+ * (This will run out of space around 4011 CE. If Tor is still in use around
+ * 4000 CE, please remember to add more bits to last_seen_in_minutes.) */
unsigned int last_seen_in_minutes:30;
unsigned int action:2;
} clientmap_entry_t;
-#define ACTION_MASK 3
+/** Largest allowable value for last_seen_in_minutes. (It's a 30-bit field,
+ * so it can hold up to (1u<<30)-1, or 0x3fffffffu.
+ */
+#define MAX_LAST_SEEN_IN_MINUTES 0X3FFFFFFFu
/** Map from client IP address to last time seen. */
static HT_HEAD(clientmap, clientmap_entry_t) client_history =
@@ -417,7 +424,7 @@ void
geoip_note_client_seen(geoip_client_action_t action,
uint32_t addr, time_t now)
{
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
clientmap_entry_t lookup, *ent;
if (action == GEOIP_CLIENT_CONNECT) {
/* Only remember statistics as entry guard or as bridge. */
@@ -433,15 +440,16 @@ geoip_note_client_seen(geoip_client_action_t action,
lookup.ipaddr = addr;
lookup.action = (int)action;
ent = HT_FIND(clientmap, &client_history, &lookup);
- if (ent) {
- ent->last_seen_in_minutes = now / 60;
- } else {
+ if (! ent) {
ent = tor_malloc_zero(sizeof(clientmap_entry_t));
ent->ipaddr = addr;
- ent->last_seen_in_minutes = now / 60;
ent->action = (int)action;
HT_INSERT(clientmap, &client_history, ent);
}
+ if (now / 60 <= (int)MAX_LAST_SEEN_IN_MINUTES && now >= 0)
+ ent->last_seen_in_minutes = (unsigned)(now/60);
+ else
+ ent->last_seen_in_minutes = 0;
if (action == GEOIP_CLIENT_NETWORKSTATUS ||
action == GEOIP_CLIENT_NETWORKSTATUS_V2) {
@@ -613,8 +621,9 @@ _dirreq_map_put(dirreq_map_entry_t *entry, dirreq_type_t type,
tor_assert(entry->type == type);
tor_assert(entry->dirreq_id == dirreq_id);
- /* XXXX022 once we're sure the bug case never happens, we can switch
- * to HT_INSERT */
+ /* XXXX we could switch this to HT_INSERT some time, since it seems that
+ * this bug doesn't happen. But since this function doesn't seem to be
+ * critical-path, it's sane to leave it alone. */
old_ent = HT_REPLACE(dirreqmap, &dirreq_map, entry);
if (old_ent && old_ent != entry) {
log_warn(LD_BUG, "Error when putting directory request into local "
@@ -981,7 +990,7 @@ geoip_dirreq_stats_write(time_t now)
geoip_remove_old_clients(start_of_dirreq_stats_interval);
statsdir = get_datadir_fname("stats");
- if (check_private_dir(statsdir, CPD_CREATE) < 0)
+ if (check_private_dir(statsdir, CPD_CREATE, get_options()->User) < 0)
goto done;
filename = get_datadir_fname2("stats", "dirreq-stats");
data_v2 = geoip_get_client_history(GEOIP_CLIENT_NETWORKSTATUS_V2);
@@ -1095,14 +1104,14 @@ geoip_bridge_stats_term(void)
start_of_bridge_stats_interval = 0;
}
-/** Parse the bridge statistics as they are written to extra-info
- * descriptors for being returned to controller clients. Return the
- * controller string if successful, or NULL otherwise. */
-static char *
-parse_bridge_stats_controller(const char *stats_str, time_t now)
+/** Validate a bridge statistics string as it would be written to a
+ * current extra-info descriptor. Return 1 if the string is valid and
+ * recent enough, or 0 otherwise. */
+static int
+validate_bridge_stats(const char *stats_str, time_t now)
{
char stats_end_str[ISO_TIME_LEN+1], stats_start_str[ISO_TIME_LEN+1],
- *controller_str, *eos, *eol, *summary;
+ *eos;
const char *BRIDGE_STATS_END = "bridge-stats-end ";
const char *BRIDGE_IPS = "bridge-ips ";
@@ -1116,63 +1125,90 @@ parse_bridge_stats_controller(const char *stats_str, time_t now)
"bridge-stats-end YYYY-MM-DD HH:MM:SS (N s)" */
tmp = find_str_at_start_of_line(stats_str, BRIDGE_STATS_END);
if (!tmp)
- return NULL;
+ return 0;
tmp += strlen(BRIDGE_STATS_END);
if (strlen(tmp) < ISO_TIME_LEN + 6)
- return NULL;
+ return 0;
strlcpy(stats_end_str, tmp, sizeof(stats_end_str));
if (parse_iso_time(stats_end_str, &stats_end_time) < 0)
- return NULL;
+ return 0;
if (stats_end_time < now - (25*60*60) ||
stats_end_time > now + (1*60*60))
- return NULL;
+ return 0;
seconds = (int)strtol(tmp + ISO_TIME_LEN + 2, &eos, 10);
if (!eos || seconds < 23*60*60)
- return NULL;
+ return 0;
format_iso_time(stats_start_str, stats_end_time - seconds);
/* Parse: "bridge-ips CC=N,CC=N,..." */
tmp = find_str_at_start_of_line(stats_str, BRIDGE_IPS);
- if (tmp) {
- tmp += strlen(BRIDGE_IPS);
- tmp = eat_whitespace_no_nl(tmp);
- eol = strchr(tmp, '\n');
- if (eol)
- summary = tor_strndup(tmp, eol-tmp);
- else
- summary = tor_strdup(tmp);
- } else {
+ if (!tmp) {
/* Look if there is an empty "bridge-ips" line */
tmp = find_str_at_start_of_line(stats_str, BRIDGE_IPS_EMPTY_LINE);
if (!tmp)
- return NULL;
- summary = tor_strdup("");
+ return 0;
}
- tor_asprintf(&controller_str,
- "TimeStarted=\"%s\" CountrySummary=%s",
- stats_start_str, summary);
- tor_free(summary);
- return controller_str;
+ return 1;
}
/** Most recent bridge statistics formatted to be written to extra-info
* descriptors. */
static char *bridge_stats_extrainfo = NULL;
-/** Most recent bridge statistics formatted to be returned to controller
- * clients. */
-static char *bridge_stats_controller = NULL;
+/** Return a newly allocated string holding our bridge usage stats by country
+ * in a format suitable for inclusion in an extrainfo document. Return NULL on
+ * failure. */
+static char *
+format_bridge_stats_extrainfo(time_t now)
+{
+ char *out = NULL, *data = NULL;
+ long duration = now - start_of_bridge_stats_interval;
+ char written[ISO_TIME_LEN+1];
+
+ if (duration < 0)
+ return NULL;
+
+ format_iso_time(written, now);
+ data = geoip_get_client_history(GEOIP_CLIENT_CONNECT);
+
+ tor_asprintf(&out,
+ "bridge-stats-end %s (%ld s)\n"
+ "bridge-ips %s\n",
+ written, duration,
+ data ? data : "");
+ tor_free(data);
+
+ return out;
+}
+
+/** Return a newly allocated string holding our bridge usage stats by country
+ * in a format suitable for the answer to a controller request. Return NULL on
+ * failure. */
+static char *
+format_bridge_stats_controller(time_t now)
+{
+ char *out = NULL, *data = NULL;
+ char started[ISO_TIME_LEN+1];
+ (void) now;
+
+ format_iso_time(started, start_of_bridge_stats_interval);
+ data = geoip_get_client_history(GEOIP_CLIENT_CONNECT);
+
+ tor_asprintf(&out,
+ "TimeStarted=\"%s\" CountrySummary=%s",
+ started, data ? data : "");
+ tor_free(data);
+ return out;
+}
/** Write bridge statistics to $DATADIR/stats/bridge-stats and return
* when we should next try to write statistics. */
time_t
geoip_bridge_stats_write(time_t now)
{
- char *statsdir = NULL, *filename = NULL, *data = NULL,
- written[ISO_TIME_LEN+1], *out = NULL, *controller_str;
- size_t len;
+ char *filename = NULL, *val = NULL, *statsdir = NULL;
/* Check if 24 hours have passed since starting measurements. */
if (now < start_of_bridge_stats_interval + WRITE_STATS_INTERVAL)
@@ -1181,64 +1217,54 @@ geoip_bridge_stats_write(time_t now)
/* Discard all items in the client history that are too old. */
geoip_remove_old_clients(start_of_bridge_stats_interval);
+ /* Generate formatted string */
+ val = format_bridge_stats_extrainfo(now);
+ if (val == NULL)
+ goto done;
+
+ /* Update the stored value. */
+ tor_free(bridge_stats_extrainfo);
+ bridge_stats_extrainfo = val;
+ start_of_bridge_stats_interval = now;
+
+ /* Write it to disk. */
statsdir = get_datadir_fname("stats");
- if (check_private_dir(statsdir, CPD_CREATE) < 0)
+ if (check_private_dir(statsdir, CPD_CREATE, get_options()->User) < 0)
goto done;
filename = get_datadir_fname2("stats", "bridge-stats");
- data = geoip_get_client_history(GEOIP_CLIENT_CONNECT);
- format_iso_time(written, now);
- len = strlen("bridge-stats-end (999999 s)\nbridge-ips \n") +
- ISO_TIME_LEN + (data ? strlen(data) : 0) + 42;
- out = tor_malloc(len);
- if (tor_snprintf(out, len, "bridge-stats-end %s (%u s)\nbridge-ips %s\n",
- written, (unsigned) (now - start_of_bridge_stats_interval),
- data ? data : "") < 0)
- goto done;
- write_str_to_file(filename, out, 0);
- controller_str = parse_bridge_stats_controller(out, now);
- if (!controller_str)
- goto done;
- start_of_bridge_stats_interval = now;
- tor_free(bridge_stats_extrainfo);
- tor_free(bridge_stats_controller);
- bridge_stats_extrainfo = out;
- out = NULL;
- bridge_stats_controller = controller_str;
- control_event_clients_seen(controller_str);
+
+ write_str_to_file(filename, bridge_stats_extrainfo, 0);
+
+ /* Tell the controller, "hey, there are clients!" */
+ {
+ char *controller_str = format_bridge_stats_controller(now);
+ if (controller_str)
+ control_event_clients_seen(controller_str);
+ tor_free(controller_str);
+ }
done:
tor_free(filename);
tor_free(statsdir);
- tor_free(data);
- tor_free(out);
- return start_of_bridge_stats_interval +
- WRITE_STATS_INTERVAL;
+
+ return start_of_bridge_stats_interval + WRITE_STATS_INTERVAL;
}
/** Try to load the most recent bridge statistics from disk, unless we
- * have finished a measurement interval lately. */
+ * have finished a measurement interval lately, and check whether they
+ * are still recent enough. */
static void
load_bridge_stats(time_t now)
{
- char *statsdir, *fname=NULL, *contents, *controller_str;
+ char *fname, *contents;
if (bridge_stats_extrainfo)
return;
- statsdir = get_datadir_fname("stats");
- if (check_private_dir(statsdir, CPD_CREATE) < 0)
- goto done;
+
fname = get_datadir_fname2("stats", "bridge-stats");
contents = read_file_to_str(fname, RFTS_IGNORE_MISSING, NULL);
- if (contents) {
- controller_str = parse_bridge_stats_controller(contents, now);
- if (controller_str) {
- bridge_stats_extrainfo = contents;
- bridge_stats_controller = controller_str;
- } else {
- tor_free(contents);
- }
- }
- done:
+ if (contents && validate_bridge_stats(contents, now))
+ bridge_stats_extrainfo = contents;
+
tor_free(fname);
- tor_free(statsdir);
}
/** Return most recent bridge statistics for inclusion in extra-info
@@ -1250,13 +1276,12 @@ geoip_get_bridge_stats_extrainfo(time_t now)
return bridge_stats_extrainfo;
}
-/** Return most recent bridge statistics to be returned to controller
- * clients, or NULL if we don't have recent bridge statistics. */
-const char *
+/** Return a new string containing the recent bridge statistics to be returned
+ * to controller clients, or NULL if we don't have any bridge statistics. */
+char *
geoip_get_bridge_stats_controller(time_t now)
{
- load_bridge_stats(now);
- return bridge_stats_controller;
+ return format_bridge_stats_controller(now);
}
/** Start time of entry stats or 0 if we're not collecting entry
@@ -1299,7 +1324,7 @@ geoip_entry_stats_write(time_t now)
geoip_remove_old_clients(start_of_entry_stats_interval);
statsdir = get_datadir_fname("stats");
- if (check_private_dir(statsdir, CPD_CREATE) < 0)
+ if (check_private_dir(statsdir, CPD_CREATE, get_options()->User) < 0)
goto done;
filename = get_datadir_fname2("stats", "entry-stats");
data = geoip_get_client_history(GEOIP_CLIENT_CONNECT);
diff --git a/src/or/geoip.h b/src/or/geoip.h
index ac38c00da5..b50da74dc3 100644
--- a/src/or/geoip.h
+++ b/src/or/geoip.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -15,8 +15,8 @@
#ifdef GEOIP_PRIVATE
int geoip_parse_entry(const char *line);
#endif
-int should_record_bridge_info(or_options_t *options);
-int geoip_load_file(const char *filename, or_options_t *options);
+int should_record_bridge_info(const or_options_t *options);
+int geoip_load_file(const char *filename, const or_options_t *options);
int geoip_get_country_by_ip(uint32_t ipaddr);
int geoip_get_n_countries(void);
const char *geoip_get_country_name(country_t num);
@@ -52,7 +52,7 @@ void geoip_bridge_stats_init(time_t now);
time_t geoip_bridge_stats_write(time_t now);
void geoip_bridge_stats_term(void);
const char *geoip_get_bridge_stats_extrainfo(time_t);
-const char *geoip_get_bridge_stats_controller(time_t);
+char *geoip_get_bridge_stats_controller(time_t);
#endif
diff --git a/src/or/hibernate.c b/src/or/hibernate.c
index 929c1994c3..f03433a279 100644
--- a/src/or/hibernate.c
+++ b/src/or/hibernate.c
@@ -1,5 +1,5 @@
/* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -134,7 +134,7 @@ static void accounting_set_wakeup_time(void);
* options->AccountingStart. Return 0 on success, -1 on failure. If
* <b>validate_only</b> is true, do not change the current settings. */
int
-accounting_parse_options(or_options_t *options, int validate_only)
+accounting_parse_options(const or_options_t *options, int validate_only)
{
time_unit_t unit;
int ok, idx;
@@ -249,7 +249,7 @@ accounting_parse_options(or_options_t *options, int validate_only)
* hibernate, return 1, else return 0.
*/
int
-accounting_is_enabled(or_options_t *options)
+accounting_is_enabled(const or_options_t *options)
{
if (options->AccountingMax)
return 1;
@@ -378,7 +378,8 @@ configure_accounting(time_t now)
/* We are in the interval we thought we were in. Do nothing.*/
interval_end_time = start_of_accounting_period_after(interval_start_time);
} else {
- long duration = length_of_accounting_period_containing(now);
+ long duration =
+ length_of_accounting_period_containing(interval_start_time);
double delta = ((double)(s_now - interval_start_time)) / duration;
if (-0.50 <= delta && delta <= 0.50) {
/* The start of the period is now a little later or earlier than we
@@ -410,7 +411,7 @@ static void
update_expected_bandwidth(void)
{
uint64_t expected;
- or_options_t *options= get_options();
+ const or_options_t *options= get_options();
uint64_t max_configured = (options->RelayBandwidthRate > 0 ?
options->RelayBandwidthRate :
options->BandwidthRate) * 60;
@@ -749,7 +750,7 @@ static void
hibernate_begin(hibernate_state_t new_state, time_t now)
{
connection_t *conn;
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
if (new_state == HIBERNATE_STATE_EXITING &&
hibernate_state != HIBERNATE_STATE_LIVE) {
@@ -783,7 +784,8 @@ hibernate_begin(hibernate_state_t new_state, time_t now)
/* XXX upload rendezvous service descriptors with no intro points */
if (new_state == HIBERNATE_STATE_EXITING) {
- log_notice(LD_GENERAL,"Interrupt: will shut down in %d seconds. Interrupt "
+ log_notice(LD_GENERAL,"Interrupt: we have stopped accepting new "
+ "connections, and will shut down in %d seconds. Interrupt "
"again to exit now.", options->ShutdownWaitLength);
shutdown_time = time(NULL) + options->ShutdownWaitLength;
} else { /* soft limit reached */
@@ -940,7 +942,8 @@ consider_hibernation(time_t now)
if (hibernate_state == HIBERNATE_STATE_LIVE) {
if (hibernate_soft_limit_reached()) {
log_notice(LD_ACCT,
- "Bandwidth soft limit reached; commencing hibernation.");
+ "Bandwidth soft limit reached; commencing hibernation. "
+ "No new conncetions will be accepted");
hibernate_begin(HIBERNATE_STATE_LOWBANDWIDTH, now);
} else if (accounting_enabled && now < interval_wakeup_time) {
format_local_iso_time(buf,interval_wakeup_time);
diff --git a/src/or/hibernate.h b/src/or/hibernate.h
index 687fadb669..b5826bced4 100644
--- a/src/or/hibernate.h
+++ b/src/or/hibernate.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -12,8 +12,8 @@
#ifndef _TOR_HIBERNATE_H
#define _TOR_HIBERNATE_H
-int accounting_parse_options(or_options_t *options, int validate_only);
-int accounting_is_enabled(or_options_t *options);
+int accounting_parse_options(const or_options_t *options, int validate_only);
+int accounting_is_enabled(const or_options_t *options);
void configure_accounting(time_t now);
void accounting_run_housekeeping(time_t now);
void accounting_add_bytes(size_t n_read, size_t n_written, int seconds);
diff --git a/src/or/main.c b/src/or/main.c
index 08a93133ef..1baefc71bd 100644
--- a/src/or/main.c
+++ b/src/or/main.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -45,6 +45,7 @@
#include "router.h"
#include "routerlist.h"
#include "routerparse.h"
+#include "status.h"
#ifdef USE_DMALLOC
#include <dmalloc.h>
#include <openssl/crypto.h>
@@ -67,9 +68,8 @@ void evdns_shutdown(int);
static void dumpmemusage(int severity);
static void dumpstats(int severity); /* log stats */
-static void conn_read_callback(int fd, short event, void *_conn);
-static void conn_write_callback(int fd, short event, void *_conn);
-static void signal_callback(int fd, short events, void *arg);
+static void conn_read_callback(evutil_socket_t fd, short event, void *_conn);
+static void conn_write_callback(evutil_socket_t fd, short event, void *_conn);
static void second_elapsed_callback(periodic_timer_t *timer, void *args);
static int conn_close_if_marked(int i);
static void connection_start_reading_from_linked_conn(connection_t *conn);
@@ -195,7 +195,7 @@ int
connection_add_impl(connection_t *conn, int is_connecting)
{
tor_assert(conn);
- tor_assert(conn->s >= 0 ||
+ tor_assert(SOCKET_OK(conn->s) ||
conn->linked ||
(conn->type == CONN_TYPE_AP &&
TO_EDGE_CONN(conn)->is_dns_request));
@@ -206,7 +206,7 @@ connection_add_impl(connection_t *conn, int is_connecting)
#ifdef USE_BUFFEREVENTS
if (connection_type_uses_bufferevent(conn)) {
- if (conn->s >= 0 && !conn->linked) {
+ if (SOCKET_OK(conn->s) && !conn->linked) {
conn->bufev = bufferevent_socket_new(
tor_libevent_get_base(),
conn->s,
@@ -225,7 +225,7 @@ connection_add_impl(connection_t *conn, int is_connecting)
connection_configure_bufferevent_callbacks(conn);
} else if (conn->linked && conn->linked_conn &&
connection_type_uses_bufferevent(conn->linked_conn)) {
- tor_assert(conn->s < 0);
+ tor_assert(!(SOCKET_OK(conn->s)));
if (!conn->bufev) {
struct bufferevent *pair[2] = { NULL, NULL };
if (bufferevent_pair_new(tor_libevent_get_base(),
@@ -255,7 +255,7 @@ connection_add_impl(connection_t *conn, int is_connecting)
(void) is_connecting;
#endif
- if (!HAS_BUFFEREVENT(conn) && (conn->s >= 0 || conn->linked)) {
+ if (!HAS_BUFFEREVENT(conn) && (SOCKET_OK(conn->s) || conn->linked)) {
conn->read_event = tor_event_new(tor_libevent_get_base(),
conn->s, EV_READ|EV_PERSIST, conn_read_callback, conn);
conn->write_event = tor_event_new(tor_libevent_get_base(),
@@ -264,7 +264,7 @@ connection_add_impl(connection_t *conn, int is_connecting)
}
log_debug(LD_NET,"new conn type %s, socket %d, address %s, n_conns %d.",
- conn_type_to_string(conn->type), conn->s, conn->address,
+ conn_type_to_string(conn->type), (int)conn->s, conn->address,
smartlist_len(connection_array));
return 0;
@@ -276,12 +276,12 @@ connection_unregister_events(connection_t *conn)
{
if (conn->read_event) {
if (event_del(conn->read_event))
- log_warn(LD_BUG, "Error removing read event for %d", conn->s);
+ log_warn(LD_BUG, "Error removing read event for %d", (int)conn->s);
tor_free(conn->read_event);
}
if (conn->write_event) {
if (event_del(conn->write_event))
- log_warn(LD_BUG, "Error removing write event for %d", conn->s);
+ log_warn(LD_BUG, "Error removing write event for %d", (int)conn->s);
tor_free(conn->write_event);
}
#ifdef USE_BUFFEREVENTS
@@ -308,7 +308,7 @@ connection_remove(connection_t *conn)
tor_assert(conn);
log_debug(LD_NET,"removing socket %d (type %s), n_conns now %d",
- conn->s, conn_type_to_string(conn->type),
+ (int)conn->s, conn_type_to_string(conn->type),
smartlist_len(connection_array));
tor_assert(conn->conn_array_index >= 0);
@@ -398,6 +398,20 @@ get_connection_array(void)
return connection_array;
}
+/** Provides the traffic read and written over the life of the process. */
+
+uint64_t
+get_bytes_read(void)
+{
+ return stats_n_bytes_read;
+}
+
+uint64_t
+get_bytes_written(void)
+{
+ return stats_n_bytes_written;
+}
+
/** Set the event mask on <b>conn</b> to <b>events</b>. (The event
* mask is a bitmask whose bits are READ_EVENT and WRITE_EVENT)
*/
@@ -459,7 +473,7 @@ connection_stop_reading(connection_t *conn)
if (event_del(conn->read_event))
log_warn(LD_NET, "Error from libevent setting read event state for %d "
"to unwatched: %s",
- conn->s,
+ (int)conn->s,
tor_socket_strerror(tor_socket_errno(conn->s)));
}
}
@@ -485,7 +499,7 @@ connection_start_reading(connection_t *conn)
if (event_add(conn->read_event, NULL))
log_warn(LD_NET, "Error from libevent setting read event state for %d "
"to watched: %s",
- conn->s,
+ (int)conn->s,
tor_socket_strerror(tor_socket_errno(conn->s)));
}
}
@@ -525,7 +539,7 @@ connection_stop_writing(connection_t *conn)
if (event_del(conn->write_event))
log_warn(LD_NET, "Error from libevent setting write event state for %d "
"to unwatched: %s",
- conn->s,
+ (int)conn->s,
tor_socket_strerror(tor_socket_errno(conn->s)));
}
}
@@ -552,7 +566,7 @@ connection_start_writing(connection_t *conn)
if (event_add(conn->write_event, NULL))
log_warn(LD_NET, "Error from libevent setting write event state for %d "
"to watched: %s",
- conn->s,
+ (int)conn->s,
tor_socket_strerror(tor_socket_errno(conn->s)));
}
}
@@ -638,13 +652,13 @@ close_closeable_connections(void)
/** Libevent callback: this gets invoked when (connection_t*)<b>conn</b> has
* some data to read. */
static void
-conn_read_callback(int fd, short event, void *_conn)
+conn_read_callback(evutil_socket_t fd, short event, void *_conn)
{
connection_t *conn = _conn;
(void)fd;
(void)event;
- log_debug(LD_NET,"socket %d wants to read.",conn->s);
+ log_debug(LD_NET,"socket %d wants to read.",(int)conn->s);
/* assert_connection_ok(conn, time(NULL)); */
@@ -653,7 +667,7 @@ conn_read_callback(int fd, short event, void *_conn)
#ifndef MS_WINDOWS
log_warn(LD_BUG,"Unhandled error on read for %s connection "
"(fd %d); removing",
- conn_type_to_string(conn->type), conn->s);
+ conn_type_to_string(conn->type), (int)conn->s);
tor_fragile_assert();
#endif
if (CONN_IS_EDGE(conn))
@@ -670,13 +684,14 @@ conn_read_callback(int fd, short event, void *_conn)
/** Libevent callback: this gets invoked when (connection_t*)<b>conn</b> has
* some data to write. */
static void
-conn_write_callback(int fd, short events, void *_conn)
+conn_write_callback(evutil_socket_t fd, short events, void *_conn)
{
connection_t *conn = _conn;
(void)fd;
(void)events;
- LOG_FN_CONN(conn, (LOG_DEBUG, LD_NET, "socket %d wants to write.",conn->s));
+ LOG_FN_CONN(conn, (LOG_DEBUG, LD_NET, "socket %d wants to write.",
+ (int)conn->s));
/* assert_connection_ok(conn, time(NULL)); */
@@ -685,7 +700,7 @@ conn_write_callback(int fd, short events, void *_conn)
/* this connection is broken. remove it. */
log_fn(LOG_WARN,LD_BUG,
"unhandled error on write for %s connection (fd %d); removing",
- conn_type_to_string(conn->type), conn->s);
+ conn_type_to_string(conn->type), (int)conn->s);
tor_fragile_assert();
if (CONN_IS_EDGE(conn)) {
/* otherwise we cry wolf about duplicate close */
@@ -742,8 +757,16 @@ conn_close_if_marked(int i)
#endif
log_debug(LD_NET,"Cleaning up connection (fd %d).",conn->s);
+
+ /* If the connection we are about to close was trying to connect to
+ a proxy server and failed, the client won't be able to use that
+ proxy. We should warn the user about this. */
+ if (conn->proxy_state == PROXY_INFANT)
+ log_failed_proxy_connection(conn);
+
IF_HAS_BUFFEREVENT(conn, goto unlink);
- if ((conn->s >= 0 || conn->linked_conn) && connection_wants_to_flush(conn)) {
+ if ((SOCKET_OK(conn->s) || conn->linked_conn) &&
+ connection_wants_to_flush(conn)) {
/* s == -1 means it's an incomplete edge connection, or that the socket
* has already been closed as unflushable. */
ssize_t sz = connection_bucket_write_limit(conn, now);
@@ -752,7 +775,7 @@ conn_close_if_marked(int i)
"Conn (addr %s, fd %d, type %s, state %d) marked, but wants "
"to flush %d bytes. (Marked at %s:%d)",
escaped_safe_str_client(conn->address),
- conn->s, conn_type_to_string(conn->type), conn->state,
+ (int)conn->s, conn_type_to_string(conn->type), conn->state,
(int)conn->outbuf_flushlen,
conn->marked_for_close_file, conn->marked_for_close);
if (conn->linked_conn) {
@@ -783,7 +806,7 @@ conn_close_if_marked(int i)
if (retval > 0) {
LOG_FN_CONN(conn, (LOG_INFO,LD_NET,
"Holding conn (fd %d) open for more flushing.",
- conn->s));
+ (int)conn->s));
conn->timestamp_lastwritten = now; /* reset so we can flush more */
}
return 0;
@@ -805,7 +828,7 @@ conn_close_if_marked(int i)
"(fd %d, type %s, state %d, marked at %s:%d).",
(int)connection_get_outbuf_len(conn),
escaped_safe_str_client(conn->address),
- conn->s, conn_type_to_string(conn->type), conn->state,
+ (int)conn->s, conn_type_to_string(conn->type), conn->state,
conn->marked_for_close_file,
conn->marked_for_close);
}
@@ -851,20 +874,18 @@ directory_all_unreachable(time_t now)
void
directory_info_has_arrived(time_t now, int from_cache)
{
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
if (!router_have_minimum_dir_info()) {
int quiet = directory_too_idle_to_fetch_descriptors(options, now);
log(quiet ? LOG_INFO : LOG_NOTICE, LD_DIR,
"I learned some more directory information, but not enough to "
"build a circuit: %s", get_dir_info_status_string());
- update_router_descriptor_downloads(now);
- update_microdesc_downloads(now);
+ update_all_descriptor_downloads(now);
return;
} else {
if (directory_fetches_from_authorities(options)) {
- update_router_descriptor_downloads(now);
- update_microdesc_downloads(now);
+ update_all_descriptor_downloads(now);
}
/* if we have enough dir info, then update our guard status with
@@ -898,7 +919,7 @@ run_connection_housekeeping(int i, time_t now)
{
cell_t cell;
connection_t *conn = smartlist_get(connection_array, i);
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
or_connection_t *or_conn;
int past_keepalive =
now >= conn->timestamp_lastwritten + options->KeepalivePeriod;
@@ -920,7 +941,7 @@ run_connection_housekeeping(int i, time_t now)
(!DIR_CONN_IS_SERVER(conn) &&
conn->timestamp_lastread + DIR_CONN_MAX_STALL < now))) {
log_info(LD_DIR,"Expiring wedged directory conn (fd %d, purpose %d)",
- conn->s, conn->purpose);
+ (int)conn->s, conn->purpose);
/* This check is temporary; it's to let us know whether we should consider
* parsing partial serverdesc responses. */
if (conn->purpose == DIR_PURPOSE_FETCH_SERVERDESC &&
@@ -952,7 +973,7 @@ run_connection_housekeeping(int i, time_t now)
* mark it now. */
log_info(LD_OR,
"Expiring non-used OR connection to fd %d (%s:%d) [Too old].",
- conn->s, conn->address, conn->port);
+ (int)conn->s, conn->address, conn->port);
if (conn->state == OR_CONN_STATE_CONNECTING)
connection_or_connect_failed(TO_OR_CONN(conn),
END_OR_CONN_REASON_TIMEOUT,
@@ -962,7 +983,7 @@ run_connection_housekeeping(int i, time_t now)
if (past_keepalive) {
/* We never managed to actually get this connection open and happy. */
log_info(LD_OR,"Expiring non-open OR connection to fd %d (%s:%d).",
- conn->s,conn->address, conn->port);
+ (int)conn->s,conn->address, conn->port);
connection_mark_for_close(conn);
}
} else if (we_are_hibernating() && !or_conn->n_circuits &&
@@ -970,13 +991,13 @@ run_connection_housekeeping(int i, time_t now)
/* We're hibernating, there's no circuits, and nothing to flush.*/
log_info(LD_OR,"Expiring non-used OR connection to fd %d (%s:%d) "
"[Hibernating or exiting].",
- conn->s,conn->address, conn->port);
+ (int)conn->s,conn->address, conn->port);
connection_mark_and_flush(conn);
} else if (!or_conn->n_circuits &&
now >= or_conn->timestamp_last_added_nonpadding +
IDLE_OR_CONN_TIMEOUT) {
log_info(LD_OR,"Expiring non-used OR connection to fd %d (%s:%d) "
- "[idle %d].", conn->s,conn->address, conn->port,
+ "[idle %d].", (int)conn->s,conn->address, conn->port,
(int)(now - or_conn->timestamp_last_added_nonpadding));
connection_mark_for_close(conn);
} else if (
@@ -985,7 +1006,7 @@ run_connection_housekeeping(int i, time_t now)
log_fn(LOG_PROTOCOL_WARN,LD_PROTOCOL,
"Expiring stuck OR connection to fd %d (%s:%d). (%d bytes to "
"flush; %d seconds since last write)",
- conn->s, conn->address, conn->port,
+ (int)conn->s, conn->address, conn->port,
(int)connection_get_outbuf_len(conn),
(int)(now-conn->timestamp_lastwritten));
connection_mark_for_close(conn);
@@ -1004,10 +1025,20 @@ run_connection_housekeeping(int i, time_t now)
static void
signewnym_impl(time_t now)
{
+ const or_options_t *options = get_options();
+ if (!proxy_mode(options)) {
+ log_info(LD_CONTROL, "Ignoring SIGNAL NEWNYM because client functionality "
+ "is disabled.");
+ return;
+ }
+
circuit_expire_all_dirty_circs();
addressmap_clear_transient();
+ rend_client_purge_state();
time_of_last_signewnym = now;
signewnym_is_pending = 0;
+
+ control_event_signal(SIGNEWNYM);
}
/** Perform regular maintenance tasks. This function gets run once per
@@ -1034,9 +1065,11 @@ run_scheduled_events(time_t now)
static time_t time_to_write_stats_files = 0;
static time_t time_to_write_bridge_stats = 0;
static time_t time_to_check_port_forwarding = 0;
+ static time_t time_to_launch_reachability_tests = 0;
static int should_init_bridge_stats = 1;
static time_t time_to_retry_dns_init = 0;
- or_options_t *options = get_options();
+ static time_t time_to_next_heartbeat = 0;
+ const or_options_t *options = get_options();
int is_server = server_mode(options);
int i;
int have_dir_info;
@@ -1065,6 +1098,9 @@ run_scheduled_events(time_t now)
signewnym_impl(now);
}
+ /* 0c. If we've deferred log messages for the controller, handle them now */
+ flush_pending_log_callbacks();
+
/** 1a. Every MIN_ONION_KEY_LIFETIME seconds, rotate the onion keys,
* shut down and restart all cpuworkers, and update the directory if
* necessary.
@@ -1082,11 +1118,8 @@ run_scheduled_events(time_t now)
}
if (time_to_try_getting_descriptors < now) {
- update_router_descriptor_downloads(now);
+ update_all_descriptor_downloads(now);
update_extrainfo_downloads(now);
- update_microdesc_downloads(now);
- if (options->UseBridges)
- fetch_bridge_descriptors(options, now);
if (router_have_minimum_dir_info())
time_to_try_getting_descriptors = now + LAZY_DESCRIPTOR_RETRY_INTERVAL;
else
@@ -1099,6 +1132,9 @@ run_scheduled_events(time_t now)
now + DESCRIPTOR_FAILURE_RESET_INTERVAL;
}
+ if (options->UseBridges)
+ fetch_bridge_descriptors(options, now);
+
/** 1b. Every MAX_SSL_KEY_LIFETIME seconds, we change our TLS context. */
if (!last_rotated_x509_certificate)
last_rotated_x509_certificate = now;
@@ -1132,8 +1168,10 @@ run_scheduled_events(time_t now)
if (accounting_is_enabled(options))
accounting_run_housekeeping(now);
- if (now % 10 == 0 && (authdir_mode_tests_reachability(options)) &&
- !we_are_hibernating()) {
+ if (time_to_launch_reachability_tests < now &&
+ (authdir_mode_tests_reachability(options)) &&
+ !we_are_hibernating()) {
+ time_to_launch_reachability_tests = now + REACHABILITY_TEST_INTERVAL;
/* try to determine reachability of the other Tor relays */
dirserv_test_reachability(now);
}
@@ -1237,8 +1275,9 @@ run_scheduled_events(time_t now)
/* Remove old information from rephist and the rend cache. */
if (time_to_clean_caches < now) {
rep_history_clean(now - options->RephistTrackTime);
- rend_cache_clean();
- rend_cache_clean_v2_descs_as_dir();
+ rend_cache_clean(now);
+ rend_cache_clean_v2_descs_as_dir(now);
+ microdesc_cache_rebuild(NULL, 0);
#define CLEAN_CACHES_INTERVAL (30*60)
time_to_clean_caches = now + CLEAN_CACHES_INTERVAL;
}
@@ -1247,7 +1286,7 @@ run_scheduled_events(time_t now)
/* If we're a server and initializing dns failed, retry periodically. */
if (time_to_retry_dns_init < now) {
time_to_retry_dns_init = now + RETRY_DNS_INTERVAL;
- if (server_mode(options) && has_dns_init_failed())
+ if (is_server && has_dns_init_failed())
dns_init();
}
@@ -1278,7 +1317,7 @@ run_scheduled_events(time_t now)
consider_publishable_server(0);
/* also, check religiously for reachability, if it's within the first
* 20 minutes of our uptime. */
- if (server_mode(options) &&
+ if (is_server &&
(can_complete_circuit || !any_predicted_circuits(now)) &&
!we_are_hibernating()) {
if (stats_n_seconds_working < TIMEOUT_UNTIL_UNREACHABILITY_COMPLAINT) {
@@ -1322,7 +1361,12 @@ run_scheduled_events(time_t now)
* We do this before step 4, so it can try building more if
* it's not comfortable with the number of available circuits.
*/
- circuit_expire_building(now);
+ /* XXXX022 If our circuit build timeout is much lower than a second, maybe
+ * we should do this more often? -NM
+ * It can't be lower than 1.5 seconds currently; see
+ * circuit_build_times_min_timeout(). -RD
+ */
+ circuit_expire_building();
/** 3b. Also look at pending streams and prune the ones that 'began'
* a long time ago but haven't gotten a 'connected' yet.
@@ -1415,7 +1459,7 @@ run_scheduled_events(time_t now)
if (time_to_check_port_forwarding < now &&
options->PortForwarding &&
- server_mode(options)) {
+ is_server) {
#define PORT_FORWARDING_CHECK_INTERVAL 5
tor_check_port_forwarding(options->PortForwardingHelper,
options->DirPort,
@@ -1423,6 +1467,13 @@ run_scheduled_events(time_t now)
now);
time_to_check_port_forwarding = now+PORT_FORWARDING_CHECK_INTERVAL;
}
+
+ /** 11. write the heartbeat message */
+ if (options->HeartbeatPeriod &&
+ time_to_next_heartbeat < now) {
+ log_heartbeat(now);
+ time_to_next_heartbeat = now+options->HeartbeatPeriod;
+ }
}
/** Timer: used to invoke second_elapsed_callback() once per second. */
@@ -1445,7 +1496,7 @@ second_elapsed_callback(periodic_timer_t *timer, void *arg)
#ifdef USE_BUFFEREVENTS
uint64_t cur_read,cur_written;
#endif
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
(void)timer;
(void)arg;
@@ -1565,7 +1616,7 @@ ip_address_changed(int at_interface)
reset_bandwidth_test();
stats_n_seconds_working = 0;
router_reset_reachability();
- mark_my_descriptor_dirty();
+ mark_my_descriptor_dirty("IP address changed");
}
}
@@ -1588,7 +1639,7 @@ dns_servers_relaunch_checks(void)
static int
do_hup(void)
{
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
#ifdef USE_DMALLOC
dmalloc_log_stats();
@@ -1602,7 +1653,6 @@ do_hup(void)
router_reset_warnings();
routerlist_reset_warnings();
- addressmap_clear_transient();
/* first, reload config variables, in case they've changed */
if (options->ReloadTorrcOnSIGHUP) {
/* no need to provide argc/v, they've been cached in init_from_config */
@@ -1774,46 +1824,7 @@ do_main_loop(void)
}
}
-/** Used to implement the SIGNAL control command: if we accept
- * <b>the_signal</b> as a remote pseudo-signal, act on it. */
-/* We don't re-use catch() here because:
- * 1. We handle a different set of signals than those allowed in catch.
- * 2. Platforms without signal() are unlikely to define SIGfoo.
- * 3. The control spec is defined to use fixed numeric signal values
- * which just happen to match the Unix values.
- */
-void
-control_signal_act(int the_signal)
-{
- switch (the_signal)
- {
- case 1:
- signal_callback(0,0,(void*)(uintptr_t)SIGHUP);
- break;
- case 2:
- signal_callback(0,0,(void*)(uintptr_t)SIGINT);
- break;
- case 10:
- signal_callback(0,0,(void*)(uintptr_t)SIGUSR1);
- break;
- case 12:
- signal_callback(0,0,(void*)(uintptr_t)SIGUSR2);
- break;
- case 15:
- signal_callback(0,0,(void*)(uintptr_t)SIGTERM);
- break;
- case SIGNEWNYM:
- signal_callback(0,0,(void*)(uintptr_t)SIGNEWNYM);
- break;
- case SIGCLEARDNSCACHE:
- signal_callback(0,0,(void*)(uintptr_t)SIGCLEARDNSCACHE);
- break;
- default:
- log_warn(LD_BUG, "Unrecognized signal number %d.", the_signal);
- break;
- }
-}
-
+#ifndef MS_WINDOWS /* Only called when we're willing to use signals */
/** Libevent callback: invoked when we get a signal.
*/
static void
@@ -1822,6 +1833,15 @@ signal_callback(int fd, short events, void *arg)
uintptr_t sig = (uintptr_t)arg;
(void)fd;
(void)events;
+
+ process_signal(sig);
+}
+#endif
+
+/** Do the work of acting on a signal received in <b>sig</b> */
+void
+process_signal(uintptr_t sig)
+{
switch (sig)
{
case SIGTERM:
@@ -1876,7 +1896,6 @@ signal_callback(int fd, short events, void *arg)
(int)(MAX_SIGNEWNYM_RATE+time_of_last_signewnym-now));
} else {
signewnym_impl(now);
- control_event_signal(sig);
}
break;
}
@@ -1887,6 +1906,13 @@ signal_callback(int fd, short events, void *arg)
}
}
+/** Returns Tor's uptime. */
+long
+get_uptime(void)
+{
+ return stats_n_seconds_working;
+}
+
extern uint64_t rephist_total_alloc;
extern uint32_t rephist_total_num;
@@ -1922,7 +1948,7 @@ dumpstats(int severity)
int i = conn_sl_idx;
log(severity, LD_GENERAL,
"Conn %d (socket %d) type %d (%s), state %d (%s), created %d secs ago",
- i, conn->s, conn->type, conn_type_to_string(conn->type),
+ i, (int)conn->s, conn->type, conn_type_to_string(conn->type),
conn->state, conn_state_to_string(conn->type, conn->state),
(int)(now - conn->timestamp_created));
if (!connection_is_listener(conn)) {
@@ -2154,7 +2180,7 @@ static tor_lockfile_t *lockfile = NULL;
* return -1 if we can't get the lockfile. Return 0 on success.
*/
int
-try_locking(or_options_t *options, int err_if_locked)
+try_locking(const or_options_t *options, int err_if_locked)
{
if (lockfile)
return 0;
@@ -2268,13 +2294,15 @@ tor_free_all(int postfork)
void
tor_cleanup(void)
{
- or_options_t *options = get_options();
- /* Remove our pid file. We don't care if there was an error when we
- * unlink, nothing we could do about it anyways. */
+ const or_options_t *options = get_options();
if (options->command == CMD_RUN_TOR) {
time_t now = time(NULL);
+ /* Remove our pid file. We don't care if there was an error when we
+ * unlink, nothing we could do about it anyways. */
if (options->PidFile)
unlink(options->PidFile);
+ if (options->ControlPortWriteToFile)
+ unlink(options->ControlPortWriteToFile);
if (accounting_is_enabled(options))
accounting_record_bandwidth_usage(now, get_or_state());
or_state_mark_dirty(get_or_state(), 0); /* force an immediate save. */
@@ -2402,6 +2430,19 @@ tor_main(int argc, char *argv[])
}
#endif
+#ifdef MS_WINDOWS
+ /* Call SetProcessDEPPolicy to permanently enable DEP.
+ The function will not resolve on earlier versions of Windows,
+ and failure is not dangerous. */
+ HMODULE hMod = GetModuleHandleA("Kernel32.dll");
+ if (hMod) {
+ typedef BOOL (WINAPI *PSETDEP)(DWORD);
+ PSETDEP setdeppolicy = (PSETDEP)GetProcAddress(hMod,
+ "SetProcessDEPPolicy");
+ if (setdeppolicy) setdeppolicy(1); /* PROCESS_DEP_ENABLE */
+ }
+#endif
+
update_approx_time(time(NULL));
tor_threads_init();
init_logging();
diff --git a/src/or/main.h b/src/or/main.h
index 10b8aad0fb..db251356fd 100644
--- a/src/or/main.h
+++ b/src/or/main.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -24,11 +24,15 @@ void add_connection_to_closeable_list(connection_t *conn);
int connection_is_on_closeable_list(connection_t *conn);
smartlist_t *get_connection_array(void);
+uint64_t get_bytes_read(void);
+uint64_t get_bytes_written(void);
+/** Bitmask for events that we can turn on and off with
+ * connection_watch_events. */
typedef enum watchable_events {
/* Yes, it is intentional that these match Libevent's EV_READ and EV_WRITE */
- READ_EVENT=0x02,
- WRITE_EVENT=0x04
+ READ_EVENT=0x02, /**< We want to know when a connection is readable */
+ WRITE_EVENT=0x04 /**< We want to know when a connection is writable */
} watchable_events_t;
void connection_watch_events(connection_t *conn, watchable_events_t events);
int connection_is_reading(connection_t *conn);
@@ -47,10 +51,12 @@ void directory_info_has_arrived(time_t now, int from_cache);
void ip_address_changed(int at_interface);
void dns_servers_relaunch_checks(void);
-void control_signal_act(int the_signal);
+long get_uptime(void);
+
void handle_signals(int is_parent);
+void process_signal(uintptr_t sig);
-int try_locking(or_options_t *options, int err_if_locked);
+int try_locking(const or_options_t *options, int err_if_locked);
int have_lockfile(void);
void release_lockfile(void);
diff --git a/src/or/microdesc.c b/src/or/microdesc.c
index e014cd0761..1b0c333dae 100644
--- a/src/or/microdesc.c
+++ b/src/or/microdesc.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2009-2010, The Tor Project, Inc. */
+/* Copyright (c) 2009-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "or.h"
@@ -9,6 +9,7 @@
#include "networkstatus.h"
#include "nodelist.h"
#include "policies.h"
+#include "router.h"
#include "routerlist.h"
#include "routerparse.h"
@@ -54,7 +55,7 @@ _microdesc_hash(microdesc_t *md)
static INLINE int
_microdesc_eq(microdesc_t *a, microdesc_t *b)
{
- return !memcmp(a->digest, b->digest, DIGEST256_LEN);
+ return tor_memeq(a->digest, b->digest, DIGEST256_LEN);
}
HT_PROTOTYPE(microdesc_map, microdesc_t, node,
@@ -133,7 +134,7 @@ get_microdesc_cache(void)
* to allow, so we should reject any non-requested microdesc with a different
* digest, and alter the list to contain only the digests of those microdescs
* we didn't find.
- * Return a list of the added microdescriptors. */
+ * Return a newly allocated list of the added microdescriptors, or NULL */
smartlist_t *
microdescs_add_to_cache(microdesc_cache_t *cache,
const char *s, const char *eos, saved_location_t where,
@@ -181,7 +182,7 @@ microdescs_add_to_cache(microdesc_cache_t *cache,
}
/* As microdescs_add_to_cache, but takes a list of micrdescriptors instead of
- * a string to encode. Frees any members of <b>descriptors</b> that it does
+ * a string to decode. Frees any members of <b>descriptors</b> that it does
* not add. */
smartlist_t *
microdescs_add_list_to_cache(microdesc_cache_t *cache,
@@ -214,6 +215,8 @@ microdescs_add_list_to_cache(microdesc_cache_t *cache,
if (md2->last_listed < md->last_listed)
md2->last_listed = md->last_listed;
microdesc_free(md);
+ if (where != SAVED_NOWHERE)
+ cache->bytes_dropped += size;
continue;
}
@@ -235,6 +238,7 @@ microdescs_add_list_to_cache(microdesc_cache_t *cache,
md->no_save = no_save;
HT_INSERT(microdesc_map, &cache->map, md);
+ md->held_in_map = 1;
smartlist_add(added, md);
++cache->n_seen;
cache->total_len_seen += md->bodylen;
@@ -244,19 +248,14 @@ microdescs_add_list_to_cache(microdesc_cache_t *cache,
finish_writing_to_file(open_file); /*XXX Check me.*/
{
- size_t old_content_len =
- cache->cache_content ? cache->cache_content->size : 0;
- if ((cache->journal_len > 16384 + old_content_len &&
- cache->journal_len > old_content_len / 2))
- microdesc_cache_rebuild(cache);
- }
-
- {
networkstatus_t *ns = networkstatus_get_latest_consensus();
if (ns && ns->flavor == FLAV_MICRODESC)
SMARTLIST_FOREACH(added, microdesc_t *, md, nodelist_add_microdesc(md));
}
+ if (smartlist_len(added))
+ router_dir_info_changed();
+
return added;
}
@@ -268,6 +267,7 @@ microdesc_cache_clear(microdesc_cache_t *cache)
for (entry = HT_START(microdesc_map, &cache->map); entry; entry = next) {
microdesc_t *md = *entry;
next = HT_NEXT_RMV(microdesc_map, &cache->map, entry);
+ md->held_in_map = 0;
microdesc_free(md);
}
HT_CLEAR(microdesc_map, &cache->map);
@@ -277,6 +277,7 @@ microdesc_cache_clear(microdesc_cache_t *cache)
}
cache->total_len_seen = 0;
cache->n_seen = 0;
+ cache->bytes_dropped = 0;
}
/** Reload the contents of <b>cache</b> from disk. If it is empty, load it
@@ -305,6 +306,7 @@ microdesc_cache_reload(microdesc_cache_t *cache)
journal_content = read_file_to_str(cache->journal_fname,
RFTS_IGNORE_MISSING, &st);
if (journal_content) {
+ cache->journal_len = (size_t) st.st_size;
added = microdescs_add_to_cache(cache, journal_content,
journal_content+st.st_size,
SAVED_IN_JOURNAL, 0, -1, NULL);
@@ -316,6 +318,9 @@ microdesc_cache_reload(microdesc_cache_t *cache)
}
log_notice(LD_DIR, "Reloaded microdescriptor cache. Found %d descriptors.",
total);
+
+ microdesc_cache_rebuild(cache, 0 /* don't force */);
+
return 0;
}
@@ -351,6 +356,7 @@ microdesc_cache_clean(microdesc_cache_t *cache, time_t cutoff, int force)
++dropped;
victim = *mdp;
mdp = HT_NEXT_RMV(microdesc_map, &cache->map, mdp);
+ victim->held_in_map = 0;
bytes_dropped += victim->bodylen;
microdesc_free(victim);
} else {
@@ -366,11 +372,30 @@ microdesc_cache_clean(microdesc_cache_t *cache, time_t cutoff, int force)
}
}
+static int
+should_rebuild_md_cache(microdesc_cache_t *cache)
+{
+ const size_t old_len =
+ cache->cache_content ? cache->cache_content->size : 0;
+ const size_t journal_len = cache->journal_len;
+ const size_t dropped = cache->bytes_dropped;
+
+ if (journal_len < 16384)
+ return 0; /* Don't bother, not enough has happened yet. */
+ if (dropped > (journal_len + old_len) / 3)
+ return 1; /* We could save 1/3 or more of the currently used space. */
+ if (journal_len > old_len / 2)
+ return 1; /* We should append to the regular file */
+
+ return 0;
+}
+
/** Regenerate the main cache file for <b>cache</b>, clear the journal file,
* and update every microdesc_t in the cache with pointers to its new
- * location. */
+ * location. If <b>force</b> is true, do this unconditionally. If
+ * <b>force</b> is false, do it only if we expect to save space on disk. */
int
-microdesc_cache_rebuild(microdesc_cache_t *cache)
+microdesc_cache_rebuild(microdesc_cache_t *cache, int force)
{
open_file_t *open_file;
FILE *f;
@@ -380,12 +405,20 @@ microdesc_cache_rebuild(microdesc_cache_t *cache)
off_t off = 0;
int orig_size, new_size;
- log_info(LD_DIR, "Rebuilding the microdescriptor cache...");
+ if (cache == NULL) {
+ cache = the_microdesc_cache;
+ if (cache == NULL)
+ return 0;
+ }
/* Remove dead descriptors */
microdesc_cache_clean(cache, 0/*cutoff*/, 0/*force*/);
- /* Calculate starting disk usage */
+ if (!force && !should_rebuild_md_cache(cache))
+ return 0;
+
+ log_info(LD_DIR, "Rebuilding the microdescriptor cache...");
+
orig_size = (int)(cache->cache_content ? cache->cache_content->size : 0);
orig_size += (int)cache->journal_len;
@@ -419,10 +452,11 @@ microdesc_cache_rebuild(microdesc_cache_t *cache)
smartlist_add(wrote, md);
}
- finish_writing_to_file(open_file); /*XXX Check me.*/
-
if (cache->cache_content)
tor_munmap_file(cache->cache_content);
+
+ finish_writing_to_file(open_file); /*XXX Check me.*/
+
cache->cache_content = tor_mmap_file(cache->cache_fname);
if (!cache->cache_content && smartlist_len(wrote)) {
@@ -435,7 +469,7 @@ microdesc_cache_rebuild(microdesc_cache_t *cache)
tor_assert(md->saved_location == SAVED_IN_CACHE);
md->body = (char*)cache->cache_content->data + md->off;
if (PREDICT_UNLIKELY(
- md->bodylen < 9 || memcmp(md->body, "onion-key", 9) != 0)) {
+ md->bodylen < 9 || fast_memneq(md->body, "onion-key", 9) != 0)) {
/* XXXX023 once bug 2022 is solved, we can kill this block and turn it
* into just the tor_assert(!memcmp) */
off_t avail = cache->cache_content->size - md->off;
@@ -447,7 +481,7 @@ microdesc_cache_rebuild(microdesc_cache_t *cache)
" with \"onion-key\". Instead I got %s.",
(int)md->off, escaped(bad_str));
tor_free(bad_str);
- tor_assert(!memcmp(md->body, "onion-key", 9));
+ tor_assert(fast_memeq(md->body, "onion-key", 9));
}
} SMARTLIST_FOREACH_END(md);
@@ -457,7 +491,7 @@ microdesc_cache_rebuild(microdesc_cache_t *cache)
cache->journal_len = 0;
cache->bytes_dropped = 0;
- new_size = (int)cache->cache_content->size;
+ new_size = cache->cache_content ? (int)cache->cache_content->size : 0;
log_info(LD_DIR, "Done rebuilding microdesc cache. "
"Saved %d bytes; %d still used.",
orig_size-new_size, new_size);
@@ -472,7 +506,43 @@ microdesc_free(microdesc_t *md)
{
if (!md)
return;
- /* Must be removed from hash table! */
+
+ /* Make sure that the microdesc was really removed from the appropriate data
+ structures. */
+ if (md->held_in_map) {
+ microdesc_cache_t *cache = get_microdesc_cache();
+ microdesc_t *md2 = HT_FIND(microdesc_map, &cache->map, md);
+ if (md2 == md) {
+ log_warn(LD_BUG, "microdesc_free() called, but md was still in "
+ "microdesc_map");
+ HT_REMOVE(microdesc_map, &cache->map, md);
+ } else {
+ log_warn(LD_BUG, "microdesc_free() called with held_in_map set, but "
+ "microdesc was not in the map.");
+ }
+ tor_fragile_assert();
+ }
+ if (md->held_by_node) {
+ int found=0;
+ const smartlist_t *nodes = nodelist_get_list();
+ SMARTLIST_FOREACH(nodes, node_t *, node, {
+ if (node->md == md) {
+ ++found;
+ node->md = NULL;
+ }
+ });
+ if (found) {
+ log_warn(LD_BUG, "microdesc_free() called, but md was still referenced "
+ "%d node(s)", found);
+ } else {
+ log_warn(LD_BUG, "microdesc_free() called with held_by_node set, but "
+ "md was not refrenced by any nodes");
+ }
+ tor_fragile_assert();
+ }
+ //tor_assert(md->held_in_map == 0);
+ //tor_assert(md->held_by_node == 0);
+
if (md->onion_pkey)
crypto_free_pk_env(md->onion_pkey);
if (md->body && md->saved_location != SAVED_IN_CACHE)
@@ -544,6 +614,8 @@ microdesc_list_missing_digest256(networkstatus_t *ns, microdesc_cache_t *cache,
continue;
if (skip && digestmap_get(skip, rs->descriptor_digest))
continue;
+ if (tor_mem_is_zero(rs->descriptor_digest, DIGEST256_LEN))
+ continue; /* This indicates a bug somewhere XXXX023*/
/* XXXX Also skip if we're a noncache and wouldn't use this router.
* XXXX NM Microdesc
*/
@@ -562,7 +634,7 @@ microdesc_list_missing_digest256(networkstatus_t *ns, microdesc_cache_t *cache,
void
update_microdesc_downloads(time_t now)
{
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
networkstatus_t *consensus;
smartlist_t *missing;
digestmap_t *pending;
@@ -576,11 +648,8 @@ update_microdesc_downloads(time_t now)
if (!consensus)
return;
- if (!directory_caches_dir_info(options)) {
- /* Right now, only caches fetch microdescriptors.
- * XXXX NM Microdescs */
+ if (!we_fetch_microdescriptors(options))
return;
- }
pending = digestmap_new();
list_pending_microdesc_downloads(pending);
@@ -621,3 +690,52 @@ update_microdescs_from_networkstatus(time_t now)
} SMARTLIST_FOREACH_END(rs);
}
+/** Return true iff we should prefer to use microdescriptors rather than
+ * routerdescs for building circuits. */
+int
+we_use_microdescriptors_for_circuits(const or_options_t *options)
+{
+ int ret = options->UseMicrodescriptors;
+ if (ret == -1) {
+ /* UseMicrodescriptors is "auto"; we need to decide: */
+#if 0
+ /* So we decide that we'll use microdescriptors iff we are not a server */
+ ret = ! server_mode(options);
+#else
+ /* We don't use microdescs for now: not enough caches are running
+ * 0.2.3.1-alpha */
+ ret = 0;
+#endif
+ }
+ return ret;
+}
+
+/** Return true iff we should try to download microdescriptors at all. */
+int
+we_fetch_microdescriptors(const or_options_t *options)
+{
+ if (directory_caches_dir_info(options))
+ return 1;
+ return we_use_microdescriptors_for_circuits(options);
+}
+
+/** Return true iff we should try to download router descriptors at all. */
+int
+we_fetch_router_descriptors(const or_options_t *options)
+{
+ if (directory_caches_dir_info(options))
+ return 1;
+ return ! we_use_microdescriptors_for_circuits(options);
+}
+
+/** Return the consensus flavor we actually want to use to build circuits. */
+int
+usable_consensus_flavor(void)
+{
+ if (we_use_microdescriptors_for_circuits(get_options())) {
+ return FLAV_MICRODESC;
+ } else {
+ return FLAV_NS;
+ }
+}
+
diff --git a/src/or/microdesc.h b/src/or/microdesc.h
index eda7008b91..72e4572f93 100644
--- a/src/or/microdesc.h
+++ b/src/or/microdesc.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -23,7 +23,7 @@ smartlist_t *microdescs_add_list_to_cache(microdesc_cache_t *cache,
int no_save);
void microdesc_cache_clean(microdesc_cache_t *cache, time_t cutoff, int force);
-int microdesc_cache_rebuild(microdesc_cache_t *cache);
+int microdesc_cache_rebuild(microdesc_cache_t *cache, int force);
int microdesc_cache_reload(microdesc_cache_t *cache);
void microdesc_cache_clear(microdesc_cache_t *cache);
@@ -43,5 +43,10 @@ void microdesc_free_all(void);
void update_microdesc_downloads(time_t now);
void update_microdescs_from_networkstatus(time_t now);
+int usable_consensus_flavor(void);
+int we_fetch_microdescriptors(const or_options_t *options);
+int we_fetch_router_descriptors(const or_options_t *options);
+int we_use_microdescriptors_for_circuits(const or_options_t *options);
+
#endif
diff --git a/src/or/networkstatus.c b/src/or/networkstatus.c
index fd3fa3d454..2586ce6ebe 100644
--- a/src/or/networkstatus.c
+++ b/src/or/networkstatus.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -50,7 +50,9 @@ static strmap_t *unnamed_server_map = NULL;
* of whichever type we are using for our own circuits. This will be the same
* as one of current_ns_consensus or current_md_consensus.
*/
-#define current_consensus current_ns_consensus
+#define current_consensus \
+ (we_use_microdescriptors_for_circuits(get_options()) ? \
+ current_md_consensus : current_ns_consensus)
/** Most recently received and validated v3 "ns"-flavored consensus network
* status. */
@@ -211,7 +213,7 @@ router_reload_consensus_networkstatus(void)
char *filename;
char *s;
struct stat st;
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
const unsigned int flags = NSSET_FROM_CACHE | NSSET_DONT_DOWNLOAD_CERTS;
int flav;
@@ -422,7 +424,7 @@ networkstatus_get_voter_by_id(networkstatus_t *vote,
if (!vote || !vote->voters)
return NULL;
SMARTLIST_FOREACH(vote->voters, networkstatus_voter_info_t *, voter,
- if (!memcmp(voter->identity_digest, identity, DIGEST_LEN))
+ if (fast_memeq(voter->identity_digest, identity, DIGEST_LEN))
return voter);
return NULL;
}
@@ -443,18 +445,19 @@ networkstatus_check_document_signature(const networkstatus_t *consensus,
if (crypto_pk_get_digest(cert->signing_key, key_digest)<0)
return -1;
- if (memcmp(sig->signing_key_digest, key_digest, DIGEST_LEN) ||
- memcmp(sig->identity_digest, cert->cache_info.identity_digest,
- DIGEST_LEN))
+ if (tor_memneq(sig->signing_key_digest, key_digest, DIGEST_LEN) ||
+ tor_memneq(sig->identity_digest, cert->cache_info.identity_digest,
+ DIGEST_LEN))
return -1;
signed_digest_len = crypto_pk_keysize(cert->signing_key);
signed_digest = tor_malloc(signed_digest_len);
if (crypto_pk_public_checksig(cert->signing_key,
signed_digest,
+ signed_digest_len,
sig->signature,
sig->signature_len) < dlen ||
- memcmp(signed_digest, consensus->digests.d[sig->alg], dlen)) {
+ tor_memneq(signed_digest, consensus->digests.d[sig->alg], dlen)) {
log_warn(LD_DIR, "Got a bad signature on a networkstatus vote");
sig->bad_signature = 1;
} else {
@@ -481,7 +484,7 @@ networkstatus_check_consensus_signature(networkstatus_t *consensus,
int n_bad = 0;
int n_unknown = 0;
int n_no_signature = 0;
- int n_v3_authorities = get_n_authorities(V3_AUTHORITY);
+ int n_v3_authorities = get_n_authorities(V3_DIRINFO);
int n_required = n_v3_authorities/2 + 1;
smartlist_t *need_certs_from = smartlist_create();
smartlist_t *unrecognized = smartlist_create();
@@ -506,7 +509,7 @@ networkstatus_check_consensus_signature(networkstatus_t *consensus,
authority_cert_t *cert =
authority_cert_get_by_digests(sig->identity_digest,
sig->signing_key_digest);
- tor_assert(!memcmp(sig->identity_digest, voter->identity_digest,
+ tor_assert(tor_memeq(sig->identity_digest, voter->identity_digest,
DIGEST_LEN));
if (!is_v3_auth) {
@@ -552,7 +555,7 @@ networkstatus_check_consensus_signature(networkstatus_t *consensus,
SMARTLIST_FOREACH(router_get_trusted_dir_servers(),
trusted_dir_server_t *, ds,
{
- if ((ds->type & V3_AUTHORITY) &&
+ if ((ds->type & V3_DIRINFO) &&
!networkstatus_get_voter_by_id(consensus, ds->v3_identity_digest))
smartlist_add(missing_authorities, ds);
});
@@ -735,7 +738,7 @@ router_set_networkstatus_v2(const char *s, time_t arrived_at,
base16_encode(fp, HEX_DIGEST_LEN+1, ns->identity_digest, DIGEST_LEN);
if (!(trusted_dir =
router_get_trusteddirserver_by_digest(ns->identity_digest)) ||
- !(trusted_dir->type & V2_AUTHORITY)) {
+ !(trusted_dir->type & V2_DIRINFO)) {
log_info(LD_DIR, "Network status was signed, but not by an authoritative "
"directory we recognize.");
source_desc = fp;
@@ -809,8 +812,8 @@ router_set_networkstatus_v2(const char *s, time_t arrived_at,
for (i=0; i < smartlist_len(networkstatus_v2_list); ++i) {
networkstatus_v2_t *old_ns = smartlist_get(networkstatus_v2_list, i);
- if (!memcmp(old_ns->identity_digest, ns->identity_digest, DIGEST_LEN)) {
- if (!memcmp(old_ns->networkstatus_digest,
+ if (tor_memeq(old_ns->identity_digest, ns->identity_digest, DIGEST_LEN)) {
+ if (tor_memeq(old_ns->networkstatus_digest,
ns->networkstatus_digest, DIGEST_LEN)) {
/* Same one we had before. */
networkstatus_v2_free(ns);
@@ -936,7 +939,7 @@ compare_digest_to_routerstatus_entry(const void *_key, const void **_member)
{
const char *key = _key;
const routerstatus_t *rs = *_member;
- return memcmp(key, rs->identity_digest, DIGEST_LEN);
+ return tor_memcmp(key, rs->identity_digest, DIGEST_LEN);
}
/** As networkstatus_v2_find_entry, but do not return a const pointer */
@@ -1129,7 +1132,7 @@ update_v2_networkstatus_cache_downloads(time_t now)
{
char resource[HEX_DIGEST_LEN+6]; /* fp/hexdigit.z\0 */
tor_addr_t addr;
- if (!(ds->type & V2_AUTHORITY))
+ if (!(ds->type & V2_DIRINFO))
continue;
if (router_digest_is_me(ds->digest))
continue;
@@ -1172,7 +1175,7 @@ update_v2_networkstatus_cache_downloads(time_t now)
/** DOCDOC */
static int
-we_want_to_fetch_flavor(or_options_t *options, int flavor)
+we_want_to_fetch_flavor(const or_options_t *options, int flavor)
{
if (flavor < 0 || flavor > N_CONSENSUS_FLAVORS) {
/* This flavor is crazy; we don't want it */
@@ -1186,7 +1189,7 @@ we_want_to_fetch_flavor(or_options_t *options, int flavor)
}
/* Otherwise, we want the flavor only if we want to use it to build
* circuits. */
- return (flavor == USABLE_CONSENSUS_FLAVOR);
+ return flavor == usable_consensus_flavor();
}
/** How many times will we try to fetch a consensus before we give up? */
@@ -1201,7 +1204,7 @@ static void
update_consensus_networkstatus_downloads(time_t now)
{
int i;
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
if (!networkstatus_get_live_consensus(now))
time_to_download_next_consensus = now; /* No live consensus? Get one now!*/
@@ -1216,7 +1219,7 @@ update_consensus_networkstatus_downloads(time_t now)
if (! we_want_to_fetch_flavor(options, i))
continue;
- resource = i==FLAV_NS ? NULL : networkstatus_get_flavor_name(i);
+ resource = networkstatus_get_flavor_name(i);
if (!download_status_is_ready(&consensus_dl_status[i], now,
CONSENSUS_NETWORKSTATUS_MAX_DL_TRIES))
@@ -1271,7 +1274,7 @@ networkstatus_consensus_download_failed(int status_code, const char *flavname)
void
update_consensus_networkstatus_fetch_time(time_t now)
{
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
networkstatus_t *c = networkstatus_get_live_consensus(now);
if (c) {
long dl_interval;
@@ -1345,7 +1348,7 @@ update_consensus_networkstatus_fetch_time(time_t now)
* fetches yet (e.g. we demand bridges and none are yet known).
* Else return 0. */
int
-should_delay_dir_fetches(or_options_t *options)
+should_delay_dir_fetches(const or_options_t *options)
{
if (options->UseBridges && !any_bridge_descriptors_known()) {
log_info(LD_DIR, "delaying dir fetches (no running bridges known)");
@@ -1359,10 +1362,10 @@ should_delay_dir_fetches(or_options_t *options)
void
update_networkstatus_downloads(time_t now)
{
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
if (should_delay_dir_fetches(options))
return;
- if (directory_fetches_dir_info_early(options))
+ if (authdir_mode_any_main(options) || options->FetchV2Networkstatus)
update_v2_networkstatus_cache_downloads(now);
update_consensus_networkstatus_downloads(now);
update_certificate_downloads(now);
@@ -1391,7 +1394,7 @@ update_certificate_downloads(time_t now)
int
consensus_is_waiting_for_certs(void)
{
- return consensus_waiting_for_certs[USABLE_CONSENSUS_FLAVOR].consensus
+ return consensus_waiting_for_certs[usable_consensus_flavor()].consensus
? 1 : 0;
}
@@ -1401,7 +1404,7 @@ networkstatus_v2_get_by_digest(const char *digest)
{
SMARTLIST_FOREACH(networkstatus_v2_list, networkstatus_v2_t *, ns,
{
- if (!memcmp(ns->identity_digest, digest, DIGEST_LEN))
+ if (tor_memeq(ns->identity_digest, digest, DIGEST_LEN))
return ns;
});
return NULL;
@@ -1464,10 +1467,10 @@ networkstatus_get_reasonably_live_consensus(time_t now, int flavor)
static int
routerstatus_has_changed(const routerstatus_t *a, const routerstatus_t *b)
{
- tor_assert(!memcmp(a->identity_digest, b->identity_digest, DIGEST_LEN));
+ tor_assert(tor_memeq(a->identity_digest, b->identity_digest, DIGEST_LEN));
return strcmp(a->nickname, b->nickname) ||
- memcmp(a->descriptor_digest, b->descriptor_digest, DIGEST_LEN) ||
+ fast_memneq(a->descriptor_digest, b->descriptor_digest, DIGEST_LEN) ||
a->addr != b->addr ||
a->or_port != b->or_port ||
a->dir_port != b->dir_port ||
@@ -1519,7 +1522,7 @@ notify_control_networkstatus_changed(const networkstatus_t *old_c,
SMARTLIST_FOREACH_JOIN(
old_c->routerstatus_list, const routerstatus_t *, rs_old,
new_c->routerstatus_list, const routerstatus_t *, rs_new,
- memcmp(rs_old->identity_digest,
+ tor_memcmp(rs_old->identity_digest,
rs_new->identity_digest, DIGEST_LEN),
smartlist_add(changed, (void*) rs_new)) {
if (routerstatus_has_changed(rs_old, rs_new))
@@ -1543,13 +1546,13 @@ networkstatus_copy_old_consensus_info(networkstatus_t *new_c,
SMARTLIST_FOREACH_JOIN(old_c->routerstatus_list, routerstatus_t *, rs_old,
new_c->routerstatus_list, routerstatus_t *, rs_new,
- memcmp(rs_old->identity_digest,
+ tor_memcmp(rs_old->identity_digest,
rs_new->identity_digest, DIGEST_LEN),
STMT_NIL) {
/* Okay, so we're looking at the same identity. */
rs_new->last_dir_503_at = rs_old->last_dir_503_at;
- if (!memcmp(rs_old->descriptor_digest, rs_new->descriptor_digest,
+ if (tor_memeq(rs_old->descriptor_digest, rs_new->descriptor_digest,
DIGEST_LEN)) {
/* And the same descriptor too! */
memcpy(&rs_new->dl_status, &rs_old->dl_status,sizeof(download_status_t));
@@ -1582,7 +1585,7 @@ networkstatus_set_current_consensus(const char *consensus,
networkstatus_t *c=NULL;
int r, result = -1;
time_t now = time(NULL);
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
char *unverified_fname = NULL, *consensus_fname = NULL;
int flav = networkstatus_parse_flavor_name(flavor);
const unsigned from_cache = flags & NSSET_FROM_CACHE;
@@ -1620,7 +1623,7 @@ networkstatus_set_current_consensus(const char *consensus,
flavor = networkstatus_get_flavor_name(flav);
}
- if (flav != USABLE_CONSENSUS_FLAVOR &&
+ if (flav != usable_consensus_flavor() &&
!directory_caches_dir_info(options)) {
/* This consensus is totally boring to us: we won't use it, and we won't
* serve it. Drop it. */
@@ -1629,7 +1632,7 @@ networkstatus_set_current_consensus(const char *consensus,
if (from_cache && !accept_obsolete &&
c->valid_until < now-OLD_ROUTER_DESC_MAX_AGE) {
- /* XXX022 when we try to make fallbackconsensus work again, we should
+ /* XXXX If we try to make fallbackconsensus work again, we should
* consider taking this out. Until then, believing obsolete consensuses
* is causing more harm than good. See also bug 887. */
log_info(LD_DIR, "Loaded an expired consensus. Discarding.");
@@ -1665,7 +1668,7 @@ networkstatus_set_current_consensus(const char *consensus,
}
if (current_digests &&
- !memcmp(&c->digests, current_digests, sizeof(c->digests))) {
+ tor_memeq(&c->digests, current_digests, sizeof(c->digests))) {
/* We already have this one. That's a failure. */
log_info(LD_DIR, "Got a %s consensus we already have", flavor);
goto done;
@@ -1725,14 +1728,14 @@ networkstatus_set_current_consensus(const char *consensus,
}
}
- if (!from_cache && flav == USABLE_CONSENSUS_FLAVOR)
+ if (!from_cache && flav == usable_consensus_flavor())
control_event_client_status(LOG_NOTICE, "CONSENSUS_ARRIVED");
/* Are we missing any certificates at all? */
if (r != 1 && dl_certs)
authority_certs_fetch_missing(c, now);
- if (flav == USABLE_CONSENSUS_FLAVOR) {
+ if (flav == usable_consensus_flavor()) {
notify_control_networkstatus_changed(current_consensus, c);
}
if (flav == FLAV_NS) {
@@ -1779,8 +1782,8 @@ networkstatus_set_current_consensus(const char *consensus,
download_status_failed(&consensus_dl_status[flav], 0);
}
- if (flav == USABLE_CONSENSUS_FLAVOR) {
- /* XXXXNM Microdescs: needs a non-ns variant. */
+ if (flav == usable_consensus_flavor()) {
+ /* XXXXNM Microdescs: needs a non-ns variant. ???? NM*/
update_consensus_networkstatus_fetch_time(now);
nodelist_set_consensus(current_consensus);
@@ -1789,7 +1792,8 @@ networkstatus_set_current_consensus(const char *consensus,
routerstatus_list_update_named_server_map();
cell_ewma_set_scale_factor(options, current_consensus);
- /* XXX022 where is the right place to put this call? */
+ /* XXXX023 this call might be unnecessary here: can changing the
+ * current consensus really alter our view of any OR's rate limits? */
connection_or_update_token_buckets(get_connection_array(), options);
circuit_build_times_new_consensus_params(&circ_times, current_consensus);
@@ -1806,7 +1810,11 @@ networkstatus_set_current_consensus(const char *consensus,
write_str_to_file(consensus_fname, consensus, 0);
}
- if (time_definitely_before(now, c->valid_after, 60)) {
+/** If a consensus appears more than this many seconds before its declared
+ * valid-after time, declare that our clock is skewed. */
+#define EARLY_CONSENSUS_NOTICE_SKEW 60
+
+ if (now < c->valid_after - EARLY_CONSENSUS_NOTICE_SKEW) {
char tbuf[ISO_TIME_LEN+1];
char dbuf[64];
long delta = now - c->valid_after;
@@ -1983,7 +1991,7 @@ routers_update_status_from_consensus_networkstatus(smartlist_t *routers,
int reset_failures)
{
trusted_dir_server_t *ds;
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
int authdir = authdir_mode_v2(options) || authdir_mode_v3(options);
networkstatus_t *ns = current_consensus;
if (!ns || !smartlist_len(ns->routerstatus_list))
@@ -1995,7 +2003,7 @@ routers_update_status_from_consensus_networkstatus(smartlist_t *routers,
SMARTLIST_FOREACH_JOIN(ns->routerstatus_list, routerstatus_t *, rs,
routers, routerinfo_t *, router,
- memcmp(rs->identity_digest,
+ tor_memcmp(rs->identity_digest,
router->cache_info.identity_digest, DIGEST_LEN),
{
#if 0
@@ -2012,7 +2020,7 @@ routers_update_status_from_consensus_networkstatus(smartlist_t *routers,
ds = router_get_trusteddirserver_by_digest(digest);
/* Is it the same descriptor, or only the same identity? */
- if (!memcmp(router->cache_info.signed_descriptor_digest,
+ if (tor_memeq(router->cache_info.signed_descriptor_digest,
rs->descriptor_digest, DIGEST_LEN)) {
if (ns->valid_until > router->cache_info.last_listed_as_valid_until)
router->cache_info.last_listed_as_valid_until = ns->valid_until;
@@ -2041,10 +2049,10 @@ routers_update_status_from_consensus_networkstatus(smartlist_t *routers,
time_t live_until = ns->published_on + V2_NETWORKSTATUS_ROUTER_LIFETIME;
SMARTLIST_FOREACH_JOIN(ns->entries, const routerstatus_t *, rs,
routers, routerinfo_t *, ri,
- memcmp(rs->identity_digest,
+ tor_memcmp(rs->identity_digest,
ri->cache_info.identity_digest, DIGEST_LEN),
STMT_NIL) {
- if (!memcmp(ri->cache_info.signed_descriptor_digest,
+ if (tor_memeq(ri->cache_info.signed_descriptor_digest,
rs->descriptor_digest, DIGEST_LEN)) {
if (live_until > ri->cache_info.last_listed_as_valid_until)
ri->cache_info.last_listed_as_valid_until = live_until;
@@ -2143,7 +2151,7 @@ void
networkstatus_dump_bridge_status_to_file(time_t now)
{
char *status = networkstatus_getinfo_by_purpose("bridge", now);
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
size_t len = strlen(options->DataDirectory) + 32;
char *fname = tor_malloc(len);
tor_snprintf(fname, len, "%s"PATH_SEPARATOR"networkstatus-bridges",
@@ -2153,32 +2161,52 @@ networkstatus_dump_bridge_status_to_file(time_t now)
tor_free(status);
}
-int32_t
+static int32_t
get_net_param_from_list(smartlist_t *net_params, const char *param_name,
- int default_val)
+ int32_t default_val, int32_t min_val, int32_t max_val)
{
+ int32_t res = default_val;
size_t name_len = strlen(param_name);
+ tor_assert(max_val > min_val);
+ tor_assert(min_val <= default_val);
+ tor_assert(max_val >= default_val);
+
SMARTLIST_FOREACH_BEGIN(net_params, const char *, p) {
if (!strcmpstart(p, param_name) && p[name_len] == '=') {
int ok=0;
long v = tor_parse_long(p+name_len+1, 10, INT32_MIN,
INT32_MAX, &ok, NULL);
- if (ok)
- return (int32_t) v;
+ if (ok) {
+ res = (int32_t) v;
+ break;
+ }
}
} SMARTLIST_FOREACH_END(p);
- return default_val;
+ if (res < min_val) {
+ log_warn(LD_DIR, "Consensus parameter %s is too small. Got %d, raising to "
+ "%d.", param_name, res, min_val);
+ res = min_val;
+ } else if (res > max_val) {
+ log_warn(LD_DIR, "Consensus parameter %s is too large. Got %d, capping to "
+ "%d.", param_name, res, max_val);
+ res = max_val;
+ }
+
+ return res;
}
/** Return the value of a integer parameter from the networkstatus <b>ns</b>
* whose name is <b>param_name</b>. If <b>ns</b> is NULL, try loading the
* latest consensus ourselves. Return <b>default_val</b> if no latest
- * consensus, or if it has no parameter called <b>param_name</b>. */
+ * consensus, or if it has no parameter called <b>param_name</b>.
+ * Make sure the value parsed from the consensus is at least
+ * <b>min_val</b> and at most <b>max_val</b> and raise/cap the parsed value
+ * if necessary. */
int32_t
-networkstatus_get_param(networkstatus_t *ns, const char *param_name,
- int32_t default_val)
+networkstatus_get_param(const networkstatus_t *ns, const char *param_name,
+ int32_t default_val, int32_t min_val, int32_t max_val)
{
if (!ns) /* if they pass in null, go find it ourselves */
ns = networkstatus_get_latest_consensus();
@@ -2186,24 +2214,36 @@ networkstatus_get_param(networkstatus_t *ns, const char *param_name,
if (!ns || !ns->net_params)
return default_val;
- return get_net_param_from_list(ns->net_params, param_name, default_val);
+ return get_net_param_from_list(ns->net_params, param_name,
+ default_val, min_val, max_val);
}
/** Return the value of a integer bw weight parameter from the networkstatus
* <b>ns</b> whose name is <b>weight_name</b>. If <b>ns</b> is NULL, try
* loading the latest consensus ourselves. Return <b>default_val</b> if no
- * latest consensus, or if it has no parameter called <b>param_name</b>. */
+ * latest consensus, or if it has no parameter called <b>weight_name</b>. */
int32_t
networkstatus_get_bw_weight(networkstatus_t *ns, const char *weight_name,
- int32_t default_val)
+ int32_t default_val)
{
+ int32_t param;
+ int max;
if (!ns) /* if they pass in null, go find it ourselves */
ns = networkstatus_get_latest_consensus();
if (!ns || !ns->weight_params)
return default_val;
- return get_net_param_from_list(ns->weight_params, weight_name, default_val);
+ max = circuit_build_times_get_bw_scale(ns);
+ param = get_net_param_from_list(ns->weight_params, weight_name,
+ default_val, -1,
+ BW_MAX_WEIGHT_SCALE);
+ if (param > max) {
+ log_warn(LD_DIR, "Value of consensus weight %s was too large, capping "
+ "to %d", weight_name, max);
+ param = max;
+ }
+ return param;
}
/** Return the name of the consensus flavor <b>flav</b> as used to identify
diff --git a/src/or/networkstatus.h b/src/or/networkstatus.h
index aa5496e2b1..1b10f27388 100644
--- a/src/or/networkstatus.h
+++ b/src/or/networkstatus.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -67,7 +67,7 @@ int networkstatus_nickname_is_unnamed(const char *nickname);
void networkstatus_consensus_download_failed(int status_code,
const char *flavname);
void update_consensus_networkstatus_fetch_time(time_t now);
-int should_delay_dir_fetches(or_options_t *options);
+int should_delay_dir_fetches(const or_options_t *options);
void update_networkstatus_downloads(time_t now);
void update_certificate_downloads(time_t now);
int consensus_is_waiting_for_certs(void);
@@ -96,10 +96,10 @@ void signed_descs_update_status_from_consensus_networkstatus(
char *networkstatus_getinfo_helper_single(const routerstatus_t *rs);
char *networkstatus_getinfo_by_purpose(const char *purpose_string, time_t now);
void networkstatus_dump_bridge_status_to_file(time_t now);
-int32_t get_net_param_from_list(smartlist_t *net_params, const char *name,
- int default_val);
-int32_t networkstatus_get_param(networkstatus_t *ns, const char *param_name,
- int32_t default_val);
+int32_t networkstatus_get_param(const networkstatus_t *ns,
+ const char *param_name,
+ int32_t default_val, int32_t min_val,
+ int32_t max_val);
int getinfo_helper_networkstatus(control_connection_t *conn,
const char *question, char **answer,
const char **errmsg);
diff --git a/src/or/nodelist.c b/src/or/nodelist.c
index 951a7a8e87..308aaa8658 100644
--- a/src/or/nodelist.c
+++ b/src/or/nodelist.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "or.h"
@@ -47,7 +47,7 @@ node_id_hash(const node_t *node)
static INLINE unsigned int
node_id_eq(const node_t *node1, const node_t *node2)
{
- return 0 == memcmp(node1->identity, node2->identity, DIGEST_LEN);
+ return tor_memeq(node1->identity, node2->identity, DIGEST_LEN);
}
HT_PROTOTYPE(nodelist_map, node_t, ht_ent, node_id_hash, node_id_eq);
@@ -158,8 +158,12 @@ nodelist_add_microdesc(microdesc_t *md)
if (rs == NULL)
return NULL;
node = node_get_mutable_by_id(rs->identity_digest);
- if (node)
+ if (node) {
+ if (node->md)
+ node->md->held_by_node = 0;
node->md = md;
+ md->held_by_node = 1;
+ }
return node;
}
@@ -171,7 +175,7 @@ nodelist_add_microdesc(microdesc_t *md)
void
nodelist_set_consensus(networkstatus_t *ns)
{
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
int authdir = authdir_mode_v2(options) || authdir_mode_v3(options);
init_nodelist();
@@ -183,9 +187,13 @@ nodelist_set_consensus(networkstatus_t *ns)
node->rs = rs;
if (ns->flavor == FLAV_MICRODESC) {
if (node->md == NULL ||
- 0!=memcmp(node->md->digest,rs->descriptor_digest,DIGEST256_LEN)) {
+ tor_memneq(node->md->digest,rs->descriptor_digest,DIGEST256_LEN)) {
+ if (node->md)
+ node->md->held_by_node = 0;
node->md = microdesc_cache_lookup_by_digest256(NULL,
rs->descriptor_digest);
+ if (node->md)
+ node->md->held_by_node = 1;
}
}
@@ -240,8 +248,10 @@ void
nodelist_remove_microdesc(const char *identity_digest, microdesc_t *md)
{
node_t *node = node_get_mutable_by_id(identity_digest);
- if (node && node->md == md)
+ if (node && node->md == md) {
node->md = NULL;
+ md->held_by_node = 0;
+ }
}
/** Tell the nodelist that <b>ri</b> is no longer in the routerlist. */
@@ -288,6 +298,8 @@ node_free(node_t *node)
{
if (!node)
return;
+ if (node->md)
+ node->md->held_by_node = 0;
tor_assert(node->nodelist_idx == -1);
tor_free(node);
}
@@ -305,6 +317,12 @@ nodelist_purge(void)
for (iter = HT_START(nodelist_map, &the_nodelist->nodes_by_id); iter; ) {
node_t *node = *iter;
+ if (node->md && !node->rs) {
+ /* An md is only useful if there is an rs. */
+ node->md->held_by_node = 0;
+ node->md = NULL;
+ }
+
if (node_is_usable(node)) {
iter = HT_NEXT(nodelist_map, &the_nodelist->nodes_by_id, iter);
} else {
@@ -342,17 +360,19 @@ nodelist_assert_ok(void)
{
routerlist_t *rl = router_get_routerlist();
networkstatus_t *ns = networkstatus_get_latest_consensus();
- digestmap_t *dm = digestmap_new();
+ digestmap_t *dm;
if (!the_nodelist)
return;
+ dm = digestmap_new();
+
/* every routerinfo in rl->routers should be in the nodelist. */
if (rl) {
SMARTLIST_FOREACH_BEGIN(rl->routers, routerinfo_t *, ri) {
const node_t *node = node_get_by_id(ri->cache_info.identity_digest);
tor_assert(node && node->ri == ri);
- tor_assert(0 == memcmp(ri->cache_info.identity_digest,
+ tor_assert(fast_memeq(ri->cache_info.identity_digest,
node->identity, DIGEST_LEN));
tor_assert(! digestmap_get(dm, node->identity));
digestmap_set(dm, node->identity, (void*)node);
@@ -364,7 +384,7 @@ nodelist_assert_ok(void)
SMARTLIST_FOREACH_BEGIN(ns->routerstatus_list, routerstatus_t *, rs) {
const node_t *node = node_get_by_id(rs->identity_digest);
tor_assert(node && node->rs == rs);
- tor_assert(0 == memcmp(rs->identity_digest, node->identity, DIGEST_LEN));
+ tor_assert(fast_memeq(rs->identity_digest, node->identity, DIGEST_LEN));
digestmap_set(dm, node->identity, (void*)node);
if (ns->flavor == FLAV_MICRODESC) {
/* If it's a microdesc consensus, every entry that has a
@@ -373,6 +393,8 @@ nodelist_assert_ok(void)
microdesc_t *md =
microdesc_cache_lookup_by_digest256(NULL, rs->descriptor_digest);
tor_assert(md == node->md);
+ if (md)
+ tor_assert(md->held_by_node == 1);
}
} SMARTLIST_FOREACH_END(rs);
}
@@ -422,7 +444,7 @@ node_get_by_hex_id(const char *hex_id)
if (nn_char == '=') {
const char *named_id =
networkstatus_get_router_digest_by_nickname(nn_buf);
- if (!named_id || memcmp(named_id, digest_buf, DIGEST_LEN))
+ if (!named_id || tor_memneq(named_id, digest_buf, DIGEST_LEN))
return NULL;
}
}
@@ -540,7 +562,7 @@ node_is_named(const node_t *node)
named_id = networkstatus_get_router_digest_by_nickname(nickname);
if (!named_id)
return 0;
- return !memcmp(named_id, node->identity, DIGEST_LEN);
+ return tor_memeq(named_id, node->identity, DIGEST_LEN);
}
/** Return true iff <b>node</b> appears to be a directory authority or
diff --git a/src/or/nodelist.h b/src/or/nodelist.h
index d85d3eb417..bd2e63953c 100644
--- a/src/or/nodelist.h
+++ b/src/or/nodelist.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -53,7 +53,7 @@ smartlist_t *nodelist_get_list(void);
/* XXXX These need to move out of routerlist.c */
void nodelist_refresh_countries(void);
void node_set_country(node_t *node);
-void nodelist_add_node_family(smartlist_t *nodes, const node_t *node);
+void nodelist_add_node_and_family(smartlist_t *nodes, const node_t *node);
int nodes_in_same_family(const node_t *node1, const node_t *node2);
#endif
diff --git a/src/or/ntmain.c b/src/or/ntmain.c
index c5c6a58bbe..4eb487e976 100644
--- a/src/or/ntmain.c
+++ b/src/or/ntmain.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define MAIN_PRIVATE
@@ -54,6 +54,11 @@ static int nt_service_cmd_stop(void);
struct service_fns {
int loaded;
+ /** @{ */
+ /** Function pointers for Windows API functions related to service
+ * management. These are NULL, or they point to the . They're set by
+ * calling the LOAD macro below. */
+
BOOL (WINAPI *ChangeServiceConfig2A_fn)(
SC_HANDLE hService,
DWORD dwInfoLevel,
@@ -122,6 +127,7 @@ struct service_fns {
LPTSTR ReferencedDomainName,
LPDWORD cchReferencedDomainName,
PSID_NAME_USE peUse);
+ /** @} */
} service_fns = { 0,
NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL,
@@ -144,6 +150,10 @@ nt_service_loadlibrary(void)
goto err;
}
+/* Helper macro: try to load a function named <b>f</b> from "library" into
+ * service_functions.<b>f</b>_fn. On failure, log an error message, and goto
+ * err.
+ */
#define LOAD(f) STMT_BEGIN \
if (!(fn = GetProcAddress(library, #f))) { \
log_err(LD_BUG, \
@@ -517,7 +527,7 @@ nt_service_install(int argc, char **argv)
SERVICE_DESCRIPTIONA sdBuff;
char *command;
char *errmsg;
- const char *user_acct = GENSRV_USERACCT;
+ const char *user_acct = NULL;
const char *password = "";
int i;
OSVERSIONINFOEX info;
@@ -561,13 +571,12 @@ nt_service_install(int argc, char **argv)
is_win2k_or_worse = 1;
}
- if (user_acct == GENSRV_USERACCT) {
+ if (!user_acct) {
if (is_win2k_or_worse) {
/* On Win2k, there is no LocalService account, so we actually need to
* fall back on NULL (the system account). */
printf("Running on Win2K or earlier, so the LocalService account "
"doesn't exist. Falling back to SYSTEM account.\n");
- user_acct = NULL;
} else {
/* Genericity is apparently _so_ last year in Redmond, where some
* accounts are accounts that you can look up, and some accounts
@@ -576,6 +585,7 @@ nt_service_install(int argc, char **argv)
*/
printf("Running on a Post-Win2K OS, so we'll assume that the "
"LocalService account exists.\n");
+ user_acct = GENSRV_USERACCT;
}
} else if (0 && service_fns.LookupAccountNameA_fn(NULL, // On this system
user_acct,
diff --git a/src/or/ntmain.h b/src/or/ntmain.h
index 2cfa653c3d..acd0e1d7eb 100644
--- a/src/or/ntmain.h
+++ b/src/or/ntmain.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/onion.c b/src/or/onion.c
index fa001656e6..211d14c1e1 100644
--- a/src/or/onion.c
+++ b/src/or/onion.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -184,7 +184,7 @@ onion_skin_create(crypto_pk_env_t *dest_router_key,
*handshake_state_out = NULL;
memset(onion_skin_out, 0, ONIONSKIN_CHALLENGE_LEN);
- if (!(dh = crypto_dh_new()))
+ if (!(dh = crypto_dh_new(DH_TYPE_CIRCUIT)))
goto err;
dhbytes = crypto_dh_get_bytes(dh);
@@ -199,6 +199,7 @@ onion_skin_create(crypto_pk_env_t *dest_router_key,
/* set meeting point, meeting cookie, etc here. Leave zero for now. */
if (crypto_pk_public_hybrid_encrypt(dest_router_key, onion_skin_out,
+ ONIONSKIN_CHALLENGE_LEN,
challenge, DH_KEY_LEN,
PK_PKCS1_OAEP_PADDING, 1)<0)
goto err;
@@ -241,6 +242,7 @@ onion_skin_server_handshake(const char *onion_skin, /*ONIONSKIN_CHALLENGE_LEN*/
break;
note_crypto_pk_op(DEC_ONIONSKIN);
len = crypto_pk_private_hybrid_decrypt(k, challenge,
+ ONIONSKIN_CHALLENGE_LEN,
onion_skin, ONIONSKIN_CHALLENGE_LEN,
PK_PKCS1_OAEP_PADDING,0);
if (len>0)
@@ -256,7 +258,11 @@ onion_skin_server_handshake(const char *onion_skin, /*ONIONSKIN_CHALLENGE_LEN*/
goto err;
}
- dh = crypto_dh_new();
+ dh = crypto_dh_new(DH_TYPE_CIRCUIT);
+ if (!dh) {
+ log_warn(LD_BUG, "Couldn't allocate DH key");
+ goto err;
+ }
if (crypto_dh_get_public(dh, handshake_reply_out, DH_KEY_LEN)) {
log_info(LD_GENERAL, "crypto_dh_get_public failed.");
goto err;
@@ -322,7 +328,7 @@ onion_skin_client_handshake(crypto_dh_env_t *handshake_state,
if (len < 0)
goto err;
- if (memcmp(key_material, handshake_reply+DH_KEY_LEN, DIGEST_LEN)) {
+ if (tor_memneq(key_material, handshake_reply+DH_KEY_LEN, DIGEST_LEN)) {
/* H(K) does *not* match. Something fishy. */
log_warn(LD_PROTOCOL,"Digest DOES NOT MATCH on onion handshake. "
"Bug or attack.");
@@ -349,9 +355,9 @@ onion_skin_client_handshake(crypto_dh_env_t *handshake_state,
* Return 0 on success, &lt;0 on failure.
**/
int
-fast_server_handshake(const char *key_in, /* DIGEST_LEN bytes */
- char *handshake_reply_out, /* DIGEST_LEN*2 bytes */
- char *key_out,
+fast_server_handshake(const uint8_t *key_in, /* DIGEST_LEN bytes */
+ uint8_t *handshake_reply_out, /* DIGEST_LEN*2 bytes */
+ uint8_t *key_out,
size_t key_out_len)
{
char tmp[DIGEST_LEN+DIGEST_LEN];
@@ -359,7 +365,7 @@ fast_server_handshake(const char *key_in, /* DIGEST_LEN bytes */
size_t out_len;
int r = -1;
- if (crypto_rand(handshake_reply_out, DIGEST_LEN)<0)
+ if (crypto_rand((char*)handshake_reply_out, DIGEST_LEN)<0)
return -1;
memcpy(tmp, key_in, DIGEST_LEN);
@@ -392,9 +398,9 @@ fast_server_handshake(const char *key_in, /* DIGEST_LEN bytes */
* and protected by TLS).
*/
int
-fast_client_handshake(const char *handshake_state, /* DIGEST_LEN bytes */
- const char *handshake_reply_out, /* DIGEST_LEN*2 bytes */
- char *key_out,
+fast_client_handshake(const uint8_t *handshake_state,/*DIGEST_LEN bytes*/
+ const uint8_t *handshake_reply_out,/*DIGEST_LEN*2 bytes*/
+ uint8_t *key_out,
size_t key_out_len)
{
char tmp[DIGEST_LEN+DIGEST_LEN];
@@ -409,7 +415,7 @@ fast_client_handshake(const char *handshake_state, /* DIGEST_LEN bytes */
if (crypto_expand_key_material(tmp, sizeof(tmp), out, out_len)) {
goto done;
}
- if (memcmp(out, handshake_reply_out+DIGEST_LEN, DIGEST_LEN)) {
+ if (tor_memneq(out, handshake_reply_out+DIGEST_LEN, DIGEST_LEN)) {
/* H(K) does *not* match. Something fishy. */
log_warn(LD_PROTOCOL,"Digest DOES NOT MATCH on fast handshake. "
"Bug or attack.");
diff --git a/src/or/onion.h b/src/or/onion.h
index e84dbb47be..7f603b8147 100644
--- a/src/or/onion.h
+++ b/src/or/onion.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -32,14 +32,14 @@ int onion_skin_client_handshake(crypto_dh_env_t *handshake_state,
char *key_out,
size_t key_out_len);
-int fast_server_handshake(const char *key_in,
- char *handshake_reply_out,
- char *key_out,
+int fast_server_handshake(const uint8_t *key_in,
+ uint8_t *handshake_reply_out,
+ uint8_t *key_out,
size_t key_out_len);
-int fast_client_handshake(const char *handshake_state,
- const char *handshake_reply_out,
- char *key_out,
+int fast_client_handshake(const uint8_t *handshake_state,
+ const uint8_t *handshake_reply_out,
+ uint8_t *key_out,
size_t key_out_len);
void clear_pending_onions(void);
diff --git a/src/or/or.h b/src/or/or.h
index e9fab82f18..7669efb665 100644
--- a/src/or/or.h
+++ b/src/or/or.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -98,7 +98,7 @@
#include "compat_libevent.h"
#include "ht.h"
-/* These signals are defined to help control_signal_act work.
+/* These signals are defined to help handle_control_signal work.
*/
#ifndef SIGHUP
#define SIGHUP 1
@@ -230,15 +230,30 @@ typedef enum {
#define PROXY_CONNECT 1
#define PROXY_SOCKS4 2
#define PROXY_SOCKS5 3
+/* !!!! If there is ever a PROXY_* type over 2, we must grow the proxy_type
+ * field in or_connection_t */
+/* pluggable transports proxy type */
+#define PROXY_PLUGGABLE 4
/* Proxy client handshake states */
-#define PROXY_HTTPS_WANT_CONNECT_OK 1
-#define PROXY_SOCKS4_WANT_CONNECT_OK 2
-#define PROXY_SOCKS5_WANT_AUTH_METHOD_NONE 3
-#define PROXY_SOCKS5_WANT_AUTH_METHOD_RFC1929 4
-#define PROXY_SOCKS5_WANT_AUTH_RFC1929_OK 5
-#define PROXY_SOCKS5_WANT_CONNECT_OK 6
-#define PROXY_CONNECTED 7
+/* We use a proxy but we haven't even connected to it yet. */
+#define PROXY_INFANT 1
+/* We use an HTTP proxy and we've sent the CONNECT command. */
+#define PROXY_HTTPS_WANT_CONNECT_OK 2
+/* We use a SOCKS4 proxy and we've sent the CONNECT command. */
+#define PROXY_SOCKS4_WANT_CONNECT_OK 3
+/* We use a SOCKS5 proxy and we try to negotiate without
+ any authentication . */
+#define PROXY_SOCKS5_WANT_AUTH_METHOD_NONE 4
+/* We use a SOCKS5 proxy and we try to negotiate with
+ Username/Password authentication . */
+#define PROXY_SOCKS5_WANT_AUTH_METHOD_RFC1929 5
+/* We use a SOCKS5 proxy and we just sent our credentials. */
+#define PROXY_SOCKS5_WANT_AUTH_RFC1929_OK 6
+/* We use a SOCKS5 proxy and we just sent our CONNECT command. */
+#define PROXY_SOCKS5_WANT_CONNECT_OK 7
+/* We use a proxy and we CONNECTed successfully!. */
+#define PROXY_CONNECTED 8
/** True iff <b>x</b> is an edge connection. */
#define CONN_IS_EDGE(x) \
@@ -592,6 +607,9 @@ typedef enum {
/** This is a connection on the NATD port, and the destination IP:Port was
* either ill-formed or out-of-range. */
#define END_STREAM_REASON_INVALID_NATD_DEST 261
+/** The target address is in a private network (like 127.0.0.1 or 10.0.0.1);
+ * you don't want to do that over a randomly chosen exit */
+#define END_STREAM_REASON_PRIVATE_ADDR 262
/** Bitwise-and this value with endreason to mask out all flags. */
#define END_STREAM_REASON_MASK 511
@@ -774,6 +792,8 @@ typedef enum {
/** Initial value for both sides of a circuit transmission window when the
* circuit is initialized. Measured in cells. */
#define CIRCWINDOW_START 1000
+#define CIRCWINDOW_START_MIN 100
+#define CIRCWINDOW_START_MAX 1000
/** Amount to increment a circuit window when we get a circuit SENDME. */
#define CIRCWINDOW_INCREMENT 100
/** Initial value on both sides of a stream transmission window when the
@@ -850,15 +870,19 @@ typedef struct cell_t {
circid_t circ_id; /**< Circuit which received the cell. */
uint8_t command; /**< Type of the cell: one of CELL_PADDING, CELL_CREATE,
* CELL_DESTROY, etc */
- char payload[CELL_PAYLOAD_SIZE]; /**< Cell body. */
+ uint8_t payload[CELL_PAYLOAD_SIZE]; /**< Cell body. */
} cell_t;
/** Parsed variable-length onion routing cell. */
typedef struct var_cell_t {
+ /** Type of the cell: CELL_VERSIONS, etc. */
uint8_t command;
+ /** Circuit thich received the cell */
circid_t circ_id;
+ /** Number of bytes actually stored in <b>payload</b> */
uint16_t payload_len;
- char payload[1];
+ /** Payload of this cell */
+ uint8_t payload[FLEXIBLE_ARRAY_MEMBER];
} var_cell_t;
/** A cell as packed for writing to the network. */
@@ -973,7 +997,7 @@ typedef struct connection_t {
unsigned int proxy_state:4;
/** Our socket; -1 if this connection is closed, or has no socket. */
- evutil_socket_t s;
+ tor_socket_t s;
int conn_array_index; /**< Index into the global connection array. */
struct event *read_event; /**< Libevent event structure. */
@@ -1015,10 +1039,10 @@ typedef struct connection_t {
/** Unique identifier for this connection on this Tor instance. */
uint64_t global_identifier;
- /* XXXX022 move this field, and all the listener-only fields (just
+ /* XXXX023 move this field, and all the listener-only fields (just
socket_family, I think), into a new listener_connection_t subtype. */
/** If the connection is a CONN_TYPE_AP_DNS_LISTENER, this field points
- * to the evdns_server_port is uses to listen to and answer connections. */
+ * to the evdns_server_port it uses to listen to and answer connections. */
struct evdns_server_port *dns_server_port;
/** Unique ID for measuring tunneled network status requests. */
@@ -1075,6 +1099,7 @@ typedef struct or_connection_t {
* router itself has a problem.
*/
unsigned int is_bad_for_new_circs:1;
+ unsigned int proxy_type:2; /**< One of PROXY_NONE...PROXY_SOCKS5 */
uint8_t link_proto; /**< What protocol version are we using? 0 for
* "none negotiated yet." */
circid_t next_circ_id; /**< Which circ_id do we try to use next on
@@ -1166,6 +1191,13 @@ typedef struct edge_connection_t {
* already retried several times. */
uint8_t num_socks_retries;
+#define NUM_CIRCUITS_LAUNCHED_THRESHOLD 10
+ /** Number of times we've launched a circuit to handle this stream. If
+ * it gets too high, that could indicate an inconsistency between our
+ * "launch a circuit to handle this stream" logic and our "attach our
+ * stream to one of the available circuits" logic. */
+ unsigned int num_circuits_launched:4;
+
/** True iff this connection is for a DNS request only. */
unsigned int is_dns_request:1;
@@ -1192,6 +1224,10 @@ typedef struct edge_connection_t {
* zero, abandon the associated mapaddress. */
unsigned int chosen_exit_retries:3;
+ /** True iff this is an AP connection that came from a transparent or
+ * NATd connection */
+ unsigned int is_transparent_ap:1;
+
/** If this is a DNSPort connection, this field holds the pending DNS
* request that we're going to try to answer. */
struct evdns_server_request *dns_server_request;
@@ -1251,6 +1287,9 @@ typedef struct control_connection_t {
/** True if we have sent a protocolinfo reply on this connection. */
unsigned int have_sent_protocolinfo:1;
+ /** True if we have received a takeownership command on this
+ * connection. */
+ unsigned int is_owning_control_connection:1;
/** Amount of space allocated in incoming_cmd. */
uint32_t incoming_cmd_len;
@@ -1621,6 +1660,9 @@ typedef struct routerstatus_t {
/** True iff this router is a version that, if it caches directory info,
* we can get v3 downloads from. */
unsigned int version_supports_v3_dir:1;
+ /** True iff this router is a version that, if it caches directory info,
+ * we can get microdescriptors from. */
+ unsigned int version_supports_microdesc_cache:1;
unsigned int has_bandwidth:1; /**< The vote/consensus had bw info */
unsigned int has_exitsummary:1; /**< The vote/consensus had exit summaries */
@@ -1660,11 +1702,11 @@ typedef struct short_policy_t {
unsigned int is_accept : 1;
/** The actual number of values in 'entries'. */
unsigned int n_entries : 31;
- /** An array of (probably more than 1!) short_policy_entry_t values,
- * each descriping a range of ports that this policy accepts or rejects
- * (depending on the value of is_accept).
+ /** An array of 0 or more short_policy_entry_t values, each describing a
+ * range of ports that this policy accepts or rejects (depending on the
+ * value of is_accept).
*/
- short_policy_entry_t entries[1];
+ short_policy_entry_t entries[FLEXIBLE_ARRAY_MEMBER];
} short_policy_t;
/** A microdescriptor is the smallest amount of information needed to build a
@@ -1686,6 +1728,11 @@ typedef struct microdesc_t {
saved_location_t saved_location : 3;
/** If true, do not attempt to cache this microdescriptor on disk. */
unsigned int no_save : 1;
+ /** If true, this microdesc is attached to a node_t. */
+ unsigned int held_by_node : 1;
+ /** If true, this microdesc has an entry in the microdesc_map */
+ unsigned int held_in_map : 1;
+
/** If saved_location == SAVED_IN_CACHE, this field holds the offset of the
* microdescriptor in the cache. */
off_t off;
@@ -1823,8 +1870,13 @@ typedef struct networkstatus_v2_t {
* sorted by identity_digest. */
} networkstatus_v2_t;
+/** Linked list of microdesc hash lines for a single router in a directory
+ * vote.
+ */
typedef struct vote_microdesc_hash_t {
+ /** Next element in the list, or NULL. */
struct vote_microdesc_hash_t *next;
+ /** The raw contents of the microdesc hash line, excluding the "m". */
char *microdesc_hash_line;
} vote_microdesc_hash_t;
@@ -1836,6 +1888,7 @@ typedef struct vote_routerstatus_t {
* networkstatus_t.known_flags. */
char *version; /**< The version that the authority says this router is
* running. */
+ /** The hash or hashes that the authority claims this microdesc has. */
vote_microdesc_hash_t *microdesc;
} vote_routerstatus_t;
@@ -1892,9 +1945,6 @@ typedef enum {
FLAV_MICRODESC = 1,
} consensus_flavor_t;
-/** Which consensus flavor do we actually want to use to build circuits? */
-#define USABLE_CONSENSUS_FLAVOR FLAV_NS
-
/** How many different consensus flavors are there? */
#define N_CONSENSUS_FLAVORS ((int)(FLAV_MICRODESC)+1)
@@ -2064,24 +2114,33 @@ typedef struct authority_cert_t {
uint8_t is_cross_certified;
} authority_cert_t;
-/** Bitfield enum type listing types of directory authority/directory
- * server. */
+/** Bitfield enum type listing types of information that directory authorities
+ * can be authoritative about, and that directory caches may or may not cache.
+ *
+ * Note that the granularity here is based on authority granularity and on
+ * cache capabilities. Thus, one particular bit may correspond in practice to
+ * a few types of directory info, so long as every authority that pronounces
+ * officially about one of the types prounounces officially about all of them,
+ * and so long as every cache that caches one of them caches all of them.
+ */
typedef enum {
- NO_AUTHORITY = 0,
+ NO_DIRINFO = 0,
/** Serves/signs v1 directory information: Big lists of routers, and short
* routerstatus documents. */
- V1_AUTHORITY = 1 << 0,
+ V1_DIRINFO = 1 << 0,
/** Serves/signs v2 directory information: i.e. v2 networkstatus documents */
- V2_AUTHORITY = 1 << 1,
+ V2_DIRINFO = 1 << 1,
/** Serves/signs v3 directory information: votes, consensuses, certs */
- V3_AUTHORITY = 1 << 2,
+ V3_DIRINFO = 1 << 2,
/** Serves hidden service descriptors. */
- HIDSERV_AUTHORITY = 1 << 3,
+ HIDSERV_DIRINFO = 1 << 3,
/** Serves bridge descriptors. */
- BRIDGE_AUTHORITY = 1 << 4,
- /** Serves extrainfo documents. (XXX Not precisely an authority type)*/
- EXTRAINFO_CACHE = 1 << 5,
-} authority_type_t;
+ BRIDGE_DIRINFO = 1 << 4,
+ /** Serves extrainfo documents. */
+ EXTRAINFO_DIRINFO=1 << 5,
+ /** Serves microdescriptors. */
+ MICRODESC_DIRINFO=1 << 6,
+} dirinfo_type_t;
#define CRYPT_PATH_MAGIC 0x70127012u
@@ -2111,7 +2170,7 @@ typedef struct crypt_path_t {
* authentication, secrecy, and integrity we need, and we're already
* distinguishable from an OR.
*/
- char fast_handshake_state[DIGEST_LEN];
+ uint8_t fast_handshake_state[DIGEST_LEN];
/** Negotiated key material shared with the OR at this step. */
char handshake_digest[DIGEST_LEN];/* KH in tor-spec.txt */
@@ -2154,15 +2213,15 @@ typedef struct {
/** How to extend to the planned exit node. */
extend_info_t *chosen_exit;
/** Whether every node in the circ must have adequate uptime. */
- int need_uptime;
+ unsigned int need_uptime : 1;
/** Whether every node in the circ must have adequate capacity. */
- int need_capacity;
+ unsigned int need_capacity : 1;
/** Whether the last hop was picked with exiting in mind. */
- int is_internal;
- /** Did we pick this as a one-hop tunnel (not safe for other conns)?
- * These are for encrypted connections that exit to this router, not
+ unsigned int is_internal : 1;
+ /** Did we pick this as a one-hop tunnel (not safe for other streams)?
+ * These are for encrypted dir conns that exit to this router, not
* for arbitrary exits from the circuit. */
- int onehop_tunnel;
+ unsigned int onehop_tunnel : 1;
/** The crypt_path_t to append after rendezvous: used for rendezvous. */
crypt_path_t *pending_final_cpath;
/** How many times has building a circuit for this task failed? */
@@ -2264,8 +2323,19 @@ typedef struct circuit_t {
* resolution than most so that the circuit-build-time tracking code can
* get millisecond resolution. */
struct timeval timestamp_created;
- time_t timestamp_dirty; /**< When the circuit was first used, or 0 if the
- * circuit is clean. */
+ /** When the circuit was first used, or 0 if the circuit is clean.
+ *
+ * XXXX023 Note that some code will artifically adjust this value backward
+ * in time in order to indicate that a circuit shouldn't be used for new
+ * streams, but that it can stay alive as long as it has streams on it.
+ * That's a kludge we should fix.
+ *
+ * XXX023 The CBT code uses this field to record when HS-related
+ * circuits entered certain states. This usage probably won't
+ * interfere with this field's primary purpose, but we should
+ * document it more thoroughly to make sure of that.
+ */
+ time_t timestamp_dirty;
uint16_t marked_for_close; /**< Should we close this circuit at the end of
* the main loop? (If true, holds the line number
@@ -2434,14 +2504,14 @@ typedef struct or_circuit_t {
cell_ewma_t p_cell_ewma;
} or_circuit_t;
-/** Convert a circuit subtype to a circuit_t.*/
+/** Convert a circuit subtype to a circuit_t. */
#define TO_CIRCUIT(x) (&((x)->_base))
-/** Convert a circuit_t* to a pointer to the enclosing or_circuit_t. Asserts
+/** Convert a circuit_t* to a pointer to the enclosing or_circuit_t. Assert
* if the cast is impossible. */
static or_circuit_t *TO_OR_CIRCUIT(circuit_t *);
/** Convert a circuit_t* to a pointer to the enclosing origin_circuit_t.
- * Asserts if the cast is impossible. */
+ * Assert if the cast is impossible. */
static origin_circuit_t *TO_ORIGIN_CIRCUIT(circuit_t *);
static INLINE or_circuit_t *TO_OR_CIRCUIT(circuit_t *x)
@@ -2477,6 +2547,10 @@ typedef struct config_line_t {
typedef struct routerset_t routerset_t;
+/** A magic value for the (Socks|OR|...)Port options below, telling Tor
+ * to pick its own port. */
+#define CFG_AUTO_PORT 0xc4005e
+
/** Configuration options for a Tor process. */
typedef struct {
uint32_t _magic;
@@ -2492,6 +2566,9 @@ typedef struct {
* for logs */
int LogTimeGranularity; /**< Log resolution in milliseconds. */
+ int LogMessageDomains; /**< Boolean: Should we log the domain(s) in which
+ * each log message occurs? */
+
char *DebugLogFile; /**< Where to send verbose log messages. */
char *DataDirectory; /**< OR only: where to store long-term data. */
char *Nickname; /**< OR only: nickname of this onion router. */
@@ -2516,7 +2593,7 @@ typedef struct {
* ORs not to consider as exits. */
/** Union of ExcludeNodes and ExcludeExitNodes */
- struct routerset_t *_ExcludeExitNodesUnion;
+ routerset_t *_ExcludeExitNodesUnion;
int DisableAllSwap; /**< Boolean: Attempt to call mlockall() on our
* process for all current and future memory. */
@@ -2563,6 +2640,7 @@ typedef struct {
int ControlPort; /**< Port to listen on for control connections. */
config_line_t *ControlSocket; /**< List of Unix Domain Sockets to listen on
* for control connections. */
+ int ControlSocketsGroupWritable; /**< Boolean: Are control sockets g+rw? */
int DirPort; /**< Port to listen on for directory connections. */
int DNSPort; /**< Port to listen on for DNS requests. */
int AssumeReachable; /**< Whether to publish our descriptor regardless. */
@@ -2592,6 +2670,9 @@ typedef struct {
int UseBridges; /**< Boolean: should we start all circuits with a bridge? */
config_line_t *Bridges; /**< List of bootstrap bridge addresses. */
+ config_line_t *ClientTransportPlugin; /**< List of client
+ transport plugins. */
+
int BridgeRelay; /**< Boolean: are we acting as a bridge relay? We make
* this explicit so we can change how we behave in the
* future. */
@@ -2606,12 +2687,14 @@ typedef struct {
/** To what authority types do we publish our descriptor? Choices are
* "v1", "v2", "v3", "bridge", or "". */
smartlist_t *PublishServerDescriptor;
- /** An authority type, derived from PublishServerDescriptor. */
- authority_type_t _PublishServerDescriptor;
+ /** A bitfield of authority types, derived from PublishServerDescriptor. */
+ dirinfo_type_t _PublishServerDescriptor;
/** Boolean: do we publish hidden service descriptors to the HS auths? */
int PublishHidServDescriptors;
int FetchServerDescriptors; /**< Do we fetch server descriptors as normal? */
- int FetchHidServDescriptors; /** and hidden service descriptors? */
+ int FetchHidServDescriptors; /**< and hidden service descriptors? */
+ int FetchV2Networkstatus; /**< Do we fetch v2 networkstatus documents when
+ * we don't need to? */
int HidServDirectoryV2; /**< Do we participate in the HS DHT? */
int MinUptimeHidServDirectoryV2; /**< As directory authority, accept hidden
@@ -2634,12 +2717,10 @@ typedef struct {
uint64_t ConstrainedSockSize; /**< Size of constrained buffers. */
/** Whether we should drop exit streams from Tors that we don't know are
- * relays. One of "0" (never refuse), "1" (always refuse), or "auto" (do
+ * relays. One of "0" (never refuse), "1" (always refuse), or "-1" (do
* what the consensus says, defaulting to 'refuse' if the consensus says
* nothing). */
- char *RefuseUnknownExits;
- /** Parsed version of RefuseUnknownExits. -1 for auto. */
- int RefuseUnknownExits_;
+ int RefuseUnknownExits;
/** Application ports that require all nodes in circ to have sufficient
* uptime. */
@@ -2710,6 +2791,9 @@ typedef struct {
* authorizations for hidden services */
char *ContactInfo; /**< Contact info to be published in the directory. */
+ int HeartbeatPeriod; /**< Log heartbeat messages after this many seconds
+ * have passed. */
+
char *HTTPProxy; /**< hostname[:port] to use as http proxy, if any. */
tor_addr_t HTTPProxyAddr; /**< Parsed IPv4 addr for http proxy, if any. */
uint16_t HTTPProxyPort; /**< Parsed port for http proxy, if any. */
@@ -2790,6 +2874,11 @@ typedef struct {
int DisablePredictedCircuits; /**< Boolean: does Tor preemptively
* make circuits in the background (0),
* or not (1)? */
+
+ /** Process specifier for a controller that ‘owns’ this Tor
+ * instance. Tor will terminate if its owning controller does. */
+ char *OwningControllerProcess;
+
int ShutdownWaitLength; /**< When we get a SIGINT and we're a server, how
* long do we wait before exiting? */
char *SafeLogging; /**< Contains "relay", "1", "0" (meaning no scrubbing). */
@@ -2843,7 +2932,9 @@ typedef struct {
/** Boolean: if set, we start even if our resolv.conf file is missing
* or broken. */
int ServerDNSAllowBrokenConfig;
-
+ /** Boolean: if set, then even connections to private addresses will get
+ * rate-limited. */
+ int CountPrivateBandwidth;
smartlist_t *ServerDNSTestAddresses; /**< A list of addresses that definitely
* should be resolvable. Used for
* testing our DNS server. */
@@ -2911,6 +3002,10 @@ typedef struct {
* Helps avoid some cross-site attacks. */
int ClientDNSRejectInternalAddresses;
+ /** If true, do not accept any requests to connect to internal addresses
+ * over randomly chosen exits. */
+ int ClientRejectInternalAddresses;
+
/** The length of time that we think a consensus should be fresh. */
int V3AuthVotingInterval;
/** The length of time we think it will take to distribute votes. */
@@ -2995,6 +3090,20 @@ typedef struct {
/** For testing only: will go away in 0.2.3.x. */
int _UseFilteringSSLBufferevents;
+ /** Set to true if the TestingTorNetwork configuration option is set.
+ * This is used so that options_validate() has a chance to realize that
+ * the defaults have changed. */
+ int _UsingTestNetworkDefaults;
+
+ /** If 1, we try to use microdescriptors to build circuits. If 0, we don't.
+ * If -1, Tor decides. */
+ int UseMicrodescriptors;
+
+ /** File where we should write the ControlPort. */
+ char *ControlPortWriteToFile;
+ /** Should that file be group-readable? */
+ int ControlPortFileGroupReadable;
+
} or_options_t;
/** Persistent state for an onion router, as saved to disk. */
@@ -3026,19 +3135,25 @@ typedef struct {
* bandwidth usage. The "Interval" fields hold the granularity, in seconds,
* of the entries of Values. The "Values" lists hold decimal string
* representations of the number of bytes read or written in each
- * interval. */
+ * interval. The "Maxima" list holds decimal strings describing the highest
+ * rate achieved during the interval.
+ */
time_t BWHistoryReadEnds;
int BWHistoryReadInterval;
smartlist_t *BWHistoryReadValues;
+ smartlist_t *BWHistoryReadMaxima;
time_t BWHistoryWriteEnds;
int BWHistoryWriteInterval;
smartlist_t *BWHistoryWriteValues;
+ smartlist_t *BWHistoryWriteMaxima;
time_t BWHistoryDirReadEnds;
int BWHistoryDirReadInterval;
smartlist_t *BWHistoryDirReadValues;
+ smartlist_t *BWHistoryDirReadMaxima;
time_t BWHistoryDirWriteEnds;
int BWHistoryDirWriteInterval;
smartlist_t *BWHistoryDirWriteValues;
+ smartlist_t *BWHistoryDirWriteMaxima;
/** Build time histogram */
config_line_t * BuildtimeHistogram;
@@ -3130,6 +3245,11 @@ struct socks_request_t {
/* Circuit Build Timeout "public" structures. */
+/** Precision multiplier for the Bw weights */
+#define BW_WEIGHT_SCALE 10000
+#define BW_MIN_WEIGHT_SCALE 1
+#define BW_MAX_WEIGHT_SCALE INT32_MAX
+
/** Total size of the circuit timeout history to accumulate.
* 1000 is approx 2.5 days worth of continual-use circuits. */
#define CBT_NCIRCUITS_TO_OBSERVE 1000
@@ -3139,6 +3259,8 @@ struct socks_request_t {
/** Number of modes to use in the weighted-avg computation of Xm */
#define CBT_DEFAULT_NUM_XM_MODES 3
+#define CBT_MIN_NUM_XM_MODES 1
+#define CBT_MAX_NUM_XM_MODES 20
/** A build_time_t is milliseconds */
typedef uint32_t build_time_t;
@@ -3160,12 +3282,16 @@ typedef uint32_t build_time_t;
* build in terms of CDF quantile.
*/
#define CBT_DEFAULT_CLOSE_QUANTILE 95
+#define CBT_MIN_CLOSE_QUANTILE CBT_MIN_QUANTILE_CUTOFF
+#define CBT_MAX_CLOSE_QUANTILE CBT_MAX_QUANTILE_CUTOFF
/**
* How many circuits count as recent when considering if the
* connection has gone gimpy or changed.
*/
#define CBT_DEFAULT_RECENT_CIRCUITS 20
+#define CBT_MIN_RECENT_CIRCUITS 3
+#define CBT_MAX_RECENT_CIRCUITS 1000
/**
* Maximum count of timeouts that finish the first hop in the past
@@ -3176,25 +3302,37 @@ typedef uint32_t build_time_t;
* gives us.
*/
#define CBT_DEFAULT_MAX_RECENT_TIMEOUT_COUNT (CBT_DEFAULT_RECENT_CIRCUITS*9/10)
+#define CBT_MIN_MAX_RECENT_TIMEOUT_COUNT 3
+#define CBT_MAX_MAX_RECENT_TIMEOUT_COUNT 10000
/** Minimum circuits before estimating a timeout */
#define CBT_DEFAULT_MIN_CIRCUITS_TO_OBSERVE 100
+#define CBT_MIN_MIN_CIRCUITS_TO_OBSERVE 1
+#define CBT_MAX_MIN_CIRCUITS_TO_OBSERVE 10000
/** Cutoff percentile on the CDF for our timeout estimation. */
#define CBT_DEFAULT_QUANTILE_CUTOFF 80
+#define CBT_MIN_QUANTILE_CUTOFF 10
+#define CBT_MAX_QUANTILE_CUTOFF 99
double circuit_build_times_quantile_cutoff(void);
/** How often in seconds should we build a test circuit */
#define CBT_DEFAULT_TEST_FREQUENCY 60
+#define CBT_MIN_TEST_FREQUENCY 1
+#define CBT_MAX_TEST_FREQUENCY INT32_MAX
/** Lowest allowable value for CircuitBuildTimeout in milliseconds */
#define CBT_DEFAULT_TIMEOUT_MIN_VALUE (1500)
+#define CBT_MIN_TIMEOUT_MIN_VALUE 500
+#define CBT_MAX_TIMEOUT_MIN_VALUE INT32_MAX
/** Initial circuit build timeout in milliseconds */
#define CBT_DEFAULT_TIMEOUT_INITIAL_VALUE (60*1000)
+#define CBT_MIN_TIMEOUT_INITIAL_VALUE CBT_MIN_TIMEOUT_MIN_VALUE
+#define CBT_MAX_TIMEOUT_INITIAL_VALUE INT32_MAX
int32_t circuit_build_times_initial_timeout(void);
-#if CBT_DEFAULT_MAX_RECENT_TIMEOUT_COUNT < 1
+#if CBT_DEFAULT_MAX_RECENT_TIMEOUT_COUNT < CBT_MIN_MAX_RECENT_TIMEOUT_COUNT
#error "RECENT_CIRCUITS is set too low."
#endif
@@ -3255,6 +3393,9 @@ typedef enum setopt_err_t {
typedef enum {
/** We're remapping this address because the controller told us to. */
ADDRMAPSRC_CONTROLLER,
+ /** We're remapping this address because of an AutomapHostsOnResolve
+ * configuration. */
+ ADDRMAPSRC_AUTOMAP,
/** We're remapping this address because our configuration (via torrc, the
* command line, or a SETCONF command) told us to. */
ADDRMAPSRC_TORRC,
@@ -3319,7 +3460,9 @@ typedef enum buildtimeout_set_event_t {
*/
#define CONN_LOG_PROTECT(conn, stmt) \
STMT_BEGIN \
- int _log_conn_is_control = (conn && conn->type == CONN_TYPE_CONTROL); \
+ int _log_conn_is_control; \
+ tor_assert(conn); \
+ _log_conn_is_control = (conn->type == CONN_TYPE_CONTROL); \
if (_log_conn_is_control) \
disable_control_logging(); \
STMT_BEGIN stmt; STMT_END; \
@@ -3356,8 +3499,19 @@ typedef struct {
} fp_pair_t;
/********************************* dirserv.c ***************************/
+
+/** An enum to describe what format we're generating a routerstatus line in.
+ */
typedef enum {
- NS_V2, NS_V3_CONSENSUS, NS_V3_VOTE, NS_CONTROL_PORT,
+ /** For use in a v2 opinion */
+ NS_V2,
+ /** For use in a consensus networkstatus document (ns flavor) */
+ NS_V3_CONSENSUS,
+ /** For use in a vote networkstatus document */
+ NS_V3_VOTE,
+ /** For passing to the controlport in response to a GETINFO request */
+ NS_CONTROL_PORT,
+ /** For use in a consensus networkstatus document (microdesc flavor) */
NS_V3_CONSENSUS_MICRODESC
} routerstatus_format_type_t;
@@ -3374,9 +3528,14 @@ typedef struct measured_bw_line_t {
/** Describes the schedule by which votes should be generated. */
typedef struct vote_timing_t {
+ /** Length in seconds between one consensus becoming valid and the next
+ * becoming valid. */
int vote_interval;
+ /** For how many intervals is a consensus valid? */
int n_intervals_valid;
+ /** Time in seconds allowed to propagate votes */
int vote_delay;
+ /** Time in seconds allowed to propagate signatures */
int dist_delay;
} vote_timing_t;
@@ -3576,7 +3735,7 @@ typedef struct trusted_dir_server_t {
unsigned int has_accepted_serverdesc:1;
/** What kind of authority is this? (Bitfield.) */
- authority_type_t type;
+ dirinfo_type_t type;
download_status_t v2_ns_dl_status; /**< Status of downloading this server's
* v2 network status. */
@@ -3594,7 +3753,7 @@ typedef struct trusted_dir_server_t {
#define ROUTER_MAX_DECLARED_BANDWIDTH INT32_MAX
-/* Flags for pick_directory_server and pick_trusteddirserver. */
+/* Flags for pick_directory_server() and pick_trusteddirserver(). */
/** Flag to indicate that we should not automatically be willing to use
* ourself to answer a directory request.
* Passed to router_pick_directory_server (et al).*/
@@ -3654,6 +3813,7 @@ typedef enum was_router_added_t {
ROUTER_NOT_IN_CONSENSUS = -3,
ROUTER_NOT_IN_CONSENSUS_OR_NETWORKSTATUS = -4,
ROUTER_AUTHDIR_REJECTS = -5,
+ ROUTER_WAS_NOT_WANTED = -6
} was_router_added_t;
/********************************* routerparse.c ************************/
diff --git a/src/or/policies.c b/src/or/policies.c
index 8d8de11828..f80808dd62 100644
--- a/src/or/policies.c
+++ b/src/or/policies.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -46,7 +46,7 @@ typedef struct policy_summary_item_t {
uint16_t prt_max; /**< Highest port number to accept/reject. */
uint64_t reject_count; /**< Number of IP-Addresses that are rejected to
this port range. */
- int accepted:1; /** Has this port already been accepted */
+ unsigned int accepted:1; /** Has this port already been accepted */
} policy_summary_item_t;
/** Private networks. This list is used in two places, once to expand the
@@ -83,15 +83,15 @@ policy_expand_private(smartlist_t **policy)
continue;
}
for (i = 0; private_nets[i]; ++i) {
- addr_policy_t policy;
- memcpy(&policy, p, sizeof(addr_policy_t));
- policy.is_private = 0;
- policy.is_canonical = 0;
- if (tor_addr_parse_mask_ports(private_nets[i], &policy.addr,
- &policy.maskbits, &port_min, &port_max)<0) {
+ addr_policy_t newpolicy;
+ memcpy(&newpolicy, p, sizeof(addr_policy_t));
+ newpolicy.is_private = 0;
+ newpolicy.is_canonical = 0;
+ if (tor_addr_parse_mask_ports(private_nets[i], &newpolicy.addr,
+ &newpolicy.maskbits, &port_min, &port_max)<0) {
tor_assert(0);
}
- smartlist_add(tmp, addr_policy_get_canonical_entry(&policy));
+ smartlist_add(tmp, addr_policy_get_canonical_entry(&newpolicy));
}
addr_policy_free(p);
});
@@ -164,7 +164,7 @@ parse_addr_policy(config_line_t *cfg, smartlist_t **dest,
static int
parse_reachable_addresses(void)
{
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
int ret = 0;
if (options->ReachableDirAddresses &&
@@ -356,7 +356,7 @@ authdir_policy_badexit_address(uint32_t addr, uint16_t port)
* options in <b>options</b>, return -1 and set <b>msg</b> to a newly
* allocated description of the error. Else return 0. */
int
-validate_addr_policies(or_options_t *options, char **msg)
+validate_addr_policies(const or_options_t *options, char **msg)
{
/* XXXX Maybe merge this into parse_policies_from_options, to make sure
* that the two can't go out of sync. */
@@ -440,7 +440,7 @@ load_policy_from_option(config_line_t *config, smartlist_t **policy,
/** Set all policies based on <b>options</b>, which should have been validated
* first by validate_addr_policies. */
int
-policies_parse_from_options(or_options_t *options)
+policies_parse_from_options(const or_options_t *options)
{
int ret = 0;
if (load_policy_from_option(options->SocksPolicy, &socks_policy, -1) < 0)
@@ -875,6 +875,14 @@ policies_parse_exit_policy(config_line_t *cfg, smartlist_t **dest,
return 0;
}
+/** Add "reject *:*" to the end of the policy in *<b>dest</b>, allocating
+ * *<b>dest</b> as needed. */
+void
+policies_exit_policy_append_reject_star(smartlist_t **dest)
+{
+ append_exit_policy_string(dest, "reject *:*");
+}
+
/** Replace the exit policy of <b>node</b> with reject *:* */
void
policies_set_node_exitpolicy_to_reject_all(node_t *node)
@@ -893,6 +901,8 @@ exit_policy_is_general_exit_helper(smartlist_t *policy, int port)
memset(subnet_status, 0, sizeof(subnet_status));
SMARTLIST_FOREACH(policy, addr_policy_t *, p, {
+ if (tor_addr_family(&p->addr) != AF_INET)
+ continue; /* IPv4 only for now */
if (p->prt_min > port || p->prt_max < port)
continue; /* Doesn't cover our port. */
mask = 0;
@@ -1256,8 +1266,8 @@ policy_summarize(smartlist_t *policy)
accepts_str = smartlist_join_strings(accepts, ",", 0, &accepts_len);
rejects_str = smartlist_join_strings(rejects, ",", 0, &rejects_len);
- if (rejects_len > MAX_EXITPOLICY_SUMMARY_LEN &&
- accepts_len > MAX_EXITPOLICY_SUMMARY_LEN) {
+ if (rejects_len > MAX_EXITPOLICY_SUMMARY_LEN-strlen("reject")-1 &&
+ accepts_len > MAX_EXITPOLICY_SUMMARY_LEN-strlen("accept")-1) {
char *c;
shorter_str = accepts_str;
prefix = "accept";
@@ -1382,8 +1392,8 @@ parse_short_policy(const char *summary)
}
{
- size_t size = sizeof(short_policy_t) +
- sizeof(short_policy_entry_t)*(n_entries-1);
+ size_t size = STRUCT_OFFSET(short_policy_t, entries) +
+ sizeof(short_policy_entry_t)*(n_entries);
result = tor_malloc_zero(size);
tor_assert( (char*)&result->entries[n_entries-1] < ((char*)result)+size);
@@ -1480,7 +1490,7 @@ compare_tor_addr_to_node_policy(const tor_addr_t *addr, uint16_t port,
if (node->ri)
return compare_tor_addr_to_addr_policy(addr, port, node->ri->exit_policy);
- else if (node->md && node->md) {
+ else if (node->md) {
if (node->md->exit_policy == NULL)
return ADDR_POLICY_REJECTED;
else
diff --git a/src/or/policies.h b/src/or/policies.h
index 5c1113e75a..6f3624aba1 100644
--- a/src/or/policies.h
+++ b/src/or/policies.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -29,9 +29,9 @@ int authdir_policy_valid_address(uint32_t addr, uint16_t port);
int authdir_policy_baddir_address(uint32_t addr, uint16_t port);
int authdir_policy_badexit_address(uint32_t addr, uint16_t port);
-int validate_addr_policies(or_options_t *options, char **msg);
+int validate_addr_policies(const or_options_t *options, char **msg);
void policy_expand_private(smartlist_t **policy);
-int policies_parse_from_options(or_options_t *options);
+int policies_parse_from_options(const or_options_t *options);
addr_policy_t *addr_policy_get_canonical_entry(addr_policy_t *ent);
int cmp_addr_policies(smartlist_t *a, smartlist_t *b);
@@ -48,6 +48,7 @@ addr_policy_result_t compare_tor_addr_to_node_policy(const tor_addr_t *addr,
int policies_parse_exit_policy(config_line_t *cfg, smartlist_t **dest,
int rejectprivate, const char *local_address,
int add_default_policy);
+void policies_exit_policy_append_reject_star(smartlist_t **dest);
void policies_set_node_exitpolicy_to_reject_all(node_t *exitrouter);
int exit_policy_is_general_exit(smartlist_t *policy);
int policy_is_reject_star(const smartlist_t *policy);
diff --git a/src/or/reasons.c b/src/or/reasons.c
index aa7972be5b..319e6c055a 100644
--- a/src/or/reasons.c
+++ b/src/or/reasons.c
@@ -1,5 +1,5 @@
/* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -40,6 +40,8 @@ stream_end_reason_to_control_string(int reason)
case END_STREAM_REASON_NET_UNREACHABLE: return "NET_UNREACHABLE";
case END_STREAM_REASON_SOCKSPROTOCOL: return "SOCKS_PROTOCOL";
+ case END_STREAM_REASON_PRIVATE_ADDR: return "PRIVATE_ADDR";
+
default: return NULL;
}
}
@@ -125,6 +127,9 @@ stream_end_reason_to_socks5_response(int reason)
return SOCKS5_NET_UNREACHABLE;
case END_STREAM_REASON_SOCKSPROTOCOL:
return SOCKS5_GENERAL_ERROR;
+ case END_STREAM_REASON_PRIVATE_ADDR:
+ return SOCKS5_GENERAL_ERROR;
+
default:
log_fn(LOG_PROTOCOL_WARN, LD_PROTOCOL,
"Reason for ending (%d) not recognized; "
@@ -169,13 +174,7 @@ errno_to_stream_end_reason(int e)
S_CASE(ENETUNREACH):
return END_STREAM_REASON_INTERNAL;
S_CASE(EHOSTUNREACH):
- /* XXXX022
- * The correct behavior is END_STREAM_REASON_NOROUTE, but older
- * clients don't recognize it. So we're going to continue sending
- * "MISC" until 0.2.1.27 or later is "well established".
- */
- /* return END_STREAM_REASON_NOROUTE; */
- return END_STREAM_REASON_MISC;
+ return END_STREAM_REASON_NOROUTE;
S_CASE(ECONNREFUSED):
return END_STREAM_REASON_CONNECTREFUSED;
S_CASE(ECONNRESET):
diff --git a/src/or/reasons.h b/src/or/reasons.h
index b87d36a77a..01f9717948 100644
--- a/src/or/reasons.h
+++ b/src/or/reasons.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/or/relay.c b/src/or/relay.c
index 6529efb243..df6d0a8a5f 100644
--- a/src/or/relay.c
+++ b/src/or/relay.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -29,6 +29,7 @@
#include "reasons.h"
#include "relay.h"
#include "rendcommon.h"
+#include "router.h"
#include "routerlist.h"
#include "routerparse.h"
@@ -53,9 +54,9 @@ static int circuit_consider_stop_edge_reading(circuit_t *circ,
crypt_path_t *layer_hint);
static int circuit_queue_streams_are_blocked(circuit_t *circ);
+/* XXXX023 move this all to compat_libevent */
/** Cache the current hi-res time; the cache gets reset when libevent
* calls us. */
-
static struct timeval cached_time_hires = {0, 0};
/** Stop reading on edge connections when we have this many cells
@@ -77,7 +78,7 @@ tor_gettimeofday_cached(struct timeval *tv)
void
tor_gettimeofday_cache_clear(void)
{
- cached_time_hires.tv_sec = 0;
+ cached_time_hires.tv_sec = 0;
}
/** Stats: how many relay cells have originated at this hop, or have
@@ -98,7 +99,7 @@ relay_set_digest(crypto_digest_env_t *digest, cell_t *cell)
char integrity[4];
relay_header_t rh;
- crypto_digest_add_bytes(digest, cell->payload, CELL_PAYLOAD_SIZE);
+ crypto_digest_add_bytes(digest, (char*)cell->payload, CELL_PAYLOAD_SIZE);
crypto_digest_get_digest(digest, integrity, 4);
// log_fn(LOG_DEBUG,"Putting digest of %u %u %u %u into relay cell.",
// integrity[0], integrity[1], integrity[2], integrity[3]);
@@ -131,10 +132,10 @@ relay_digest_matches(crypto_digest_env_t *digest, cell_t *cell)
// received_integrity[0], received_integrity[1],
// received_integrity[2], received_integrity[3]);
- crypto_digest_add_bytes(digest, cell->payload, CELL_PAYLOAD_SIZE);
+ crypto_digest_add_bytes(digest, (char*) cell->payload, CELL_PAYLOAD_SIZE);
crypto_digest_get_digest(digest, calculated_integrity, 4);
- if (memcmp(received_integrity, calculated_integrity, 4)) {
+ if (tor_memneq(received_integrity, calculated_integrity, 4)) {
// log_fn(LOG_INFO,"Recognized=0 but bad digest. Not recognizing.");
// (%d vs %d).", received_integrity, calculated_integrity);
/* restore digest to its old form */
@@ -157,12 +158,12 @@ relay_digest_matches(crypto_digest_env_t *digest, cell_t *cell)
* Return -1 if the crypto fails, else return 0.
*/
static int
-relay_crypt_one_payload(crypto_cipher_env_t *cipher, char *in,
+relay_crypt_one_payload(crypto_cipher_env_t *cipher, uint8_t *in,
int encrypt_mode)
{
int r;
(void)encrypt_mode;
- r = crypto_cipher_crypt_inplace(cipher, in, CELL_PAYLOAD_SIZE);
+ r = crypto_cipher_crypt_inplace(cipher, (char*) in, CELL_PAYLOAD_SIZE);
if (r) {
log_warn(LD_BUG,"Error during relay encryption");
@@ -477,10 +478,9 @@ relay_lookup_conn(circuit_t *circ, cell_t *cell,
* about the wire format.
*/
void
-relay_header_pack(char *dest, const relay_header_t *src)
+relay_header_pack(uint8_t *dest, const relay_header_t *src)
{
- *(uint8_t*)(dest) = src->command;
-
+ set_uint8(dest, src->command);
set_uint16(dest+1, htons(src->recognized));
set_uint16(dest+3, htons(src->stream_id));
memcpy(dest+5, src->integrity, 4);
@@ -491,10 +491,9 @@ relay_header_pack(char *dest, const relay_header_t *src)
* relay_header_t structure <b>dest</b>.
*/
void
-relay_header_unpack(relay_header_t *dest, const char *src)
+relay_header_unpack(relay_header_t *dest, const uint8_t *src)
{
- dest->command = *(uint8_t*)(src);
-
+ dest->command = get_uint8(src);
dest->recognized = ntohs(get_uint16(src+1));
dest->stream_id = ntohs(get_uint16(src+3));
memcpy(dest->integrity, src+5, 4);
@@ -753,9 +752,9 @@ connection_ap_process_end_not_open(
(tor_inet_aton(conn->socks_request->address, &in) &&
!conn->chosen_exit_name))) {
log_info(LD_APP,
- "Exitrouter '%s' seems to be more restrictive than its exit "
+ "Exitrouter %s seems to be more restrictive than its exit "
"policy. Not using this router as exit for now.",
- node_get_nickname(exitrouter));
+ node_describe(exitrouter));
policies_set_node_exitpolicy_to_reject_all(exitrouter);
}
/* rewrite it to an IP if we learned one. */
@@ -795,6 +794,8 @@ connection_ap_process_end_not_open(
< MAX_RESOLVE_FAILURES) {
/* We haven't retried too many times; reattach the connection. */
circuit_log_path(LOG_INFO,LD_APP,circ);
+ /* Mark this circuit "unusable for new streams". */
+ /* XXXX023 this is a kludgy way to do this. */
tor_assert(circ->_base.timestamp_dirty);
circ->_base.timestamp_dirty -= get_options()->MaxCircuitDirtiness;
@@ -1033,6 +1034,9 @@ connection_edge_process_relay_cell(cell_t *cell, circuit_t *circ,
relay_header_t rh;
unsigned domain = layer_hint?LD_APP:LD_EXIT;
int reason;
+ int optimistic_data = 0; /* Set to 1 if we receive data on a stream
+ * that's in the EXIT_CONN_STATE_RESOLVING
+ * or EXIT_CONN_STATE_CONNECTING states. */
tor_assert(cell);
tor_assert(circ);
@@ -1052,9 +1056,20 @@ connection_edge_process_relay_cell(cell_t *cell, circuit_t *circ,
/* either conn is NULL, in which case we've got a control cell, or else
* conn points to the recognized stream. */
- if (conn && !connection_state_is_open(TO_CONN(conn)))
- return connection_edge_process_relay_cell_not_open(
- &rh, cell, circ, conn, layer_hint);
+ if (conn && !connection_state_is_open(TO_CONN(conn))) {
+ if (conn->_base.type == CONN_TYPE_EXIT &&
+ (conn->_base.state == EXIT_CONN_STATE_CONNECTING ||
+ conn->_base.state == EXIT_CONN_STATE_RESOLVING) &&
+ rh.command == RELAY_COMMAND_DATA) {
+ /* Allow DATA cells to be delivered to an exit node in state
+ * EXIT_CONN_STATE_CONNECTING or EXIT_CONN_STATE_RESOLVING.
+ * This speeds up HTTP, for example. */
+ optimistic_data = 1;
+ } else {
+ return connection_edge_process_relay_cell_not_open(
+ &rh, cell, circ, conn, layer_hint);
+ }
+ }
switch (rh.command) {
case RELAY_COMMAND_DROP:
@@ -1119,13 +1134,20 @@ connection_edge_process_relay_cell(cell_t *cell, circuit_t *circ,
}
stats_n_data_bytes_received += rh.length;
- connection_write_to_buf(cell->payload + RELAY_HEADER_SIZE,
+ connection_write_to_buf((char*)(cell->payload + RELAY_HEADER_SIZE),
rh.length, TO_CONN(conn));
- connection_edge_consider_sending_sendme(conn);
+
+ if (!optimistic_data) {
+ /* Only send a SENDME if we're not getting optimistic data; otherwise
+ * a SENDME could arrive before the CONNECTED.
+ */
+ connection_edge_consider_sending_sendme(conn);
+ }
+
return 0;
case RELAY_COMMAND_END:
reason = rh.length > 0 ?
- *(uint8_t *)(cell->payload+RELAY_HEADER_SIZE) : END_STREAM_REASON_MISC;
+ get_uint8(cell->payload+RELAY_HEADER_SIZE) : END_STREAM_REASON_MISC;
if (!conn) {
log_info(domain,"end cell (%s) dropped, unknown stream.",
stream_end_reason_to_string(reason));
@@ -1405,8 +1427,9 @@ connection_edge_package_raw_inbuf(edge_connection_t *conn, int package_partial,
goto repeat_connection_edge_package_raw_inbuf;
}
-/** Called when we've just received a relay data cell, or when
- * we've just finished flushing all bytes to stream <b>conn</b>.
+/** Called when we've just received a relay data cell, when
+ * we've just finished flushing all bytes to stream <b>conn</b>,
+ * or when we've flushed *some* bytes to the stream <b>conn</b>.
*
* If conn->outbuf is not too full, and our deliver window is
* low, send back a suitable number of stream-level sendme cells.
@@ -1987,7 +2010,8 @@ static int ewma_enabled = 0;
/** Adjust the global cell scale factor based on <b>options</b> */
void
-cell_ewma_set_scale_factor(or_options_t *options, networkstatus_t *consensus)
+cell_ewma_set_scale_factor(const or_options_t *options,
+ const networkstatus_t *consensus)
{
int32_t halflife_ms;
double halflife;
@@ -1995,9 +2019,9 @@ cell_ewma_set_scale_factor(or_options_t *options, networkstatus_t *consensus)
if (options && options->CircuitPriorityHalflife >= -EPSILON) {
halflife = options->CircuitPriorityHalflife;
source = "CircuitPriorityHalflife in configuration";
- } else if (consensus &&
- (halflife_ms = networkstatus_get_param(
- consensus, "CircuitPriorityHalflifeMsec", -1)) >= 0) {
+ } else if (consensus && (halflife_ms = networkstatus_get_param(
+ consensus, "CircuitPriorityHalflifeMsec",
+ -1, -1, INT32_MAX)) >= 0) {
halflife = ((double)halflife_ms)/1000.0;
source = "CircuitPriorityHalflifeMsec in consensus";
} else {
@@ -2313,13 +2337,13 @@ connection_or_flush_from_first_active_circuit(or_connection_t *conn, int max,
/* Calculate the exact time that this cell has spent in the queue. */
if (get_options()->CellStatistics && !CIRCUIT_IS_ORIGIN(circ)) {
- struct timeval now;
+ struct timeval tvnow;
uint32_t flushed;
uint32_t cell_waiting_time;
insertion_time_queue_t *it_queue = queue->insertion_times;
- tor_gettimeofday_cached(&now);
- flushed = (uint32_t)((now.tv_sec % SECONDS_IN_A_DAY) * 100L +
- (uint32_t)now.tv_usec / (uint32_t)10000L);
+ tor_gettimeofday_cached(&tvnow);
+ flushed = (uint32_t)((tvnow.tv_sec % SECONDS_IN_A_DAY) * 100L +
+ (uint32_t)tvnow.tv_usec / (uint32_t)10000L);
if (!it_queue || !it_queue->first) {
log_info(LD_GENERAL, "Cannot determine insertion time of cell. "
"Looks like the CellStatistics option was "
@@ -2457,7 +2481,7 @@ append_cell_to_circuit_queue(circuit_t *circ, or_connection_t *orconn,
* ADDRESS [length bytes]
* Return the number of bytes added, or -1 on error */
int
-append_address_to_payload(char *payload_out, const tor_addr_t *addr)
+append_address_to_payload(uint8_t *payload_out, const tor_addr_t *addr)
{
uint32_t a;
switch (tor_addr_family(addr)) {
@@ -2482,13 +2506,13 @@ append_address_to_payload(char *payload_out, const tor_addr_t *addr)
* encoded as by append_address_to_payload(), try to decode the address into
* *<b>addr_out</b>. Return the next byte in the payload after the address on
* success, or NULL on failure. */
-const char *
-decode_address_from_payload(tor_addr_t *addr_out, const char *payload,
+const uint8_t *
+decode_address_from_payload(tor_addr_t *addr_out, const uint8_t *payload,
int payload_len)
{
if (payload_len < 2)
return NULL;
- if (payload_len < 2+(uint8_t)payload[1])
+ if (payload_len < 2+payload[1])
return NULL;
switch (payload[0]) {
@@ -2500,13 +2524,13 @@ decode_address_from_payload(tor_addr_t *addr_out, const char *payload,
case RESOLVED_TYPE_IPV6:
if (payload[1] != 16)
return NULL;
- tor_addr_from_ipv6_bytes(addr_out, payload+2);
+ tor_addr_from_ipv6_bytes(addr_out, (char*)(payload+2));
break;
default:
tor_addr_make_unspec(addr_out);
break;
}
- return payload + 2 + (uint8_t)payload[1];
+ return payload + 2 + payload[1];
}
/** Remove all the cells queued on <b>circ</b> for <b>orconn</b>. */
diff --git a/src/or/relay.h b/src/or/relay.h
index 08a1ffe789..7fce8edcaf 100644
--- a/src/or/relay.h
+++ b/src/or/relay.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -18,8 +18,8 @@ extern uint64_t stats_n_relay_cells_delivered;
int circuit_receive_relay_cell(cell_t *cell, circuit_t *circ,
cell_direction_t cell_direction);
-void relay_header_pack(char *dest, const relay_header_t *src);
-void relay_header_unpack(relay_header_t *dest, const char *src);
+void relay_header_pack(uint8_t *dest, const relay_header_t *src);
+void relay_header_unpack(relay_header_t *dest, const uint8_t *src);
int relay_send_command_from_edge(streamid_t stream_id, circuit_t *circ,
uint8_t relay_command, const char *payload,
size_t payload_len, crypt_path_t *cpath_layer);
@@ -55,14 +55,16 @@ void assert_active_circuits_ok(or_connection_t *orconn);
void make_circuit_inactive_on_conn(circuit_t *circ, or_connection_t *conn);
void make_circuit_active_on_conn(circuit_t *circ, or_connection_t *conn);
-int append_address_to_payload(char *payload_out, const tor_addr_t *addr);
-const char *decode_address_from_payload(tor_addr_t *addr_out,
- const char *payload,
+int append_address_to_payload(uint8_t *payload_out, const tor_addr_t *addr);
+const uint8_t *decode_address_from_payload(tor_addr_t *addr_out,
+ const uint8_t *payload,
int payload_len);
unsigned cell_ewma_get_tick(void);
-void cell_ewma_set_scale_factor(or_options_t *options,
- networkstatus_t *consensus);
+void cell_ewma_set_scale_factor(const or_options_t *options,
+ const networkstatus_t *consensus);
void circuit_clear_cell_queue(circuit_t *circ, or_connection_t *orconn);
+void tor_gettimeofday_cache_clear(void);
+
#endif
diff --git a/src/or/rendclient.c b/src/or/rendclient.c
index 5c5c48afbd..516455983c 100644
--- a/src/or/rendclient.c
+++ b/src/or/rendclient.c
@@ -1,5 +1,5 @@
/* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -21,8 +21,23 @@
#include "rendclient.h"
#include "rendcommon.h"
#include "rephist.h"
+#include "router.h"
#include "routerlist.h"
+static extend_info_t *rend_client_get_random_intro_impl(
+ const rend_cache_entry_t *rend_query,
+ const int strict, const int warnings);
+
+/** Purge all potentially remotely-detectable state held in the hidden
+ * service client code. Called on SIGNAL NEWNYM. */
+void
+rend_client_purge_state(void)
+{
+ rend_cache_purge();
+ rend_client_cancel_descriptor_fetches();
+ rend_client_purge_last_hid_serv_requests();
+}
+
/** Called when we've established a circuit to an introduction point:
* send the introduction request. */
void
@@ -63,6 +78,51 @@ rend_client_send_establish_rendezvous(origin_circuit_t *circ)
return 0;
}
+/** Extend the introduction circuit <b>circ</b> to another valid
+ * introduction point for the hidden service it is trying to connect
+ * to, or mark it and launch a new circuit if we can't extend it.
+ * Return 0 on success. Return -1 and mark the introduction
+ * circuit on failure.
+ *
+ * On failure, the caller is responsible for marking the associated
+ * rendezvous circuit for close. */
+static int
+rend_client_reextend_intro_circuit(origin_circuit_t *circ)
+{
+ extend_info_t *extend_info;
+ int result;
+ extend_info = rend_client_get_random_intro(circ->rend_data);
+ if (!extend_info) {
+ log_warn(LD_REND,
+ "No usable introduction points left for %s. Closing.",
+ safe_str_client(circ->rend_data->onion_address));
+ circuit_mark_for_close(TO_CIRCUIT(circ), END_CIRC_REASON_INTERNAL);
+ return -1;
+ }
+ if (circ->remaining_relay_early_cells) {
+ log_info(LD_REND,
+ "Re-extending circ %d, this time to %s.",
+ circ->_base.n_circ_id,
+ safe_str_client(extend_info_describe(extend_info)));
+ result = circuit_extend_to_new_exit(circ, extend_info);
+ } else {
+ log_info(LD_REND,
+ "Building a new introduction circuit, this time to %s.",
+ safe_str_client(extend_info_describe(extend_info)));
+ circuit_mark_for_close(TO_CIRCUIT(circ), END_CIRC_REASON_FINISHED);
+ if (!circuit_launch_by_extend_info(CIRCUIT_PURPOSE_C_INTRODUCING,
+ extend_info,
+ CIRCLAUNCH_IS_INTERNAL)) {
+ log_warn(LD_REND, "Building introduction circuit failed.");
+ result = -1;
+ } else {
+ result = 0;
+ }
+ }
+ extend_info_free(extend_info);
+ return result;
+}
+
/** Called when we're trying to connect an ap conn; sends an INTRODUCE1 cell
* down introcirc if possible.
*/
@@ -85,35 +145,57 @@ rend_client_send_introduction(origin_circuit_t *introcirc,
tor_assert(rendcirc->rend_data);
tor_assert(!rend_cmp_service_ids(introcirc->rend_data->onion_address,
rendcirc->rend_data->onion_address));
+ tor_assert(!(introcirc->build_state->onehop_tunnel));
+ tor_assert(!(rendcirc->build_state->onehop_tunnel));
if (rend_cache_lookup_entry(introcirc->rend_data->onion_address, -1,
&entry) < 1) {
- log_warn(LD_REND,
- "query %s didn't have valid rend desc in cache. Failing.",
- escaped_safe_str_client(introcirc->rend_data->onion_address));
- goto err;
+ log_info(LD_REND,
+ "query %s didn't have valid rend desc in cache. "
+ "Refetching descriptor.",
+ safe_str_client(introcirc->rend_data->onion_address));
+ rend_client_refetch_v2_renddesc(introcirc->rend_data);
+ {
+ connection_t *conn;
+
+ while ((conn = connection_get_by_type_state_rendquery(CONN_TYPE_AP,
+ AP_CONN_STATE_CIRCUIT_WAIT,
+ introcirc->rend_data->onion_address))) {
+ conn->state = AP_CONN_STATE_RENDDESC_WAIT;
+ }
+ }
+
+ return -1;
}
- /* first 20 bytes of payload are the hash of the intro key */
+ /* first 20 bytes of payload are the hash of Bob's pk */
intro_key = NULL;
SMARTLIST_FOREACH(entry->parsed->intro_nodes, rend_intro_point_t *,
intro, {
- if (!memcmp(introcirc->build_state->chosen_exit->identity_digest,
+ if (tor_memeq(introcirc->build_state->chosen_exit->identity_digest,
intro->extend_info->identity_digest, DIGEST_LEN)) {
intro_key = intro->intro_key;
break;
}
});
if (!intro_key) {
- log_info(LD_REND, "Our introduction point knowledge changed in "
- "mid-connect! Could not find intro key; we only have a "
- "v2 rend desc with %d intro points. Giving up.",
+ log_info(LD_REND, "Could not find intro key for %s at %s; we "
+ "have a v2 rend desc with %d intro points. "
+ "Trying a different intro point...",
+ safe_str_client(introcirc->rend_data->onion_address),
+ safe_str_client(extend_info_describe(
+ introcirc->build_state->chosen_exit)),
smartlist_len(entry->parsed->intro_nodes));
- goto err;
+
+ if (rend_client_reextend_intro_circuit(introcirc)) {
+ goto perm_err;
+ } else {
+ return -1;
+ }
}
if (crypto_pk_get_digest(intro_key, payload)<0) {
log_warn(LD_BUG, "Internal error: couldn't hash public key.");
- goto err;
+ goto perm_err;
}
/* Initialize the pending_final_cpath and start the DH handshake. */
@@ -122,13 +204,13 @@ rend_client_send_introduction(origin_circuit_t *introcirc,
cpath = rendcirc->build_state->pending_final_cpath =
tor_malloc_zero(sizeof(crypt_path_t));
cpath->magic = CRYPT_PATH_MAGIC;
- if (!(cpath->dh_handshake_state = crypto_dh_new())) {
+ if (!(cpath->dh_handshake_state = crypto_dh_new(DH_TYPE_REND))) {
log_warn(LD_BUG, "Internal error: couldn't allocate DH.");
- goto err;
+ goto perm_err;
}
if (crypto_dh_generate_public(cpath->dh_handshake_state)<0) {
log_warn(LD_BUG, "Internal error: couldn't generate g^x.");
- goto err;
+ goto perm_err;
}
}
@@ -178,19 +260,20 @@ rend_client_send_introduction(origin_circuit_t *introcirc,
if (crypto_dh_get_public(cpath->dh_handshake_state, tmp+dh_offset,
DH_KEY_LEN)<0) {
log_warn(LD_BUG, "Internal error: couldn't extract g^x.");
- goto err;
+ goto perm_err;
}
note_crypto_pk_op(REND_CLIENT);
/*XXX maybe give crypto_pk_public_hybrid_encrypt a max_len arg,
* to avoid buffer overflows? */
r = crypto_pk_public_hybrid_encrypt(intro_key, payload+DIGEST_LEN,
+ sizeof(payload)-DIGEST_LEN,
tmp,
(int)(dh_offset+DH_KEY_LEN),
PK_PKCS1_OAEP_PADDING, 0);
if (r<0) {
log_warn(LD_BUG,"Internal error: hybrid pk encrypt failed.");
- goto err;
+ goto perm_err;
}
payload_len = DIGEST_LEN + r;
@@ -203,17 +286,22 @@ rend_client_send_introduction(origin_circuit_t *introcirc,
introcirc->cpath->prev)<0) {
/* introcirc is already marked for close. leave rendcirc alone. */
log_warn(LD_BUG, "Couldn't send INTRODUCE1 cell");
- return -1;
+ return -2;
}
/* Now, we wait for an ACK or NAK on this circuit. */
introcirc->_base.purpose = CIRCUIT_PURPOSE_C_INTRODUCE_ACK_WAIT;
+ /* Set timestamp_dirty, because circuit_expire_building expects it
+ * to specify when a circuit entered the _C_INTRODUCE_ACK_WAIT
+ * state. */
+ introcirc->_base.timestamp_dirty = time(NULL);
return 0;
- err:
- circuit_mark_for_close(TO_CIRCUIT(introcirc), END_CIRC_REASON_INTERNAL);
+ perm_err:
+ if (!introcirc->_base.marked_for_close)
+ circuit_mark_for_close(TO_CIRCUIT(introcirc), END_CIRC_REASON_INTERNAL);
circuit_mark_for_close(TO_CIRCUIT(rendcirc), END_CIRC_REASON_INTERNAL);
- return -1;
+ return -2;
}
/** Called when a rendezvous circuit is open; sends a establish
@@ -235,7 +323,7 @@ rend_client_rendcirc_has_opened(origin_circuit_t *circ)
*/
int
rend_client_introduction_acked(origin_circuit_t *circ,
- const char *request, size_t request_len)
+ const uint8_t *request, size_t request_len)
{
origin_circuit_t *rendcirc;
(void) request; // XXXX Use this.
@@ -249,6 +337,7 @@ rend_client_introduction_acked(origin_circuit_t *circ,
}
tor_assert(circ->build_state->chosen_exit);
+ tor_assert(!(circ->build_state->onehop_tunnel));
tor_assert(circ->rend_data);
if (request_len == 0) {
@@ -260,7 +349,12 @@ rend_client_introduction_acked(origin_circuit_t *circ,
rendcirc = circuit_get_by_rend_query_and_purpose(
circ->rend_data->onion_address, CIRCUIT_PURPOSE_C_REND_READY);
if (rendcirc) { /* remember the ack */
+ tor_assert(!(rendcirc->build_state->onehop_tunnel));
rendcirc->_base.purpose = CIRCUIT_PURPOSE_C_REND_READY_INTRO_ACKED;
+ /* Set timestamp_dirty, because circuit_expire_building expects
+ * it to specify when a circuit entered the
+ * _C_REND_READY_INTRO_ACKED state. */
+ rendcirc->_base.timestamp_dirty = time(NULL);
} else {
log_info(LD_REND,"...Found no rend circ. Dropping on the floor.");
}
@@ -274,45 +368,16 @@ rend_client_introduction_acked(origin_circuit_t *circ,
* points. If any remain, extend to a new one and try again.
* If none remain, refetch the service descriptor.
*/
+ log_info(LD_REND, "Got nack for %s from %s...",
+ safe_str_client(circ->rend_data->onion_address),
+ safe_str_client(extend_info_describe(circ->build_state->chosen_exit)));
if (rend_client_remove_intro_point(circ->build_state->chosen_exit,
circ->rend_data) > 0) {
/* There are introduction points left. Re-extend the circuit to
* another intro point and try again. */
- extend_info_t *extend_info;
- int result;
- extend_info = rend_client_get_random_intro(circ->rend_data);
- if (!extend_info) {
- log_warn(LD_REND, "No introduction points left for %s. Closing.",
- escaped_safe_str_client(circ->rend_data->onion_address));
- circuit_mark_for_close(TO_CIRCUIT(circ), END_CIRC_REASON_INTERNAL);
- return -1;
- }
- if (circ->remaining_relay_early_cells) {
- log_info(LD_REND,
- "Got nack for %s from %s. Re-extending circ %d, "
- "this time to %s.",
- escaped_safe_str_client(circ->rend_data->onion_address),
- circ->build_state->chosen_exit->nickname,
- circ->_base.n_circ_id, extend_info->nickname);
- result = circuit_extend_to_new_exit(circ, extend_info);
- } else {
- log_info(LD_REND,
- "Got nack for %s from %s. Building a new introduction "
- "circuit, this time to %s.",
- escaped_safe_str_client(circ->rend_data->onion_address),
- circ->build_state->chosen_exit->nickname,
- extend_info->nickname);
- circuit_mark_for_close(TO_CIRCUIT(circ), END_CIRC_REASON_FINISHED);
- if (!circuit_launch_by_extend_info(CIRCUIT_PURPOSE_C_INTRODUCING,
- extend_info,
- CIRCLAUNCH_IS_INTERNAL)) {
- log_warn(LD_REND, "Building introduction circuit failed.");
- result = -1;
- } else {
- result = 0;
- }
- }
- extend_info_free(extend_info);
+ int result = rend_client_reextend_intro_circuit(circ);
+ /* XXXX If that call failed, should we close the rend circuit,
+ * too? */
return result;
}
}
@@ -327,7 +392,17 @@ rend_client_introduction_acked(origin_circuit_t *circ,
* certain queries; keys are strings consisting of base32-encoded
* hidden service directory identities and base32-encoded descriptor IDs;
* values are pointers to timestamps of the last requests. */
-static strmap_t *last_hid_serv_requests = NULL;
+static strmap_t *last_hid_serv_requests_ = NULL;
+
+/** Returns last_hid_serv_requests_, initializing it to a new strmap if
+ * necessary. */
+static strmap_t *
+get_last_hid_serv_requests(void)
+{
+ if (!last_hid_serv_requests_)
+ last_hid_serv_requests_ = strmap_new();
+ return last_hid_serv_requests_;
+}
/** Look up the last request time to hidden service directory <b>hs_dir</b>
* for descriptor ID <b>desc_id_base32</b>. If <b>set</b> is non-zero,
@@ -341,6 +416,7 @@ lookup_last_hid_serv_request(routerstatus_t *hs_dir,
char hsdir_id_base32[REND_DESC_ID_V2_LEN_BASE32 + 1];
char hsdir_desc_comb_id[2 * REND_DESC_ID_V2_LEN_BASE32 + 1];
time_t *last_request_ptr;
+ strmap_t *last_hid_serv_requests = get_last_hid_serv_requests();
base32_encode(hsdir_id_base32, sizeof(hsdir_id_base32),
hs_dir->identity_digest, DIGEST_LEN);
tor_snprintf(hsdir_desc_comb_id, sizeof(hsdir_desc_comb_id), "%s%s",
@@ -362,12 +438,11 @@ lookup_last_hid_serv_request(routerstatus_t *hs_dir,
* it does not contain requests older than REND_HID_SERV_DIR_REQUERY_PERIOD
* seconds any more. */
static void
-directory_clean_last_hid_serv_requests(void)
+directory_clean_last_hid_serv_requests(time_t now)
{
strmap_iter_t *iter;
- time_t cutoff = time(NULL) - REND_HID_SERV_DIR_REQUERY_PERIOD;
- if (!last_hid_serv_requests)
- last_hid_serv_requests = strmap_new();
+ time_t cutoff = now - REND_HID_SERV_DIR_REQUERY_PERIOD;
+ strmap_t *last_hid_serv_requests = get_last_hid_serv_requests();
for (iter = strmap_iter_init(last_hid_serv_requests);
!strmap_iter_done(iter); ) {
const char *key;
@@ -384,6 +459,26 @@ directory_clean_last_hid_serv_requests(void)
}
}
+/** Purge the history of request times to hidden service directories,
+ * so that future lookups of an HS descriptor will not fail because we
+ * accessed all of the HSDir relays responsible for the descriptor
+ * recently. */
+void
+rend_client_purge_last_hid_serv_requests(void)
+{
+ /* Don't create the table if it doesn't exist yet (and it may very
+ * well not exist if the user hasn't accessed any HSes)... */
+ strmap_t *old_last_hid_serv_requests = last_hid_serv_requests_;
+ /* ... and let get_last_hid_serv_requests re-create it for us if
+ * necessary. */
+ last_hid_serv_requests_ = NULL;
+
+ if (old_last_hid_serv_requests != NULL) {
+ log_info(LD_REND, "Purging client last-HS-desc-request-time table");
+ strmap_free(old_last_hid_serv_requests, _tor_free);
+ }
+}
+
/** Determine the responsible hidden service directories for <b>desc_id</b>
* and fetch the descriptor belonging to that ID from one of them. Only
* send a request to hidden service directories that we did not try within
@@ -403,14 +498,16 @@ directory_get_from_hs_dir(const char *desc_id, const rend_data_t *rend_query)
tor_assert(rend_query);
/* Determine responsible dirs. Even if we can't get all we want,
* work with the ones we have. If it's empty, we'll notice below. */
- (int) hid_serv_get_responsible_directories(responsible_dirs, desc_id);
+ hid_serv_get_responsible_directories(responsible_dirs, desc_id);
base32_encode(desc_id_base32, sizeof(desc_id_base32),
desc_id, DIGEST_LEN);
/* Only select those hidden service directories to which we did not send
* a request recently and for which we have a router descriptor here. */
- directory_clean_last_hid_serv_requests(); /* Clean request history first. */
+
+ /* Clean request history first. */
+ directory_clean_last_hid_serv_requests(now);
SMARTLIST_FOREACH(responsible_dirs, routerstatus_t *, dir, {
if (lookup_last_hid_serv_request(dir, desc_id_base32, 0, 0) +
@@ -458,12 +555,12 @@ directory_get_from_hs_dir(const char *desc_id, const rend_data_t *rend_query)
log_info(LD_REND, "Sending fetch request for v2 descriptor for "
"service '%s' with descriptor ID '%s', auth type %d, "
"and descriptor cookie '%s' to hidden service "
- "directory '%s' on port %d.",
+ "directory %s",
rend_query->onion_address, desc_id_base32,
rend_query->auth_type,
(rend_query->auth_type == REND_NO_AUTH ? "[none]" :
- escaped_safe_str_client(descriptor_cookie_base64)),
- hs_dir->nickname, hs_dir->dir_port);
+ escaped_safe_str_client(descriptor_cookie_base64)),
+ routerstatus_describe(hs_dir));
return 1;
}
@@ -522,8 +619,44 @@ rend_client_refetch_v2_renddesc(const rend_data_t *rend_query)
return;
}
+/** Cancel all rendezvous descriptor fetches currently in progress.
+ */
+void
+rend_client_cancel_descriptor_fetches(void)
+{
+ smartlist_t *connection_array = get_connection_array();
+
+ SMARTLIST_FOREACH_BEGIN(connection_array, connection_t *, conn) {
+ if (conn->type == CONN_TYPE_DIR &&
+ (conn->purpose == DIR_PURPOSE_FETCH_RENDDESC ||
+ conn->purpose == DIR_PURPOSE_FETCH_RENDDESC_V2)) {
+ /* It's a rendezvous descriptor fetch in progress -- cancel it
+ * by marking the connection for close.
+ *
+ * Even if this connection has already reached EOF, this is
+ * enough to make sure that if the descriptor hasn't been
+ * processed yet, it won't be. See the end of
+ * connection_handle_read; connection_reached_eof (indirectly)
+ * processes whatever response the connection received. */
+
+ const rend_data_t *rd = (TO_DIR_CONN(conn))->rend_data;
+ if (!rd) {
+ log_warn(LD_BUG | LD_REND,
+ "Marking for close dir conn fetching rendezvous "
+ "descriptor for unknown service!");
+ } else {
+ log_debug(LD_REND, "Marking for close dir conn fetching "
+ "rendezvous descriptor for service %s",
+ safe_str(rd->onion_address));
+ }
+ connection_mark_for_close(conn);
+ }
+ } SMARTLIST_FOREACH_END(conn);
+}
+
/** Remove failed_intro from ent. If ent now has no intro points, or
* service is unrecognized, then launch a new renddesc fetch.
+
*
* Return -1 if error, 0 if no intro points remain or service
* unrecognized, 1 if recognized and some intro points remain.
@@ -551,7 +684,7 @@ rend_client_remove_intro_point(extend_info_t *failed_intro,
for (i = 0; i < smartlist_len(ent->parsed->intro_nodes); i++) {
rend_intro_point_t *intro = smartlist_get(ent->parsed->intro_nodes, i);
- if (!memcmp(failed_intro->identity_digest,
+ if (tor_memeq(failed_intro->identity_digest,
intro->extend_info->identity_digest, DIGEST_LEN)) {
rend_intro_point_free(intro);
smartlist_del(ent->parsed->intro_nodes, i);
@@ -559,7 +692,7 @@ rend_client_remove_intro_point(extend_info_t *failed_intro,
}
}
- if (smartlist_len(ent->parsed->intro_nodes) == 0) {
+ if (! rend_client_any_intro_points_usable(ent)) {
log_info(LD_REND,
"No more intro points remain for %s. Re-fetching descriptor.",
escaped_safe_str_client(rend_query->onion_address));
@@ -584,7 +717,7 @@ rend_client_remove_intro_point(extend_info_t *failed_intro,
* the circuit to C_REND_READY.
*/
int
-rend_client_rendezvous_acked(origin_circuit_t *circ, const char *request,
+rend_client_rendezvous_acked(origin_circuit_t *circ, const uint8_t *request,
size_t request_len)
{
(void) request;
@@ -599,7 +732,10 @@ rend_client_rendezvous_acked(origin_circuit_t *circ, const char *request,
log_info(LD_REND,"Got rendezvous ack. This circuit is now ready for "
"rendezvous.");
circ->_base.purpose = CIRCUIT_PURPOSE_C_REND_READY;
- /* XXXX022 This is a pretty brute-force approach. It'd be better to
+ /* Set timestamp_dirty, because circuit_expire_building expects it
+ * to specify when a circuit entered the _C_REND_READY state. */
+ circ->_base.timestamp_dirty = time(NULL);
+ /* XXXX023 This is a pretty brute-force approach. It'd be better to
* attach only the connections that are waiting on this circuit, rather
* than trying to attach them all. See comments bug 743. */
/* If we already have the introduction circuit built, make sure we send
@@ -610,7 +746,7 @@ rend_client_rendezvous_acked(origin_circuit_t *circ, const char *request,
/** Bob sent us a rendezvous cell; join the circuits. */
int
-rend_client_receive_rendezvous(origin_circuit_t *circ, const char *request,
+rend_client_receive_rendezvous(origin_circuit_t *circ, const uint8_t *request,
size_t request_len)
{
crypt_path_t *hop;
@@ -638,9 +774,10 @@ rend_client_receive_rendezvous(origin_circuit_t *circ, const char *request,
tor_assert(circ->build_state->pending_final_cpath);
hop = circ->build_state->pending_final_cpath;
tor_assert(hop->dh_handshake_state);
- if (crypto_dh_compute_secret(LOG_PROTOCOL_WARN, hop->dh_handshake_state,
- request, DH_KEY_LEN, keys,
- DIGEST_LEN+CPATH_KEY_MATERIAL_LEN)<0) {
+ if (crypto_dh_compute_secret(LOG_PROTOCOL_WARN,
+ hop->dh_handshake_state, (char*)request,
+ DH_KEY_LEN,
+ keys, DIGEST_LEN+CPATH_KEY_MATERIAL_LEN)<0) {
log_warn(LD_GENERAL, "Couldn't complete DH handshake.");
goto err;
}
@@ -649,7 +786,7 @@ rend_client_receive_rendezvous(origin_circuit_t *circ, const char *request,
goto err;
/* Check whether the digest is right... */
- if (memcmp(keys, request+DH_KEY_LEN, DIGEST_LEN)) {
+ if (tor_memneq(keys, request+DH_KEY_LEN, DIGEST_LEN)) {
log_warn(LD_PROTOCOL, "Incorrect digest of key material.");
goto err;
}
@@ -668,12 +805,14 @@ rend_client_receive_rendezvous(origin_circuit_t *circ, const char *request,
onion_append_to_cpath(&circ->cpath, hop);
circ->build_state->pending_final_cpath = NULL; /* prevent double-free */
- /* XXXX022 This is a pretty brute-force approach. It'd be better to
+ /* XXXX023 This is a pretty brute-force approach. It'd be better to
* attach only the connections that are waiting on this circuit, rather
* than trying to attach them all. See comments bug 743. */
connection_ap_attach_pending();
+ memset(keys, 0, sizeof(keys));
return 0;
err:
+ memset(keys, 0, sizeof(keys));
circuit_mark_for_close(TO_CIRCUIT(circ), END_CIRC_REASON_TORPROTOCOL);
return -1;
}
@@ -702,7 +841,7 @@ rend_client_desc_trynow(const char *query)
assert_connection_ok(TO_CONN(conn), now);
if (rend_cache_lookup_entry(conn->rend_data->onion_address, -1,
&entry) == 1 &&
- smartlist_len(entry->parsed->intro_nodes) > 0) {
+ rend_client_any_intro_points_usable(entry)) {
/* either this fetch worked, or it failed but there was a
* valid entry from before which we should reuse */
log_info(LD_REND,"Rend desc is usable. Launching circuits.");
@@ -736,23 +875,62 @@ rend_client_desc_trynow(const char *query)
extend_info_t *
rend_client_get_random_intro(const rend_data_t *rend_query)
{
- int i;
+ extend_info_t *result;
rend_cache_entry_t *entry;
- rend_intro_point_t *intro;
if (rend_cache_lookup_entry(rend_query->onion_address, -1, &entry) < 1) {
- log_warn(LD_REND,
- "Query '%s' didn't have valid rend desc in cache. Failing.",
- safe_str_client(rend_query->onion_address));
+ log_warn(LD_REND,
+ "Query '%s' didn't have valid rend desc in cache. Failing.",
+ safe_str_client(rend_query->onion_address));
return NULL;
}
+ /* See if we can get a node that complies with ExcludeNodes */
+ if ((result = rend_client_get_random_intro_impl(entry, 1, 1)))
+ return result;
+ /* If not, and StrictNodes is not set, see if we can return any old node
+ */
+ if (!get_options()->StrictNodes)
+ return rend_client_get_random_intro_impl(entry, 0, 1);
+ return NULL;
+}
+
+/** As rend_client_get_random_intro, except assume that StrictNodes is set
+ * iff <b>strict</b> is true. If <b>warnings</b> is false, don't complain
+ * to the user when we're out of nodes, even if StrictNodes is true.
+ */
+static extend_info_t *
+rend_client_get_random_intro_impl(const rend_cache_entry_t *entry,
+ const int strict,
+ const int warnings)
+{
+ int i;
+
+ rend_intro_point_t *intro;
+ const or_options_t *options = get_options();
+ smartlist_t *usable_nodes;
+ int n_excluded = 0;
+
+ /* We'll keep a separate list of the usable nodes. If this becomes empty,
+ * no nodes are usable. */
+ usable_nodes = smartlist_create();
+ smartlist_add_all(usable_nodes, entry->parsed->intro_nodes);
+
again:
- if (smartlist_len(entry->parsed->intro_nodes) == 0)
+ if (smartlist_len(usable_nodes) == 0) {
+ if (n_excluded && get_options()->StrictNodes && warnings) {
+ /* We only want to warn if StrictNodes is really set. Otherwise
+ * we're just about to retry anyways.
+ */
+ log_warn(LD_REND, "All introduction points for hidden service are "
+ "at excluded relays, and StrictNodes is set. Skipping.");
+ }
+ smartlist_free(usable_nodes);
return NULL;
+ }
- i = crypto_rand_int(smartlist_len(entry->parsed->intro_nodes));
- intro = smartlist_get(entry->parsed->intro_nodes, i);
+ i = crypto_rand_int(smartlist_len(usable_nodes));
+ intro = smartlist_get(usable_nodes, i);
/* Do we need to look up the router or is the extend info complete? */
if (!intro->extend_info->onion_key) {
const node_t *node;
@@ -763,16 +941,34 @@ rend_client_get_random_intro(const rend_data_t *rend_query)
if (!node) {
log_info(LD_REND, "Unknown router with nickname '%s'; trying another.",
intro->extend_info->nickname);
- rend_intro_point_free(intro);
- smartlist_del(entry->parsed->intro_nodes, i);
+ smartlist_del(usable_nodes, i);
goto again;
}
extend_info_free(intro->extend_info);
intro->extend_info = extend_info_from_node(node);
}
+ /* Check if we should refuse to talk to this router. */
+ if (strict &&
+ routerset_contains_extendinfo(options->ExcludeNodes,
+ intro->extend_info)) {
+ n_excluded++;
+ smartlist_del(usable_nodes, i);
+ goto again;
+ }
+
+ smartlist_free(usable_nodes);
return extend_info_dup(intro->extend_info);
}
+/** Return true iff any introduction points still listed in <b>entry</b> are
+ * usable. */
+int
+rend_client_any_intro_points_usable(const rend_cache_entry_t *entry)
+{
+ return rend_client_get_random_intro_impl(
+ entry, get_options()->StrictNodes, 0) != NULL;
+}
+
/** Client-side authorizations for hidden services; map of onion address to
* rend_service_authorization_t*. */
static strmap_t *auth_hid_servs = NULL;
@@ -818,7 +1014,8 @@ rend_service_authorization_free_all(void)
* service and add it to the local map of hidden service authorizations.
* Return 0 for success and -1 for failure. */
int
-rend_parse_service_authorization(or_options_t *options, int validate_only)
+rend_parse_service_authorization(const or_options_t *options,
+ int validate_only)
{
config_line_t *line;
int res = -1;
diff --git a/src/or/rendclient.h b/src/or/rendclient.h
index 842fe0b8ce..1893fd9523 100644
--- a/src/or/rendclient.h
+++ b/src/or/rendclient.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -12,24 +12,32 @@
#ifndef _TOR_RENDCLIENT_H
#define _TOR_RENDCLIENT_H
+void rend_client_purge_state(void);
+
void rend_client_introcirc_has_opened(origin_circuit_t *circ);
void rend_client_rendcirc_has_opened(origin_circuit_t *circ);
-int rend_client_introduction_acked(origin_circuit_t *circ, const char *request,
+int rend_client_introduction_acked(origin_circuit_t *circ,
+ const uint8_t *request,
size_t request_len);
void rend_client_refetch_v2_renddesc(const rend_data_t *rend_query);
+void rend_client_cancel_descriptor_fetches(void);
+void rend_client_purge_last_hid_serv_requests(void);
int rend_client_remove_intro_point(extend_info_t *failed_intro,
const rend_data_t *rend_query);
-int rend_client_rendezvous_acked(origin_circuit_t *circ, const char *request,
+int rend_client_rendezvous_acked(origin_circuit_t *circ,
+ const uint8_t *request,
size_t request_len);
-int rend_client_receive_rendezvous(origin_circuit_t *circ, const char *request,
+int rend_client_receive_rendezvous(origin_circuit_t *circ,
+ const uint8_t *request,
size_t request_len);
void rend_client_desc_trynow(const char *query);
extend_info_t *rend_client_get_random_intro(const rend_data_t *rend_query);
+int rend_client_any_intro_points_usable(const rend_cache_entry_t *entry);
int rend_client_send_introduction(origin_circuit_t *introcirc,
origin_circuit_t *rendcirc);
-int rend_parse_service_authorization(or_options_t *options,
+int rend_parse_service_authorization(const or_options_t *options,
int validate_only);
rend_service_authorization_t *rend_client_lookup_service_authorization(
const char *onion_address);
diff --git a/src/or/rendcommon.c b/src/or/rendcommon.c
index ec6680b1e6..94bb002210 100644
--- a/src/or/rendcommon.c
+++ b/src/or/rendcommon.c
@@ -1,5 +1,5 @@
/* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -814,14 +814,13 @@ rend_cache_free_all(void)
/** Removes all old entries from the service descriptor cache.
*/
void
-rend_cache_clean(void)
+rend_cache_clean(time_t now)
{
strmap_iter_t *iter;
const char *key;
void *val;
rend_cache_entry_t *ent;
- time_t cutoff;
- cutoff = time(NULL) - REND_CACHE_MAX_AGE - REND_CACHE_MAX_SKEW;
+ time_t cutoff = now - REND_CACHE_MAX_AGE - REND_CACHE_MAX_SKEW;
for (iter = strmap_iter_init(rend_cache); !strmap_iter_done(iter); ) {
strmap_iter_get(iter, &key, &val);
ent = (rend_cache_entry_t*)val;
@@ -834,13 +833,25 @@ rend_cache_clean(void)
}
}
+/** Remove ALL entries from the rendezvous service descriptor cache.
+ */
+void
+rend_cache_purge(void)
+{
+ if (rend_cache) {
+ log_info(LD_REND, "Purging client/v0-HS-authority HS descriptor cache");
+ strmap_free(rend_cache, _rend_cache_entry_free);
+ }
+ rend_cache = strmap_new();
+}
+
/** Remove all old v2 descriptors and those for which this hidden service
* directory is not responsible for any more. */
void
-rend_cache_clean_v2_descs_as_dir(void)
+rend_cache_clean_v2_descs_as_dir(time_t now)
{
digestmap_iter_t *iter;
- time_t cutoff = time(NULL) - REND_CACHE_MAX_AGE - REND_CACHE_MAX_SKEW;
+ time_t cutoff = now - REND_CACHE_MAX_AGE - REND_CACHE_MAX_SKEW;
for (iter = digestmap_iter_init(rend_cache_v2_dir);
!digestmap_iter_done(iter); ) {
const char *key;
@@ -875,15 +886,15 @@ rend_id_is_in_interval(const char *a, const char *b, const char *c)
tor_assert(c);
/* There are five cases in which a is outside the interval ]b,c]: */
- a_b = memcmp(a,b,DIGEST_LEN);
+ a_b = tor_memcmp(a,b,DIGEST_LEN);
if (a_b == 0)
return 0; /* 1. a == b (b is excluded) */
- b_c = memcmp(b,c,DIGEST_LEN);
+ b_c = tor_memcmp(b,c,DIGEST_LEN);
if (b_c == 0)
return 0; /* 2. b == c (interval is empty) */
else if (a_b <= 0 && b_c < 0)
return 0; /* 3. a b c */
- c_a = memcmp(c,a,DIGEST_LEN);
+ c_a = tor_memcmp(c,a,DIGEST_LEN);
if (c_a < 0 && a_b <= 0)
return 0; /* 4. c a b */
else if (b_c < 0 && c_a < 0)
@@ -932,9 +943,9 @@ rend_cache_lookup_entry(const char *query, int version, rend_cache_entry_t **e)
if (!*e)
return 0;
tor_assert((*e)->parsed && (*e)->parsed->intro_nodes);
- /* XXX022 hack for now, to return "not found" if there are no intro
+ /* XXX023 hack for now, to return "not found" if there are no intro
* points remaining. See bug 997. */
- if (smartlist_len((*e)->parsed->intro_nodes) == 0)
+ if (! rend_client_any_intro_points_usable(*e))
return 0;
return 1;
}
@@ -972,15 +983,10 @@ rend_cache_lookup_v2_desc_as_dir(const char *desc_id, const char **desc)
tor_assert(rend_cache_v2_dir);
if (base32_decode(desc_id_digest, DIGEST_LEN,
desc_id, REND_DESC_ID_V2_LEN_BASE32) < 0) {
- log_warn(LD_REND, "Descriptor ID contains illegal characters: %s",
- safe_str(desc_id));
- return -1;
- }
- /* Determine if we are responsible. */
- if (hid_serv_responsible_for_desc_id(desc_id_digest) < 0) {
- log_info(LD_REND, "Could not answer fetch request for v2 descriptor; "
- "either we are no hidden service directory, or we are "
- "not responsible for the requested ID.");
+ log_fn(LOG_PROTOCOL_WARN, LD_REND,
+ "Rejecting v2 rendezvous descriptor request -- descriptor ID "
+ "contains illegal characters: %s",
+ safe_str(desc_id));
return -1;
}
/* Lookup descriptor and return. */
@@ -1005,9 +1011,14 @@ rend_cache_lookup_v2_desc_as_dir(const char *desc_id, const char **desc)
*
* The published flag tells us if we store the descriptor
* in our role as directory (1) or if we cache it as client (0).
+ *
+ * If <b>service_id</b> is non-NULL and the descriptor is not for that
+ * service ID, reject it. <b>service_id</b> must be specified if and
+ * only if <b>published</b> is 0 (we fetched this descriptor).
*/
int
-rend_cache_store(const char *desc, size_t desc_len, int published)
+rend_cache_store(const char *desc, size_t desc_len, int published,
+ const char *service_id)
{
rend_cache_entry_t *e;
rend_service_descriptor_t *parsed;
@@ -1025,6 +1036,13 @@ rend_cache_store(const char *desc, size_t desc_len, int published)
rend_service_descriptor_free(parsed);
return -2;
}
+ if ((service_id != NULL) && strcmp(query, service_id)) {
+ log_warn(LD_REND, "Received service descriptor for service ID %s; "
+ "expected descriptor for service ID %s.",
+ query, safe_str(service_id));
+ rend_service_descriptor_free(parsed);
+ return -2;
+ }
now = time(NULL);
if (parsed->timestamp < now-REND_CACHE_MAX_AGE-REND_CACHE_MAX_SKEW) {
log_fn(LOG_PROTOCOL_WARN, LD_REND,
@@ -1057,7 +1075,7 @@ rend_cache_store(const char *desc, size_t desc_len, int published)
rend_service_descriptor_free(parsed);
return 0;
}
- if (e && e->len == desc_len && !memcmp(desc,e->desc,desc_len)) {
+ if (e && e->len == desc_len && tor_memeq(desc,e->desc,desc_len)) {
log_info(LD_REND,"We already have this service descriptor %s.",
safe_str_client(query));
e->received = time(NULL);
@@ -1205,6 +1223,8 @@ rend_cache_store_v2_desc_as_dir(const char *desc)
* If we have an older descriptor with the same ID, replace it.
* If we have any v0 descriptor with the same ID, reject this one in order
* to not get confused with having both versions for the same service.
+ * If the descriptor's service ID does not match
+ * <b>rend_query</b>-\>onion_address, reject it.
* Return -2 if it's malformed or otherwise rejected; return -1 if we
* already have a v0 descriptor here; return 0 if it's the same or older
* than one we've already got; return 1 if it's novel.
@@ -1255,6 +1275,13 @@ rend_cache_store_v2_desc_as_client(const char *desc,
retval = -2;
goto err;
}
+ if (strcmp(rend_query->onion_address, service_id)) {
+ log_warn(LD_REND, "Received service descriptor for service ID %s; "
+ "expected descriptor for service ID %s.",
+ service_id, safe_str(rend_query->onion_address));
+ retval = -2;
+ goto err;
+ }
/* Decode/decrypt introduction points. */
if (intro_content) {
if (rend_query->auth_type != REND_NO_AUTH &&
@@ -1358,7 +1385,7 @@ rend_cache_store_v2_desc_as_client(const char *desc,
void
rend_process_relay_cell(circuit_t *circ, const crypt_path_t *layer_hint,
int command, size_t length,
- const char *payload)
+ const uint8_t *payload)
{
or_circuit_t *or_circ = NULL;
origin_circuit_t *origin_circ = NULL;
diff --git a/src/or/rendcommon.h b/src/or/rendcommon.h
index 00705022a2..0d64466dbe 100644
--- a/src/or/rendcommon.h
+++ b/src/or/rendcommon.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -22,7 +22,8 @@ rend_data_free(rend_data_t *data)
int rend_cmp_service_ids(const char *one, const char *two);
void rend_process_relay_cell(circuit_t *circ, const crypt_path_t *layer_hint,
- int command, size_t length, const char *payload);
+ int command, size_t length,
+ const uint8_t *payload);
void rend_service_descriptor_free(rend_service_descriptor_t *desc);
rend_service_descriptor_t *rend_parse_service_descriptor(const char *str,
@@ -33,8 +34,9 @@ void rend_encoded_v2_service_descriptor_free(
void rend_intro_point_free(rend_intro_point_t *intro);
void rend_cache_init(void);
-void rend_cache_clean(void);
-void rend_cache_clean_v2_descs_as_dir(void);
+void rend_cache_clean(time_t now);
+void rend_cache_clean_v2_descs_as_dir(time_t now);
+void rend_cache_purge(void);
void rend_cache_free_all(void);
int rend_valid_service_id(const char *query);
int rend_cache_lookup_desc(const char *query, int version, const char **desc,
@@ -42,7 +44,8 @@ int rend_cache_lookup_desc(const char *query, int version, const char **desc,
int rend_cache_lookup_entry(const char *query, int version,
rend_cache_entry_t **entry_out);
int rend_cache_lookup_v2_desc_as_dir(const char *query, const char **desc);
-int rend_cache_store(const char *desc, size_t desc_len, int published);
+int rend_cache_store(const char *desc, size_t desc_len, int published,
+ const char *service_id);
int rend_cache_store_v2_desc_as_client(const char *desc,
const rend_data_t *rend_query);
int rend_cache_store_v2_desc_as_dir(const char *desc);
diff --git a/src/or/rendmid.c b/src/or/rendmid.c
index d392f8e53a..04edd8e3e2 100644
--- a/src/or/rendmid.c
+++ b/src/or/rendmid.c
@@ -1,5 +1,5 @@
/* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -18,7 +18,7 @@
* setting the circuit's purpose and service pk digest.
*/
int
-rend_mid_establish_intro(or_circuit_t *circ, const char *request,
+rend_mid_establish_intro(or_circuit_t *circ, const uint8_t *request,
size_t request_len)
{
crypto_pk_env_t *pk = NULL;
@@ -48,7 +48,7 @@ rend_mid_establish_intro(or_circuit_t *circ, const char *request,
/* Next asn1len bytes: asn1-encoded key. */
if (request_len < 2+DIGEST_LEN+asn1len)
goto truncated;
- pk = crypto_pk_asn1_decode(request+2, asn1len);
+ pk = crypto_pk_asn1_decode((char*)(request+2), asn1len);
if (!pk) {
reason = END_CIRC_REASON_TORPROTOCOL;
log_warn(LD_PROTOCOL, "Couldn't decode public key.");
@@ -62,15 +62,16 @@ rend_mid_establish_intro(or_circuit_t *circ, const char *request,
log_warn(LD_BUG, "Internal error computing digest.");
goto err;
}
- if (memcmp(expected_digest, request+2+asn1len, DIGEST_LEN)) {
+ if (tor_memneq(expected_digest, request+2+asn1len, DIGEST_LEN)) {
log_warn(LD_PROTOCOL, "Hash of session info was not as expected.");
reason = END_CIRC_REASON_TORPROTOCOL;
goto err;
}
/* Rest of body: signature of previous data */
note_crypto_pk_op(REND_MID);
- if (crypto_pk_public_checksig_digest(pk, request, 2+asn1len+DIGEST_LEN,
- request+2+DIGEST_LEN+asn1len,
+ if (crypto_pk_public_checksig_digest(pk,
+ (char*)request, 2+asn1len+DIGEST_LEN,
+ (char*)(request+2+DIGEST_LEN+asn1len),
request_len-(2+DIGEST_LEN+asn1len))<0) {
log_warn(LD_PROTOCOL,
"Incorrect signature on ESTABLISH_INTRO cell; rejecting.");
@@ -130,7 +131,8 @@ rend_mid_establish_intro(or_circuit_t *circ, const char *request,
* INTRODUCE2 cell.
*/
int
-rend_mid_introduce(or_circuit_t *circ, const char *request, size_t request_len)
+rend_mid_introduce(or_circuit_t *circ, const uint8_t *request,
+ size_t request_len)
{
or_circuit_t *intro_circ;
char serviceid[REND_SERVICE_ID_LEN_BASE32+1];
@@ -159,10 +161,10 @@ rend_mid_introduce(or_circuit_t *circ, const char *request, size_t request_len)
}
base32_encode(serviceid, REND_SERVICE_ID_LEN_BASE32+1,
- request, REND_SERVICE_ID_LEN);
+ (char*)request, REND_SERVICE_ID_LEN);
/* The first 20 bytes are all we look at: they have a hash of Bob's PK. */
- intro_circ = circuit_get_intro_point(request);
+ intro_circ = circuit_get_intro_point((char*)request);
if (!intro_circ) {
log_info(LD_REND,
"No intro circ found for INTRODUCE1 cell (%s) from circuit %d; "
@@ -180,7 +182,7 @@ rend_mid_introduce(or_circuit_t *circ, const char *request, size_t request_len)
/* Great. Now we just relay the cell down the circuit. */
if (relay_send_command_from_edge(0, TO_CIRCUIT(intro_circ),
RELAY_COMMAND_INTRODUCE2,
- request, request_len, NULL)) {
+ (char*)request, request_len, NULL)) {
log_warn(LD_GENERAL,
"Unable to send INTRODUCE2 cell to Tor client.");
goto err;
@@ -212,7 +214,7 @@ rend_mid_introduce(or_circuit_t *circ, const char *request, size_t request_len)
* rendezvous cookie.
*/
int
-rend_mid_establish_rendezvous(or_circuit_t *circ, const char *request,
+rend_mid_establish_rendezvous(or_circuit_t *circ, const uint8_t *request,
size_t request_len)
{
char hexid[9];
@@ -232,7 +234,7 @@ rend_mid_establish_rendezvous(or_circuit_t *circ, const char *request,
goto err;
}
- if (circuit_get_rendezvous(request)) {
+ if (circuit_get_rendezvous((char*)request)) {
log_warn(LD_PROTOCOL,
"Duplicate rendezvous cookie in ESTABLISH_RENDEZVOUS.");
goto err;
@@ -250,7 +252,7 @@ rend_mid_establish_rendezvous(or_circuit_t *circ, const char *request,
circ->_base.purpose = CIRCUIT_PURPOSE_REND_POINT_WAITING;
memcpy(circ->rend_token, request, REND_COOKIE_LEN);
- base16_encode(hexid,9,request,4);
+ base16_encode(hexid,9,(char*)request,4);
log_info(LD_REND,
"Established rendezvous point on circuit %d for cookie %s",
@@ -267,13 +269,13 @@ rend_mid_establish_rendezvous(or_circuit_t *circ, const char *request,
* connecting the two circuits.
*/
int
-rend_mid_rendezvous(or_circuit_t *circ, const char *request,
+rend_mid_rendezvous(or_circuit_t *circ, const uint8_t *request,
size_t request_len)
{
or_circuit_t *rend_circ;
char hexid[9];
int reason = END_CIRC_REASON_INTERNAL;
- base16_encode(hexid,9,request,request_len<4?request_len:4);
+ base16_encode(hexid,9,(char*)request,request_len<4?request_len:4);
if (request_len>=4) {
log_info(LD_REND,
@@ -297,7 +299,7 @@ rend_mid_rendezvous(or_circuit_t *circ, const char *request,
goto err;
}
- rend_circ = circuit_get_rendezvous(request);
+ rend_circ = circuit_get_rendezvous((char*)request);
if (!rend_circ) {
log_fn(LOG_PROTOCOL_WARN, LD_PROTOCOL,
"Rejecting RENDEZVOUS1 cell with unrecognized rendezvous cookie %s.",
@@ -309,7 +311,7 @@ rend_mid_rendezvous(or_circuit_t *circ, const char *request,
/* Send the RENDEZVOUS2 cell to Alice. */
if (relay_send_command_from_edge(0, TO_CIRCUIT(rend_circ),
RELAY_COMMAND_RENDEZVOUS2,
- request+REND_COOKIE_LEN,
+ (char*)(request+REND_COOKIE_LEN),
request_len-REND_COOKIE_LEN, NULL)) {
log_warn(LD_GENERAL,
"Unable to send RENDEZVOUS2 cell to client on circuit %d.",
diff --git a/src/or/rendmid.h b/src/or/rendmid.h
index 4d08d4c8b9..5ed87fd2b1 100644
--- a/src/or/rendmid.h
+++ b/src/or/rendmid.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -12,13 +12,13 @@
#ifndef _TOR_RENDMID_H
#define _TOR_RENDMID_H
-int rend_mid_establish_intro(or_circuit_t *circ, const char *request,
+int rend_mid_establish_intro(or_circuit_t *circ, const uint8_t *request,
size_t request_len);
-int rend_mid_introduce(or_circuit_t *circ, const char *request,
+int rend_mid_introduce(or_circuit_t *circ, const uint8_t *request,
size_t request_len);
-int rend_mid_establish_rendezvous(or_circuit_t *circ, const char *request,
+int rend_mid_establish_rendezvous(or_circuit_t *circ, const uint8_t *request,
size_t request_len);
-int rend_mid_rendezvous(or_circuit_t *circ, const char *request,
+int rend_mid_rendezvous(or_circuit_t *circ, const uint8_t *request,
size_t request_len);
#endif
diff --git a/src/or/rendservice.c b/src/or/rendservice.c
index 0f63776ef2..47a9fc7276 100644
--- a/src/or/rendservice.c
+++ b/src/or/rendservice.c
@@ -1,5 +1,5 @@
/* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -182,6 +182,31 @@ rend_add_service(rend_service_t *service)
log_warn(LD_CONFIG, "Hidden service with no ports configured; ignoring.");
rend_service_free(service);
} else {
+ int dupe = 0;
+ /* XXX This duplicate check has two problems:
+ *
+ * a) It's O(n^2), but the same comment from the bottom of
+ * rend_config_services() should apply.
+ *
+ * b) We only compare directory paths as strings, so we can't
+ * detect two distinct paths that specify the same directory
+ * (which can arise from symlinks, case-insensitivity, bind
+ * mounts, etc.).
+ *
+ * It also can't detect that two separate Tor instances are trying
+ * to use the same HiddenServiceDir; for that, we would need a
+ * lock file. But this is enough to detect a simple mistake that
+ * at least one person has actually made.
+ */
+ SMARTLIST_FOREACH(rend_service_list, rend_service_t*, ptr,
+ dupe = dupe ||
+ !strcmp(ptr->directory, service->directory));
+ if (dupe) {
+ log_warn(LD_REND, "Another hidden service is already configured for "
+ "directory %s, ignoring.", service->directory);
+ rend_service_free(service);
+ return;
+ }
smartlist_add(rend_service_list, service);
log_debug(LD_REND,"Configuring service with directory \"%s\"",
service->directory);
@@ -267,7 +292,7 @@ parse_port_config(const char *string)
* normal, but don't actually change the configured services.)
*/
int
-rend_config_services(or_options_t *options, int validate_only)
+rend_config_services(const or_options_t *options, int validate_only)
{
config_line_t *line;
rend_service_t *service = NULL;
@@ -466,7 +491,7 @@ rend_config_services(or_options_t *options, int validate_only)
int keep_it = 0;
tor_assert(oc->rend_data);
SMARTLIST_FOREACH(surviving_services, rend_service_t *, ptr, {
- if (!memcmp(ptr->pk_digest, oc->rend_data->rend_pk_digest,
+ if (tor_memeq(ptr->pk_digest, oc->rend_data->rend_pk_digest,
DIGEST_LEN)) {
keep_it = 1;
break;
@@ -475,7 +500,8 @@ rend_config_services(or_options_t *options, int validate_only)
if (keep_it)
continue;
log_info(LD_REND, "Closing intro point %s for service %s.",
- safe_str_client(oc->build_state->chosen_exit->nickname),
+ safe_str_client(extend_info_describe(
+ oc->build_state->chosen_exit)),
oc->rend_data->onion_address);
circuit_mark_for_close(circ, END_CIRC_REASON_FINISHED);
/* XXXX Is there another reason we should use here? */
@@ -544,7 +570,7 @@ rend_service_load_keys(void)
s->directory);
/* Check/create directory */
- if (check_private_dir(s->directory, CPD_CREATE) < 0)
+ if (check_private_dir(s->directory, CPD_CREATE, get_options()->User) < 0)
return -1;
/* Load key */
@@ -761,7 +787,7 @@ static rend_service_t *
rend_service_get_by_pk_digest(const char* digest)
{
SMARTLIST_FOREACH(rend_service_list, rend_service_t*, s,
- if (!memcmp(s->pk_digest,digest,DIGEST_LEN))
+ if (tor_memeq(s->pk_digest,digest,DIGEST_LEN))
return s);
return NULL;
}
@@ -801,7 +827,7 @@ rend_check_authorization(rend_service_t *service,
/* Look up client authorization by descriptor cookie. */
SMARTLIST_FOREACH(service->clients, rend_authorized_client_t *, client, {
- if (!memcmp(client->descriptor_cookie, descriptor_cookie,
+ if (tor_memeq(client->descriptor_cookie, descriptor_cookie,
REND_DESC_COOKIE_LEN)) {
auth_client = client;
break;
@@ -849,8 +875,9 @@ clean_accepted_intros(rend_service_t *service, time_t now)
/** Respond to an INTRODUCE2 cell by launching a circuit to the chosen
* rendezvous point.
*/
+ /* XXX022 this function sure could use some organizing. -RD */
int
-rend_service_introduce(origin_circuit_t *circuit, const char *request,
+rend_service_introduce(origin_circuit_t *circuit, const uint8_t *request,
size_t request_len)
{
char *ptr, *r_cookie;
@@ -876,6 +903,9 @@ rend_service_introduce(origin_circuit_t *circuit, const char *request,
time_t now = time(NULL);
char diffie_hellman_hash[DIGEST_LEN];
time_t *access_time;
+ const or_options_t *options = get_options();
+
+ tor_assert(!(circuit->build_state->onehop_tunnel));
tor_assert(circuit->rend_data);
base32_encode(serviceid, REND_SERVICE_ID_LEN_BASE32+1,
@@ -912,9 +942,9 @@ rend_service_introduce(origin_circuit_t *circuit, const char *request,
/* first DIGEST_LEN bytes of request is intro or service pk digest */
crypto_pk_get_digest(intro_key, intro_key_digest);
- if (memcmp(intro_key_digest, request, DIGEST_LEN)) {
+ if (tor_memneq(intro_key_digest, request, DIGEST_LEN)) {
base32_encode(serviceid, REND_SERVICE_ID_LEN_BASE32+1,
- request, REND_SERVICE_ID_LEN);
+ (char*)request, REND_SERVICE_ID_LEN);
log_warn(LD_REND, "Got an INTRODUCE2 cell for the wrong service (%s).",
escaped(serviceid));
return -1;
@@ -929,7 +959,8 @@ rend_service_introduce(origin_circuit_t *circuit, const char *request,
/* Next N bytes is encrypted with service key */
note_crypto_pk_op(REND_SERVER);
r = crypto_pk_private_hybrid_decrypt(
- intro_key,buf,request+DIGEST_LEN,request_len-DIGEST_LEN,
+ intro_key,buf,sizeof(buf),
+ (char*)(request+DIGEST_LEN),request_len-DIGEST_LEN,
PK_PKCS1_OAEP_PADDING,1);
if (r<0) {
log_warn(LD_PROTOCOL, "Couldn't decrypt INTRODUCE2 cell.");
@@ -1047,6 +1078,15 @@ rend_service_introduce(origin_circuit_t *circuit, const char *request,
goto err;
}
+ /* Check if we'd refuse to talk to this router */
+ if (options->StrictNodes &&
+ routerset_contains_extendinfo(options->ExcludeNodes, extend_info)) {
+ log_warn(LD_REND, "Client asked to rendezvous at a relay that we "
+ "exclude, and StrictNodes is set. Refusing service.");
+ reason = END_CIRC_REASON_INTERNAL; /* XXX might leak why we refused */
+ goto err;
+ }
+
r_cookie = ptr;
base16_encode(hexcookie,9,r_cookie,4);
@@ -1100,7 +1140,7 @@ rend_service_introduce(origin_circuit_t *circuit, const char *request,
}
/* Try DH handshake... */
- dh = crypto_dh_new();
+ dh = crypto_dh_new(DH_TYPE_REND);
if (!dh || crypto_dh_generate_public(dh)<0) {
log_warn(LD_BUG,"Internal error: couldn't build DH state "
"or generate public key.");
@@ -1134,7 +1174,7 @@ rend_service_introduce(origin_circuit_t *circuit, const char *request,
if (!launched) { /* give up */
log_warn(LD_REND, "Giving up launching first hop of circuit to rendezvous "
"point %s for service %s.",
- escaped_safe_str_client(extend_info->nickname),
+ safe_str_client(extend_info_describe(extend_info)),
serviceid);
reason = END_CIRC_REASON_CONNECTFAILED;
goto err;
@@ -1142,7 +1182,7 @@ rend_service_introduce(origin_circuit_t *circuit, const char *request,
log_info(LD_REND,
"Accepted intro; launching circuit to %s "
"(cookie %s) for service %s.",
- escaped_safe_str_client(extend_info->nickname),
+ safe_str_client(extend_info_describe(extend_info)),
hexcookie, serviceid);
tor_assert(launched->build_state);
/* Fill in the circuit's state. */
@@ -1165,8 +1205,10 @@ rend_service_introduce(origin_circuit_t *circuit, const char *request,
memcpy(cpath->handshake_digest, keys, DIGEST_LEN);
if (extend_info) extend_info_free(extend_info);
+ memset(keys, 0, sizeof(keys));
return 0;
err:
+ memset(keys, 0, sizeof(keys));
if (dh) crypto_dh_free(dh);
if (launched)
circuit_mark_for_close(TO_CIRCUIT(launched), reason);
@@ -1192,7 +1234,8 @@ rend_service_relaunch_rendezvous(origin_circuit_t *oldcirc)
"Attempt to build circuit to %s for rendezvous has failed "
"too many times or expired; giving up.",
oldcirc->build_state ?
- oldcirc->build_state->chosen_exit->nickname : "*unknown*");
+ safe_str(extend_info_describe(oldcirc->build_state->chosen_exit))
+ : "*unknown*");
return;
}
@@ -1206,7 +1249,7 @@ rend_service_relaunch_rendezvous(origin_circuit_t *oldcirc)
}
log_info(LD_REND,"Reattempting rendezvous circuit to '%s'",
- oldstate->chosen_exit->nickname);
+ safe_str(extend_info_describe(oldstate->chosen_exit)));
newcirc = circuit_launch_by_extend_info(CIRCUIT_PURPOSE_S_CONNECT_REND,
oldstate->chosen_exit,
@@ -1214,7 +1257,7 @@ rend_service_relaunch_rendezvous(origin_circuit_t *oldcirc)
if (!newcirc) {
log_warn(LD_REND,"Couldn't relaunch rendezvous circuit to '%s'.",
- oldstate->chosen_exit->nickname);
+ safe_str(extend_info_describe(oldstate->chosen_exit)));
return;
}
newstate = newcirc->build_state;
@@ -1238,7 +1281,7 @@ rend_service_launch_establish_intro(rend_service_t *service,
log_info(LD_REND,
"Launching circuit to introduction point %s for service %s",
- escaped_safe_str_client(intro->extend_info->nickname),
+ safe_str_client(extend_info_describe(intro->extend_info)),
service->service_id);
rep_hist_note_used_internal(time(NULL), 1, 0);
@@ -1251,11 +1294,11 @@ rend_service_launch_establish_intro(rend_service_t *service,
if (!launched) {
log_info(LD_REND,
"Can't launch circuit to establish introduction at %s.",
- escaped_safe_str_client(intro->extend_info->nickname));
+ safe_str_client(extend_info_describe(intro->extend_info)));
return -1;
}
- if (memcmp(intro->extend_info->identity_digest,
+ if (tor_memneq(intro->extend_info->identity_digest,
launched->build_state->chosen_exit->identity_digest, DIGEST_LEN)) {
char cann[HEX_DIGEST_LEN+1], orig[HEX_DIGEST_LEN+1];
base16_encode(cann, sizeof(cann),
@@ -1317,6 +1360,7 @@ rend_service_intro_has_opened(origin_circuit_t *circuit)
crypto_pk_env_t *intro_key;
tor_assert(circuit->_base.purpose == CIRCUIT_PURPOSE_S_ESTABLISH_INTRO);
+ tor_assert(!(circuit->build_state->onehop_tunnel));
tor_assert(circuit->cpath);
tor_assert(circuit->rend_data);
@@ -1333,14 +1377,26 @@ rend_service_intro_has_opened(origin_circuit_t *circuit)
}
/* If we already have enough introduction circuits for this service,
- * redefine this one as a general circuit. */
+ * redefine this one as a general circuit or close it, depending. */
if (count_established_intro_points(serviceid) > NUM_INTRO_POINTS) {
- log_info(LD_CIRC|LD_REND, "We have just finished an introduction "
- "circuit, but we already have enough. Redefining purpose to "
- "general.");
- TO_CIRCUIT(circuit)->purpose = CIRCUIT_PURPOSE_C_GENERAL;
- circuit_has_opened(circuit);
- return;
+ const or_options_t *options = get_options();
+ if (options->ExcludeNodes) {
+ /* XXXX in some future version, we can test whether the transition is
+ allowed or not given the actual nodes in the circuit. But for now,
+ this case, we might as well close the thing. */
+ log_info(LD_CIRC|LD_REND, "We have just finished an introduction "
+ "circuit, but we already have enough. Closing it.");
+ circuit_mark_for_close(TO_CIRCUIT(circuit), END_CIRC_REASON_NONE);
+ return;
+ } else {
+ tor_assert(circuit->build_state->is_internal);
+ log_info(LD_CIRC|LD_REND, "We have just finished an introduction "
+ "circuit, but we already have enough. Redefining purpose to "
+ "general; leaving as internal.");
+ TO_CIRCUIT(circuit)->purpose = CIRCUIT_PURPOSE_C_GENERAL;
+ circuit_has_opened(circuit);
+ return;
+ }
}
log_info(LD_REND,
@@ -1366,7 +1422,8 @@ rend_service_intro_has_opened(origin_circuit_t *circuit)
goto err;
len += 20;
note_crypto_pk_op(REND_SERVER);
- r = crypto_pk_private_sign_digest(intro_key, buf+len, buf, len);
+ r = crypto_pk_private_sign_digest(intro_key, buf+len, sizeof(buf)-len,
+ buf, len);
if (r<0) {
log_warn(LD_BUG, "Internal error: couldn't sign introduction request.");
reason = END_CIRC_REASON_INTERNAL;
@@ -1391,9 +1448,10 @@ rend_service_intro_has_opened(origin_circuit_t *circuit)
/** Called when we get an INTRO_ESTABLISHED cell; mark the circuit as a
* live introduction point, and note that the service descriptor is
- * now out-of-date.*/
+ * now out-of-date. */
int
-rend_service_intro_established(origin_circuit_t *circuit, const char *request,
+rend_service_intro_established(origin_circuit_t *circuit,
+ const uint8_t *request,
size_t request_len)
{
rend_service_t *service;
@@ -1445,6 +1503,7 @@ rend_service_rendezvous_has_opened(origin_circuit_t *circuit)
tor_assert(circuit->_base.purpose == CIRCUIT_PURPOSE_S_CONNECT_REND);
tor_assert(circuit->cpath);
tor_assert(circuit->build_state);
+ tor_assert(!(circuit->build_state->onehop_tunnel));
tor_assert(circuit->rend_data);
hop = circuit->build_state->pending_final_cpath;
tor_assert(hop);
@@ -1527,7 +1586,7 @@ find_intro_circuit(rend_intro_point_t *intro, const char *pk_digest)
tor_assert(intro);
while ((circ = circuit_get_next_by_pk_and_purpose(circ,pk_digest,
CIRCUIT_PURPOSE_S_INTRO))) {
- if (!memcmp(circ->build_state->chosen_exit->identity_digest,
+ if (tor_memeq(circ->build_state->chosen_exit->identity_digest,
intro->extend_info->identity_digest, DIGEST_LEN) &&
circ->rend_data) {
return circ;
@@ -1537,7 +1596,7 @@ find_intro_circuit(rend_intro_point_t *intro, const char *pk_digest)
circ = NULL;
while ((circ = circuit_get_next_by_pk_and_purpose(circ,pk_digest,
CIRCUIT_PURPOSE_S_ESTABLISH_INTRO))) {
- if (!memcmp(circ->build_state->chosen_exit->identity_digest,
+ if (tor_memeq(circ->build_state->chosen_exit->identity_digest,
intro->extend_info->identity_digest, DIGEST_LEN) &&
circ->rend_data) {
return circ;
@@ -1580,9 +1639,9 @@ directory_post_to_hs_dir(rend_service_descriptor_t *renddesc,
continue;
if (!router_get_by_id_digest(hs_dir->identity_digest)) {
log_info(LD_REND, "Not sending publish request for v2 descriptor to "
- "hidden service directory '%s'; we don't have its "
+ "hidden service directory %s; we don't have its "
"router descriptor. Queuing for later upload.",
- hs_dir->nickname);
+ safe_str_client(routerstatus_describe(hs_dir)));
failed_upload = -1;
continue;
}
@@ -1761,7 +1820,7 @@ rend_services_introduce(void)
int changed, prev_intro_nodes;
smartlist_t *intro_nodes;
time_t now;
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
intro_nodes = smartlist_create();
now = time(NULL);
@@ -1790,11 +1849,12 @@ rend_services_introduce(void)
node = node_get_by_id(intro->extend_info->identity_digest);
if (!node || !find_intro_circuit(intro, service->pk_digest)) {
log_info(LD_REND,"Giving up on %s as intro point for %s.",
- intro->extend_info->nickname, service->service_id);
+ safe_str_client(extend_info_describe(intro->extend_info)),
+ safe_str_client(service->service_id));
if (service->desc) {
SMARTLIST_FOREACH(service->desc->intro_nodes, rend_intro_point_t *,
dintro, {
- if (!memcmp(dintro->extend_info->identity_digest,
+ if (tor_memeq(dintro->extend_info->identity_digest,
intro->extend_info->identity_digest, DIGEST_LEN)) {
log_info(LD_REND, "The intro point we are giving up on was "
"included in the last published descriptor. "
@@ -1856,7 +1916,8 @@ rend_services_introduce(void)
tor_assert(!crypto_pk_generate_key(intro->intro_key));
smartlist_add(service->intro_nodes, intro);
log_info(LD_REND, "Picked router %s as an intro point for %s.",
- node_get_nickname(node), service->service_id);
+ safe_str_client(node_describe(node)),
+ safe_str_client(service->service_id));
}
/* If there's no need to launch new circuits, stop here. */
@@ -1869,7 +1930,8 @@ rend_services_introduce(void)
r = rend_service_launch_establish_intro(service, intro);
if (r<0) {
log_warn(LD_REND, "Error launching circuit to node %s for service %s.",
- intro->extend_info->nickname, service->service_id);
+ safe_str_client(extend_info_describe(intro->extend_info)),
+ safe_str_client(service->service_id));
}
}
}
diff --git a/src/or/rendservice.h b/src/or/rendservice.h
index 1767714c60..8a2994c4c0 100644
--- a/src/or/rendservice.h
+++ b/src/or/rendservice.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -13,7 +13,7 @@
#define _TOR_RENDSERVICE_H
int num_rend_services(void);
-int rend_config_services(or_options_t *options, int validate_only);
+int rend_config_services(const or_options_t *options, int validate_only);
int rend_service_load_keys(void);
void rend_services_introduce(void);
void rend_consider_services_upload(time_t now);
@@ -22,10 +22,10 @@ void rend_consider_descriptor_republication(void);
void rend_service_intro_has_opened(origin_circuit_t *circuit);
int rend_service_intro_established(origin_circuit_t *circuit,
- const char *request,
+ const uint8_t *request,
size_t request_len);
void rend_service_rendezvous_has_opened(origin_circuit_t *circuit);
-int rend_service_introduce(origin_circuit_t *circuit, const char *request,
+int rend_service_introduce(origin_circuit_t *circuit, const uint8_t *request,
size_t request_len);
void rend_service_relaunch_rendezvous(origin_circuit_t *oldcirc);
int rend_service_set_connection_addr_port(edge_connection_t *conn,
diff --git a/src/or/rephist.c b/src/or/rephist.c
index ce2dd337e8..cd74f1b720 100644
--- a/src/or/rephist.c
+++ b/src/or/rephist.c
@@ -1,5 +1,5 @@
/* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -14,6 +14,7 @@
#include "circuitlist.h"
#include "circuituse.h"
#include "config.h"
+#include "networkstatus.h"
#include "nodelist.h"
#include "rephist.h"
#include "router.h"
@@ -74,6 +75,13 @@ typedef struct or_history_t {
/** If nonzero, we have been unable to connect since this time. */
time_t down_since;
+ /** The address at which we most recently connected to this OR
+ * successfully. */
+ tor_addr_t last_reached_addr;
+
+ /** The port at which we most recently connected to this OR successfully */
+ uint16_t last_reached_port;
+
/* === For MTBF tracking: */
/** Weighted sum total of all times that this router has been online.
*/
@@ -110,7 +118,7 @@ get_or_history(const char* id)
{
or_history_t *hist;
- if (tor_mem_is_zero(id, DIGEST_LEN))
+ if (tor_digest_is_zero(id))
return NULL;
hist = digestmap_get(history_map, id);
@@ -120,6 +128,7 @@ get_or_history(const char* id)
rephist_total_num++;
hist->link_history_map = digestmap_new();
hist->since = hist->changed = time(NULL);
+ tor_addr_make_unspec(&hist->last_reached_addr);
digestmap_set(history_map, id, hist);
}
return hist;
@@ -137,7 +146,7 @@ get_link_history(const char *from_id, const char *to_id)
orhist = get_or_history(from_id);
if (!orhist)
return NULL;
- if (tor_mem_is_zero(to_id, DIGEST_LEN))
+ if (tor_digest_is_zero(to_id))
return NULL;
lhist = (link_history_t*) digestmap_get(orhist->link_history_map, to_id);
if (!lhist) {
@@ -290,13 +299,20 @@ rep_hist_note_connection_died(const char* id, time_t when)
/** We have just decided that this router with identity digest <b>id</b> is
* reachable, meaning we will give it a "Running" flag for the next while. */
void
-rep_hist_note_router_reachable(const char *id, time_t when)
+rep_hist_note_router_reachable(const char *id, const tor_addr_t *at_addr,
+ const uint16_t at_port, time_t when)
{
or_history_t *hist = get_or_history(id);
int was_in_run = 1;
char tbuf[ISO_TIME_LEN+1];
+ int addr_changed, port_changed;
tor_assert(hist);
+ tor_assert((!at_addr && !at_port) || (at_addr && at_port));
+
+ addr_changed = at_addr &&
+ tor_addr_compare(at_addr, &hist->last_reached_addr, CMP_EXACT) != 0;
+ port_changed = at_port && at_port != hist->last_reached_port;
if (!started_tracking_stability)
started_tracking_stability = time(NULL);
@@ -316,6 +332,27 @@ rep_hist_note_router_reachable(const char *id, time_t when)
down_length = when - hist->start_of_downtime;
hist->total_weighted_time += down_length;
hist->start_of_downtime = 0;
+ } else if (addr_changed || port_changed) {
+ /* If we're reachable, but the address changed, treat this as some
+ * downtime. */
+ int penalty = get_options()->TestingTorNetwork ? 240 : 3600;
+ networkstatus_t *ns;
+
+ if ((ns = networkstatus_get_latest_consensus())) {
+ int fresh_interval = (int)(ns->fresh_until - ns->valid_after);
+ int live_interval = (int)(ns->valid_until - ns->valid_after);
+ /* on average, a descriptor addr change takes .5 intervals to make it
+ * into a consensus, and half a liveness period to make it to
+ * clients. */
+ penalty = (int)(fresh_interval + live_interval) / 2;
+ }
+ format_local_iso_time(tbuf, hist->start_of_run);
+ log_info(LD_HIST,"Router %s still seems Running, but its address appears "
+ "to have changed since the last time it was reachable. I'm "
+ "going to treat it as having been down for %d seconds",
+ hex_str(id, DIGEST_LEN), penalty);
+ rep_hist_note_router_unreachable(id, when-penalty);
+ rep_hist_note_router_reachable(id, NULL, 0, when);
} else {
format_local_iso_time(tbuf, hist->start_of_run);
if (was_in_run)
@@ -325,6 +362,10 @@ rep_hist_note_router_reachable(const char *id, time_t when)
log_info(LD_HIST,"Router %s is now Running; it was previously untracked",
hex_str(id, DIGEST_LEN));
}
+ if (at_addr)
+ tor_addr_copy(&hist->last_reached_addr, at_addr);
+ if (at_port)
+ hist->last_reached_port = at_port;
}
/** We have just decided that this router is unreachable, meaning
@@ -345,12 +386,20 @@ rep_hist_note_router_unreachable(const char *id, time_t when)
long run_length = when - hist->start_of_run;
format_local_iso_time(tbuf, hist->start_of_run);
- hist->weighted_run_length += run_length;
hist->total_run_weights += 1.0;
hist->start_of_run = 0;
- hist->weighted_uptime += run_length;
- hist->total_weighted_time += run_length;
+ if (run_length < 0) {
+ unsigned long penalty = -run_length;
+#define SUBTRACT_CLAMPED(var, penalty) \
+ do { (var) = (var) < (penalty) ? 0 : (var) - (penalty); } while (0)
+ SUBTRACT_CLAMPED(hist->weighted_run_length, penalty);
+ SUBTRACT_CLAMPED(hist->weighted_uptime, penalty);
+ } else {
+ hist->weighted_run_length += run_length;
+ hist->weighted_uptime += run_length;
+ hist->total_weighted_time += run_length;
+ }
was_running = 1;
log_info(LD_HIST, "Router %s is now non-Running: it had previously been "
"Running since %s. Its total weighted uptime is %lu/%lu.",
@@ -423,7 +472,7 @@ rep_hist_downrate_old_runs(time_t now)
static double
get_stability(or_history_t *hist, time_t when)
{
- unsigned long total = hist->weighted_run_length;
+ long total = hist->weighted_run_length;
double total_weights = hist->total_run_weights;
if (hist->start_of_run) {
@@ -459,8 +508,8 @@ get_total_weighted_time(or_history_t *hist, time_t when)
static double
get_weighted_fractional_uptime(or_history_t *hist, time_t when)
{
- unsigned long total = hist->total_weighted_time;
- unsigned long up = hist->weighted_uptime;
+ long total = hist->total_weighted_time;
+ long up = hist->weighted_uptime;
if (hist->start_of_run) {
long run_length = (when - hist->start_of_run);
@@ -480,6 +529,20 @@ get_weighted_fractional_uptime(or_history_t *hist, time_t when)
return ((double) up) / total;
}
+/** Return how long the router whose identity digest is <b>id</b> has
+ * been reachable. Return 0 if the router is unknown or currently deemed
+ * unreachable. */
+long
+rep_hist_get_uptime(const char *id, time_t when)
+{
+ or_history_t *hist = get_or_history(id);
+ if (!hist)
+ return 0;
+ if (!hist->start_of_run || when < hist->start_of_run)
+ return 0;
+ return when - hist->start_of_run;
+}
+
/** Return an estimated MTBF for the router whose identity digest is
* <b>id</b>. Return 0 if the router is unknown. */
double
@@ -525,7 +588,7 @@ rep_hist_get_weighted_time_known(const char *id, time_t when)
int
rep_hist_have_measured_enough_stability(void)
{
- /* XXXX021 This doesn't do so well when we change our opinion
+ /* XXXX022 This doesn't do so well when we change our opinion
* as to whether we're tracking router stability. */
return started_tracking_stability < time(NULL) - 4*60*60;
}
@@ -572,6 +635,7 @@ rep_hist_dump_stats(time_t now, int severity)
digestmap_iter_t *orhist_it;
const char *name1, *name2, *digest1, *digest2;
char hexdigest1[HEX_DIGEST_LEN+1];
+ char hexdigest2[HEX_DIGEST_LEN+1];
or_history_t *or_history;
link_history_t *link_history;
void *or_history_p, *link_history_p;
@@ -632,7 +696,10 @@ rep_hist_dump_stats(time_t now, int severity)
link_history = (link_history_t*) link_history_p;
- ret = tor_snprintf(buffer+len, 2048-len, "%s(%ld/%ld); ", name2,
+ base16_encode(hexdigest2, sizeof(hexdigest2), digest2, DIGEST_LEN);
+ ret = tor_snprintf(buffer+len, 2048-len, "%s [%s](%ld/%ld); ",
+ name2,
+ hexdigest2,
link_history->n_extend_ok,
link_history->n_extend_ok+link_history->n_extend_fail);
if (ret<0)
@@ -934,10 +1001,10 @@ find_next_with(smartlist_t *sl, int i, const char *prefix)
return -1;
}
-/** How many bad times has parse_possibly_bad_iso_time parsed? */
+/** How many bad times has parse_possibly_bad_iso_time() parsed? */
static int n_bogus_times = 0;
/** Parse the ISO-formatted time in <b>s</b> into *<b>time_out</b>, but
- * rounds any pre-1970 date to Jan 1, 1970. */
+ * round any pre-1970 date to Jan 1, 1970. */
static int
parse_possibly_bad_iso_time(const char *s, time_t *time_out)
{
@@ -1170,6 +1237,8 @@ rep_hist_load_mtbf_data(time_t now)
* totals? */
#define NUM_SECS_ROLLING_MEASURE 10
/** How large are the intervals for which we track and report bandwidth use? */
+/* XXXX Watch out! Before Tor 0.2.2.21-alpha, using any other value here would
+ * generate an unparseable state file. */
#define NUM_SECS_BW_SUM_INTERVAL (15*60)
/** How far in the past do we remember and publish bandwidth use? */
#define NUM_SECS_BW_SUM_IS_VALID (24*60*60)
@@ -1228,7 +1297,7 @@ commit_max(bw_array_t *b)
b->total_in_period = 0;
}
-/** Shift the current observation time of 'b' forward by one second. */
+/** Shift the current observation time of <b>b</b> forward by one second. */
static INLINE void
advance_obs(bw_array_t *b)
{
@@ -1258,14 +1327,18 @@ advance_obs(bw_array_t *b)
static INLINE void
add_obs(bw_array_t *b, time_t when, uint64_t n)
{
- /* Don't record data in the past. */
- if (when<b->cur_obs_time)
- return;
+ if (when < b->cur_obs_time)
+ return; /* Don't record data in the past. */
+
/* If we're currently adding observations for an earlier second than
* 'when', advance b->cur_obs_time and b->cur_obs_idx by an
- * appropriate number of seconds, and do all the other housekeeping */
- while (when>b->cur_obs_time)
+ * appropriate number of seconds, and do all the other housekeeping. */
+ while (when > b->cur_obs_time) {
+ /* Doing this one second at a time is potentially inefficient, if we start
+ with a state file that is very old. Fortunately, it doesn't seem to
+ show up in profiles, so we can just ignore it for now. */
advance_obs(b);
+ }
b->obs[b->cur_obs_idx] += n;
b->total_in_period += n;
@@ -1296,17 +1369,22 @@ static bw_array_t *dir_read_array = NULL;
directory protocol. */
static bw_array_t *dir_write_array = NULL;
-/** Set up [dir-]read_array and [dir-]write_array. */
+/** Set up [dir-]read_array and [dir-]write_array, freeing them if they
+ * already exist. */
static void
bw_arrays_init(void)
{
+ tor_free(read_array);
+ tor_free(write_array);
+ tor_free(dir_read_array);
+ tor_free(dir_write_array);
read_array = bw_array_new();
write_array = bw_array_new();
dir_read_array = bw_array_new();
dir_write_array = bw_array_new();
}
-/** We read <b>num_bytes</b> more bytes in second <b>when</b>.
+/** Remember that we read <b>num_bytes</b> bytes in second <b>when</b>.
*
* Add num_bytes to the current running total for <b>when</b>.
*
@@ -1327,7 +1405,7 @@ rep_hist_note_bytes_written(size_t num_bytes, time_t when)
add_obs(write_array, when, num_bytes);
}
-/** We wrote <b>num_bytes</b> more bytes in second <b>when</b>.
+/** Remember that we wrote <b>num_bytes</b> bytes in second <b>when</b>.
* (like rep_hist_note_bytes_written() above)
*/
void
@@ -1337,8 +1415,8 @@ rep_hist_note_bytes_read(size_t num_bytes, time_t when)
add_obs(read_array, when, num_bytes);
}
-/** We wrote <b>num_bytes</b> more directory bytes in second <b>when</b>.
- * (like rep_hist_note_bytes_written() above)
+/** Remember that we wrote <b>num_bytes</b> directory bytes in second
+ * <b>when</b>. (like rep_hist_note_bytes_written() above)
*/
void
rep_hist_note_dir_bytes_written(size_t num_bytes, time_t when)
@@ -1346,8 +1424,8 @@ rep_hist_note_dir_bytes_written(size_t num_bytes, time_t when)
add_obs(dir_write_array, when, num_bytes);
}
-/** We read <b>num_bytes</b> more directory bytes in second <b>when</b>.
- * (like rep_hist_note_bytes_written() above)
+/** Remember that we read <b>num_bytes</b> directory bytes in second
+ * <b>when</b>. (like rep_hist_note_bytes_written() above)
*/
void
rep_hist_note_dir_bytes_read(size_t num_bytes, time_t when)
@@ -1397,11 +1475,11 @@ rep_hist_bandwidth_assess(void)
* It returns the number of bytes written.
*/
static size_t
-rep_hist_fill_bandwidth_history(char *buf, size_t len, bw_array_t *b)
+rep_hist_fill_bandwidth_history(char *buf, size_t len, const bw_array_t *b)
{
char *cp = buf;
int i, n;
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
uint64_t cutoff;
if (b->num_maxes_set <= b->next_max_idx) {
@@ -1442,7 +1520,8 @@ rep_hist_fill_bandwidth_history(char *buf, size_t len, bw_array_t *b)
}
/** Allocate and return lines for representing this server's bandwidth
- * history in its descriptor.
+ * history in its descriptor. We publish these lines in our extra-info
+ * descriptor.
*/
char *
rep_hist_get_bandwidth_lines(void)
@@ -1455,10 +1534,15 @@ rep_hist_get_bandwidth_lines(void)
size_t len;
/* opt [dirreq-](read|write)-history yyyy-mm-dd HH:MM:SS (n s) n,n,n... */
- len = (67+21*NUM_TOTALS)*4;
+/* The n,n,n part above. Largest representation of a uint64_t is 20 chars
+ * long, plus the comma. */
+#define MAX_HIST_VALUE_LEN 21*NUM_TOTALS
+ len = (67+MAX_HIST_VALUE_LEN)*4;
buf = tor_malloc_zero(len);
cp = buf;
for (r=0;r<4;++r) {
+ char tmp[MAX_HIST_VALUE_LEN];
+ size_t slen;
switch (r) {
case 0:
b = write_array;
@@ -1478,174 +1562,212 @@ rep_hist_get_bandwidth_lines(void)
break;
}
tor_assert(b);
+ slen = rep_hist_fill_bandwidth_history(tmp, MAX_HIST_VALUE_LEN, b);
+ /* If we don't have anything to write, skip to the next entry. */
+ if (slen == 0)
+ continue;
format_iso_time(t, b->next_period-NUM_SECS_BW_SUM_INTERVAL);
tor_snprintf(cp, len-(cp-buf), "%s %s (%d s) ",
desc, t, NUM_SECS_BW_SUM_INTERVAL);
cp += strlen(cp);
- cp += rep_hist_fill_bandwidth_history(cp, len-(cp-buf), b);
+ strlcat(cp, tmp, len-(cp-buf));
+ cp += slen;
strlcat(cp, "\n", len-(cp-buf));
++cp;
}
return buf;
}
-/** Update <b>state</b> with the newest bandwidth history. */
+/** Write a single bw_array_t into the Values, Ends, Interval, and Maximum
+ * entries of an or_state_t. Done before writing out a new state file. */
+static void
+rep_hist_update_bwhist_state_section(or_state_t *state,
+ const bw_array_t *b,
+ smartlist_t **s_values,
+ smartlist_t **s_maxima,
+ time_t *s_begins,
+ int *s_interval)
+{
+ char *cp;
+ int i,j;
+ uint64_t maxval;
+
+ if (*s_values) {
+ SMARTLIST_FOREACH(*s_values, char *, val, tor_free(val));
+ smartlist_free(*s_values);
+ }
+ if (*s_maxima) {
+ SMARTLIST_FOREACH(*s_maxima, char *, val, tor_free(val));
+ smartlist_free(*s_maxima);
+ }
+ if (! server_mode(get_options())) {
+ /* Clients don't need to store bandwidth history persistently;
+ * force these values to the defaults. */
+ /* FFFF we should pull the default out of config.c's state table,
+ * so we don't have two defaults. */
+ if (*s_begins != 0 || *s_interval != 900) {
+ time_t now = time(NULL);
+ time_t save_at = get_options()->AvoidDiskWrites ? now+3600 : now+600;
+ or_state_mark_dirty(state, save_at);
+ }
+ *s_begins = 0;
+ *s_interval = 900;
+ *s_values = smartlist_create();
+ *s_maxima = smartlist_create();
+ return;
+ }
+ *s_begins = b->next_period;
+ *s_interval = NUM_SECS_BW_SUM_INTERVAL;
+
+ *s_values = smartlist_create();
+ *s_maxima = smartlist_create();
+ /* Set i to first position in circular array */
+ i = (b->num_maxes_set <= b->next_max_idx) ? 0 : b->next_max_idx;
+ for (j=0; j < b->num_maxes_set; ++j,++i) {
+ if (i >= NUM_TOTALS)
+ i = 0;
+ tor_asprintf(&cp, U64_FORMAT, U64_PRINTF_ARG(b->totals[i] & ~0x3ff));
+ smartlist_add(*s_values, cp);
+ maxval = b->maxima[i] / NUM_SECS_ROLLING_MEASURE;
+ tor_asprintf(&cp, U64_FORMAT, U64_PRINTF_ARG(maxval & ~0x3ff));
+ smartlist_add(*s_maxima, cp);
+ }
+ tor_asprintf(&cp, U64_FORMAT, U64_PRINTF_ARG(b->total_in_period & ~0x3ff));
+ smartlist_add(*s_values, cp);
+ maxval = b->max_total / NUM_SECS_ROLLING_MEASURE;
+ tor_asprintf(&cp, U64_FORMAT, U64_PRINTF_ARG(maxval & ~0x3ff));
+ smartlist_add(*s_maxima, cp);
+}
+
+/** Update <b>state</b> with the newest bandwidth history. Done before
+ * writing out a new state file. */
void
rep_hist_update_state(or_state_t *state)
{
- int len, r;
- char *buf, *cp;
- smartlist_t **s_values = NULL;
- time_t *s_begins = NULL;
- int *s_interval = NULL;
- bw_array_t *b = NULL;
+#define UPDATE(arrname,st) \
+ rep_hist_update_bwhist_state_section(state,\
+ (arrname),\
+ &state->BWHistory ## st ## Values, \
+ &state->BWHistory ## st ## Maxima, \
+ &state->BWHistory ## st ## Ends, \
+ &state->BWHistory ## st ## Interval)
- len = 20*NUM_TOTALS+1;
- buf = tor_malloc_zero(len);
+ UPDATE(write_array, Write);
+ UPDATE(read_array, Read);
+ UPDATE(dir_write_array, DirWrite);
+ UPDATE(dir_read_array, DirRead);
- for (r=0;r<4;++r) {
- switch (r) {
- case 0:
- b = write_array;
- s_begins = &state->BWHistoryWriteEnds;
- s_interval = &state->BWHistoryWriteInterval;
- s_values = &state->BWHistoryWriteValues;
- break;
- case 1:
- b = read_array;
- s_begins = &state->BWHistoryReadEnds;
- s_interval = &state->BWHistoryReadInterval;
- s_values = &state->BWHistoryReadValues;
- break;
- case 2:
- b = dir_write_array;
- s_begins = &state->BWHistoryDirWriteEnds;
- s_interval = &state->BWHistoryDirWriteInterval;
- s_values = &state->BWHistoryDirWriteValues;
- break;
- case 3:
- b = dir_read_array;
- s_begins = &state->BWHistoryDirReadEnds;
- s_interval = &state->BWHistoryDirReadInterval;
- s_values = &state->BWHistoryDirReadValues;
- break;
- }
- if (*s_values) {
- SMARTLIST_FOREACH(*s_values, char *, val, tor_free(val));
- smartlist_free(*s_values);
- }
- if (! server_mode(get_options())) {
- /* Clients don't need to store bandwidth history persistently;
- * force these values to the defaults. */
- /* FFFF we should pull the default out of config.c's state table,
- * so we don't have two defaults. */
- if (*s_begins != 0 || *s_interval != 900) {
- time_t now = time(NULL);
- time_t save_at = get_options()->AvoidDiskWrites ? now+3600 : now+600;
- or_state_mark_dirty(state, save_at);
- }
- *s_begins = 0;
- *s_interval = 900;
- *s_values = smartlist_create();
- continue;
- }
- *s_begins = b->next_period;
- *s_interval = NUM_SECS_BW_SUM_INTERVAL;
- cp = buf;
- cp += rep_hist_fill_bandwidth_history(cp, len, b);
- tor_snprintf(cp, len-(cp-buf), cp == buf ? U64_FORMAT : ","U64_FORMAT,
- U64_PRINTF_ARG(b->total_in_period));
- *s_values = smartlist_create();
- if (server_mode(get_options()))
- smartlist_split_string(*s_values, buf, ",", SPLIT_SKIP_SPACE, 0);
- }
- tor_free(buf);
if (server_mode(get_options())) {
- or_state_mark_dirty(get_or_state(), time(NULL)+(2*3600));
+ or_state_mark_dirty(state, time(NULL)+(2*3600));
}
+#undef UPDATE
}
-/** Set bandwidth history from our saved state. */
-int
-rep_hist_load_state(or_state_t *state, char **err)
+/** Load a single bw_array_t from its Values, Ends, Maxima, and Interval
+ * entries in an or_state_t. Done while reading the state file. */
+static int
+rep_hist_load_bwhist_state_section(bw_array_t *b,
+ const smartlist_t *s_values,
+ const smartlist_t *s_maxima,
+ const time_t s_begins,
+ const int s_interval)
{
- time_t s_begins = 0, start;
time_t now = time(NULL);
- uint64_t v;
- int r,i,ok;
- int all_ok = 1;
- int s_interval = 0;
- smartlist_t *s_values = NULL;
- bw_array_t *b = NULL;
-
- /* Assert they already have been malloced */
- tor_assert(read_array && write_array);
+ int retval = 0;
+ time_t start;
- for (r=0;r<4;++r) {
- switch (r) {
- case 0:
- b = write_array;
- s_begins = state->BWHistoryWriteEnds;
- s_interval = state->BWHistoryWriteInterval;
- s_values = state->BWHistoryWriteValues;
- break;
- case 1:
- b = read_array;
- s_begins = state->BWHistoryReadEnds;
- s_interval = state->BWHistoryReadInterval;
- s_values = state->BWHistoryReadValues;
- break;
- case 2:
- b = dir_write_array;
- s_begins = state->BWHistoryDirWriteEnds;
- s_interval = state->BWHistoryDirWriteInterval;
- s_values = state->BWHistoryDirWriteValues;
- break;
- case 3:
- b = dir_read_array;
- s_begins = state->BWHistoryDirReadEnds;
- s_interval = state->BWHistoryDirReadInterval;
- s_values = state->BWHistoryDirReadValues;
- break;
- }
- if (s_values && s_begins >= now - NUM_SECS_BW_SUM_INTERVAL*NUM_TOTALS) {
- start = s_begins - s_interval*(smartlist_len(s_values));
- if (start > now)
- continue;
- b->cur_obs_time = start;
- b->next_period = start + NUM_SECS_BW_SUM_INTERVAL;
- SMARTLIST_FOREACH(s_values, char *, cp, {
+ uint64_t v, mv;
+ int i,ok,ok_m;
+ int have_maxima = (smartlist_len(s_values) == smartlist_len(s_maxima));
+
+ if (s_values && s_begins >= now - NUM_SECS_BW_SUM_INTERVAL*NUM_TOTALS) {
+ start = s_begins - s_interval*(smartlist_len(s_values));
+ if (start > now)
+ return 0;
+ b->cur_obs_time = start;
+ b->next_period = start + NUM_SECS_BW_SUM_INTERVAL;
+ SMARTLIST_FOREACH_BEGIN(s_values, const char *, cp) {
+ const char *maxstr = NULL;
v = tor_parse_uint64(cp, 10, 0, UINT64_MAX, &ok, NULL);
+ if (have_maxima) {
+ maxstr = smartlist_get(s_maxima, cp_sl_idx);
+ mv = tor_parse_uint64(maxstr, 10, 0, UINT64_MAX, &ok_m, NULL);
+ mv *= NUM_SECS_ROLLING_MEASURE;
+ } else {
+ /* No maxima known; guess average rate to be conservative. */
+ mv = (v / s_interval) * NUM_SECS_ROLLING_MEASURE;
+ }
if (!ok) {
- all_ok=0;
- log_notice(LD_HIST, "Could not parse '%s' into a number.'", cp);
+ retval = -1;
+ log_notice(LD_HIST, "Could not parse value '%s' into a number.'",cp);
}
+ if (maxstr && !ok_m) {
+ retval = -1;
+ log_notice(LD_HIST, "Could not parse maximum '%s' into a number.'",
+ maxstr);
+ }
+
if (start < now) {
- add_obs(b, start, v);
- start += NUM_SECS_BW_SUM_INTERVAL;
+ time_t cur_start = start;
+ time_t actual_interval_len = s_interval;
+ uint64_t cur_val = 0;
+ /* Calculate the average per second. This is the best we can do
+ * because our state file doesn't have per-second resolution. */
+ if (start + s_interval > now)
+ actual_interval_len = now - start;
+ cur_val = v / actual_interval_len;
+ /* This is potentially inefficient, but since we don't do it very
+ * often it should be ok. */
+ while (cur_start < start + actual_interval_len) {
+ add_obs(b, cur_start, cur_val);
+ ++cur_start;
+ }
+ b->max_total = mv;
+ /* This will result in some fairly choppy history if s_interval
+ * is not the same as NUM_SECS_BW_SUM_INTERVAL. XXXX */
+ start += actual_interval_len;
}
- });
- }
+ } SMARTLIST_FOREACH_END(cp);
+ }
- /* Clean up maxima and observed */
- /* Do we really want to zero this for the purpose of max capacity? */
- for (i=0; i<NUM_SECS_ROLLING_MEASURE; ++i) {
- b->obs[i] = 0;
- }
- b->total_obs = 0;
- for (i=0; i<NUM_TOTALS; ++i) {
- b->maxima[i] = 0;
- }
- b->max_total = 0;
+ /* Clean up maxima and observed */
+ for (i=0; i<NUM_SECS_ROLLING_MEASURE; ++i) {
+ b->obs[i] = 0;
}
+ b->total_obs = 0;
+ return retval;
+}
+
+/** Set bandwidth history from the state file we just loaded. */
+int
+rep_hist_load_state(or_state_t *state, char **err)
+{
+ int all_ok = 1;
+
+ /* Assert they already have been malloced */
+ tor_assert(read_array && write_array);
+ tor_assert(dir_read_array && dir_write_array);
+
+#define LOAD(arrname,st) \
+ if (rep_hist_load_bwhist_state_section( \
+ (arrname), \
+ state->BWHistory ## st ## Values, \
+ state->BWHistory ## st ## Maxima, \
+ state->BWHistory ## st ## Ends, \
+ state->BWHistory ## st ## Interval)<0) \
+ all_ok = 0
+
+ LOAD(write_array, Write);
+ LOAD(read_array, Read);
+ LOAD(dir_write_array, DirWrite);
+ LOAD(dir_read_array, DirRead);
+
+#undef LOAD
if (!all_ok) {
*err = tor_strdup("Parsing of bandwidth history values failed");
/* and create fresh arrays */
- tor_free(read_array);
- tor_free(write_array);
- read_array = bw_array_new();
- write_array = bw_array_new();
+ bw_arrays_init();
return -1;
}
return 0;
@@ -1694,7 +1816,8 @@ predicted_ports_free(void)
{
rephist_total_alloc -=
smartlist_len(predicted_ports_list)*sizeof(predicted_port_t);
- SMARTLIST_FOREACH(predicted_ports_list, predicted_port_t *, pp, tor_free(pp));
+ SMARTLIST_FOREACH(predicted_ports_list, predicted_port_t *,
+ pp, tor_free(pp));
smartlist_free(predicted_ports_list);
}
@@ -1981,9 +2104,12 @@ rep_hist_exit_stats_term(void)
tor_free(exit_streams);
}
-/** Helper for qsort: compare two ints. */
+/** Helper for qsort: compare two ints. Does not handle overflow properly,
+ * but works fine for sorting an array of port numbers, which is what we use
+ * it for. */
static int
-_compare_int(const void *x, const void *y) {
+_compare_int(const void *x, const void *y)
+{
return (*(int*)x - *(int*)y);
}
@@ -2171,7 +2297,7 @@ rep_hist_exit_stats_write(time_t now)
/* Try to write to disk. */
statsdir = get_datadir_fname("stats");
- if (check_private_dir(statsdir, CPD_CREATE) < 0) {
+ if (check_private_dir(statsdir, CPD_CREATE, get_options()->User) < 0) {
log_warn(LD_HIST, "Unable to create stats/ directory!");
goto done;
}
@@ -2224,14 +2350,19 @@ rep_hist_buffer_stats_init(time_t now)
start_of_buffer_stats_interval = now;
}
+/** Statistics from a single circuit. Collected when the circuit closes, or
+ * when we flush statistics to disk. */
typedef struct circ_buffer_stats_t {
- uint32_t processed_cells;
+ /** Average number of cells in the circuit's queue */
double mean_num_cells_in_queue;
+ /** Average time a cell waits in the queue. */
double mean_time_cells_in_queue;
+ /** Total number of cells sent over this circuit */
+ uint32_t processed_cells;
} circ_buffer_stats_t;
-/** Holds stats. */
-smartlist_t *circuits_for_buffer_stats = NULL;
+/** List of circ_buffer_stats_t. */
+static smartlist_t *circuits_for_buffer_stats = NULL;
/** Remember cell statistics for circuit <b>circ</b> at time
* <b>end_of_interval</b> and reset cell counters in case the circuit
@@ -2255,11 +2386,12 @@ rep_hist_buffer_stats_add_circ(circuit_t *circ, time_t end_of_interval)
circ->timestamp_created.tv_sec :
start_of_buffer_stats_interval;
interval_length = (int) (end_of_interval - start_of_interval);
+ if (interval_length <= 0)
+ return;
stat = tor_malloc_zero(sizeof(circ_buffer_stats_t));
stat->processed_cells = orcirc->processed_cells;
/* 1000.0 for s -> ms; 2.0 because of app-ward and exit-ward queues */
- stat->mean_num_cells_in_queue = interval_length == 0 ? 0.0 :
- (double) orcirc->total_cell_waiting_time /
+ stat->mean_num_cells_in_queue = (double) orcirc->total_cell_waiting_time /
(double) interval_length / 1000.0 / 2.0;
stat->mean_time_cells_in_queue =
(double) orcirc->total_cell_waiting_time /
@@ -2309,8 +2441,8 @@ rep_hist_buffer_stats_write(time_t now)
int processed_cells[SHARES], circs_in_share[SHARES],
number_of_circuits, i;
double queued_cells[SHARES], time_in_queue[SHARES];
- smartlist_t *str_build = smartlist_create();
- char *str = NULL, *buf=NULL;
+ smartlist_t *str_build = NULL;
+ char *str = NULL, *buf = NULL;
circuit_t *circ;
if (!start_of_buffer_stats_interval)
@@ -2318,6 +2450,8 @@ rep_hist_buffer_stats_write(time_t now)
if (start_of_buffer_stats_interval + WRITE_STATS_INTERVAL > now)
goto done; /* Not ready to write */
+ str_build = smartlist_create();
+
/* add current circuits to stats */
for (circ = _circuit_get_global_list(); circ; circ = circ->next)
rep_hist_buffer_stats_add_circ(circ, now);
@@ -2353,7 +2487,7 @@ rep_hist_buffer_stats_write(time_t now)
smartlist_clear(circuits_for_buffer_stats);
/* write to file */
statsdir = get_datadir_fname("stats");
- if (check_private_dir(statsdir, CPD_CREATE) < 0)
+ if (check_private_dir(statsdir, CPD_CREATE, get_options()->User) < 0)
goto done;
filename = get_datadir_fname2("stats", "buffer-stats");
out = start_writing_to_stdio_file(filename, OPEN_FLAGS_APPEND,
@@ -2624,7 +2758,7 @@ rep_hist_conn_stats_write(time_t now)
/* Try to write to disk. */
statsdir = get_datadir_fname("stats");
- if (check_private_dir(statsdir, CPD_CREATE) < 0) {
+ if (check_private_dir(statsdir, CPD_CREATE, get_options()->User) < 0) {
log_warn(LD_HIST, "Unable to create stats/ directory!");
goto done;
}
@@ -2654,5 +2788,12 @@ rep_hist_free_all(void)
built_last_stability_doc_at = 0;
predicted_ports_free();
bidi_map_free();
+
+ if (circuits_for_buffer_stats) {
+ SMARTLIST_FOREACH(circuits_for_buffer_stats, circ_buffer_stats_t *, s,
+ tor_free(s));
+ smartlist_free(circuits_for_buffer_stats);
+ circuits_for_buffer_stats = NULL;
+ }
}
diff --git a/src/or/rephist.h b/src/or/rephist.h
index 6b600a2faa..5748748a80 100644
--- a/src/or/rephist.h
+++ b/src/or/rephist.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -33,12 +33,14 @@ void rep_hist_update_state(or_state_t *state);
int rep_hist_load_state(or_state_t *state, char **err);
void rep_history_clean(time_t before);
-void rep_hist_note_router_reachable(const char *id, time_t when);
+void rep_hist_note_router_reachable(const char *id, const tor_addr_t *at_addr,
+ uint16_t at_port, time_t when);
void rep_hist_note_router_unreachable(const char *id, time_t when);
int rep_hist_record_mtbf_data(time_t now, int missing_means_down);
int rep_hist_load_mtbf_data(time_t now);
time_t rep_hist_downrate_old_runs(time_t now);
+long rep_hist_get_uptime(const char *id, time_t when);
double rep_hist_get_stability(const char *id, time_t when);
double rep_hist_get_weighted_fractional_uptime(const char *id, time_t when);
long rep_hist_get_weighted_time_known(const char *id, time_t when);
diff --git a/src/or/router.c b/src/or/router.c
index f630d25dc3..eaad57bb99 100644
--- a/src/or/router.c
+++ b/src/or/router.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define ROUTER_PRIVATE
@@ -84,12 +84,16 @@ static authority_cert_t *legacy_key_certificate = NULL;
static void
set_onion_key(crypto_pk_env_t *k)
{
+ if (onionkey && !crypto_pk_cmp_keys(onionkey, k)) {
+ /* k is already our onion key; free it and return */
+ crypto_free_pk_env(k);
+ return;
+ }
tor_mutex_acquire(key_lock);
crypto_free_pk_env(onionkey);
onionkey = k;
- onionkey_set_at = time(NULL);
tor_mutex_release(key_lock);
- mark_my_descriptor_dirty();
+ mark_my_descriptor_dirty("set onion key");
}
/** Return the current onion key. Requires that the onion key has been
@@ -276,7 +280,7 @@ rotate_onion_key(void)
now = time(NULL);
state->LastRotatedOnionKey = onionkey_set_at = now;
tor_mutex_release(key_lock);
- mark_my_descriptor_dirty();
+ mark_my_descriptor_dirty("rotated onion key");
or_state_mark_dirty(state, get_options()->AvoidDiskWrites ? now+3600 : 0);
goto done;
error:
@@ -493,11 +497,11 @@ init_keys(void)
char fingerprint_line[MAX_NICKNAME_LEN+FINGERPRINT_LEN+3];
const char *mydesc;
crypto_pk_env_t *prkey;
- char digest[20];
- char v3_digest[20];
+ char digest[DIGEST_LEN];
+ char v3_digest[DIGEST_LEN];
char *cp;
- or_options_t *options = get_options();
- authority_type_t type;
+ const or_options_t *options = get_options();
+ dirinfo_type_t type;
time_t now = time(NULL);
trusted_dir_server_t *ds;
int v3_digest_set = 0;
@@ -506,7 +510,8 @@ init_keys(void)
if (!key_lock)
key_lock = tor_mutex_new();
- /* There are a couple of paths that put us here before */
+ /* There are a couple of paths that put us here before we've asked
+ * openssl to initialize itself. */
if (crypto_global_init(get_options()->HardwareAccel,
get_options()->AccelName,
get_options()->AccelDir)) {
@@ -535,12 +540,12 @@ init_keys(void)
return 0;
}
/* Make sure DataDirectory exists, and is private. */
- if (check_private_dir(options->DataDirectory, CPD_CREATE)) {
+ if (check_private_dir(options->DataDirectory, CPD_CREATE, options->User)) {
return -1;
}
/* Check the key directory. */
keydir = get_datadir_fname("keys");
- if (check_private_dir(keydir, CPD_CREATE)) {
+ if (check_private_dir(keydir, CPD_CREATE, options->User)) {
tor_free(keydir);
return -1;
}
@@ -631,7 +636,7 @@ init_keys(void)
/* 4. Build our router descriptor. */
/* Must be called after keys are initialized. */
mydesc = router_get_my_descriptor();
- if (authdir_mode(options)) {
+ if (authdir_mode_handles_descs(options, ROUTER_PURPOSE_GENERAL)) {
const char *m = NULL;
routerinfo_t *ri;
/* We need to add our own fingerprint so it gets recognized. */
@@ -697,17 +702,18 @@ init_keys(void)
}
/* 6b. [authdirserver only] add own key to approved directories. */
crypto_pk_get_digest(get_server_identity_key(), digest);
- type = ((options->V1AuthoritativeDir ? V1_AUTHORITY : NO_AUTHORITY) |
- (options->V2AuthoritativeDir ? V2_AUTHORITY : NO_AUTHORITY) |
- (options->V3AuthoritativeDir ? V3_AUTHORITY : NO_AUTHORITY) |
- (options->BridgeAuthoritativeDir ? BRIDGE_AUTHORITY : NO_AUTHORITY) |
- (options->HSAuthoritativeDir ? HIDSERV_AUTHORITY : NO_AUTHORITY));
+ type = ((options->V1AuthoritativeDir ? V1_DIRINFO : NO_DIRINFO) |
+ (options->V2AuthoritativeDir ? V2_DIRINFO : NO_DIRINFO) |
+ (options->V3AuthoritativeDir ?
+ (V3_DIRINFO|MICRODESC_DIRINFO|EXTRAINFO_DIRINFO) : NO_DIRINFO) |
+ (options->BridgeAuthoritativeDir ? BRIDGE_DIRINFO : NO_DIRINFO) |
+ (options->HSAuthoritativeDir ? HIDSERV_DIRINFO : NO_DIRINFO));
ds = router_get_trusteddirserver_by_digest(digest);
if (!ds) {
ds = add_trusted_dir_server(options->Nickname, NULL,
- (uint16_t)options->DirPort,
- (uint16_t)options->ORPort,
+ router_get_advertised_dir_port(options, 0),
+ router_get_advertised_or_port(options),
digest,
v3_digest,
type);
@@ -723,8 +729,8 @@ init_keys(void)
type, ds->type);
ds->type = type;
}
- if (v3_digest_set && (ds->type & V3_AUTHORITY) &&
- memcmp(v3_digest, ds->v3_identity_digest, DIGEST_LEN)) {
+ if (v3_digest_set && (ds->type & V3_DIRINFO) &&
+ tor_memneq(v3_digest, ds->v3_identity_digest, DIGEST_LEN)) {
log_warn(LD_DIR, "V3 identity key does not match identity declared in "
"DirServer line. Adjusting.");
memcpy(ds->v3_identity_digest, v3_digest, DIGEST_LEN);
@@ -762,7 +768,7 @@ router_reset_reachability(void)
int
check_whether_orport_reachable(void)
{
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
return options->AssumeReachable ||
can_reach_or_port;
}
@@ -771,7 +777,7 @@ check_whether_orport_reachable(void)
int
check_whether_dirport_reachable(void)
{
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
return !options->DirPort ||
options->AssumeReachable ||
we_are_hibernating() ||
@@ -786,7 +792,7 @@ check_whether_dirport_reachable(void)
* a DirPort.
*/
static int
-decide_to_advertise_dirport(or_options_t *options, uint16_t dir_port)
+decide_to_advertise_dirport(const or_options_t *options, uint16_t dir_port)
{
static int advertising=1; /* start out assuming we will advertise */
int new_choice=1;
@@ -804,6 +810,8 @@ decide_to_advertise_dirport(or_options_t *options, uint16_t dir_port)
return 0;
if (!check_whether_dirport_reachable())
return 0;
+ if (!router_get_advertised_dir_port(options, dir_port))
+ return 0;
/* Section two: reasons to publish or not publish that the user
* might find surprising. These are generally config options that
@@ -852,9 +860,29 @@ consider_testing_reachability(int test_or, int test_dir)
const routerinfo_t *me = router_get_my_routerinfo();
int orport_reachable = check_whether_orport_reachable();
tor_addr_t addr;
+ const or_options_t *options = get_options();
if (!me)
return;
+ if (routerset_contains_router(options->ExcludeNodes, me, -1) &&
+ options->StrictNodes) {
+ /* If we've excluded ourself, and StrictNodes is set, we can't test
+ * ourself. */
+ if (test_or || test_dir) {
+#define SELF_EXCLUDED_WARN_INTERVAL 3600
+ static ratelim_t warning_limit=RATELIM_INIT(SELF_EXCLUDED_WARN_INTERVAL);
+ char *msg;
+ if ((msg = rate_limit_log(&warning_limit, approx_time()))) {
+ log_warn(LD_CIRC, "Can't peform self-tests for this relay: we have "
+ "listed ourself in ExcludeNodes, and StrictNodes is set. "
+ "We cannot learn whether we are usable, and will not "
+ "be able to advertise ourself.%s", msg);
+ tor_free(msg);
+ }
+ }
+ return;
+ }
+
if (test_or && (!orport_reachable || !circuit_enough_testing_circs())) {
extend_info_t *ei;
log_info(LD_CIRC, "Testing %s of my ORPort: %s:%d.",
@@ -886,19 +914,14 @@ consider_testing_reachability(int test_or, int test_dir)
void
router_orport_found_reachable(void)
{
- if (!can_reach_or_port) {
- const routerinfo_t *me = router_get_my_routerinfo();
+ const routerinfo_t *me = router_get_my_routerinfo();
+ if (!can_reach_or_port && me) {
log_notice(LD_OR,"Self-testing indicates your ORPort is reachable from "
"the outside. Excellent.%s",
- get_options()->_PublishServerDescriptor != NO_AUTHORITY ?
+ get_options()->_PublishServerDescriptor != NO_DIRINFO ?
" Publishing server descriptor." : "");
can_reach_or_port = 1;
- mark_my_descriptor_dirty();
- if (!me) { /* should never happen */
- log_warn(LD_BUG, "ORPort found reachable, but I have no routerinfo "
- "yet. Failing to inform controller of success.");
- return;
- }
+ mark_my_descriptor_dirty("ORPort found reachable");
control_event_server_status(LOG_NOTICE,
"REACHABILITY_SUCCEEDED ORADDRESS=%s:%d",
me->address, me->or_port);
@@ -909,18 +932,13 @@ router_orport_found_reachable(void)
void
router_dirport_found_reachable(void)
{
- if (!can_reach_dir_port) {
- const routerinfo_t *me = router_get_my_routerinfo();
+ const routerinfo_t *me = router_get_my_routerinfo();
+ if (!can_reach_dir_port && me) {
log_notice(LD_DIRSERV,"Self-testing indicates your DirPort is reachable "
"from the outside. Excellent.");
can_reach_dir_port = 1;
- if (!me || decide_to_advertise_dirport(get_options(), me->dir_port))
- mark_my_descriptor_dirty();
- if (!me) { /* should never happen */
- log_warn(LD_BUG, "DirPort found reachable, but I have no routerinfo "
- "yet. Failing to inform controller of success.");
- return;
- }
+ if (decide_to_advertise_dirport(get_options(), me->dir_port))
+ mark_my_descriptor_dirty("DirPort found reachable");
control_event_server_status(LOG_NOTICE,
"REACHABILITY_SUCCEEDED DIRADDRESS=%s:%d",
me->address, me->dir_port);
@@ -960,7 +978,7 @@ router_perform_bandwidth_test(int num_circs, time_t now)
* directory server.
*/
int
-authdir_mode(or_options_t *options)
+authdir_mode(const or_options_t *options)
{
return options->AuthoritativeDir != 0;
}
@@ -968,7 +986,7 @@ authdir_mode(or_options_t *options)
* directory server.
*/
int
-authdir_mode_v1(or_options_t *options)
+authdir_mode_v1(const or_options_t *options)
{
return authdir_mode(options) && options->V1AuthoritativeDir != 0;
}
@@ -976,7 +994,7 @@ authdir_mode_v1(or_options_t *options)
* directory server.
*/
int
-authdir_mode_v2(or_options_t *options)
+authdir_mode_v2(const or_options_t *options)
{
return authdir_mode(options) && options->V2AuthoritativeDir != 0;
}
@@ -984,13 +1002,13 @@ authdir_mode_v2(or_options_t *options)
* directory server.
*/
int
-authdir_mode_v3(or_options_t *options)
+authdir_mode_v3(const or_options_t *options)
{
return authdir_mode(options) && options->V3AuthoritativeDir != 0;
}
/** Return true iff we are a v1, v2, or v3 directory authority. */
int
-authdir_mode_any_main(or_options_t *options)
+authdir_mode_any_main(const or_options_t *options)
{
return options->V1AuthoritativeDir ||
options->V2AuthoritativeDir ||
@@ -999,7 +1017,7 @@ authdir_mode_any_main(or_options_t *options)
/** Return true if we believe ourselves to be any kind of
* authoritative directory beyond just a hidserv authority. */
int
-authdir_mode_any_nonhidserv(or_options_t *options)
+authdir_mode_any_nonhidserv(const or_options_t *options)
{
return options->BridgeAuthoritativeDir ||
authdir_mode_any_main(options);
@@ -1008,7 +1026,7 @@ authdir_mode_any_nonhidserv(or_options_t *options)
* authoritative about receiving and serving descriptors of type
* <b>purpose</b> its dirport. Use -1 for "any purpose". */
int
-authdir_mode_handles_descs(or_options_t *options, int purpose)
+authdir_mode_handles_descs(const or_options_t *options, int purpose)
{
if (purpose < 0)
return authdir_mode_any_nonhidserv(options);
@@ -1023,7 +1041,7 @@ authdir_mode_handles_descs(or_options_t *options, int purpose)
* publishes its own network statuses.
*/
int
-authdir_mode_publishes_statuses(or_options_t *options)
+authdir_mode_publishes_statuses(const or_options_t *options)
{
if (authdir_mode_bridge(options))
return 0;
@@ -1033,7 +1051,7 @@ authdir_mode_publishes_statuses(or_options_t *options)
* tests reachability of the descriptors it learns about.
*/
int
-authdir_mode_tests_reachability(or_options_t *options)
+authdir_mode_tests_reachability(const or_options_t *options)
{
return authdir_mode_handles_descs(options, -1);
}
@@ -1041,7 +1059,7 @@ authdir_mode_tests_reachability(or_options_t *options)
* directory server.
*/
int
-authdir_mode_bridge(or_options_t *options)
+authdir_mode_bridge(const or_options_t *options)
{
return authdir_mode(options) && options->BridgeAuthoritativeDir != 0;
}
@@ -1049,7 +1067,7 @@ authdir_mode_bridge(or_options_t *options)
/** Return true iff we are trying to be a server.
*/
int
-server_mode(or_options_t *options)
+server_mode(const or_options_t *options)
{
if (options->ClientOnly) return 0;
return (options->ORPort != 0 || options->ORListenAddress);
@@ -1058,7 +1076,7 @@ server_mode(or_options_t *options)
/** Return true iff we are trying to be a non-bridge server.
*/
int
-public_server_mode(or_options_t *options)
+public_server_mode(const or_options_t *options)
{
if (!server_mode(options)) return 0;
return (!options->BridgeRelay);
@@ -1068,12 +1086,12 @@ public_server_mode(or_options_t *options)
* in the consensus mean that we don't want to allow exits from circuits
* we got from addresses not known to be servers. */
int
-should_refuse_unknown_exits(or_options_t *options)
+should_refuse_unknown_exits(const or_options_t *options)
{
- if (options->RefuseUnknownExits_ != -1) {
- return options->RefuseUnknownExits_;
+ if (options->RefuseUnknownExits != -1) {
+ return options->RefuseUnknownExits;
} else {
- return networkstatus_get_param(NULL, "refuseunknownexits", 1);
+ return networkstatus_get_param(NULL, "refuseunknownexits", 1, 0, 1);
}
}
@@ -1100,12 +1118,12 @@ set_server_advertised(int s)
/** Return true iff we are trying to be a socks proxy. */
int
-proxy_mode(or_options_t *options)
+proxy_mode(const or_options_t *options)
{
- return (options->SocksPort != 0 || options->SocksListenAddress ||
- options->TransPort != 0 || options->TransListenAddress ||
- options->NATDPort != 0 || options->NATDListenAddress ||
- options->DNSPort != 0 || options->DNSListenAddress);
+ return (options->SocksPort != 0 ||
+ options->TransPort != 0 ||
+ options->NATDPort != 0 ||
+ options->DNSPort != 0);
}
/** Decide if we're a publishable server. We are a publishable server if:
@@ -1121,16 +1139,18 @@ proxy_mode(or_options_t *options)
static int
decide_if_publishable_server(void)
{
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
if (options->ClientOnly)
return 0;
- if (options->_PublishServerDescriptor == NO_AUTHORITY)
+ if (options->_PublishServerDescriptor == NO_DIRINFO)
return 0;
if (!server_mode(options))
return 0;
if (authdir_mode(options))
return 1;
+ if (!router_get_advertised_or_port(options))
+ return 0;
return check_whether_orport_reachable();
}
@@ -1160,6 +1180,40 @@ consider_publishable_server(int force)
}
}
+/** Return the port that we should advertise as our ORPort; this is either
+ * the one configured in the ORPort option, or the one we actually bound to
+ * if ORPort is "auto". */
+uint16_t
+router_get_advertised_or_port(const or_options_t *options)
+{
+ if (options->ORPort == CFG_AUTO_PORT) {
+ connection_t *c = connection_get_by_type(CONN_TYPE_OR_LISTENER);
+ if (c)
+ return c->port;
+ return 0;
+ }
+ return options->ORPort;
+}
+
+/** Return the port that we should advertise as our DirPort;
+ * this is one of three possibilities:
+ * The one that is passed as <b>dirport</b> if the DirPort option is 0, or
+ * the one configured in the DirPort option,
+ * or the one we actually bound to if DirPort is "auto". */
+uint16_t
+router_get_advertised_dir_port(const or_options_t *options, uint16_t dirport)
+{
+ if (!options->DirPort)
+ return dirport;
+ if (options->DirPort == CFG_AUTO_PORT) {
+ connection_t *c = connection_get_by_type(CONN_TYPE_DIR_LISTENER);
+ if (c)
+ return c->port;
+ return 0;
+ }
+ return options->DirPort;
+}
+
/*
* OR descriptor generation.
*/
@@ -1185,7 +1239,7 @@ router_upload_dir_desc_to_dirservers(int force)
extrainfo_t *ei;
char *msg;
size_t desc_len, extra_len = 0, total_len;
- authority_type_t auth = get_options()->_PublishServerDescriptor;
+ dirinfo_type_t auth = get_options()->_PublishServerDescriptor;
ri = router_get_my_routerinfo();
if (!ri) {
@@ -1193,10 +1247,14 @@ router_upload_dir_desc_to_dirservers(int force)
return;
}
ei = router_get_my_extrainfo();
- if (auth == NO_AUTHORITY)
+ if (auth == NO_DIRINFO)
return;
if (!force && !desc_needs_upload)
return;
+
+ log_info(LD_OR, "Uploading relay descriptor to directory authorities%s",
+ force ? " (forced)" : "");
+
desc_needs_upload = 0;
desc_len = ri->cache_info.signed_descriptor_len;
@@ -1210,7 +1268,7 @@ router_upload_dir_desc_to_dirservers(int force)
msg[desc_len+extra_len] = 0;
directory_post_to_dirservers(DIR_PURPOSE_UPLOAD_DIR,
- (auth & BRIDGE_AUTHORITY) ?
+ (auth & BRIDGE_DIRINFO) ?
ROUTER_PURPOSE_BRIDGE :
ROUTER_PURPOSE_GENERAL,
auth, msg, desc_len, extra_len);
@@ -1256,7 +1314,7 @@ int
router_digest_is_me(const char *digest)
{
return (server_identitykey &&
- !memcmp(server_identitykey_digest, digest, DIGEST_LEN));
+ tor_memeq(server_identitykey_digest, digest, DIGEST_LEN));
}
/** Return true iff I'm a server and <b>digest</b> is equal to
@@ -1268,7 +1326,7 @@ router_extrainfo_digest_is_me(const char *digest)
if (!ei)
return 0;
- return !memcmp(digest,
+ return tor_memeq(digest,
ei->cache_info.signed_descriptor_digest,
DIGEST_LEN);
}
@@ -1344,7 +1402,7 @@ static int router_guess_address_from_dir_headers(uint32_t *guess);
* dirserver headers. Place the answer in *<b>addr</b> and return
* 0 on success, else return -1 if we have no guess. */
int
-router_pick_published_address(or_options_t *options, uint32_t *addr)
+router_pick_published_address(const or_options_t *options, uint32_t *addr)
{
if (resolve_my_address(LOG_INFO, options, addr, NULL) < 0) {
log_info(LD_CONFIG, "Could not determine our address locally. "
@@ -1371,12 +1429,13 @@ router_rebuild_descriptor(int force)
uint32_t addr;
char platform[256];
int hibernating = we_are_hibernating();
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
if (desc_clean_since && !force)
return 0;
- if (router_pick_published_address(options, &addr) < 0) {
+ if (router_pick_published_address(options, &addr) < 0 ||
+ router_get_advertised_or_port(options) == 0) {
/* Stop trying to rebuild our descriptor every second. We'll
* learn that it's time to try again when ip_address_changed()
* marks it dirty. */
@@ -1384,13 +1443,15 @@ router_rebuild_descriptor(int force)
return -1;
}
+ log_info(LD_OR, "Rebuilding relay descriptor%s", force ? " (forced)" : "");
+
ri = tor_malloc_zero(sizeof(routerinfo_t));
ri->cache_info.routerlist_index = -1;
ri->address = tor_dup_ip(addr);
ri->nickname = tor_strdup(options->Nickname);
ri->addr = addr;
- ri->or_port = options->ORPort;
- ri->dir_port = options->DirPort;
+ ri->or_port = router_get_advertised_or_port(options);
+ ri->dir_port = router_get_advertised_dir_port(options, 0);
ri->cache_info.published_on = time(NULL);
ri->onion_pkey = crypto_pk_dup_key(get_onion_key()); /* must invoke from
* main thread */
@@ -1411,9 +1472,14 @@ router_rebuild_descriptor(int force)
ri->bandwidthcapacity = hibernating ? 0 : rep_hist_bandwidth_assess();
- policies_parse_exit_policy(options->ExitPolicy, &ri->exit_policy,
- options->ExitPolicyRejectPrivate,
- ri->address, !options->BridgeRelay);
+ if (dns_seems_to_be_broken() || has_dns_init_failed()) {
+ /* DNS is screwed up; don't claim to be an exit. */
+ policies_exit_policy_append_reject_star(&ri->exit_policy);
+ } else {
+ policies_parse_exit_policy(options->ExitPolicy, &ri->exit_policy,
+ options->ExitPolicyRejectPrivate,
+ ri->address, !options->BridgeRelay);
+ }
ri->policy_is_reject_star =
policy_is_reject_star(ri->exit_policy);
@@ -1551,14 +1617,15 @@ void
mark_my_descriptor_dirty_if_older_than(time_t when)
{
if (desc_clean_since < when)
- mark_my_descriptor_dirty();
+ mark_my_descriptor_dirty("time for new descriptor");
}
/** Call when the current descriptor is out of date. */
void
-mark_my_descriptor_dirty(void)
+mark_my_descriptor_dirty(const char *reason)
{
desc_clean_since = 0;
+ log_info(LD_OR, "Decided to publish new relay descriptor: %s", reason);
}
/** How frequently will we republish our descriptor because of large (factor
@@ -1583,7 +1650,7 @@ check_descriptor_bandwidth_changed(time_t now)
if (last_changed+MAX_BANDWIDTH_CHANGE_FREQ < now) {
log_info(LD_GENERAL,
"Measured bandwidth has changed; rebuilding descriptor.");
- mark_my_descriptor_dirty();
+ mark_my_descriptor_dirty("bandwidth has changed");
last_changed = now;
}
}
@@ -1624,7 +1691,7 @@ void
check_descriptor_ipaddress_changed(time_t now)
{
uint32_t prev, cur;
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
(void) now;
if (!desc_routerinfo)
@@ -1656,7 +1723,7 @@ router_new_address_suggestion(const char *suggestion,
{
uint32_t addr, cur = 0;
struct in_addr in;
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
/* first, learn what the IP address actually is */
if (!tor_inet_aton(suggestion, &in)) {
@@ -1755,7 +1822,7 @@ router_dump_router_to_string(char *s, size_t maxlen, routerinfo_t *router,
int result=0;
addr_policy_t *tmpe;
char *family_line;
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
/* Make sure the identity key matches the one in the routerinfo. */
if (crypto_pk_cmp_keys(ident_key, router->identity_pkey)) {
@@ -1865,9 +1932,7 @@ router_dump_router_to_string(char *s, size_t maxlen, routerinfo_t *router,
}
/* Write the exit policy to the end of 's'. */
- if (dns_seems_to_be_broken() || has_dns_init_failed() ||
- !router->exit_policy || !smartlist_len(router->exit_policy)) {
- /* DNS is screwed up; don't claim to be an exit. */
+ if (!router->exit_policy || !smartlist_len(router->exit_policy)) {
strlcat(s+written, "reject *:*\n", maxlen-written);
written += strlen("reject *:*\n");
tmpe = NULL;
@@ -1999,7 +2064,7 @@ int
extrainfo_dump_to_string(char **s_out, extrainfo_t *extrainfo,
crypto_pk_env_t *ident_key)
{
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
char identity[HEX_DIGEST_LEN+1];
char published[ISO_TIME_LEN+1];
char digest[DIGEST_LEN];
@@ -2184,6 +2249,186 @@ is_legal_hexdigest(const char *s)
strspn(s,HEX_CHARACTERS)==HEX_DIGEST_LEN);
}
+/** Use <b>buf</b> (which must be at least NODE_DESC_BUF_LEN bytes long) to
+ * hold a human-readable description of a node with identity digest
+ * <b>id_digest</b>, named-status <b>is_named</b>, nickname <b>nickname</b>,
+ * and address <b>addr</b> or <b>addr32h</b>.
+ *
+ * The <b>nickname</b> and <b>addr</b> fields are optional and may be set to
+ * NULL. The <b>addr32h</b> field is optional and may be set to 0.
+ *
+ * Return a pointer to the front of <b>buf</b>.
+ */
+const char *
+format_node_description(char *buf,
+ const char *id_digest,
+ int is_named,
+ const char *nickname,
+ const tor_addr_t *addr,
+ uint32_t addr32h)
+{
+ char *cp;
+
+ if (!buf)
+ return "<NULL BUFFER>";
+
+ buf[0] = '$';
+ base16_encode(buf+1, HEX_DIGEST_LEN+1, id_digest, DIGEST_LEN);
+ cp = buf+1+HEX_DIGEST_LEN;
+ if (nickname) {
+ buf[1+HEX_DIGEST_LEN] = is_named ? '=' : '~';
+ strlcpy(buf+1+HEX_DIGEST_LEN+1, nickname, MAX_NICKNAME_LEN+1);
+ cp += strlen(cp);
+ }
+ if (addr32h || addr) {
+ memcpy(cp, " at ", 4);
+ cp += 4;
+ if (addr) {
+ tor_addr_to_str(cp, addr, TOR_ADDR_BUF_LEN, 0);
+ } else {
+ struct in_addr in;
+ in.s_addr = htonl(addr32h);
+ tor_inet_ntoa(&in, cp, INET_NTOA_BUF_LEN);
+ }
+ }
+ return buf;
+}
+
+/** Use <b>buf</b> (which must be at least NODE_DESC_BUF_LEN bytes long) to
+ * hold a human-readable description of <b>ri</b>.
+ *
+ *
+ * Return a pointer to the front of <b>buf</b>.
+ */
+const char *
+router_get_description(char *buf, const routerinfo_t *ri)
+{
+ if (!ri)
+ return "<null>";
+ return format_node_description(buf,
+ ri->cache_info.identity_digest,
+ router_is_named(ri),
+ ri->nickname,
+ NULL,
+ ri->addr);
+}
+
+/** Use <b>buf</b> (which must be at least NODE_DESC_BUF_LEN bytes long) to
+ * hold a human-readable description of <b>node</b>.
+ *
+ * Return a pointer to the front of <b>buf</b>.
+ */
+const char *
+node_get_description(char *buf, const node_t *node)
+{
+ const char *nickname = NULL;
+ uint32_t addr32h = 0;
+ int is_named = 0;
+
+ if (!node)
+ return "<null>";
+
+ if (node->rs) {
+ nickname = node->rs->nickname;
+ is_named = node->rs->is_named;
+ addr32h = node->rs->addr;
+ } else if (node->ri) {
+ nickname = node->ri->nickname;
+ addr32h = node->ri->addr;
+ }
+
+ return format_node_description(buf,
+ node->identity,
+ is_named,
+ nickname,
+ NULL,
+ addr32h);
+}
+
+/** Use <b>buf</b> (which must be at least NODE_DESC_BUF_LEN bytes long) to
+ * hold a human-readable description of <b>rs</b>.
+ *
+ * Return a pointer to the front of <b>buf</b>.
+ */
+const char *
+routerstatus_get_description(char *buf, const routerstatus_t *rs)
+{
+ if (!rs)
+ return "<null>";
+ return format_node_description(buf,
+ rs->identity_digest,
+ rs->is_named,
+ rs->nickname,
+ NULL,
+ rs->addr);
+}
+
+/** Use <b>buf</b> (which must be at least NODE_DESC_BUF_LEN bytes long) to
+ * hold a human-readable description of <b>ei</b>.
+ *
+ * Return a pointer to the front of <b>buf</b>.
+ */
+const char *
+extend_info_get_description(char *buf, const extend_info_t *ei)
+{
+ if (!ei)
+ return "<null>";
+ return format_node_description(buf,
+ ei->identity_digest,
+ 0,
+ ei->nickname,
+ &ei->addr,
+ 0);
+}
+
+/** Return a human-readable description of the routerinfo_t <b>ri</b>.
+ *
+ * This function is not thread-safe. Each call to this function invalidates
+ * previous values returned by this function.
+ */
+const char *
+router_describe(const routerinfo_t *ri)
+{
+ static char buf[NODE_DESC_BUF_LEN];
+ return router_get_description(buf, ri);
+}
+
+/** Return a human-readable description of the node_t <b>node</b>.
+ *
+ * This function is not thread-safe. Each call to this function invalidates
+ * previous values returned by this function.
+ */
+const char *
+node_describe(const node_t *node)
+{
+ static char buf[NODE_DESC_BUF_LEN];
+ return node_get_description(buf, node);
+}
+
+/** Return a human-readable description of the routerstatus_t <b>rs</b>.
+ *
+ * This function is not thread-safe. Each call to this function invalidates
+ * previous values returned by this function.
+ */
+const char *
+routerstatus_describe(const routerstatus_t *rs)
+{
+ static char buf[NODE_DESC_BUF_LEN];
+ return routerstatus_get_description(buf, rs);
+}
+
+/** Return a human-readable description of the extend_info_t <b>ri</b>.
+ *
+ * This function is not thread-safe. Each call to this function invalidates
+ * previous values returned by this function.
+ */
+const char *
+extend_info_describe(const extend_info_t *ei)
+{
+ static char buf[NODE_DESC_BUF_LEN];
+ return extend_info_get_description(buf, ei);
+}
+
/** Set <b>buf</b> (which must have MAX_VERBOSE_NICKNAME_LEN+1 bytes) to the
* verbose representation of the identity of <b>router</b>. The format is:
* A dollar sign.
@@ -2196,7 +2441,7 @@ router_get_verbose_nickname(char *buf, const routerinfo_t *router)
{
const char *good_digest = networkstatus_get_router_digest_by_nickname(
router->nickname);
- int is_named = good_digest && !memcmp(good_digest,
+ int is_named = good_digest && tor_memeq(good_digest,
router->cache_info.identity_digest,
DIGEST_LEN);
buf[0] = '$';
diff --git a/src/or/router.h b/src/or/router.h
index f6a88d7637..f6d3c12333 100644
--- a/src/or/router.h
+++ b/src/or/router.h
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -39,27 +39,31 @@ void router_orport_found_reachable(void);
void router_dirport_found_reachable(void);
void router_perform_bandwidth_test(int num_circs, time_t now);
-int authdir_mode(or_options_t *options);
-int authdir_mode_v1(or_options_t *options);
-int authdir_mode_v2(or_options_t *options);
-int authdir_mode_v3(or_options_t *options);
-int authdir_mode_any_main(or_options_t *options);
-int authdir_mode_any_nonhidserv(or_options_t *options);
-int authdir_mode_handles_descs(or_options_t *options, int purpose);
-int authdir_mode_publishes_statuses(or_options_t *options);
-int authdir_mode_tests_reachability(or_options_t *options);
-int authdir_mode_bridge(or_options_t *options);
+int authdir_mode(const or_options_t *options);
+int authdir_mode_v1(const or_options_t *options);
+int authdir_mode_v2(const or_options_t *options);
+int authdir_mode_v3(const or_options_t *options);
+int authdir_mode_any_main(const or_options_t *options);
+int authdir_mode_any_nonhidserv(const or_options_t *options);
+int authdir_mode_handles_descs(const or_options_t *options, int purpose);
+int authdir_mode_publishes_statuses(const or_options_t *options);
+int authdir_mode_tests_reachability(const or_options_t *options);
+int authdir_mode_bridge(const or_options_t *options);
-int server_mode(or_options_t *options);
-int public_server_mode(or_options_t *options);
+uint16_t router_get_advertised_or_port(const or_options_t *options);
+uint16_t router_get_advertised_dir_port(const or_options_t *options,
+ uint16_t dirport);
+
+int server_mode(const or_options_t *options);
+int public_server_mode(const or_options_t *options);
int advertised_server_mode(void);
-int proxy_mode(or_options_t *options);
+int proxy_mode(const or_options_t *options);
void consider_publishable_server(int force);
-int should_refuse_unknown_exits(or_options_t *options);
+int should_refuse_unknown_exits(const or_options_t *options);
void router_upload_dir_desc_to_dirservers(int force);
void mark_my_descriptor_dirty_if_older_than(time_t when);
-void mark_my_descriptor_dirty(void);
+void mark_my_descriptor_dirty(const char *reason);
void check_descriptor_bandwidth_changed(time_t now);
void check_descriptor_ipaddress_changed(time_t now);
void router_new_address_suggestion(const char *suggestion,
@@ -73,7 +77,7 @@ int router_digest_is_me(const char *digest);
int router_extrainfo_digest_is_me(const char *digest);
int router_is_me(const routerinfo_t *router);
int router_fingerprint_is_me(const char *fp);
-int router_pick_published_address(or_options_t *options, uint32_t *addr);
+int router_pick_published_address(const or_options_t *options, uint32_t *addr);
int router_rebuild_descriptor(int force);
int router_dump_router_to_string(char *s, size_t maxlen, routerinfo_t *router,
crypto_pk_env_t *ident_key);
@@ -82,6 +86,30 @@ int extrainfo_dump_to_string(char **s, extrainfo_t *extrainfo,
int is_legal_nickname(const char *s);
int is_legal_nickname_or_hexdigest(const char *s);
int is_legal_hexdigest(const char *s);
+
+/**
+ * Longest allowed output of format_node_description, plus 1 character for
+ * NUL. This allows space for:
+ * "$FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF~xxxxxxxxxxxxxxxxxxx at"
+ * " [ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255]"
+ * plus a terminating NUL.
+ */
+#define NODE_DESC_BUF_LEN (MAX_VERBOSE_NICKNAME_LEN+4+TOR_ADDR_BUF_LEN)
+const char *format_node_description(char *buf,
+ const char *id_digest,
+ int is_named,
+ const char *nickname,
+ const tor_addr_t *addr,
+ uint32_t addr32h);
+const char *router_get_description(char *buf, const routerinfo_t *ri);
+const char *node_get_description(char *buf, const node_t *node);
+const char *routerstatus_get_description(char *buf, const routerstatus_t *rs);
+const char *extend_info_get_description(char *buf, const extend_info_t *ei);
+const char *router_describe(const routerinfo_t *ri);
+const char *node_describe(const node_t *node);
+const char *routerstatus_describe(const routerstatus_t *ri);
+const char *extend_info_describe(const extend_info_t *ei);
+
void router_get_verbose_nickname(char *buf, const routerinfo_t *router);
void routerstatus_get_verbose_nickname(char *buf,
const routerstatus_t *router);
diff --git a/src/or/routerlist.c b/src/or/routerlist.c
index e58ec6a6f5..c0a233ceed 100644
--- a/src/or/routerlist.c
+++ b/src/or/routerlist.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -40,9 +40,9 @@
/* static function prototypes */
static const routerstatus_t *router_pick_directory_server_impl(
- authority_type_t auth, int flags);
+ dirinfo_type_t auth, int flags);
static const routerstatus_t *router_pick_trusteddirserver_impl(
- authority_type_t auth, int flags, int *n_busy_out);
+ dirinfo_type_t auth, int flags, int *n_busy_out);
static void mark_all_trusteddirservers_up(void);
static int router_nickname_matches(const routerinfo_t *router,
const char *nickname);
@@ -56,6 +56,8 @@ static const char *signed_descriptor_get_body_impl(
int with_annotations);
static void list_pending_downloads(digestmap_t *result,
int purpose, const char *prefix);
+static void launch_dummy_descriptor_download_as_needed(time_t now,
+ const or_options_t *options);
DECLARE_TYPED_DIGESTMAP_FNS(sdmap_, digest_sd_map_t, signed_descriptor_t)
DECLARE_TYPED_DIGESTMAP_FNS(rimap_, digest_ri_map_t, routerinfo_t)
@@ -97,7 +99,7 @@ static smartlist_t *warned_nicknames = NULL;
/** The last time we tried to download any routerdesc, or 0 for "never". We
* use this to rate-limit download attempts when the number of routerdescs to
* download is low. */
-static time_t last_routerdesc_download_attempted = 0;
+static time_t last_descriptor_download_attempted = 0;
/** When we last computed the weights to use for bandwidths on directory
* requests, what were the total weighted bandwidth, and our share of that
@@ -109,7 +111,7 @@ static uint64_t sl_last_total_weighted_bw = 0,
/** Return the number of directory authorities whose type matches some bit set
* in <b>type</b> */
int
-get_n_authorities(authority_type_t type)
+get_n_authorities(dirinfo_type_t type)
{
int n = 0;
if (!trusted_dir_servers)
@@ -120,7 +122,7 @@ get_n_authorities(authority_type_t type)
return n;
}
-#define get_n_v2_authorities() get_n_authorities(V2_AUTHORITY)
+#define get_n_v2_authorities() get_n_authorities(V2_DIRINFO)
/** Helper: Return the cert_list_t for an authority whose authority ID is
* <b>id_digest</b>, allocating a new list if necessary. */
@@ -168,7 +170,7 @@ already_have_cert(authority_cert_t *cert)
SMARTLIST_FOREACH(cl->certs, authority_cert_t *, c,
{
- if (!memcmp(c->cache_info.signed_descriptor_digest,
+ if (tor_memeq(c->cache_info.signed_descriptor_digest,
cert->cache_info.signed_descriptor_digest,
DIGEST_LEN))
return 1;
@@ -332,7 +334,7 @@ trusted_dirs_remove_old_certs(void)
time_t cert_published;
if (newest == cert)
continue;
- expired = time_definitely_after(now, cert->expires, CERT_EXPIRY_SKEW);
+ expired = now > cert->expires;
cert_published = cert->cache_info.published_on;
/* Store expired certs for 48 hours after a newer arrives;
*/
@@ -382,16 +384,16 @@ authority_cert_get_by_sk_digest(const char *sk_digest)
return NULL;
if ((c = get_my_v3_authority_cert()) &&
- !memcmp(c->signing_key_digest, sk_digest, DIGEST_LEN))
+ tor_memeq(c->signing_key_digest, sk_digest, DIGEST_LEN))
return c;
if ((c = get_my_v3_legacy_cert()) &&
- !memcmp(c->signing_key_digest, sk_digest, DIGEST_LEN))
+ tor_memeq(c->signing_key_digest, sk_digest, DIGEST_LEN))
return c;
DIGESTMAP_FOREACH(trusted_dir_certs, key, cert_list_t *, cl) {
SMARTLIST_FOREACH(cl->certs, authority_cert_t *, cert,
{
- if (!memcmp(cert->signing_key_digest, sk_digest, DIGEST_LEN))
+ if (tor_memeq(cert->signing_key_digest, sk_digest, DIGEST_LEN))
return cert;
});
} DIGESTMAP_FOREACH_END;
@@ -410,7 +412,7 @@ authority_cert_get_by_digests(const char *id_digest,
!(cl = digestmap_get(trusted_dir_certs, id_digest)))
return NULL;
SMARTLIST_FOREACH(cl->certs, authority_cert_t *, cert,
- if (!memcmp(cert->signing_key_digest, sk_digest, DIGEST_LEN))
+ if (tor_memeq(cert->signing_key_digest, sk_digest, DIGEST_LEN))
return cert; );
return NULL;
@@ -518,13 +520,13 @@ authority_certs_fetch_missing(networkstatus_t *status, time_t now)
}
SMARTLIST_FOREACH_BEGIN(trusted_dir_servers, trusted_dir_server_t *, ds) {
int found = 0;
- if (!(ds->type & V3_AUTHORITY))
+ if (!(ds->type & V3_DIRINFO))
continue;
if (smartlist_digest_isin(missing_digests, ds->v3_identity_digest))
continue;
cl = get_cert_list(ds->v3_identity_digest);
SMARTLIST_FOREACH(cl->certs, authority_cert_t *, cert, {
- if (! time_definitely_after(now, cert->expires, CERT_EXPIRY_SKEW)) {
+ if (now < cert->expires) {
/* It's not expired, and we weren't looking for something to
* verify a consensus with. Call it done. */
download_status_reset(&cl->dl_status);
@@ -535,8 +537,8 @@ authority_certs_fetch_missing(networkstatus_t *status, time_t now)
if (!found &&
download_status_is_ready(&cl->dl_status, now,MAX_CERT_DL_FAILURES) &&
!digestmap_get(pending, ds->v3_identity_digest)) {
- log_notice(LD_DIR, "No current certificate known for authority %s; "
- "launching request.", ds->nickname);
+ log_info(LD_DIR, "No current certificate known for authority %s; "
+ "launching request.", ds->nickname);
smartlist_add(missing_digests, ds->v3_identity_digest);
}
} SMARTLIST_FOREACH_END(ds);
@@ -931,7 +933,7 @@ router_get_trusted_dir_servers(void)
* servers that have returned 503 recently.
*/
const routerstatus_t *
-router_pick_directory_server(authority_type_t type, int flags)
+router_pick_directory_server(dirinfo_type_t type, int flags)
{
const routerstatus_t *choice;
if (get_options()->PreferTunneledDirConns)
@@ -976,7 +978,7 @@ router_get_my_share_of_directory_requests(double *v2_share_out,
/* XXXX This is a bit of a kludge */
if (rs->is_v2_dir) {
sl_last_total_weighted_bw = 0;
- router_pick_directory_server(V2_AUTHORITY, pds_flags);
+ router_pick_directory_server(V2_DIRINFO, pds_flags);
if (sl_last_total_weighted_bw != 0) {
*v2_share_out = U64_TO_DBL(sl_last_weighted_bw_of_me) /
U64_TO_DBL(sl_last_total_weighted_bw);
@@ -985,7 +987,7 @@ router_get_my_share_of_directory_requests(double *v2_share_out,
if (rs->version_supports_v3_dir) {
sl_last_total_weighted_bw = 0;
- router_pick_directory_server(V3_AUTHORITY, pds_flags);
+ router_pick_directory_server(V3_DIRINFO, pds_flags);
if (sl_last_total_weighted_bw != 0) {
*v3_share_out = U64_TO_DBL(sl_last_weighted_bw_of_me) /
U64_TO_DBL(sl_last_total_weighted_bw);
@@ -1006,7 +1008,7 @@ router_get_trusteddirserver_by_digest(const char *digest)
SMARTLIST_FOREACH(trusted_dir_servers, trusted_dir_server_t *, ds,
{
- if (!memcmp(ds->digest, digest, DIGEST_LEN))
+ if (tor_memeq(ds->digest, digest, DIGEST_LEN))
return ds;
});
@@ -1025,8 +1027,8 @@ trusteddirserver_get_by_v3_auth_digest(const char *digest)
SMARTLIST_FOREACH(trusted_dir_servers, trusted_dir_server_t *, ds,
{
- if (!memcmp(ds->v3_identity_digest, digest, DIGEST_LEN) &&
- (ds->type & V3_AUTHORITY))
+ if (tor_memeq(ds->v3_identity_digest, digest, DIGEST_LEN) &&
+ (ds->type & V3_DIRINFO))
return ds;
});
@@ -1037,7 +1039,7 @@ trusteddirserver_get_by_v3_auth_digest(const char *digest)
* router_pick_directory_server.
*/
const routerstatus_t *
-router_pick_trusteddirserver(authority_type_t type, int flags)
+router_pick_trusteddirserver(dirinfo_type_t type, int flags)
{
const routerstatus_t *choice;
int busy = 0;
@@ -1073,8 +1075,9 @@ router_pick_trusteddirserver(authority_type_t type, int flags)
* that we can use with BEGINDIR.
*/
static const routerstatus_t *
-router_pick_directory_server_impl(authority_type_t type, int flags)
+router_pick_directory_server_impl(dirinfo_type_t type, int flags)
{
+ const or_options_t *options = get_options();
const node_t *result;
smartlist_t *direct, *tunnel;
smartlist_t *trusted_direct, *trusted_tunnel;
@@ -1084,10 +1087,13 @@ router_pick_directory_server_impl(authority_type_t type, int flags)
int requireother = ! (flags & PDS_ALLOW_SELF);
int fascistfirewall = ! (flags & PDS_IGNORE_FASCISTFIREWALL);
int prefer_tunnel = (flags & _PDS_PREFER_TUNNELED_DIR_CONNS);
+ int try_excluding = 1, n_excluded = 0;
if (!consensus)
return NULL;
+ retry_without_exclude:
+
direct = smartlist_create();
tunnel = smartlist_create();
trusted_direct = smartlist_create();
@@ -1101,6 +1107,7 @@ router_pick_directory_server_impl(authority_type_t type, int flags)
int is_overloaded;
tor_addr_t addr;
const routerstatus_t *status = node->rs;
+ const country_t country = node->country;
if (!status)
continue;
@@ -1110,18 +1117,27 @@ router_pick_directory_server_impl(authority_type_t type, int flags)
continue;
if (requireother && router_digest_is_me(node->identity))
continue;
- if (type & V3_AUTHORITY) {
+ if (type & V3_DIRINFO) {
if (!(status->version_supports_v3_dir ||
router_digest_is_trusted_dir_type(node->identity,
- V3_AUTHORITY)))
+ V3_DIRINFO)))
continue;
}
is_trusted = router_digest_is_trusted_dir(node->identity);
- if ((type & V2_AUTHORITY) && !(node->rs->is_v2_dir || is_trusted))
+ if ((type & V2_DIRINFO) && !(node->rs->is_v2_dir || is_trusted))
continue;
- if ((type & EXTRAINFO_CACHE) &&
+ if ((type & EXTRAINFO_DIRINFO) &&
!router_supports_extrainfo(node->identity, 0))
continue;
+ if ((type & MICRODESC_DIRINFO) && !is_trusted &&
+ !node->rs->version_supports_microdesc_cache)
+ continue;
+ if (try_excluding &&
+ routerset_contains_routerstatus(options->ExcludeNodes, status,
+ country)) {
+ ++n_excluded;
+ continue;
+ }
/* XXXX IP6 proposal 118 */
tor_addr_from_ipv4h(&addr, node->rs->addr);
@@ -1165,6 +1181,15 @@ router_pick_directory_server_impl(authority_type_t type, int flags)
smartlist_free(trusted_tunnel);
smartlist_free(overloaded_direct);
smartlist_free(overloaded_tunnel);
+
+ if (result == NULL && try_excluding && !options->StrictNodes && n_excluded) {
+ /* If we got no result, and we are excluding nodes, and StrictNodes is
+ * not set, try again without excluding nodes. */
+ try_excluding = 0;
+ n_excluded = 0;
+ goto retry_without_exclude;
+ }
+
return result ? result->rs : NULL;
}
@@ -1172,9 +1197,10 @@ router_pick_directory_server_impl(authority_type_t type, int flags)
* are as for router_pick_directory_server_impl().
*/
static const routerstatus_t *
-router_pick_trusteddirserver_impl(authority_type_t type, int flags,
+router_pick_trusteddirserver_impl(dirinfo_type_t type, int flags,
int *n_busy_out)
{
+ const or_options_t *options = get_options();
smartlist_t *direct, *tunnel;
smartlist_t *overloaded_direct, *overloaded_tunnel;
const routerinfo_t *me = router_get_my_routerinfo();
@@ -1186,10 +1212,13 @@ router_pick_trusteddirserver_impl(authority_type_t type, int flags,
const int no_serverdesc_fetching =(flags & PDS_NO_EXISTING_SERVERDESC_FETCH);
const int no_microdesc_fetching =(flags & PDS_NO_EXISTING_MICRODESC_FETCH);
int n_busy = 0;
+ int try_excluding = 1, n_excluded = 0;
if (!trusted_dir_servers)
return NULL;
+ retry_without_exclude:
+
direct = smartlist_create();
tunnel = smartlist_create();
overloaded_direct = smartlist_create();
@@ -1203,11 +1232,17 @@ router_pick_trusteddirserver_impl(authority_type_t type, int flags,
if (!d->is_running) continue;
if ((type & d->type) == 0)
continue;
- if ((type & EXTRAINFO_CACHE) &&
+ if ((type & EXTRAINFO_DIRINFO) &&
!router_supports_extrainfo(d->digest, 1))
continue;
if (requireother && me && router_digest_is_me(d->digest))
continue;
+ if (try_excluding &&
+ routerset_contains_routerstatus(options->ExcludeNodes,
+ &d->fake_status, -1)) {
+ ++n_excluded;
+ continue;
+ }
/* XXXX IP6 proposal 118 */
tor_addr_from_ipv4h(&addr, d->addr);
@@ -1261,6 +1296,15 @@ router_pick_trusteddirserver_impl(authority_type_t type, int flags,
smartlist_free(tunnel);
smartlist_free(overloaded_direct);
smartlist_free(overloaded_tunnel);
+
+ if (result == NULL && try_excluding && !options->StrictNodes && n_excluded) {
+ /* If we got no result, and we are excluding nodes, and StrictNodes is
+ * not set, try again without excluding nodes. */
+ try_excluding = 0;
+ n_excluded = 0;
+ goto retry_without_exclude;
+ }
+
return result;
}
@@ -1313,22 +1357,34 @@ addrs_in_same_network_family(const tor_addr_t *a1,
return 0 == tor_addr_compare_masked(a1, a2, 16, CMP_SEMANTIC);
}
-/** Add all the family of <b>router</b> to the smartlist <b>sl</b>.
- * This is used to make sure we don't pick siblings in a single path,
- * or pick more than one relay from a family for our entry guard list.
+/**
+ * Add all the family of <b>node</b>, including <b>node</b> itself, to
+ * the smartlist <b>sl</b>.
+ *
+ * This is used to make sure we don't pick siblings in a single path, or
+ * pick more than one relay from a family for our entry guard list.
+ * Note that a node may be added to <b>sl</b> more than once if it is
+ * part of <b>node</b>'s family for more than one reason.
*/
void
-nodelist_add_node_family(smartlist_t *sl, const node_t *node)
+nodelist_add_node_and_family(smartlist_t *sl, const node_t *node)
{
/* XXXX MOVE */
const smartlist_t *all_nodes = nodelist_get_list();
const smartlist_t *declared_family;
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
tor_assert(node);
declared_family = node_get_declared_family(node);
+ /* Let's make sure that we have the node itself, if it's a real node. */
+ {
+ const node_t *real_node = node_get_by_id(node->identity);
+ if (real_node)
+ smartlist_add(sl, (node_t*)real_node);
+ }
+
/* First, add any nodes with similar network addresses. */
if (options->EnforceDistinctSubnets) {
tor_addr_t node_addr;
@@ -1367,19 +1423,20 @@ nodelist_add_node_family(smartlist_t *sl, const node_t *node)
if (options->NodeFamilySets) {
SMARTLIST_FOREACH(options->NodeFamilySets, const routerset_t *, rs, {
if (routerset_contains_node(rs, node)) {
- routerset_get_all_nodes(sl, rs, 0);
+ routerset_get_all_nodes(sl, rs, NULL, 0);
}
});
}
}
-/** Given a <b>router</b>, add every node_t in its family to <b>sl</b>.
+/** Given a <b>router</b>, add every node_t in its family (including the
+ * node itself</b>) to <b>sl</b>.
*
* Note the type mismatch: This function takes a routerinfo, but adds nodes
* to the smartlist!
*/
static void
-routerlist_add_nodes_in_family(smartlist_t *sl, const routerinfo_t *router)
+routerlist_add_node_and_family(smartlist_t *sl, const routerinfo_t *router)
{
/* XXXX MOVE ? */
node_t fake_node;
@@ -1390,7 +1447,7 @@ routerlist_add_nodes_in_family(smartlist_t *sl, const routerinfo_t *router)
memcpy(fake_node.identity, router->cache_info.identity_digest, DIGEST_LEN);
node = &fake_node;
}
- nodelist_add_node_family(sl, node);
+ nodelist_add_node_and_family(sl, node);
}
/** Return true iff <b>node</b> is named by some nickname in <b>lst</b>. */
@@ -1412,7 +1469,7 @@ int
nodes_in_same_family(const node_t *node1, const node_t *node2)
{
/* XXXX MOVE */
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
/* Are they in the same family because of their addresses? */
if (options->EnforceDistinctSubnets) {
@@ -1512,6 +1569,8 @@ routerlist_find_my_routerinfo(void)
/** Find a router that's up, that has this IP address, and
* that allows exit to this address:port, or return NULL if there
* isn't a good one.
+ * Don't exit enclave to excluded relays -- it wouldn't actually
+ * hurt anything, but this way there are fewer confused users.
*/
const node_t *
router_find_exact_exit_enclave(const char *address, uint16_t port)
@@ -1519,6 +1578,7 @@ router_find_exact_exit_enclave(const char *address, uint16_t port)
uint32_t addr;
struct in_addr in;
tor_addr_t a;
+ const or_options_t *options = get_options();
if (!tor_inet_aton(address, &in))
return NULL; /* it's not an IP already */
@@ -1530,7 +1590,8 @@ router_find_exact_exit_enclave(const char *address, uint16_t port)
if (node_get_addr_ipv4h(node) == addr &&
node->is_running &&
compare_tor_addr_to_node_policy(&a, port, node) ==
- ADDR_POLICY_ACCEPTED)
+ ADDR_POLICY_ACCEPTED &&
+ !routerset_contains_node(options->_ExcludeExitNodesUnion, node))
return node;
});
return NULL;
@@ -1656,8 +1717,7 @@ smartlist_choose_node_by_bandwidth_weights(smartlist_t *sl,
return NULL;
}
- weight_scale = networkstatus_get_param(NULL, "bwweightscale",
- BW_WEIGHT_SCALE);
+ weight_scale = circuit_build_times_get_bw_scale(NULL);
if (rule == WEIGHT_FOR_GUARD) {
Wg = networkstatus_get_bw_weight(NULL, "Wgg", -1);
@@ -1727,7 +1787,7 @@ smartlist_choose_node_by_bandwidth_weights(smartlist_t *sl,
SMARTLIST_FOREACH_BEGIN(sl, const node_t *, node) {
int is_exit = 0, is_guard = 0, is_dir = 0, this_bw = 0, is_me = 0;
double weight = 1;
- is_exit = node->is_exit;
+ is_exit = node->is_exit && ! node->is_bad_exit;
is_guard = node->is_possible_guard;
is_dir = node_is_dir(node);
if (node->rs) {
@@ -1767,7 +1827,7 @@ smartlist_choose_node_by_bandwidth_weights(smartlist_t *sl,
sl_last_weighted_bw_of_me = weight*this_bw;
} SMARTLIST_FOREACH_END(node);
- /* XXXX022 this is a kludge to expose these values. */
+ /* XXXX023 this is a kludge to expose these values. */
sl_last_total_weighted_bw = weighted_bw;
log_debug(LD_CIRC, "Choosing node for rule %s based on weights "
@@ -1886,7 +1946,7 @@ smartlist_choose_node_by_bandwidth(smartlist_t *sl,
if (node->rs->has_bandwidth) {
this_bw = kb_to_bytes(node->rs->bandwidth);
} else { /* guess */
- /* XXX022 once consensuses always list bandwidths, we can take
+ /* XXX023 once consensuses always list bandwidths, we can take
* this guessing business out. -RD */
is_known = 0;
flags = node->rs->is_fast ? 1 : 0;
@@ -2005,7 +2065,7 @@ smartlist_choose_node_by_bandwidth(smartlist_t *sl,
}
}
- /* XXXX022 this is a kludge to expose these values. */
+ /* XXXX023 this is a kludge to expose these values. */
sl_last_total_weighted_bw = total_bw;
log_debug(LD_CIRC, "Total weighted bw = "U64_FORMAT
@@ -2124,12 +2184,8 @@ router_choose_random_node(smartlist_t *excludedsmartlist,
});
}
- if ((r = routerlist_find_my_routerinfo())) {
- const node_t *me = node_get_by_id(r->cache_info.identity_digest);
- if (me)
- smartlist_add(excludednodes, (void *)me);
- routerlist_add_nodes_in_family(excludednodes, r);
- }
+ if ((r = routerlist_find_my_routerinfo()))
+ routerlist_add_node_and_family(excludednodes, r);
router_add_running_nodes_to_smartlist(sl, allow_invalid,
need_uptime, need_capacity,
@@ -2227,25 +2283,27 @@ hex_digest_nickname_matches(const char *hexdigest, const char *identity_digest,
return 0;
if (nn_char == '=' || nn_char == '~') {
+ if (!nickname)
+ return 0;
if (strcasecmp(nn_buf, nickname))
return 0;
if (nn_char == '=' && !is_named)
return 0;
}
- return !memcmp(digest, identity_digest, DIGEST_LEN);
+ return tor_memeq(digest, identity_digest, DIGEST_LEN);
}
/* Return true iff <b>router</b> is listed as named in the current
* consensus. */
-static int
+int
router_is_named(const routerinfo_t *router)
{
const char *digest =
networkstatus_get_router_digest_by_nickname(router->nickname);
return (digest &&
- !memcmp(digest, router->cache_info.identity_digest, DIGEST_LEN));
+ tor_memeq(digest, router->cache_info.identity_digest, DIGEST_LEN));
}
/** Return true iff the digest of <b>router</b>'s identity key,
@@ -2335,8 +2393,8 @@ router_get_by_nickname(const char *nickname, int warn_if_unnamed)
if (n_matches <= 1 || router->is_running)
best_match = router;
} else if (maybedigest &&
- !memcmp(digest, router->cache_info.identity_digest, DIGEST_LEN)
- ) {
+ tor_memeq(digest, router->cache_info.identity_digest,
+ DIGEST_LEN)) {
if (router_hex_digest_matches(router, nickname))
return router;
/* If we reach this point, we have a ID=name syntax that matches the
@@ -2401,30 +2459,18 @@ router_get_by_nickname(const char *nickname, int warn_if_unnamed)
#endif
}
-/** Try to find a routerinfo for <b>digest</b>. If we don't have one,
- * return 1. If we do, ask tor_version_as_new_as() for the answer.
- */
-int
-router_digest_version_as_new_as(const char *digest, const char *cutoff)
-{
- const routerinfo_t *router = router_get_by_id_digest(digest);
- if (!router)
- return 1;
- return tor_version_as_new_as(router->platform, cutoff);
-}
-
/** Return true iff <b>digest</b> is the digest of the identity key of a
* trusted directory matching at least one bit of <b>type</b>. If <b>type</b>
* is zero, any authority is okay. */
int
-router_digest_is_trusted_dir_type(const char *digest, authority_type_t type)
+router_digest_is_trusted_dir_type(const char *digest, dirinfo_type_t type)
{
if (!trusted_dir_servers)
return 0;
if (authdir_mode(get_options()) && router_digest_is_me(digest))
return 1;
SMARTLIST_FOREACH(trusted_dir_servers, trusted_dir_server_t *, ent,
- if (!memcmp(digest, ent->digest, DIGEST_LEN)) {
+ if (tor_memeq(digest, ent->digest, DIGEST_LEN)) {
return (!type) || ((type & ent->type) != 0);
});
return 0;
@@ -2573,7 +2619,7 @@ signed_descriptor_get_body_impl(const signed_descriptor_t *desc,
tor_assert(r);
if (!with_annotations) {
- if (memcmp("router ", r, 7) && memcmp("extra-info ", r, 11)) {
+ if (fast_memcmp("router ", r, 7) && fast_memcmp("extra-info ", r, 11)) {
char *cp = tor_strndup(r, 64);
log_err(LD_DIR, "descriptor at %p begins with unexpected string %s. "
"Is another process running in our data directory? Exiting.",
@@ -3051,7 +3097,7 @@ routerlist_replace(routerlist_t *rl, routerinfo_t *ri_old,
routerlist_insert(rl, ri_new);
return;
}
- if (memcmp(ri_old->cache_info.identity_digest,
+ if (tor_memneq(ri_old->cache_info.identity_digest,
ri_new->cache_info.identity_digest, DIGEST_LEN)) {
/* digests don't match; digestmap_set won't replace */
rimap_remove(rl->identity_map, ri_old->cache_info.identity_digest);
@@ -3068,7 +3114,7 @@ routerlist_replace(routerlist_t *rl, routerinfo_t *ri_old,
&ri_new->cache_info);
}
- same_descriptors = ! memcmp(ri_old->cache_info.signed_descriptor_digest,
+ same_descriptors = tor_memeq(ri_old->cache_info.signed_descriptor_digest,
ri_new->cache_info.signed_descriptor_digest,
DIGEST_LEN);
@@ -3090,7 +3136,7 @@ routerlist_replace(routerlist_t *rl, routerinfo_t *ri_old,
sdmap_remove(rl->desc_digest_map,
ri_old->cache_info.signed_descriptor_digest);
- if (memcmp(ri_old->cache_info.extra_info_digest,
+ if (tor_memneq(ri_old->cache_info.extra_info_digest,
ri_new->cache_info.extra_info_digest, DIGEST_LEN)) {
ei_tmp = eimap_remove(rl->extra_info_map,
ri_old->cache_info.extra_info_digest);
@@ -3189,16 +3235,14 @@ router_set_status(const char *digest, int up)
tor_assert(digest);
SMARTLIST_FOREACH(trusted_dir_servers, trusted_dir_server_t *, d,
- if (!memcmp(d->digest, digest, DIGEST_LEN))
+ if (tor_memeq(d->digest, digest, DIGEST_LEN))
d->is_running = up);
node = node_get_mutable_by_id(digest);
if (node) {
#if 0
- char buf[MAX_VERBOSE_NICKNAME_LEN+1];
- node_get_verbose_nickname(node,buf);
log_debug(LD_DIR,"Marking router %s as %s.",
- buf, up ? "up" : "down");
+ node_describe(node), up ? "up" : "down");
#endif
if (!up && node_is_me(node) && !we_are_hibernating())
log_warn(LD_NET, "We just marked ourself as down. Are your external "
@@ -3234,10 +3278,12 @@ router_add_to_routerlist(routerinfo_t *router, const char **msg,
int from_cache, int from_fetch)
{
const char *id_digest;
- int authdir = authdir_mode_handles_descs(get_options(), router->purpose);
+ const or_options_t *options = get_options();
+ int authdir = authdir_mode_handles_descs(options, router->purpose);
int authdir_believes_valid = 0;
routerinfo_t *old_router;
- networkstatus_t *consensus = networkstatus_get_latest_consensus();
+ networkstatus_t *consensus =
+ networkstatus_get_latest_consensus_by_flavor(FLAV_NS);
const smartlist_t *networkstatus_v2_list = networkstatus_get_v2_list();
int in_consensus = 0;
@@ -3266,11 +3312,12 @@ router_add_to_routerlist(routerinfo_t *router, const char **msg,
router->purpose == ROUTER_PURPOSE_BRIDGE &&
!was_bridge) {
log_info(LD_DIR, "Replacing non-bridge descriptor with bridge "
- "descriptor for router '%s'", router->nickname);
+ "descriptor for router %s",
+ router_describe(router));
} else {
log_info(LD_DIR,
- "Dropping descriptor that we already have for router '%s'",
- router->nickname);
+ "Dropping descriptor that we already have for router %s",
+ router_describe(router));
*msg = "Router descriptor was not new.";
routerinfo_free(router);
return ROUTER_WAS_NOT_NEW;
@@ -3294,8 +3341,8 @@ router_add_to_routerlist(routerinfo_t *router, const char **msg,
/* We asked for it, so some networkstatus must have listed it when we
* did. Save it if we're a cache in case somebody else asks for it. */
log_info(LD_DIR,
- "Received a no-longer-recognized descriptor for router '%s'",
- router->nickname);
+ "Received a no-longer-recognized descriptor for router %s",
+ router_describe(router));
*msg = "Router descriptor is not referenced by any network-status.";
/* Only journal this desc if we'll be serving it. */
@@ -3312,7 +3359,7 @@ router_add_to_routerlist(routerinfo_t *router, const char **msg,
{
routerstatus_t *rs =
networkstatus_v2_find_mutable_entry(ns, id_digest);
- if (rs && !memcmp(rs->descriptor_digest,
+ if (rs && tor_memeq(rs->descriptor_digest,
router->cache_info.signed_descriptor_digest,
DIGEST_LEN))
rs->need_to_mirror = 0;
@@ -3320,7 +3367,7 @@ router_add_to_routerlist(routerinfo_t *router, const char **msg,
if (consensus) {
routerstatus_t *rs = networkstatus_vote_find_mutable_entry(
consensus, id_digest);
- if (rs && !memcmp(rs->descriptor_digest,
+ if (rs && tor_memeq(rs->descriptor_digest,
router->cache_info.signed_descriptor_digest,
DIGEST_LEN)) {
in_consensus = 1;
@@ -3340,13 +3387,28 @@ router_add_to_routerlist(routerinfo_t *router, const char **msg,
return ROUTER_NOT_IN_CONSENSUS;
}
+ /* If we're reading a bridge descriptor from our cache, and we don't
+ * recognize it as one of our currently configured bridges, drop the
+ * descriptor. Otherwise we could end up using it as one of our entry
+ * guards even if it isn't in our Bridge config lines. */
+ if (router->purpose == ROUTER_PURPOSE_BRIDGE && from_cache &&
+ !authdir_mode_bridge(options) &&
+ !routerinfo_is_a_configured_bridge(router)) {
+ log_info(LD_DIR, "Dropping bridge descriptor for %s because we have "
+ "no bridge configured at that address.",
+ safe_str_client(router_describe(router)));
+ *msg = "Router descriptor was not a configured bridge.";
+ routerinfo_free(router);
+ return ROUTER_WAS_NOT_WANTED;
+ }
+
/* If we have a router with the same identity key, choose the newer one. */
if (old_router) {
if (!in_consensus && (router->cache_info.published_on <=
old_router->cache_info.published_on)) {
/* Same key, but old. This one is not listed in the consensus. */
- log_debug(LD_DIR, "Not-new descriptor for router '%s'",
- router->nickname);
+ log_debug(LD_DIR, "Not-new descriptor for router %s",
+ router_describe(router));
/* Only journal this desc if we'll be serving it. */
if (!from_cache && should_cache_old_descriptors())
signed_desc_append_to_journal(&router->cache_info,
@@ -3356,9 +3418,8 @@ router_add_to_routerlist(routerinfo_t *router, const char **msg,
return ROUTER_WAS_NOT_NEW;
} else {
/* Same key, and either new, or listed in the consensus. */
- log_debug(LD_DIR, "Replacing entry for router '%s/%s' [%s]",
- router->nickname, old_router->nickname,
- hex_str(id_digest,DIGEST_LEN));
+ log_debug(LD_DIR, "Replacing entry for router %s",
+ router_describe(router));
if (routers_have_same_or_addr(router, old_router)) {
/* these carry over when the address and orport are unchanged. */
router->last_reachable = old_router->last_reachable;
@@ -3406,7 +3467,7 @@ router_add_extrainfo_to_routerlist(extrainfo_t *ei, const char **msg,
int inserted;
(void)from_fetch;
if (msg) *msg = NULL;
- /*XXXX022 Do something with msg */
+ /*XXXX023 Do something with msg */
inserted = extrainfo_insert(router_get_routerlist(), ei);
@@ -3428,7 +3489,7 @@ _compare_old_routers_by_identity(const void **_a, const void **_b)
{
int i;
const signed_descriptor_t *r1 = *_a, *r2 = *_b;
- if ((i = memcmp(r1->identity_digest, r2->identity_digest, DIGEST_LEN)))
+ if ((i = fast_memcmp(r1->identity_digest, r2->identity_digest, DIGEST_LEN)))
return i;
return (int)(r1->published_on - r2->published_on);
}
@@ -3476,7 +3537,7 @@ routerlist_remove_old_cached_routers_with_id(time_t now,
ident = ((signed_descriptor_t*)smartlist_get(lst, lo))->identity_digest;
for (i = lo+1; i <= hi; ++i) {
signed_descriptor_t *r = smartlist_get(lst, i);
- tor_assert(!memcmp(ident, r->identity_digest, DIGEST_LEN));
+ tor_assert(tor_memeq(ident, r->identity_digest, DIGEST_LEN));
}
#endif
/* Check whether we need to do anything at all. */
@@ -3634,8 +3695,8 @@ routerlist_remove_old_routers(void)
/* Too old: remove it. (If we're a cache, just move it into
* old_routers.) */
log_info(LD_DIR,
- "Forgetting obsolete (too old) routerinfo for router '%s'",
- router->nickname);
+ "Forgetting obsolete (too old) routerinfo for router %s",
+ router_describe(router));
routerlist_remove(routerlist, router, 1, now);
i--;
}
@@ -3688,7 +3749,7 @@ routerlist_remove_old_routers(void)
cur_id = r->identity_digest;
hi = i;
}
- if (memcmp(cur_id, r->identity_digest, DIGEST_LEN)) {
+ if (tor_memneq(cur_id, r->identity_digest, DIGEST_LEN)) {
routerlist_remove_old_cached_routers_with_id(now,
cutoff, i+1, hi, retain);
cur_id = r->identity_digest;
@@ -3926,7 +3987,7 @@ signed_desc_digest_is_recognized(signed_descriptor_t *desc)
if (consensus) {
rs = networkstatus_vote_find_entry(consensus, desc->identity_digest);
- if (rs && !memcmp(rs->descriptor_digest,
+ if (rs && tor_memeq(rs->descriptor_digest,
desc->signed_descriptor_digest, DIGEST_LEN))
return 1;
}
@@ -3935,7 +3996,7 @@ signed_desc_digest_is_recognized(signed_descriptor_t *desc)
{
if (!(rs = networkstatus_v2_find_entry(ns, desc->identity_digest)))
continue;
- if (!memcmp(rs->descriptor_digest,
+ if (tor_memeq(rs->descriptor_digest,
desc->signed_descriptor_digest, DIGEST_LEN))
return 1;
});
@@ -3943,6 +4004,16 @@ signed_desc_digest_is_recognized(signed_descriptor_t *desc)
return 0;
}
+/** Update downloads for router descriptors and/or microdescriptors as
+ * appropriate. */
+void
+update_all_descriptor_downloads(time_t now)
+{
+ update_router_descriptor_downloads(now);
+ update_microdesc_downloads(now);
+ launch_dummy_descriptor_download_as_needed(now, get_options());
+}
+
/** Clear all our timeouts for fetching v2 and v3 directory stuff, and then
* give it all a try again. */
void
@@ -3951,8 +4022,7 @@ routerlist_retry_directory_downloads(time_t now)
router_reset_status_download_failures();
router_reset_descriptor_download_failures();
update_networkstatus_downloads(now);
- update_router_descriptor_downloads(now);
- update_microdesc_downloads(now);
+ update_all_descriptor_downloads(now);
}
/** Return 1 if all running sufficiently-stable routers we can use will reject
@@ -3992,7 +4062,7 @@ trusted_dir_server_t *
add_trusted_dir_server(const char *nickname, const char *address,
uint16_t dir_port, uint16_t or_port,
const char *digest, const char *v3_auth_digest,
- authority_type_t type)
+ dirinfo_type_t type)
{
trusted_dir_server_t *ent;
uint32_t a;
@@ -4027,7 +4097,7 @@ add_trusted_dir_server(const char *nickname, const char *address,
ent->is_running = 1;
ent->type = type;
memcpy(ent->digest, digest, DIGEST_LEN);
- if (v3_auth_digest && (type & V3_AUTHORITY))
+ if (v3_auth_digest && (type & V3_DIRINFO))
memcpy(ent->v3_identity_digest, v3_auth_digest, DIGEST_LEN);
dlen = 64 + strlen(hostname) + (nickname?strlen(nickname):0);
@@ -4106,7 +4176,7 @@ int
any_trusted_dir_is_v1_authority(void)
{
if (trusted_dir_servers)
- return get_n_authorities(V1_AUTHORITY) > 0;
+ return get_n_authorities(V1_DIRINFO) > 0;
return 0;
}
@@ -4236,7 +4306,8 @@ initiate_descriptor_downloads(const routerstatus_t *source,
* running, or otherwise not a descriptor that we would make any
* use of even if we had it. Else return 1. */
static INLINE int
-client_would_use_router(routerstatus_t *rs, time_t now, or_options_t *options)
+client_would_use_router(const routerstatus_t *rs, time_t now,
+ const or_options_t *options)
{
if (!rs->is_flagged_running && !options->FetchUselessDescriptors) {
/* If we had this router descriptor, we wouldn't even bother using it.
@@ -4289,7 +4360,7 @@ launch_descriptor_downloads(int purpose,
const routerstatus_t *source, time_t now)
{
int should_delay = 0, n_downloadable;
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
const char *descname;
tor_assert(purpose == DIR_PURPOSE_FETCH_SERVERDESC ||
@@ -4306,15 +4377,15 @@ launch_descriptor_downloads(int purpose,
descname);
should_delay = 0;
} else {
- should_delay = (last_routerdesc_download_attempted +
+ should_delay = (last_descriptor_download_attempted +
MAX_CLIENT_INTERVAL_WITHOUT_REQUEST) > now;
if (!should_delay && n_downloadable) {
- if (last_routerdesc_download_attempted) {
+ if (last_descriptor_download_attempted) {
log_info(LD_DIR,
"There are not many downloadable %ss, but we've "
"been waiting long enough (%d seconds). Downloading.",
descname,
- (int)(now-last_routerdesc_download_attempted));
+ (int)(now-last_descriptor_download_attempted));
} else {
log_info(LD_DIR,
"There are not many downloadable %ss, but we haven't "
@@ -4377,7 +4448,7 @@ launch_descriptor_downloads(int purpose,
downloadable, i, i+n_per_request,
pds_flags);
}
- last_routerdesc_download_attempted = now;
+ last_descriptor_download_attempted = now;
}
}
@@ -4393,7 +4464,7 @@ update_router_descriptor_cache_downloads_v2(time_t now)
digestmap_t *map; /* Which descs are in progress, or assigned? */
int i, j, n;
int n_download;
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
const smartlist_t *networkstatus_v2_list = networkstatus_get_v2_list();
if (! directory_fetches_dir_info_early(options)) {
@@ -4535,7 +4606,7 @@ void
update_consensus_router_descriptor_downloads(time_t now, int is_vote,
networkstatus_t *consensus)
{
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
digestmap_t *map = NULL;
smartlist_t *no_longer_old = smartlist_create();
smartlist_t *downloadable = smartlist_create();
@@ -4571,7 +4642,7 @@ update_consensus_router_descriptor_downloads(time_t now, int is_vote,
const routerinfo_t *ri;
++n_have;
if (!(ri = router_get_by_id_digest(rs->identity_digest)) ||
- memcmp(ri->cache_info.signed_descriptor_digest,
+ tor_memneq(ri->cache_info.signed_descriptor_digest,
sd->signed_descriptor_digest, DIGEST_LEN)) {
/* We have a descriptor with this digest, but either there is no
* entry in routerlist with the same ID (!ri), or there is one,
@@ -4609,7 +4680,8 @@ update_consensus_router_descriptor_downloads(time_t now, int is_vote,
if (oldrouter)
format_iso_time(time_bufold, oldrouter->cache_info.published_on);
log_info(LD_DIR, "Learned about %s (%s vs %s) from %s's vote (%s)",
- rs->nickname, time_bufnew,
+ routerstatus_describe(rs),
+ time_bufnew,
oldrouter ? time_bufold : "none",
source->nickname, oldrouter ? "known" : "unknown");
}
@@ -4657,34 +4729,24 @@ update_consensus_router_descriptor_downloads(time_t now, int is_vote,
/** How often should we launch a server/authority request to be sure of getting
* a guess for our IP? */
-/*XXXX021 this info should come from netinfo cells or something, or we should
+/*XXXX023 this info should come from netinfo cells or something, or we should
* do this only when we aren't seeing incoming data. see bug 652. */
#define DUMMY_DOWNLOAD_INTERVAL (20*60)
-/** Launch downloads for router status as needed. */
-void
-update_router_descriptor_downloads(time_t now)
+/** As needed, launch a dummy router descriptor fetch to see if our
+ * address has changed. */
+static void
+launch_dummy_descriptor_download_as_needed(time_t now,
+ const or_options_t *options)
{
- or_options_t *options = get_options();
static time_t last_dummy_download = 0;
- if (should_delay_dir_fetches(options))
- return;
- if (directory_fetches_dir_info_early(options)) {
- update_router_descriptor_cache_downloads_v2(now);
- }
-
- update_consensus_router_descriptor_downloads(now, 0,
- networkstatus_get_reasonably_live_consensus(now, FLAV_NS));
-
- /* XXXX021 we could be smarter here; see notes on bug 652. */
- /* XXXX NM Microdescs: if we're not fetching microdescriptors, we need
- * to make something else invoke this. */
+ /* XXXX023 we could be smarter here; see notes on bug 652. */
/* If we're a server that doesn't have a configured address, we rely on
* directory fetches to learn when our address changes. So if we haven't
* tried to get any routerdescs in a long time, try a dummy fetch now. */
if (!options->Address &&
server_mode(options) &&
- last_routerdesc_download_attempted + DUMMY_DOWNLOAD_INTERVAL < now &&
+ last_descriptor_download_attempted + DUMMY_DOWNLOAD_INTERVAL < now &&
last_dummy_download + DUMMY_DOWNLOAD_INTERVAL < now) {
last_dummy_download = now;
directory_get_from_dirserver(DIR_PURPOSE_FETCH_SERVERDESC,
@@ -4693,11 +4755,28 @@ update_router_descriptor_downloads(time_t now)
}
}
+/** Launch downloads for router status as needed. */
+void
+update_router_descriptor_downloads(time_t now)
+{
+ const or_options_t *options = get_options();
+ if (should_delay_dir_fetches(options))
+ return;
+ if (!we_fetch_router_descriptors(options))
+ return;
+ if (directory_fetches_dir_info_early(options)) {
+ update_router_descriptor_cache_downloads_v2(now);
+ }
+
+ update_consensus_router_descriptor_downloads(now, 0,
+ networkstatus_get_reasonably_live_consensus(now, FLAV_NS));
+}
+
/** Launch extrainfo downloads as needed. */
void
update_extrainfo_downloads(time_t now)
{
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
routerlist_t *rl;
smartlist_t *wanted;
digestmap_t *pending;
@@ -4819,23 +4898,31 @@ get_dir_info_status_string(void)
static void
count_usable_descriptors(int *num_present, int *num_usable,
const networkstatus_t *consensus,
- or_options_t *options, time_t now,
+ const or_options_t *options, time_t now,
routerset_t *in_set)
{
+ const int md = (consensus->flavor == FLAV_MICRODESC);
*num_present = 0, *num_usable=0;
- SMARTLIST_FOREACH(consensus->routerstatus_list, routerstatus_t *, rs,
- {
+ SMARTLIST_FOREACH_BEGIN(consensus->routerstatus_list, routerstatus_t *, rs)
+ {
if (in_set && ! routerset_contains_routerstatus(in_set, rs, -1))
continue;
if (client_would_use_router(rs, now, options)) {
+ const char * const digest = rs->descriptor_digest;
+ int present;
++*num_usable; /* the consensus says we want it. */
- if (router_get_by_descriptor_digest(rs->descriptor_digest)) {
+ if (md)
+ present = NULL != microdesc_cache_lookup_by_digest256(NULL, digest);
+ else
+ present = NULL != router_get_by_descriptor_digest(digest);
+ if (present) {
/* we have the descriptor listed in the consensus. */
++*num_present;
}
}
- });
+ }
+ SMARTLIST_FOREACH_END(rs);
log_debug(LD_DIR, "%d usable, %d present.", *num_usable, *num_present);
}
@@ -4849,7 +4936,7 @@ count_loading_descriptors_progress(void)
int num_present = 0, num_usable=0;
time_t now = time(NULL);
const networkstatus_t *consensus =
- networkstatus_get_reasonably_live_consensus(now, FLAV_NS);
+ networkstatus_get_reasonably_live_consensus(now,usable_consensus_flavor());
double fraction;
if (!consensus)
@@ -4877,16 +4964,16 @@ update_router_have_minimum_dir_info(void)
int num_present = 0, num_usable=0;
time_t now = time(NULL);
int res;
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
const networkstatus_t *consensus =
- networkstatus_get_reasonably_live_consensus(now, FLAV_NS);
+ networkstatus_get_reasonably_live_consensus(now,usable_consensus_flavor());
if (!consensus) {
if (!networkstatus_get_latest_consensus())
- strlcpy(dir_info_status, "We have no network-status consensus.",
+ strlcpy(dir_info_status, "We have no usable consensus.",
sizeof(dir_info_status));
else
- strlcpy(dir_info_status, "We have no recent network-status consensus.",
+ strlcpy(dir_info_status, "We have no recent usable consensus.",
sizeof(dir_info_status));
res = 0;
goto done;
@@ -4965,7 +5052,7 @@ void
router_reset_descriptor_download_failures(void)
{
networkstatus_reset_download_failures();
- last_routerdesc_download_attempted = 0;
+ last_descriptor_download_attempted = 0;
if (!routerlist)
return;
SMARTLIST_FOREACH(routerlist->routers, routerinfo_t *, ri,
@@ -5086,22 +5173,24 @@ routerinfo_incompatible_with_extrainfo(const routerinfo_t *ri,
return 1;
}
- digest_matches = !memcmp(ei->cache_info.signed_descriptor_digest,
+ digest_matches = tor_memeq(ei->cache_info.signed_descriptor_digest,
sd->extra_info_digest, DIGEST_LEN);
/* The identity must match exactly to have been generated at the same time
* by the same router. */
- if (memcmp(ri->cache_info.identity_digest, ei->cache_info.identity_digest,
- DIGEST_LEN)) {
+ if (tor_memneq(ri->cache_info.identity_digest,
+ ei->cache_info.identity_digest,
+ DIGEST_LEN)) {
if (msg) *msg = "Extrainfo nickname or identity did not match routerinfo";
goto err; /* different servers */
}
if (ei->pending_sig) {
char signed_digest[128];
- if (crypto_pk_public_checksig(ri->identity_pkey, signed_digest,
+ if (crypto_pk_public_checksig(ri->identity_pkey,
+ signed_digest, sizeof(signed_digest),
ei->pending_sig, ei->pending_sig_len) != DIGEST_LEN ||
- memcmp(signed_digest, ei->cache_info.signed_descriptor_digest,
+ tor_memneq(signed_digest, ei->cache_info.signed_descriptor_digest,
DIGEST_LEN)) {
ei->bad_sig = 1;
tor_free(ei->pending_sig);
@@ -5197,25 +5286,25 @@ routerlist_assert_ok(const routerlist_t *rl)
});
RIMAP_FOREACH(rl->identity_map, d, r) {
- tor_assert(!memcmp(r->cache_info.identity_digest, d, DIGEST_LEN));
+ tor_assert(tor_memeq(r->cache_info.identity_digest, d, DIGEST_LEN));
} DIGESTMAP_FOREACH_END;
SDMAP_FOREACH(rl->desc_digest_map, d, sd) {
- tor_assert(!memcmp(sd->signed_descriptor_digest, d, DIGEST_LEN));
+ tor_assert(tor_memeq(sd->signed_descriptor_digest, d, DIGEST_LEN));
} DIGESTMAP_FOREACH_END;
SDMAP_FOREACH(rl->desc_by_eid_map, d, sd) {
tor_assert(!tor_digest_is_zero(d));
tor_assert(sd);
- tor_assert(!memcmp(sd->extra_info_digest, d, DIGEST_LEN));
+ tor_assert(tor_memeq(sd->extra_info_digest, d, DIGEST_LEN));
} DIGESTMAP_FOREACH_END;
EIMAP_FOREACH(rl->extra_info_map, d, ei) {
signed_descriptor_t *sd;
- tor_assert(!memcmp(ei->cache_info.signed_descriptor_digest,
+ tor_assert(tor_memeq(ei->cache_info.signed_descriptor_digest,
d, DIGEST_LEN));
sd = sdmap_get(rl->desc_by_eid_map,
ei->cache_info.signed_descriptor_digest);
// tor_assert(sd); // XXXX see above
if (sd) {
- tor_assert(!memcmp(ei->cache_info.signed_descriptor_digest,
+ tor_assert(tor_memeq(ei->cache_info.signed_descriptor_digest,
sd->extra_info_digest, DIGEST_LEN));
}
} DIGESTMAP_FOREACH_END;
@@ -5261,7 +5350,7 @@ static int
_compare_routerinfo_by_id_digest(const void **a, const void **b)
{
routerinfo_t *first = *(routerinfo_t **)a, *second = *(routerinfo_t **)b;
- return memcmp(first->cache_info.identity_digest,
+ return fast_memcmp(first->cache_info.identity_digest,
second->cache_info.identity_digest,
DIGEST_LEN);
}
@@ -5422,7 +5511,7 @@ routerset_parse(routerset_t *target, const char *s, const char *description)
void
refresh_all_country_info(void)
{
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
if (options->EntryNodes)
routerset_refresh_countries(options->EntryNodes);
@@ -5469,7 +5558,7 @@ routerset_needs_geoip(const routerset_t *set)
}
/** Return true iff there are no entries in <b>set</b>. */
-static int
+int
routerset_is_empty(const routerset_t *set)
{
return !set || smartlist_len(set->list) == 0;
@@ -5488,7 +5577,8 @@ routerset_contains(const routerset_t *set, const tor_addr_t *addr,
const char *nickname, const char *id_digest,
country_t country)
{
- if (!set || !set->list) return 0;
+ if (!set || !set->list)
+ return 0;
if (nickname && strmap_get_lc(set->names, nickname))
return 4;
if (id_digest && digestmap_get(set->digests, id_digest))
@@ -5565,10 +5655,11 @@ routerset_contains_node(const routerset_t *set, const node_t *node)
}
/** Add every known node_t that is a member of <b>routerset</b> to
- * <b>out</b>. If <b>running_only</b>, only add the running ones. */
+ * <b>out</b>, but never add any that are part of <b>excludeset</b>.
+ * If <b>running_only</b>, only add the running ones. */
void
routerset_get_all_nodes(smartlist_t *out, const routerset_t *routerset,
- int running_only)
+ const routerset_t *excludeset, int running_only)
{ /* XXXX MOVE */
tor_assert(out);
if (!routerset || !routerset->list)
@@ -5576,12 +5667,13 @@ routerset_get_all_nodes(smartlist_t *out, const routerset_t *routerset,
if (routerset_is_list(routerset)) {
/* No routers are specified by type; all are given by name or digest.
- * we can do a lookup in O(len(list)). */
+ * we can do a lookup in O(len(routerset)). */
SMARTLIST_FOREACH(routerset->list, const char *, name, {
const node_t *node = node_get_by_nickname(name, 1);
if (node) {
if (!running_only || node->is_running)
- smartlist_add(out, (void*)node);
+ if (!routerset_contains_node(excludeset, node))
+ smartlist_add(out, (void*)node);
}
});
} else {
@@ -5591,12 +5683,14 @@ routerset_get_all_nodes(smartlist_t *out, const routerset_t *routerset,
SMARTLIST_FOREACH(nodes, const node_t *, node, {
if (running_only && !node->is_running)
continue;
- if (routerset_contains_node(routerset, node))
+ if (routerset_contains_node(routerset, node) &&
+ !routerset_contains_node(excludeset, node))
smartlist_add(out, (void*)node);
});
}
}
+#if 0
/** Add to <b>target</b> every node_t from <b>source</b> except:
*
* 1) Don't add it if <b>include</b> is non-empty and the relay isn't in
@@ -5627,6 +5721,7 @@ routersets_get_node_disjunction(smartlist_t *target,
}
});
}
+#endif
/** Remove every node_t from <b>lst</b> that is in <b>routerset</b>. */
void
@@ -5658,10 +5753,15 @@ routerset_to_string(const routerset_t *set)
int
routerset_equal(const routerset_t *old, const routerset_t *new)
{
- if (old == NULL && new == NULL)
+ if (routerset_is_empty(old) && routerset_is_empty(new)) {
+ /* Two empty sets are equal */
return 1;
- else if (old == NULL || new == NULL)
+ } else if (routerset_is_empty(old) || routerset_is_empty(new)) {
+ /* An empty set is equal to nothing else. */
return 0;
+ }
+ tor_assert(old != NULL);
+ tor_assert(new != NULL);
if (smartlist_len(old->list) != smartlist_len(new->list))
return 0;
@@ -5728,7 +5828,6 @@ hid_serv_get_responsible_directories(smartlist_t *responsible_dirs,
{
int start, found, n_added = 0, i;
networkstatus_t *c = networkstatus_get_latest_consensus();
- int use_begindir = get_options()->TunnelDirConns;
if (!c || !smartlist_len(c->routerstatus_list)) {
log_warn(LD_REND, "We don't have a consensus, so we can't perform v2 "
"rendezvous operations.");
@@ -5741,14 +5840,9 @@ hid_serv_get_responsible_directories(smartlist_t *responsible_dirs,
do {
routerstatus_t *r = smartlist_get(c->routerstatus_list, i);
if (r->is_hs_dir) {
- if (r->dir_port || use_begindir)
- smartlist_add(responsible_dirs, r);
- else
- log_info(LD_REND, "Not adding router '%s' to list of responsible "
- "hidden service directories, because we have no way of "
- "reaching it.", r->nickname);
+ smartlist_add(responsible_dirs, r);
if (++n_added == REND_NUMBER_OF_CONSECUTIVE_REPLICAS)
- break;
+ return 0;
}
if (++i == smartlist_len(c->routerstatus_list))
i = 0;
@@ -5765,8 +5859,6 @@ int
hid_serv_acting_as_directory(void)
{
const routerinfo_t *me = router_get_my_routerinfo();
- networkstatus_t *c;
- const routerstatus_t *rs;
if (!me)
return 0;
if (!get_options()->HidServDirectoryV2) {
@@ -5774,22 +5866,6 @@ hid_serv_acting_as_directory(void)
"because we have not been configured as such.");
return 0;
}
- if (!(c = networkstatus_get_latest_consensus())) {
- log_info(LD_REND, "There's no consensus, so I can't tell if I'm a hidden "
- "service directory");
- return 0;
- }
- rs = networkstatus_vote_find_entry(c, me->cache_info.identity_digest);
- if (!rs) {
- log_info(LD_REND, "We're not listed in the consensus, so we're not "
- "being a hidden service directory.");
- return 0;
- }
- if (!rs->is_hs_dir) {
- log_info(LD_REND, "We're not listed as a hidden service directory in "
- "the consensus, so we won't be one.");
- return 0;
- }
return 1;
}
diff --git a/src/or/routerlist.h b/src/or/routerlist.h
index b69ef70f6e..11290468d8 100644
--- a/src/or/routerlist.h
+++ b/src/or/routerlist.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -11,7 +11,7 @@
#ifndef _TOR_ROUTERLIST_H
#define _TOR_ROUTERLIST_H
-int get_n_authorities(authority_type_t type);
+int get_n_authorities(dirinfo_type_t type);
int trusted_dirs_reload_certs(void);
int trusted_dirs_load_certs_from_string(const char *contents, int from_store,
int flush);
@@ -27,16 +27,15 @@ int router_reload_router_list(void);
int authority_cert_dl_looks_uncertain(const char *id_digest);
smartlist_t *router_get_trusted_dir_servers(void);
-const routerstatus_t *router_pick_directory_server(authority_type_t type,
+const routerstatus_t *router_pick_directory_server(dirinfo_type_t type,
int flags);
trusted_dir_server_t *router_get_trusteddirserver_by_digest(const char *d);
trusted_dir_server_t *trusteddirserver_get_by_v3_auth_digest(const char *d);
-const routerstatus_t *router_pick_trusteddirserver(authority_type_t type,
+const routerstatus_t *router_pick_trusteddirserver(dirinfo_type_t type,
int flags);
int router_get_my_share_of_directory_requests(double *v2_share_out,
double *v3_share_out);
void router_reset_status_download_failures(void);
-void routerlist_add_family(smartlist_t *sl, const routerinfo_t *router);
int routers_have_same_or_addr(const routerinfo_t *r1, const routerinfo_t *r2);
int router_nickname_is_in_list(const routerinfo_t *router, const char *list);
const routerinfo_t *routerlist_find_my_routerinfo(void);
@@ -56,11 +55,11 @@ const node_t *router_choose_random_node(smartlist_t *excludedsmartlist,
const routerinfo_t *router_get_by_nickname(const char *nickname,
int warn_if_unnamed);
-int router_digest_version_as_new_as(const char *digest, const char *cutoff);
+int router_is_named(const routerinfo_t *router);
int router_digest_is_trusted_dir_type(const char *digest,
- authority_type_t type);
+ dirinfo_type_t type);
#define router_digest_is_trusted_dir(d) \
- router_digest_is_trusted_dir_type((d), NO_AUTHORITY)
+ router_digest_is_trusted_dir_type((d), NO_DIRINFO)
int router_addr_is_trusted_dir(uint32_t addr);
int hexdigest_to_digest(const char *hexdigest, char *digest);
@@ -138,13 +137,14 @@ trusted_dir_server_t *add_trusted_dir_server(const char *nickname,
const char *address,
uint16_t dir_port, uint16_t or_port,
const char *digest, const char *v3_auth_digest,
- authority_type_t type);
+ dirinfo_type_t type);
void authority_cert_free(authority_cert_t *cert);
void clear_trusted_dir_servers(void);
int any_trusted_dir_is_v1_authority(void);
void update_consensus_router_descriptor_downloads(time_t now, int is_vote,
networkstatus_t *consensus);
void update_router_descriptor_downloads(time_t now);
+void update_all_descriptor_downloads(time_t now);
void update_extrainfo_downloads(time_t now);
int router_have_minimum_dir_info(void);
void router_dir_info_changed(void);
@@ -169,6 +169,7 @@ int routerset_parse(routerset_t *target, const char *s,
void routerset_union(routerset_t *target, const routerset_t *source);
int routerset_is_list(const routerset_t *set);
int routerset_needs_geoip(const routerset_t *set);
+int routerset_is_empty(const routerset_t *set);
int routerset_contains_router(const routerset_t *set, const routerinfo_t *ri,
country_t country);
int routerset_contains_routerstatus(const routerset_t *set,
@@ -176,15 +177,20 @@ int routerset_contains_routerstatus(const routerset_t *set,
country_t country);
int routerset_contains_extendinfo(const routerset_t *set,
const extend_info_t *ei);
+
int routerset_contains_node(const routerset_t *set, const node_t *node);
void routerset_get_all_nodes(smartlist_t *out, const routerset_t *routerset,
+ const routerset_t *excludeset,
int running_only);
+#if 0
void routersets_get_node_disjunction(smartlist_t *target,
const smartlist_t *source,
const routerset_t *include,
const routerset_t *exclude, int running_only);
+#endif
void routerset_subtract_nodes(smartlist_t *out,
- const routerset_t *routerset);
+ const routerset_t *routerset);
+
char *routerset_to_string(const routerset_t *routerset);
int routerset_equal(const routerset_t *old, const routerset_t *new);
void routerset_free(routerset_t *routerset);
diff --git a/src/or/routerparse.c b/src/or/routerparse.c
index 39f4bc03af..d1b2cd0fb7 100644
--- a/src/or/routerparse.c
+++ b/src/or/routerparse.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -11,6 +11,7 @@
#include "or.h"
#include "config.h"
+#include "circuitbuild.h"
#include "dirserv.h"
#include "dirvote.h"
#include "policies.h"
@@ -700,11 +701,13 @@ router_append_dirobj_signature(char *buf, size_t buf_len, const char *digest,
size_t digest_len, crypto_pk_env_t *private_key)
{
char *signature;
- size_t i;
+ size_t i, keysize;
int siglen;
- signature = tor_malloc(crypto_pk_keysize(private_key));
- siglen = crypto_pk_private_sign(private_key, signature, digest, digest_len);
+ keysize = crypto_pk_keysize(private_key);
+ signature = tor_malloc(keysize);
+ siglen = crypto_pk_private_sign(private_key, signature, keysize,
+ digest, digest_len);
if (siglen < 0) {
log_warn(LD_BUG,"Couldn't sign digest.");
goto err;
@@ -1057,6 +1060,7 @@ check_signature_token(const char *digest,
const char *doctype)
{
char *signed_digest;
+ size_t keysize;
const int check_authority = (flags & CST_CHECK_AUTHORITY);
const int check_objtype = ! (flags & CST_NO_CHECK_OBJTYPE);
@@ -1078,9 +1082,10 @@ check_signature_token(const char *digest,
}
}
- signed_digest = tor_malloc(tok->object_size);
- if (crypto_pk_public_checksig(pkey, signed_digest, tok->object_body,
- tok->object_size)
+ keysize = crypto_pk_keysize(pkey);
+ signed_digest = tor_malloc(keysize);
+ if (crypto_pk_public_checksig(pkey, signed_digest, keysize,
+ tok->object_body, tok->object_size)
< digest_len) {
log_warn(LD_DIR, "Error reading %s: invalid signature.", doctype);
tor_free(signed_digest);
@@ -1088,7 +1093,7 @@ check_signature_token(const char *digest,
}
// log_debug(LD_DIR,"Signed %s hash starts %s", doctype,
// hex_str(signed_digest,4));
- if (memcmp(digest, signed_digest, digest_len)) {
+ if (tor_memneq(digest, signed_digest, digest_len)) {
log_warn(LD_DIR, "Error reading %s: signature does not match.", doctype);
tor_free(signed_digest);
return -1;
@@ -1203,7 +1208,8 @@ router_parse_list_from_string(const char **s, const char *eos,
prepend_annotations);
if (router) {
log_debug(LD_DIR, "Read router '%s', purpose '%s'",
- router->nickname, router_purpose_to_string(router->purpose));
+ router_describe(router),
+ router_purpose_to_string(router->purpose));
signed_desc = &router->cache_info;
elt = router;
}
@@ -1454,6 +1460,11 @@ router_parse_entry_from_string(const char *s, const char *end,
goto err;
tok = find_by_keyword(tokens, K_ONION_KEY);
+ if (!crypto_pk_public_exponent_ok(tok->key)) {
+ log_warn(LD_DIR,
+ "Relay's onion key had invalid exponent.");
+ goto err;
+ }
router->onion_pkey = tok->key;
tok->key = NULL; /* Prevent free */
@@ -1475,7 +1486,7 @@ router_parse_entry_from_string(const char *s, const char *end,
escaped(tok->args[0]));
goto err;
}
- if (memcmp(d,router->cache_info.identity_digest, DIGEST_LEN)!=0) {
+ if (tor_memneq(d,router->cache_info.identity_digest, DIGEST_LEN)) {
log_warn(LD_DIR, "Fingerprint '%s' does not match identity digest.",
tok->args[0]);
goto err;
@@ -1490,6 +1501,12 @@ router_parse_entry_from_string(const char *s, const char *end,
router->contact_info = tor_strdup(tok->args[0]);
}
+ if (find_opt_by_keyword(tokens, K_REJECT6) ||
+ find_opt_by_keyword(tokens, K_ACCEPT6)) {
+ log_warn(LD_DIR, "Rejecting router with reject6/accept6 line: they crash "
+ "older Tors.");
+ goto err;
+ }
exit_policy_tokens = find_all_exitpolicy(tokens);
if (!smartlist_len(exit_policy_tokens)) {
log_warn(LD_DIR, "No exit policy tokens in descriptor.");
@@ -1517,10 +1534,10 @@ router_parse_entry_from_string(const char *s, const char *end,
}
}
- if ((tok = find_opt_by_keyword(tokens, K_CACHES_EXTRA_INFO)))
+ if (find_opt_by_keyword(tokens, K_CACHES_EXTRA_INFO))
router->caches_extra_info = 1;
- if ((tok = find_opt_by_keyword(tokens, K_ALLOW_SINGLE_HOP_EXITS)))
+ if (find_opt_by_keyword(tokens, K_ALLOW_SINGLE_HOP_EXITS))
router->allow_single_hop_exits = 1;
if ((tok = find_opt_by_keyword(tokens, K_EXTRA_INFO_DIGEST))) {
@@ -1533,7 +1550,7 @@ router_parse_entry_from_string(const char *s, const char *end,
}
}
- if ((tok = find_opt_by_keyword(tokens, K_HIDDEN_SERVICE_DIR))) {
+ if (find_opt_by_keyword(tokens, K_HIDDEN_SERVICE_DIR)) {
router->wants_to_be_hs_dir = 1;
}
@@ -1703,6 +1720,10 @@ extrainfo_parse_entry_from_string(const char *s, const char *end,
authority_cert_t *
authority_cert_parse_from_string(const char *s, const char **end_of_string)
{
+ /** Reject any certificate at least this big; it is probably an overflow, an
+ * attack, a bug, or some other nonsense. */
+#define MAX_CERT_SIZE (128*1024)
+
authority_cert_t *cert = NULL, *old_cert;
smartlist_t *tokens = NULL;
char digest[DIGEST_LEN];
@@ -1730,6 +1751,12 @@ authority_cert_parse_from_string(const char *s, const char **end_of_string)
++eos;
len = eos - s;
+ if (len > MAX_CERT_SIZE) {
+ log_warn(LD_DIR, "Certificate is far too big (at %lu bytes long); "
+ "rejecting", (unsigned long)len);
+ return NULL;
+ }
+
tokens = smartlist_create();
area = memarea_new();
if (tokenize_string(area,s, eos, tokens, dir_key_certificate_table, 0) < 0) {
@@ -1774,7 +1801,7 @@ authority_cert_parse_from_string(const char *s, const char **end_of_string)
cert->cache_info.identity_digest))
goto err;
- if (memcmp(cert->cache_info.identity_digest, fp_declared, DIGEST_LEN)) {
+ if (tor_memneq(cert->cache_info.identity_digest, fp_declared, DIGEST_LEN)) {
log_warn(LD_DIR, "Digest of certificate key didn't match declared "
"fingerprint");
goto err;
@@ -1785,7 +1812,7 @@ authority_cert_parse_from_string(const char *s, const char **end_of_string)
struct in_addr in;
char *address = NULL;
tor_assert(tok->n_args);
- /* XXX021 use tor_addr_port_parse() below instead. -RD */
+ /* XXX023 use tor_addr_port_parse() below instead. -RD */
if (parse_addr_port(LOG_WARN, tok->args[0], &address, NULL,
&cert->dir_port)<0 ||
tor_inet_aton(address, &in) == 0) {
@@ -1822,7 +1849,7 @@ authority_cert_parse_from_string(const char *s, const char **end_of_string)
* buy us much. */
if (old_cert->cache_info.signed_descriptor_len == len &&
old_cert->cache_info.signed_descriptor_body &&
- !memcmp(s, old_cert->cache_info.signed_descriptor_body, len)) {
+ tor_memeq(s, old_cert->cache_info.signed_descriptor_body, len)) {
log_debug(LD_DIR, "We already checked the signature on this "
"certificate; no need to do so again.");
found = 1;
@@ -2064,6 +2091,7 @@ routerstatus_parse_entry_from_string(memarea_t *area,
rs->version_supports_begindir = 1;
rs->version_supports_extrainfo_upload = 1;
rs->version_supports_conditional_consensus = 1;
+ rs->version_supports_microdesc_cache = 1;
} else {
rs->version_supports_begindir =
tor_version_as_new_as(tok->args[0], "0.2.0.1-alpha");
@@ -2073,6 +2101,14 @@ routerstatus_parse_entry_from_string(memarea_t *area,
tor_version_as_new_as(tok->args[0], "0.2.0.8-alpha");
rs->version_supports_conditional_consensus =
tor_version_as_new_as(tok->args[0], "0.2.1.1-alpha");
+ /* XXXX023 NM microdescs: 0.2.3.1-alpha isn't widely used yet, but
+ * not all 0.2.3.0-alpha "versions" actually support microdesc cacheing
+ * right. There's a compromise here. Since this is 5 May, let's
+ * err on the side of having some possible caches to use. Once more
+ * caches are running 0.2.3.1-alpha, we can bump this version number.
+ */
+ rs->version_supports_microdesc_cache =
+ tor_version_as_new_as(tok->args[0], "0.2.3.0-alpha");
}
if (vote_rs) {
vote_rs->version = tor_strdup(tok->args[0]);
@@ -2173,7 +2209,7 @@ int
compare_routerstatus_entries(const void **_a, const void **_b)
{
const routerstatus_t *a = *_a, *b = *_b;
- return memcmp(a->identity_digest, b->identity_digest, DIGEST_LEN);
+ return fast_memcmp(a->identity_digest, b->identity_digest, DIGEST_LEN);
}
/** Helper: used in call to _smartlist_uniq to clear out duplicate entries. */
@@ -2266,7 +2302,7 @@ networkstatus_v2_parse_from_string(const char *s)
log_warn(LD_DIR, "Couldn't compute signing key digest");
goto err;
}
- if (memcmp(tmp_digest, ns->identity_digest, DIGEST_LEN)) {
+ if (tor_memneq(tmp_digest, ns->identity_digest, DIGEST_LEN)) {
log_warn(LD_DIR,
"network-status fingerprint did not match dir-signing-key");
goto err;
@@ -2369,7 +2405,7 @@ networkstatus_verify_bw_weights(networkstatus_t *ns)
const char *casename = NULL;
int valid = 1;
- weight_scale = networkstatus_get_param(ns, "bwweightscale", BW_WEIGHT_SCALE);
+ weight_scale = circuit_build_times_get_bw_scale(ns);
Wgg = networkstatus_get_bw_weight(ns, "Wgg", -1);
Wgm = networkstatus_get_bw_weight(ns, "Wgm", -1);
Wgd = networkstatus_get_bw_weight(ns, "Wgd", -1);
@@ -2467,7 +2503,7 @@ networkstatus_verify_bw_weights(networkstatus_t *ns)
}
} else {
log_warn(LD_BUG, "Missing consensus bandwidth for router %s",
- rs->nickname);
+ routerstatus_describe(rs));
}
} SMARTLIST_FOREACH_END(rs);
@@ -2801,7 +2837,7 @@ networkstatus_parse_vote_from_string(const char *s, const char **eos_out,
ns->flavor = flav = flavor;
}
if (flav != FLAV_NS && ns_type != NS_TYPE_CONSENSUS) {
- log_warn(LD_DIR, "Flavor found on non-consenus networkstatus.");
+ log_warn(LD_DIR, "Flavor found on non-consensus networkstatus.");
goto err;
}
@@ -2970,7 +3006,7 @@ networkstatus_parse_vote_from_string(const char *s, const char **eos_out,
goto err;
}
if (ns->type != NS_TYPE_CONSENSUS &&
- memcmp(ns->cert->cache_info.identity_digest,
+ tor_memneq(ns->cert->cache_info.identity_digest,
voter->identity_digest, DIGEST_LEN)) {
log_warn(LD_DIR,"Mismatch between identities in certificate and vote");
goto err;
@@ -3076,7 +3112,8 @@ networkstatus_parse_vote_from_string(const char *s, const char **eos_out,
rs1 = smartlist_get(ns->routerstatus_list, i-1);
rs2 = smartlist_get(ns->routerstatus_list, i);
}
- if (memcmp(rs1->identity_digest, rs2->identity_digest, DIGEST_LEN) >= 0) {
+ if (fast_memcmp(rs1->identity_digest, rs2->identity_digest, DIGEST_LEN)
+ >= 0) {
log_warn(LD_DIR, "Vote networkstatus entries not sorted by identity "
"digest");
goto err;
@@ -3195,7 +3232,7 @@ networkstatus_parse_vote_from_string(const char *s, const char **eos_out,
}
if (ns->type != NS_TYPE_CONSENSUS) {
- if (memcmp(declared_identity, ns->cert->cache_info.identity_digest,
+ if (tor_memneq(declared_identity, ns->cert->cache_info.identity_digest,
DIGEST_LEN)) {
log_warn(LD_DIR, "Digest mismatch between declared and actual on "
"network-status vote.");
@@ -3223,7 +3260,7 @@ networkstatus_parse_vote_from_string(const char *s, const char **eos_out,
}
sig->good_signature = 1;
} else {
- if (tok->object_size >= INT_MAX) {
+ if (tok->object_size >= INT_MAX || tok->object_size >= SIZE_T_CEILING) {
tor_free(sig);
goto err;
}
@@ -3475,10 +3512,10 @@ networkstatus_parse_detached_signatures(const char *s, const char *eos)
siglist = detached_get_signatures(sigs, flavor);
is_duplicate = 0;
- SMARTLIST_FOREACH(siglist, document_signature_t *, s, {
- if (s->alg == alg &&
- !memcmp(id_digest, s->identity_digest, DIGEST_LEN) &&
- !memcmp(sk_digest, s->signing_key_digest, DIGEST_LEN)) {
+ SMARTLIST_FOREACH(siglist, document_signature_t *, dsig, {
+ if (dsig->alg == alg &&
+ tor_memeq(id_digest, dsig->identity_digest, DIGEST_LEN) &&
+ tor_memeq(sk_digest, dsig->signing_key_digest, DIGEST_LEN)) {
is_duplicate = 1;
}
});
@@ -3492,7 +3529,7 @@ networkstatus_parse_detached_signatures(const char *s, const char *eos)
sig->alg = alg;
memcpy(sig->identity_digest, id_digest, DIGEST_LEN);
memcpy(sig->signing_key_digest, sk_digest, DIGEST_LEN);
- if (tok->object_size >= INT_MAX) {
+ if (tok->object_size >= INT_MAX || tok->object_size >= SIZE_T_CEILING) {
tor_free(sig);
goto err;
}
@@ -3737,9 +3774,9 @@ token_check_object(memarea_t *area, const char *kwd,
break;
case NEED_KEY_1024: /* There must be a 1024-bit public key. */
case NEED_SKEY_1024: /* There must be a 1024-bit private key. */
- if (tok->key && crypto_pk_keysize(tok->key) != PK_BYTES) {
+ if (tok->key && crypto_pk_num_bits(tok->key) != PK_BYTES*8) {
tor_snprintf(ebuf, sizeof(ebuf), "Wrong size on key for %s: %d bits",
- kwd, (int)crypto_pk_keysize(tok->key));
+ kwd, crypto_pk_num_bits(tok->key));
RET_ERR(ebuf);
}
/* fall through */
@@ -3810,6 +3847,13 @@ static directory_token_t *
get_next_token(memarea_t *area,
const char **s, const char *eos, token_rule_t *table)
{
+ /** Reject any object at least this big; it is probably an overflow, an
+ * attack, a bug, or some other nonsense. */
+#define MAX_UNPARSED_OBJECT_SIZE (128*1024)
+ /** Reject any line at least this big; it is probably an overflow, an
+ * attack, a bug, or some other nonsense. */
+#define MAX_LINE_LENGTH (128*1024)
+
const char *next, *eol, *obstart;
size_t obname_len;
int i;
@@ -3828,6 +3872,10 @@ get_next_token(memarea_t *area,
eol = memchr(*s, '\n', eos-*s);
if (!eol)
eol = eos;
+ if (eol - *s > MAX_LINE_LENGTH) {
+ RET_ERR("Line far too long");
+ }
+
next = find_whitespace_eos(*s, eol);
if (!strcmp_len(*s, "opt", next-*s)) {
@@ -3894,7 +3942,8 @@ get_next_token(memarea_t *area,
obstart = *s; /* Set obstart to start of object spec */
if (*s+16 >= eol || memchr(*s+11,'\0',eol-*s-16) || /* no short lines, */
- strcmp_len(eol-5, "-----", 5)) { /* nuls or invalid endings */
+ strcmp_len(eol-5, "-----", 5) || /* nuls or invalid endings */
+ (eol-*s) > MAX_UNPARSED_OBJECT_SIZE) { /* name too long */
RET_ERR("Malformed object: bad begin line");
}
tok->object_type = STRNDUP(*s+11, eol-*s-16);
@@ -3919,13 +3968,16 @@ get_next_token(memarea_t *area,
ebuf[sizeof(ebuf)-1] = '\0';
RET_ERR(ebuf);
}
+ if (next - *s > MAX_UNPARSED_OBJECT_SIZE)
+ RET_ERR("Couldn't parse object: missing footer or object much too big.");
+
if (!strcmp(tok->object_type, "RSA PUBLIC KEY")) { /* If it's a public key */
tok->key = crypto_new_pk_env();
if (crypto_pk_read_public_key_from_string(tok->key, obstart, eol-obstart))
RET_ERR("Couldn't parse public key.");
} else if (!strcmp(tok->object_type, "RSA PRIVATE KEY")) { /* private key */
tok->key = crypto_new_pk_env();
- if (crypto_pk_read_private_key_from_string(tok->key, obstart))
+ if (crypto_pk_read_private_key_from_string(tok->key, obstart, eol-obstart))
RET_ERR("Couldn't parse private key.");
} else { /* If it's something else, try to base64-decode it */
int r;
@@ -4294,6 +4346,11 @@ microdescs_parse_from_string(const char *s, const char *eos,
}
tok = find_by_keyword(tokens, K_ONION_KEY);
+ if (!crypto_pk_public_exponent_ok(tok->key)) {
+ log_warn(LD_DIR,
+ "Relay's onion key had invalid exponent.");
+ goto next;
+ }
md->onion_pkey = tok->key;
tok->key = NULL;
@@ -4321,6 +4378,7 @@ microdescs_parse_from_string(const char *s, const char *eos,
md = NULL;
next:
microdesc_free(md);
+ md = NULL;
memarea_clear(area);
smartlist_clear(tokens);
@@ -4500,7 +4558,7 @@ tor_version_compare(tor_version_t *a, tor_version_t *b)
else if ((i = a->git_tag_len - b->git_tag_len))
return i;
else if (a->git_tag_len)
- return memcmp(a->git_tag, b->git_tag, a->git_tag_len);
+ return fast_memcmp(a->git_tag, b->git_tag, a->git_tag_len);
else
return 0;
}
@@ -4602,10 +4660,12 @@ rend_parse_v2_service_descriptor(rend_service_descriptor_t **parsed_out,
else
eos = eos + 1;
/* Check length. */
- if (strlen(desc) > REND_DESC_MAX_SIZE) {
- log_warn(LD_REND, "Descriptor length is %i which exceeds "
- "maximum rendezvous descriptor size of %i kilobytes.",
- (int)strlen(desc), REND_DESC_MAX_SIZE);
+ if (eos-desc > REND_DESC_MAX_SIZE) {
+ /* XXX023 If we are parsing this descriptor as a server, this
+ * should be a protocol warning. */
+ log_warn(LD_REND, "Descriptor length is %d which exceeds "
+ "maximum rendezvous descriptor size of %d bytes.",
+ (int)(eos-desc), REND_DESC_MAX_SIZE);
goto err;
}
/* Tokenize descriptor. */
@@ -4717,7 +4777,7 @@ rend_parse_v2_service_descriptor(rend_service_descriptor_t **parsed_out,
crypto_pk_get_digest(result->pk, public_key_hash);
rend_get_descriptor_id_bytes(test_desc_id, public_key_hash,
secret_id_part);
- if (memcmp(desc_id_out, test_desc_id, DIGEST_LEN)) {
+ if (tor_memneq(desc_id_out, test_desc_id, DIGEST_LEN)) {
log_warn(LD_REND, "Parsed descriptor ID does not match "
"computed descriptor ID.");
goto err;
@@ -4782,7 +4842,7 @@ rend_decrypt_introduction_points(char **ipos_decrypted,
crypto_free_digest_env(digest);
for (pos = 2; pos < 2 + client_entries_len;
pos += REND_BASIC_AUTH_CLIENT_ENTRY_LEN) {
- if (!memcmp(ipos_encrypted + pos, client_id,
+ if (tor_memeq(ipos_encrypted + pos, client_id,
REND_BASIC_AUTH_CLIENT_ID_LEN)) {
/* Attempt to decrypt introduction points. */
cipher = crypto_create_init_cipher(descriptor_cookie, 0);
@@ -4806,7 +4866,7 @@ rend_decrypt_introduction_points(char **ipos_decrypted,
tor_free(dec);
return -1;
}
- if (memcmpstart(dec, declen, "introduction-point ")) {
+ if (fast_memcmpstart(dec, declen, "introduction-point ")) {
log_warn(LD_REND, "Decrypted introduction points don't "
"look like we could parse them.");
tor_free(dec);
@@ -4875,7 +4935,7 @@ rend_parse_introduction_points(rend_service_descriptor_t *parsed,
parsed->intro_nodes = smartlist_create();
area = memarea_new();
- while (!memcmpstart(current_ipo, end_of_intro_points-current_ipo,
+ while (!fast_memcmpstart(current_ipo, end_of_intro_points-current_ipo,
"introduction-point ")) {
/* Determine end of string. */
const char *eos = tor_memstr(current_ipo, end_of_intro_points-current_ipo,
@@ -4942,10 +5002,22 @@ rend_parse_introduction_points(rend_service_descriptor_t *parsed,
}
/* Parse onion key. */
tok = find_by_keyword(tokens, R_IPO_ONION_KEY);
+ if (!crypto_pk_public_exponent_ok(tok->key)) {
+ log_warn(LD_REND,
+ "Introduction point's onion key had invalid exponent.");
+ rend_intro_point_free(intro);
+ goto err;
+ }
info->onion_key = tok->key;
tok->key = NULL; /* Prevent free */
/* Parse service key. */
tok = find_by_keyword(tokens, R_IPO_SERVICE_KEY);
+ if (!crypto_pk_public_exponent_ok(tok->key)) {
+ log_warn(LD_REND,
+ "Introduction point key had invalid exponent.");
+ rend_intro_point_free(intro);
+ goto err;
+ }
intro->intro_key = tok->key;
tok->key = NULL; /* Prevent free */
/* Add extend info to list of introduction points. */
diff --git a/src/or/routerparse.h b/src/or/routerparse.h
index f41743bcfb..8b8cde25f6 100644
--- a/src/or/routerparse.h
+++ b/src/or/routerparse.h
@@ -1,11 +1,11 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
- * \file routerpase.h
+ * \file routerparse.h
* \brief Header file for routerparse.c.
**/
@@ -82,7 +82,5 @@ int rend_parse_introduction_points(rend_service_descriptor_t *parsed,
size_t intro_points_encoded_size);
int rend_parse_client_keys(strmap_t *parsed_clients, const char *str);
-void tor_gettimeofday_cache_clear(void);
-
#endif
diff --git a/src/or/status.c b/src/or/status.c
new file mode 100644
index 0000000000..acb8ba4144
--- /dev/null
+++ b/src/or/status.c
@@ -0,0 +1,115 @@
+/* Copyright (c) 2010-2011, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+/**
+ * \file status.c
+ * \brief Keep status information and log the heartbeat messages.
+ **/
+
+#include "or.h"
+#include "config.h"
+#include "status.h"
+#include "nodelist.h"
+#include "router.h"
+#include "circuitlist.h"
+#include "main.h"
+
+/** Return the total number of circuits. */
+static int
+count_circuits(void)
+{
+ circuit_t *circ;
+ int nr=0;
+
+ for (circ = _circuit_get_global_list(); circ; circ = circ->next)
+ nr++;
+
+ return nr;
+}
+
+/** Take seconds <b>secs</b> and return a newly allocated human-readable
+ * uptime string */
+static char *
+secs_to_uptime(long secs)
+{
+ long int days = secs / 86400;
+ int hours = (int)((secs - (days * 86400)) / 3600);
+ int minutes = (int)((secs - (days * 86400) - (hours * 3600)) / 60);
+ char *uptime_string = NULL;
+
+ switch (days) {
+ case 0:
+ tor_asprintf(&uptime_string, "%d:%02d hours", hours, minutes);
+ break;
+ case 1:
+ tor_asprintf(&uptime_string, "%ld day %d:%02d hours",
+ days, hours, minutes);
+ break;
+ default:
+ tor_asprintf(&uptime_string, "%ld days %d:%02d hours",
+ days, hours, minutes);
+ break;
+ }
+
+ return uptime_string;
+}
+
+/** Take <b>bytes</b> and returns a newly allocated human-readable usage
+ * string. */
+static char *
+bytes_to_usage(uint64_t bytes)
+{
+ char *bw_string = NULL;
+
+ if (bytes < (1<<20)) { /* Less than a megabyte. */
+ tor_asprintf(&bw_string, U64_FORMAT" kB", U64_PRINTF_ARG(bytes>>10));
+ } else if (bytes < (1<<30)) { /* Megabytes. Let's add some precision. */
+ double bw = U64_TO_DBL(bytes);
+ tor_asprintf(&bw_string, "%.2f MB", bw/(1<<20));
+ } else { /* Gigabytes. */
+ double bw = U64_TO_DBL(bytes);
+ tor_asprintf(&bw_string, "%.2f GB", bw/(1<<30));
+ }
+
+ return bw_string;
+}
+
+/** Log a "heartbeat" message describing Tor's status and history so that the
+ * user can know that there is indeed a running Tor. Return 0 on success and
+ * -1 on failure. */
+int
+log_heartbeat(time_t now)
+{
+ char *bw_sent = NULL;
+ char *bw_rcvd = NULL;
+ char *uptime = NULL;
+ const routerinfo_t *me;
+
+ const or_options_t *options = get_options();
+ (void)now;
+
+ if (public_server_mode(options)) {
+ /* Let's check if we are in the current cached consensus. */
+ if (!(me = router_get_my_routerinfo()))
+ return -1; /* Something stinks, we won't even attempt this. */
+ else
+ if (!node_get_by_id(me->cache_info.identity_digest))
+ log_fn(LOG_NOTICE, LD_HEARTBEAT, "Heartbeat: It seems like we are not "
+ "in the cached consensus.");
+ }
+
+ uptime = secs_to_uptime(get_uptime());
+ bw_rcvd = bytes_to_usage(get_bytes_read());
+ bw_sent = bytes_to_usage(get_bytes_written());
+
+ log_fn(LOG_NOTICE, LD_HEARTBEAT, "Heartbeat: Tor's uptime is %s, with %d "
+ "circuits open. I've pushed %s and received %s.",
+ uptime, count_circuits(),bw_sent,bw_rcvd);
+
+ tor_free(uptime);
+ tor_free(bw_sent);
+ tor_free(bw_rcvd);
+
+ return 0;
+}
+
diff --git a/src/or/status.h b/src/or/status.h
new file mode 100644
index 0000000000..ac726a1d2d
--- /dev/null
+++ b/src/or/status.h
@@ -0,0 +1,10 @@
+/* Copyright (c) 2010, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+#ifndef _TOR_STATUS_H
+#define _TOR_STATUS_H
+
+int log_heartbeat(time_t now);
+
+#endif
+
diff --git a/src/or/tor_main.c b/src/or/tor_main.c
index 117369c565..1ce14ab768 100644
--- a/src/or/tor_main.c
+++ b/src/or/tor_main.c
@@ -1,6 +1,6 @@
/* Copyright 2001-2004 Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/** String describing which Tor subversion repository version the source was
diff --git a/src/test/Makefile.am b/src/test/Makefile.am
index 174c1af6ef..852715079d 100644
--- a/src/test/Makefile.am
+++ b/src/test/Makefile.am
@@ -8,7 +8,7 @@ AM_CPPFLAGS = -DSHARE_DATADIR="\"$(datadir)\"" \
-I"$(top_srcdir)/src/or"
# -L flags need to go in LDFLAGS. -l flags need to go in LDADD.
-# This seems to matter nowhere but on windows, but I assure you that it
+# This seems to matter nowhere but on Windows, but I assure you that it
# matters a lot there, and is quite hard to debug if you forget to do it.
test_SOURCES = \
@@ -22,18 +22,12 @@ test_SOURCES = \
test_util.c \
tinytest.c
-if USE_BUFFEREVENTS
-levent_openssl_lib = -levent_openssl
-else
-levent_openssl_lib =
-endif
-
test_LDFLAGS = @TOR_LDFLAGS_zlib@ @TOR_LDFLAGS_openssl@ \
@TOR_LDFLAGS_libevent@
test_LDADD = ../or/libtor.a ../common/libor.a ../common/libor-crypto.a \
../common/libor-event.a \
@TOR_ZLIB_LIBS@ -lm @TOR_LIBEVENT_LIBS@ @TOR_OPENSSL_LIBS@ \
- @TOR_LIB_WS32@ @TOR_LIB_GDI@ $(levent_openssl_lib)
+ @TOR_LIB_WS32@ @TOR_LIB_GDI@
noinst_HEADERS = \
tinytest.h \
diff --git a/src/test/test.c b/src/test/test.c
index 01fb30cd0c..74ada0ea81 100644
--- a/src/test/test.c
+++ b/src/test/test.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/* Ordinarily defined in tor_main.c; this bit is just here to provide one
@@ -84,10 +84,16 @@ setup_directory(void)
if (is_setup) return;
#ifdef MS_WINDOWS
- // XXXX
- tor_snprintf(temp_dir, sizeof(temp_dir),
- "c:\\windows\\temp\\tor_test_%d", (int)getpid());
- r = mkdir(temp_dir);
+ {
+ char buf[MAX_PATH];
+ const char *tmp = buf;
+ /* If this fails, we're probably screwed anyway */
+ if (!GetTempPath(sizeof(buf),buf))
+ tmp = "c:\\windows\\temp";
+ tor_snprintf(temp_dir, sizeof(temp_dir),
+ "%s\\tor_test_%d", tmp, (int)getpid());
+ r = mkdir(temp_dir);
+ }
#else
tor_snprintf(temp_dir, sizeof(temp_dir), "/tmp/tor_test_%d", (int) getpid());
r = mkdir(temp_dir, 0700);
@@ -1434,8 +1440,8 @@ test_geoip(void)
test_streq("??", NAMEFOR(2000));
#undef NAMEFOR
- get_options()->BridgeRelay = 1;
- get_options()->BridgeRecordUsageByCountry = 1;
+ get_options_mutable()->BridgeRelay = 1;
+ get_options_mutable()->BridgeRecordUsageByCountry = 1;
/* Put 9 observations in AB... */
for (i=32; i < 40; ++i)
geoip_note_client_seen(GEOIP_CLIENT_CONNECT, i, now-7200);
@@ -1696,7 +1702,10 @@ main(int c, const char **v)
}
options->command = CMD_RUN_UNITTESTS;
- crypto_global_init(0, NULL, NULL);
+ if (crypto_global_init(0, NULL, NULL)) {
+ printf("Can't initialize crypto subsystem; exiting.\n");
+ return 1;
+ }
rep_hist_init();
network_init();
setup_directory();
diff --git a/src/test/test.h b/src/test/test.h
index 550c57a812..a053a7ac43 100644
--- a/src/test/test.h
+++ b/src/test/test.h
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2003, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#ifndef _TOR_TEST_H
@@ -45,7 +45,8 @@
_print = tor_malloc(printlen); \
base16_encode(_print, printlen, _value, \
(len)); }, \
- { tor_free(_print); } \
+ { tor_free(_print); }, \
+ TT_EXIT_TEST_FUNCTION \
);
#define test_memeq(expr1, expr2, len) test_mem_op((expr1), ==, (expr2), len)
diff --git a/src/test/test_addr.c b/src/test/test_addr.c
index bafc0a968e..ec0c508978 100644
--- a/src/test/test_addr.c
+++ b/src/test/test_addr.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
@@ -74,7 +74,9 @@ test_addr_basic(void)
cp += 2; \
if (i != 15) *cp++ = ':'; \
} \
- }, { tor_free(_print); } \
+ }, \
+ { tor_free(_print); }, \
+ TT_EXIT_TEST_FUNCTION \
); \
STMT_END
@@ -436,13 +438,16 @@ test_addr_ip6_helpers(void)
/* test tor_addr_parse_mask_ports */
test_addr_mask_ports_parse("[::f]/17:47-95", AF_INET6,
0, 0, 0, 0x0000000f, 17, 47, 95);
+ test_streq(p1, "::f");
//test_addr_parse("[::fefe:4.1.1.7/120]:999-1000");
//test_addr_parse_check("::fefe:401:107", 120, 999, 1000);
test_addr_mask_ports_parse("[::ffff:4.1.1.7]/120:443", AF_INET6,
0, 0, 0x0000ffff, 0x04010107, 120, 443, 443);
+ test_streq(p1, "::ffff:4.1.1.7");
test_addr_mask_ports_parse("[abcd:2::44a:0]:2-65000", AF_INET6,
0xabcd0002, 0, 0, 0x044a0000, 128, 2, 65000);
+ test_streq(p1, "abcd:2::44a:0");
r=tor_addr_parse_mask_ports("[fefef::]/112", &t1, NULL, NULL, NULL);
test_assert(r == -1);
r=tor_addr_parse_mask_ports("efef::/112", &t1, NULL, NULL, NULL);
@@ -477,9 +482,9 @@ test_addr_ip6_helpers(void)
i = get_interface_address6(LOG_DEBUG, AF_INET6, &t2);
#if 0
tor_inet_ntop(AF_INET, &t1.sa.sin_addr, buf, sizeof(buf));
- printf("\nv4 address: %s (family=%i)", buf, IN_FAMILY(&t1));
+ printf("\nv4 address: %s (family=%d)", buf, IN_FAMILY(&t1));
tor_inet_ntop(AF_INET6, &t2.sa6.sin6_addr, buf, sizeof(buf));
- printf("\nv6 address: %s (family=%i)", buf, IN_FAMILY(&t2));
+ printf("\nv6 address: %s (family=%d)", buf, IN_FAMILY(&t2));
#endif
done:
diff --git a/src/test/test_containers.c b/src/test/test_containers.c
index 1fc248cb46..af9fb1c5c9 100644
--- a/src/test/test_containers.c
+++ b/src/test/test_containers.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
diff --git a/src/test/test_crypto.c b/src/test/test_crypto.c
index b475914b1b..dca0d3a28f 100644
--- a/src/test/test_crypto.c
+++ b/src/test/test_crypto.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
@@ -12,8 +12,8 @@
static void
test_crypto_dh(void)
{
- crypto_dh_env_t *dh1 = crypto_dh_new();
- crypto_dh_env_t *dh2 = crypto_dh_new();
+ crypto_dh_env_t *dh1 = crypto_dh_new(DH_TYPE_CIRCUIT);
+ crypto_dh_env_t *dh2 = crypto_dh_new(DH_TYPE_CIRCUIT);
char p1[DH_BYTES];
char p2[DH_BYTES];
char s1[DH_BYTES];
@@ -69,7 +69,7 @@ test_crypto_rng(void)
uint64_t big;
char *host;
j = crypto_rand_int(100);
- if (i < 0 || i >= 100)
+ if (j < 0 || j >= 100)
allok = 0;
big = crypto_rand_uint64(U64_LITERAL(1)<<40);
if (big >= (U64_LITERAL(1)<<40))
@@ -240,11 +240,13 @@ test_crypto_sha(void)
/* Test SHA-1 with a test vector from the specification. */
i = crypto_digest(data, "abc", 3);
test_memeq_hex(data, "A9993E364706816ABA3E25717850C26C9CD0D89D");
+ tt_int_op(i, ==, 0);
/* Test SHA-256 with a test vector from the specification. */
i = crypto_digest256(data, "abc", 3, DIGEST_SHA256);
test_memeq_hex(data, "BA7816BF8F01CFEA414140DE5DAE2223B00361A3"
"96177A9CB410FF61F20015AD");
+ tt_int_op(i, ==, 0);
/* Test HMAC-SHA-1 with test cases from RFC2202. */
@@ -341,27 +343,31 @@ test_crypto_pk(void)
test_eq(0, crypto_pk_cmp_keys(pk1, pk2));
test_eq(128, crypto_pk_keysize(pk1));
+ test_eq(1024, crypto_pk_num_bits(pk1));
test_eq(128, crypto_pk_keysize(pk2));
+ test_eq(1024, crypto_pk_num_bits(pk2));
- test_eq(128, crypto_pk_public_encrypt(pk2, data1, "Hello whirled.", 15,
+ test_eq(128, crypto_pk_public_encrypt(pk2, data1, sizeof(data1),
+ "Hello whirled.", 15,
PK_PKCS1_OAEP_PADDING));
- test_eq(128, crypto_pk_public_encrypt(pk1, data2, "Hello whirled.", 15,
+ test_eq(128, crypto_pk_public_encrypt(pk1, data2, sizeof(data1),
+ "Hello whirled.", 15,
PK_PKCS1_OAEP_PADDING));
/* oaep padding should make encryption not match */
test_memneq(data1, data2, 128);
- test_eq(15, crypto_pk_private_decrypt(pk1, data3, data1, 128,
+ test_eq(15, crypto_pk_private_decrypt(pk1, data3, sizeof(data3), data1, 128,
PK_PKCS1_OAEP_PADDING,1));
test_streq(data3, "Hello whirled.");
memset(data3, 0, 1024);
- test_eq(15, crypto_pk_private_decrypt(pk1, data3, data2, 128,
+ test_eq(15, crypto_pk_private_decrypt(pk1, data3, sizeof(data3), data2, 128,
PK_PKCS1_OAEP_PADDING,1));
test_streq(data3, "Hello whirled.");
/* Can't decrypt with public key. */
- test_eq(-1, crypto_pk_private_decrypt(pk2, data3, data2, 128,
+ test_eq(-1, crypto_pk_private_decrypt(pk2, data3, sizeof(data3), data2, 128,
PK_PKCS1_OAEP_PADDING,1));
/* Try again with bad padding */
memcpy(data2+1, "XYZZY", 5); /* This has fails ~ once-in-2^40 */
- test_eq(-1, crypto_pk_private_decrypt(pk1, data3, data2, 128,
+ test_eq(-1, crypto_pk_private_decrypt(pk1, data3, sizeof(data3), data2, 128,
PK_PKCS1_OAEP_PADDING,1));
/* File operations: save and load private key */
@@ -376,19 +382,23 @@ test_crypto_pk(void)
get_fname("xyzzy")) < 0);
test_assert(! crypto_pk_read_private_key_from_filename(pk2,
get_fname("pkey1")));
- test_eq(15, crypto_pk_private_decrypt(pk2, data3, data1, 128,
+ test_eq(15, crypto_pk_private_decrypt(pk2, data3, sizeof(data3), data1, 128,
PK_PKCS1_OAEP_PADDING,1));
/* Now try signing. */
strlcpy(data1, "Ossifrage", 1024);
- test_eq(128, crypto_pk_private_sign(pk1, data2, data1, 10));
- test_eq(10, crypto_pk_public_checksig(pk1, data3, data2, 128));
+ test_eq(128, crypto_pk_private_sign(pk1, data2, sizeof(data2), data1, 10));
+ test_eq(10,
+ crypto_pk_public_checksig(pk1, data3, sizeof(data3), data2, 128));
test_streq(data3, "Ossifrage");
/* Try signing digests. */
- test_eq(128, crypto_pk_private_sign_digest(pk1, data2, data1, 10));
- test_eq(20, crypto_pk_public_checksig(pk1, data3, data2, 128));
+ test_eq(128, crypto_pk_private_sign_digest(pk1, data2, sizeof(data2),
+ data1, 10));
+ test_eq(20,
+ crypto_pk_public_checksig(pk1, data3, sizeof(data3), data2, 128));
test_eq(0, crypto_pk_public_checksig_digest(pk1, data1, 10, data2, 128));
test_eq(-1, crypto_pk_public_checksig_digest(pk1, data1, 11, data2, 128));
+
/*XXXX test failed signing*/
/* Try encoding */
@@ -409,9 +419,11 @@ test_crypto_pk(void)
continue;
p = (i==0)?PK_NO_PADDING:
(i==1)?PK_PKCS1_PADDING:PK_PKCS1_OAEP_PADDING;
- len = crypto_pk_public_hybrid_encrypt(pk1,data2,data1,j,p,0);
+ len = crypto_pk_public_hybrid_encrypt(pk1,data2,sizeof(data2),
+ data1,j,p,0);
test_assert(len>=0);
- len = crypto_pk_private_hybrid_decrypt(pk1,data3,data2,len,p,1);
+ len = crypto_pk_private_hybrid_decrypt(pk1,data3,sizeof(data3),
+ data2,len,p,1);
test_eq(len,j);
test_memeq(data1,data3,j);
}
@@ -618,7 +630,7 @@ test_crypto_aes_iv(void)
crypto_free_cipher_env(cipher);
cipher = NULL;
test_eq(encrypted_size, 16 + 4095);
- tor_assert(encrypted_size > 0); /* This is obviously true, since 4111 is
+ tt_assert(encrypted_size > 0); /* This is obviously true, since 4111 is
* greater than 0, but its truth is not
* obvious to all analysis tools. */
cipher = crypto_create_init_cipher(key1, 0);
@@ -627,7 +639,7 @@ test_crypto_aes_iv(void)
crypto_free_cipher_env(cipher);
cipher = NULL;
test_eq(decrypted_size, 4095);
- tor_assert(decrypted_size > 0);
+ tt_assert(decrypted_size > 0);
test_memeq(plain, decrypted1, 4095);
/* Encrypt a second time (with a new random initialization vector). */
cipher = crypto_create_init_cipher(key1, 1);
@@ -636,14 +648,14 @@ test_crypto_aes_iv(void)
crypto_free_cipher_env(cipher);
cipher = NULL;
test_eq(encrypted_size, 16 + 4095);
- tor_assert(encrypted_size > 0);
+ tt_assert(encrypted_size > 0);
cipher = crypto_create_init_cipher(key1, 0);
decrypted_size = crypto_cipher_decrypt_with_iv(cipher, decrypted2, 4095,
encrypted2, encrypted_size);
crypto_free_cipher_env(cipher);
cipher = NULL;
test_eq(decrypted_size, 4095);
- tor_assert(decrypted_size > 0);
+ tt_assert(decrypted_size > 0);
test_memeq(plain, decrypted2, 4095);
test_memneq(encrypted1, encrypted2, encrypted_size);
/* Decrypt with the wrong key. */
@@ -668,14 +680,14 @@ test_crypto_aes_iv(void)
crypto_free_cipher_env(cipher);
cipher = NULL;
test_eq(encrypted_size, 16 + 1);
- tor_assert(encrypted_size > 0);
+ tt_assert(encrypted_size > 0);
cipher = crypto_create_init_cipher(key1, 0);
decrypted_size = crypto_cipher_decrypt_with_iv(cipher, decrypted1, 1,
encrypted1, encrypted_size);
crypto_free_cipher_env(cipher);
cipher = NULL;
test_eq(decrypted_size, 1);
- tor_assert(decrypted_size > 0);
+ tt_assert(decrypted_size > 0);
test_memeq(plain_1, decrypted1, 1);
/* Special length case: 15. */
cipher = crypto_create_init_cipher(key1, 1);
@@ -684,14 +696,14 @@ test_crypto_aes_iv(void)
crypto_free_cipher_env(cipher);
cipher = NULL;
test_eq(encrypted_size, 16 + 15);
- tor_assert(encrypted_size > 0);
+ tt_assert(encrypted_size > 0);
cipher = crypto_create_init_cipher(key1, 0);
decrypted_size = crypto_cipher_decrypt_with_iv(cipher, decrypted1, 15,
encrypted1, encrypted_size);
crypto_free_cipher_env(cipher);
cipher = NULL;
test_eq(decrypted_size, 15);
- tor_assert(decrypted_size > 0);
+ tt_assert(decrypted_size > 0);
test_memeq(plain_15, decrypted1, 15);
/* Special length case: 16. */
cipher = crypto_create_init_cipher(key1, 1);
@@ -700,14 +712,14 @@ test_crypto_aes_iv(void)
crypto_free_cipher_env(cipher);
cipher = NULL;
test_eq(encrypted_size, 16 + 16);
- tor_assert(encrypted_size > 0);
+ tt_assert(encrypted_size > 0);
cipher = crypto_create_init_cipher(key1, 0);
decrypted_size = crypto_cipher_decrypt_with_iv(cipher, decrypted1, 16,
encrypted1, encrypted_size);
crypto_free_cipher_env(cipher);
cipher = NULL;
test_eq(decrypted_size, 16);
- tor_assert(decrypted_size > 0);
+ tt_assert(decrypted_size > 0);
test_memeq(plain_16, decrypted1, 16);
/* Special length case: 17. */
cipher = crypto_create_init_cipher(key1, 1);
@@ -716,12 +728,12 @@ test_crypto_aes_iv(void)
crypto_free_cipher_env(cipher);
cipher = NULL;
test_eq(encrypted_size, 16 + 17);
- tor_assert(encrypted_size > 0);
+ tt_assert(encrypted_size > 0);
cipher = crypto_create_init_cipher(key1, 0);
decrypted_size = crypto_cipher_decrypt_with_iv(cipher, decrypted1, 17,
encrypted1, encrypted_size);
test_eq(decrypted_size, 17);
- tor_assert(decrypted_size > 0);
+ tt_assert(decrypted_size > 0);
test_memeq(plain_17, decrypted1, 17);
done:
diff --git a/src/test/test_data.c b/src/test/test_data.c
index f926ee17dd..fc85857615 100644
--- a/src/test/test_data.c
+++ b/src/test/test_data.c
@@ -1,6 +1,6 @@
/* Copyright 2001-2004 Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/** First of 3 example authority certificates for unit testing. */
diff --git a/src/test/test_dir.c b/src/test/test_dir.c
index ce13f34ce4..04ca29a9fb 100644
--- a/src/test/test_dir.c
+++ b/src/test/test_dir.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
@@ -298,7 +298,7 @@ test_dir_versions(void)
#define tt_versionstatus_op(vs1, op, vs2) \
tt_assert_test_type(vs1,vs2,#vs1" "#op" "#vs2,version_status_t, \
- (_val1 op _val2),"%d")
+ (_val1 op _val2),"%d",TT_EXIT_TEST_FUNCTION)
#define test_v_i_o(val, ver, lst) \
tt_versionstatus_op(val, ==, tor_version_is_obsolete(ver, lst))
@@ -609,8 +609,11 @@ test_dir_param_voting(void)
"abcd=20 c=60 cw=500 x-yz=-9 zzzzz=101", NULL, 0, 0);
smartlist_split_string(vote4.net_params,
"ab=900 abcd=200 c=1 cw=51 x-yz=100", NULL, 0, 0);
- test_eq(100, networkstatus_get_param(&vote4, "x-yz", 50));
- test_eq(222, networkstatus_get_param(&vote4, "foobar", 222));
+ test_eq(100, networkstatus_get_param(&vote4, "x-yz", 50, 0, 300));
+ test_eq(222, networkstatus_get_param(&vote4, "foobar", 222, 0, 300));
+ test_eq(80, networkstatus_get_param(&vote4, "ab", 12, 0, 80));
+ test_eq(-8, networkstatus_get_param(&vote4, "ab", -12, -100, -8));
+ test_eq(0, networkstatus_get_param(&vote4, "foobar", 0, -100, 8));
smartlist_add(votes, &vote1);
smartlist_add(votes, &vote2);
@@ -745,11 +748,11 @@ test_dir_v3_networkstatus(void)
sign_skey_leg1 = pk_generate(4);
test_assert(!crypto_pk_read_private_key_from_string(sign_skey_1,
- AUTHORITY_SIGNKEY_1));
+ AUTHORITY_SIGNKEY_1, -1));
test_assert(!crypto_pk_read_private_key_from_string(sign_skey_2,
- AUTHORITY_SIGNKEY_2));
+ AUTHORITY_SIGNKEY_2, -1));
test_assert(!crypto_pk_read_private_key_from_string(sign_skey_3,
- AUTHORITY_SIGNKEY_3));
+ AUTHORITY_SIGNKEY_3, -1));
test_assert(!crypto_pk_cmp_keys(sign_skey_1, cert1->signing_key));
test_assert(!crypto_pk_cmp_keys(sign_skey_2, cert2->signing_key));
@@ -1166,10 +1169,10 @@ test_dir_v3_networkstatus(void)
/* Extract a detached signature from con3. */
detached_text1 = get_detached_sigs(con3, con_md3);
- tor_assert(detached_text1);
+ tt_assert(detached_text1);
/* Try to parse it. */
dsig1 = networkstatus_parse_detached_signatures(detached_text1, NULL);
- tor_assert(dsig1);
+ tt_assert(dsig1);
/* Are parsed values as expected? */
test_eq(dsig1->valid_after, con3->valid_after);
diff --git a/src/test/test_microdesc.c b/src/test/test_microdesc.c
index 57e894e2e9..b807265c84 100644
--- a/src/test/test_microdesc.c
+++ b/src/test/test_microdesc.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2010, The Tor Project, Inc. */
+/* Copyright (c) 2010-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
@@ -56,7 +56,7 @@ test_md_cache(void *data)
char *fn = NULL, *s = NULL;
(void)data;
- options = get_options();
+ options = get_options_mutable();
tt_assert(options);
time1 = time(NULL);
@@ -160,7 +160,7 @@ test_md_cache(void *data)
tt_str_op(smartlist_get(md3->family, 0), ==, "nodeX");
/* Now rebuild the cache! */
- tt_int_op(microdesc_cache_rebuild(mc), ==, 0);
+ tt_int_op(microdesc_cache_rebuild(mc, 1), ==, 0);
tt_int_op(md1->saved_location, ==, SAVED_IN_CACHE);
tt_int_op(md2->saved_location, ==, SAVED_IN_CACHE);
@@ -208,7 +208,7 @@ test_md_cache(void *data)
md3 = NULL; /* it's history now! */
/* rebuild again, make sure it stays gone. */
- microdesc_cache_rebuild(mc);
+ microdesc_cache_rebuild(mc, 1);
tt_ptr_op(md1, ==, microdesc_cache_lookup_by_digest256(mc, d1));
tt_ptr_op(md2, ==, microdesc_cache_lookup_by_digest256(mc, d2));
tt_ptr_op(NULL, ==, microdesc_cache_lookup_by_digest256(mc, d3));
diff --git a/src/test/test_util.c b/src/test/test_util.c
index c4428f5ea9..c4769e6407 100644
--- a/src/test/test_util.c
+++ b/src/test/test_util.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2010, The Tor Project, Inc. */
+ * Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
@@ -376,7 +376,7 @@ test_util_strmisc(void)
/* Test memmem and memstr */
{
const char *haystack = "abcde";
- tor_assert(!tor_memmem(haystack, 5, "ef", 2));
+ tt_assert(!tor_memmem(haystack, 5, "ef", 2));
test_eq_ptr(tor_memmem(haystack, 5, "cd", 2), haystack + 2);
test_eq_ptr(tor_memmem(haystack, 5, "cde", 3), haystack + 2);
haystack = "ababcad";
@@ -640,26 +640,26 @@ test_util_gzip(void)
tor_strdup("String with low redundancy that won't be compressed much.");
test_assert(!tor_gzip_compress(&buf2, &len1, buf1, strlen(buf1)+1,
ZLIB_METHOD));
- tor_assert(len1>16);
+ tt_assert(len1>16);
/* when we allow an incomplete string, we should succeed.*/
- tor_assert(!tor_gzip_uncompress(&buf3, &len2, buf2, len1-16,
+ tt_assert(!tor_gzip_uncompress(&buf3, &len2, buf2, len1-16,
ZLIB_METHOD, 0, LOG_INFO));
buf3[len2]='\0';
- tor_assert(len2 > 5);
- tor_assert(!strcmpstart(buf1, buf3));
+ tt_assert(len2 > 5);
+ tt_assert(!strcmpstart(buf1, buf3));
/* when we demand a complete string, this must fail. */
tor_free(buf3);
- tor_assert(tor_gzip_uncompress(&buf3, &len2, buf2, len1-16,
+ tt_assert(tor_gzip_uncompress(&buf3, &len2, buf2, len1-16,
ZLIB_METHOD, 1, LOG_INFO));
- tor_assert(!buf3);
+ tt_assert(!buf3);
/* Now, try streaming compression. */
tor_free(buf1);
tor_free(buf2);
tor_free(buf3);
state = tor_zlib_new(1, ZLIB_METHOD);
- tor_assert(state);
+ tt_assert(state);
cp1 = buf1 = tor_malloc(1024);
len1 = 1024;
ccp2 = "ABCDEFGHIJABCDEFGHIJ";
@@ -676,7 +676,7 @@ test_util_gzip(void)
test_eq(len2, 0);
test_assert(cp1 > cp2); /* Make sure we really added something. */
- tor_assert(!tor_gzip_uncompress(&buf3, &len2, buf1, 1024-len1,
+ tt_assert(!tor_gzip_uncompress(&buf3, &len2, buf1, 1024-len1,
ZLIB_METHOD, 1, LOG_WARN));
test_streq(buf3, "ABCDEFGHIJABCDEFGHIJ"); /*Make sure it compressed right.*/
@@ -1208,11 +1208,41 @@ test_util_listdir(void *ptr)
}
}
+static void
+test_util_parent_dir(void *ptr)
+{
+ char *cp;
+ (void)ptr;
+
+#define T(input,expect_ok,output) \
+ do { \
+ int ok; \
+ cp = tor_strdup(input); \
+ ok = get_parent_directory(cp); \
+ tt_int_op(ok, ==, expect_ok); \
+ if (ok==0) \
+ tt_str_op(cp, ==, output); \
+ tor_free(cp); \
+ } while (0);
+
+ T("/home/wombat/knish", 0, "/home/wombat");
+ T("/home/wombat/knish/", 0, "/home/wombat");
+ T("./home/wombat/knish/", 0, "./home/wombat");
+ T("./wombat", 0, ".");
+ T("", -1, "");
+ T("/", -1, "");
+ T("////", -1, "");
+
+ done:
+ tor_free(cp);
+}
+
#ifdef MS_WINDOWS
static void
test_util_load_win_lib(void *ptr)
{
HANDLE h = load_windows_system_library("advapi32.dll");
+ (void) ptr;
tt_assert(h);
done:
@@ -1366,7 +1396,8 @@ run_util_spawn_background(const char *argv[], const char *expected_out,
pid = retval;
/* Check stdout */
- pos = read(stdout_pipe, stdout_buf, sizeof(stdout_buf) - 1);
+ pos = read_all(stdout_pipe, stdout_buf, sizeof(stdout_buf) - 1, 0);
+ tt_assert(pos >= 0);
stdout_buf[pos] = '\0';
tt_int_op(pos, ==, strlen(expected_out));
tt_str_op(stdout_buf, ==, expected_out);
@@ -1380,7 +1411,8 @@ run_util_spawn_background(const char *argv[], const char *expected_out,
tt_assert(!WIFSTOPPED(stat_loc));
/* Check stderr */
- pos = read(stderr_pipe, stderr_buf, sizeof(stderr_buf) - 1);
+ pos = read_all(stderr_pipe, stderr_buf, sizeof(stderr_buf) - 1, 0);
+ tt_assert(pos >= 0);
stderr_buf[pos] = '\0';
tt_int_op(pos, ==, strlen(expected_err));
tt_str_op(stderr_buf, ==, expected_err);
@@ -1417,6 +1449,59 @@ test_util_spawn_background_fail(void *ptr)
}
#endif
+static void
+test_util_di_ops(void)
+{
+#define LT -1
+#define GT 1
+#define EQ 0
+ const struct {
+ const char *a; int want_sign; const char *b;
+ } examples[] = {
+ { "Foo", EQ, "Foo" },
+ { "foo", GT, "bar", },
+ { "foobar", EQ ,"foobar" },
+ { "foobar", LT, "foobaw" },
+ { "foobar", GT, "f00bar" },
+ { "foobar", GT, "boobar" },
+ { "", EQ, "" },
+ { NULL, 0, NULL },
+ };
+
+ int i;
+
+ for (i = 0; examples[i].a; ++i) {
+ size_t len = strlen(examples[i].a);
+ int eq1, eq2, neq1, neq2, cmp1, cmp2;
+ test_eq(len, strlen(examples[i].b));
+ /* We do all of the operations, with operands in both orders. */
+ eq1 = tor_memeq(examples[i].a, examples[i].b, len);
+ eq2 = tor_memeq(examples[i].b, examples[i].a, len);
+ neq1 = tor_memneq(examples[i].a, examples[i].b, len);
+ neq2 = tor_memneq(examples[i].b, examples[i].a, len);
+ cmp1 = tor_memcmp(examples[i].a, examples[i].b, len);
+ cmp2 = tor_memcmp(examples[i].b, examples[i].a, len);
+
+ /* Check for correctness of cmp1 */
+ if (cmp1 < 0 && examples[i].want_sign != LT)
+ test_fail();
+ else if (cmp1 > 0 && examples[i].want_sign != GT)
+ test_fail();
+ else if (cmp1 == 0 && examples[i].want_sign != EQ)
+ test_fail();
+
+ /* Check for consistency of everything else with cmp1 */
+ test_eq(eq1, eq2);
+ test_eq(neq1, neq2);
+ test_eq(cmp1, -cmp2);
+ test_eq(eq1, cmp1 == 0);
+ test_eq(neq1, !eq1);
+ }
+
+ done:
+ ;
+}
+
#define UTIL_LEGACY(name) \
{ #name, legacy_test_helper, 0, &legacy_setup, test_util_ ## name }
@@ -1437,9 +1522,11 @@ struct testcase_t util_tests[] = {
UTIL_LEGACY(threads),
UTIL_LEGACY(sscanf),
UTIL_LEGACY(strtok),
+ UTIL_LEGACY(di_ops),
UTIL_TEST(find_str_at_start_of_line, 0),
UTIL_TEST(asprintf, 0),
UTIL_TEST(listdir, 0),
+ UTIL_TEST(parent_dir, 0),
#ifdef MS_WINDOWS
UTIL_TEST(load_win_lib, 0),
#endif
diff --git a/src/test/tinytest.c b/src/test/tinytest.c
index 11ffc2fe56..8caa4f5453 100644
--- a/src/test/tinytest.c
+++ b/src/test/tinytest.c
@@ -28,7 +28,11 @@
#include <string.h>
#include <assert.h>
-#ifdef WIN32
+#ifdef TINYTEST_LOCAL
+#include "tinytest_local.h"
+#endif
+
+#ifdef _WIN32
#include <windows.h>
#else
#include <sys/types.h>
@@ -40,9 +44,6 @@
#define __attribute__(x)
#endif
-#ifdef TINYTEST_LOCAL
-#include "tinytest_local.h"
-#endif
#include "tinytest.h"
#include "tinytest_macros.h"
@@ -64,7 +65,7 @@ const char *cur_test_prefix = NULL; /**< prefix of the current test group */
/** Name of the current test, if we haven't logged is yet. Used for --quiet */
const char *cur_test_name = NULL;
-#ifdef WIN32
+#ifdef _WIN32
/** Pointer to argv[0] for win32. */
static const char *commandname = NULL;
#endif
@@ -103,7 +104,7 @@ static enum outcome
_testcase_run_forked(const struct testgroup_t *group,
const struct testcase_t *testcase)
{
-#ifdef WIN32
+#ifdef _WIN32
/* Fork? On Win32? How primitive! We'll do what the smart kids do:
we'll invoke our own exe (whose name we recall from the command
line) with a command line that tells it to run just the test we
@@ -174,6 +175,7 @@ _testcase_run_forked(const struct testgroup_t *group,
exit(1);
}
exit(0);
+ return FAIL; /* unreachable */
} else {
/* parent */
int status, r;
@@ -239,6 +241,7 @@ testcase_run_one(const struct testgroup_t *group,
if (opt_forked) {
exit(outcome==OK ? 0 : (outcome==SKIP?MAGIC_EXITCODE : 1));
+ return 1; /* unreachable */
} else {
return (int)outcome;
}
@@ -287,7 +290,7 @@ tinytest_main(int c, const char **v, struct testgroup_t *groups)
{
int i, j, n=0;
-#ifdef WIN32
+#ifdef _WIN32
commandname = v[0];
#endif
for (i=1; i<c; ++i) {
diff --git a/src/test/tinytest_demo.c b/src/test/tinytest_demo.c
index bd33cc37fa..98cb773d1a 100644
--- a/src/test/tinytest_demo.c
+++ b/src/test/tinytest_demo.c
@@ -1,4 +1,4 @@
-/* tinytest_demo.c -- Copyright 2009 Nick Mathewson
+/* tinytest_demo.c -- Copyright 2009-2010 Nick Mathewson
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -39,7 +39,7 @@
/* ============================================================ */
/* First, let's see if strcmp is working. (All your test cases should be
- * functions declared to take a single void * as) an argument. */
+ * functions declared to take a single void * as an argument.) */
void
test_strcmp(void *data)
{
@@ -53,7 +53,7 @@ test_strcmp(void *data)
}
/* Pretty often, calling tt_abort_msg to indicate failure is more
- heavy-weight than you want. Instead, just say: */
+ heavy-weight than you want. Instead, just say: */
tt_assert(strcmp("testcase", "testcase") == 0);
/* Occasionally, you don't want to stop the current testcase just
@@ -91,7 +91,7 @@ test_strcmp(void *data)
/* First you declare a type to hold the environment info, and functions to
set it up and tear it down. */
struct data_buffer {
- /* We're just going to have couple of character buffer. Using
+ /* We're just going to have couple of character buffer. Using
setup/teardown functions is probably overkill for this case.
You could also do file descriptors, complicated handles, temporary
@@ -164,7 +164,7 @@ test_memcpy(void *ptr)
/* ============================================================ */
-/* Now we need to make sure that our tests get invoked. First, you take
+/* Now we need to make sure that our tests get invoked. First, you take
a bunch of related tests and put them into an array of struct testcase_t.
*/
@@ -189,15 +189,15 @@ struct testgroup_t groups[] = {
/* Every group has a 'prefix', and an array of tests. That's it. */
{ "demo/", demo_tests },
- END_OF_GROUPS
+ END_OF_GROUPS
};
int
main(int c, const char **v)
{
- /* Finally, just call tinytest_main(). It lets you specify verbose
- or quiet output with --verbose and --quiet. You can list
+ /* Finally, just call tinytest_main(). It lets you specify verbose
+ or quiet output with --verbose and --quiet. You can list
specific tests:
tinytest-demo demo/memcpy
diff --git a/src/test/tinytest_macros.h b/src/test/tinytest_macros.h
index a7fa64a824..032393ccf7 100644
--- a/src/test/tinytest_macros.h
+++ b/src/test/tinytest_macros.h
@@ -90,10 +90,10 @@
TT_STMT_BEGIN \
if (!(b)) { \
_tinytest_set_test_failed(); \
- TT_GRIPE((msg)); \
+ TT_GRIPE(("%s",msg)); \
fail; \
} else { \
- TT_BLATHER((msg)); \
+ TT_BLATHER(("%s",msg)); \
} \
TT_STMT_END
@@ -111,7 +111,7 @@
#define tt_assert(b) tt_assert_msg((b), "assert("#b")")
#define tt_assert_test_fmt_type(a,b,str_test,type,test,printf_type,printf_fmt, \
- setup_block,cleanup_block) \
+ setup_block,cleanup_block,die_on_fail) \
TT_STMT_BEGIN \
type _val1 = (type)(a); \
type _val2 = (type)(b); \
@@ -135,33 +135,50 @@
cleanup_block; \
if (!_tt_status) { \
_tinytest_set_test_failed(); \
- TT_EXIT_TEST_FUNCTION; \
+ die_on_fail ; \
} \
} \
TT_STMT_END
-#define tt_assert_test_type(a,b,str_test,type,test,fmt) \
+#define tt_assert_test_type(a,b,str_test,type,test,fmt,die_on_fail) \
tt_assert_test_fmt_type(a,b,str_test,type,test,type,fmt, \
- {_print=_value;},{})
+ {_print=_value;},{},die_on_fail)
/* Helper: assert that a op b, when cast to type. Format the values with
* printf format fmt on failure. */
#define tt_assert_op_type(a,op,b,type,fmt) \
- tt_assert_test_type(a,b,#a" "#op" "#b,type,(_val1 op _val2),fmt)
+ tt_assert_test_type(a,b,#a" "#op" "#b,type,(_val1 op _val2),fmt, \
+ TT_EXIT_TEST_FUNCTION)
#define tt_int_op(a,op,b) \
- tt_assert_test_type(a,b,#a" "#op" "#b,long,(_val1 op _val2),"%ld")
+ tt_assert_test_type(a,b,#a" "#op" "#b,long,(_val1 op _val2), \
+ "%ld",TT_EXIT_TEST_FUNCTION)
#define tt_uint_op(a,op,b) \
tt_assert_test_type(a,b,#a" "#op" "#b,unsigned long, \
- (_val1 op _val2),"%lu")
+ (_val1 op _val2),"%lu",TT_EXIT_TEST_FUNCTION)
#define tt_ptr_op(a,op,b) \
tt_assert_test_type(a,b,#a" "#op" "#b,void*, \
- (_val1 op _val2),"%p")
+ (_val1 op _val2),"%p",TT_EXIT_TEST_FUNCTION)
#define tt_str_op(a,op,b) \
tt_assert_test_type(a,b,#a" "#op" "#b,const char *, \
- (strcmp(_val1,_val2) op 0),"<%s>")
+ (strcmp(_val1,_val2) op 0),"<%s>",TT_EXIT_TEST_FUNCTION)
+
+#define tt_want_int_op(a,op,b) \
+ tt_assert_test_type(a,b,#a" "#op" "#b,long,(_val1 op _val2),"%ld",(void)0)
+
+#define tt_want_uint_op(a,op,b) \
+ tt_assert_test_type(a,b,#a" "#op" "#b,unsigned long, \
+ (_val1 op _val2),"%lu",(void)0)
+
+#define tt_want_ptr_op(a,op,b) \
+ tt_assert_test_type(a,b,#a" "#op" "#b,void*, \
+ (_val1 op _val2),"%p",(void)0)
+
+#define tt_want_str_op(a,op,b) \
+ tt_assert_test_type(a,b,#a" "#op" "#b,const char *, \
+ (strcmp(_val1,_val2) op 0),"<%s>",(void)0)
#endif
diff --git a/src/tools/tor-fw-helper/tor-fw-helper-natpmp.c b/src/tools/tor-fw-helper/tor-fw-helper-natpmp.c
index 51b456a8c7..f9d5d0d586 100644
--- a/src/tools/tor-fw-helper/tor-fw-helper-natpmp.c
+++ b/src/tools/tor-fw-helper/tor-fw-helper-natpmp.c
@@ -1,5 +1,5 @@
/* Copyright (c) 2010, Jacob Appelbaum, Steven J. Murdoch.
- * Copyright (c) 2010, The Tor Project, Inc. */
+ * Copyright (c) 2010-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -55,7 +55,7 @@ tor_natpmp_init(tor_fw_options_t *tor_fw_options, void *backend_state)
if (tor_fw_options->verbose)
fprintf(stdout, "V: natpmp init...\n");
- r = initnatpmp(&(state->natpmp));
+ r = initnatpmp(&(state->natpmp), 0, 0);
if (r == 0) {
state->init = 1;
fprintf(stdout, "tor-fw-helper: natpmp initialized...\n");
diff --git a/src/tools/tor-fw-helper/tor-fw-helper-natpmp.h b/src/tools/tor-fw-helper/tor-fw-helper-natpmp.h
index 5a6540b68f..0190379a23 100644
--- a/src/tools/tor-fw-helper/tor-fw-helper-natpmp.h
+++ b/src/tools/tor-fw-helper/tor-fw-helper-natpmp.h
@@ -1,5 +1,5 @@
/* Copyright (c) 2010, Jacob Appelbaum, Steven J. Murdoch.
- * Copyright (c) 2010, The Tor Project, Inc. */
+ * Copyright (c) 2010-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/tools/tor-fw-helper/tor-fw-helper-upnp.c b/src/tools/tor-fw-helper/tor-fw-helper-upnp.c
index b3b80d6987..18ca56394f 100644
--- a/src/tools/tor-fw-helper/tor-fw-helper-upnp.c
+++ b/src/tools/tor-fw-helper/tor-fw-helper-upnp.c
@@ -1,5 +1,5 @@
/* Copyright (c) 2010, Jacob Appelbaum, Steven J. Murdoch.
- * Copyright (c) 2010, The Tor Project, Inc. */
+ * Copyright (c) 2010-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/tools/tor-fw-helper/tor-fw-helper-upnp.h b/src/tools/tor-fw-helper/tor-fw-helper-upnp.h
index fdbd2dd185..021a8e0aac 100644
--- a/src/tools/tor-fw-helper/tor-fw-helper-upnp.h
+++ b/src/tools/tor-fw-helper/tor-fw-helper-upnp.h
@@ -1,5 +1,5 @@
/* Copyright (c) 2010, Jacob Appelbaum, Steven J. Murdoch.
- * Copyright (c) 2010, The Tor Project, Inc. */
+ * Copyright (c) 2010-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/tools/tor-fw-helper/tor-fw-helper.c b/src/tools/tor-fw-helper/tor-fw-helper.c
index 378672a20a..20d60d7ba6 100644
--- a/src/tools/tor-fw-helper/tor-fw-helper.c
+++ b/src/tools/tor-fw-helper/tor-fw-helper.c
@@ -1,5 +1,5 @@
/* Copyright (c) 2010, Jacob Appelbaum, Steven J. Murdoch.
- * Copyright (c) 2010, The Tor Project, Inc. */
+ * Copyright (c) 2010-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/tools/tor-fw-helper/tor-fw-helper.h b/src/tools/tor-fw-helper/tor-fw-helper.h
index b83d4b7d8f..39d852d212 100644
--- a/src/tools/tor-fw-helper/tor-fw-helper.h
+++ b/src/tools/tor-fw-helper/tor-fw-helper.h
@@ -1,5 +1,5 @@
/* Copyright (c) 2010, Jacob Appelbaum, Steven J. Murdoch.
- * Copyright (c) 2010, The Tor Project, Inc. */
+ * Copyright (c) 2010-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
diff --git a/src/tools/tor-gencert.c b/src/tools/tor-gencert.c
index bc99c24bd7..a04eddafc7 100644
--- a/src/tools/tor-gencert.c
+++ b/src/tools/tor-gencert.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2007-2010 The Tor Project, Inc. */
+/* Copyright (c) 2007-2011, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "orconfig.h"
diff --git a/src/tools/tor-resolve.c b/src/tools/tor-resolve.c
index f5b0becaff..8c4d3f6483 100644
--- a/src/tools/tor-resolve.c
+++ b/src/tools/tor-resolve.c
@@ -1,5 +1,5 @@
/* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson
- * Copyright (c) 2007-2010, The Tor Project, Inc.
+ * Copyright (c) 2007-2011, The Tor Project, Inc.
*/
/* See LICENSE for licensing information */
@@ -319,7 +319,7 @@ main(int argc, char **argv)
{
uint32_t sockshost;
uint16_t socksport = 0, port_option = 0;
- int isSocks4 = 0, isVerbose = 0, isReverse = 0, force = 0;
+ int isSocks4 = 0, isVerbose = 0, isReverse = 0;
char **arg;
int n_args;
struct in_addr a;
@@ -349,8 +349,6 @@ main(int argc, char **argv)
isSocks4 = 0;
else if (!strcmp("-x", arg[0]))
isReverse = 1;
- else if (!strcmp("-F", arg[0]))
- force = 1;
else if (!strcmp("-p", arg[0])) {
int p;
if (n_args < 2) {
diff --git a/src/win32/orconfig.h b/src/win32/orconfig.h
index dc84d78496..5483b6d064 100644
--- a/src/win32/orconfig.h
+++ b/src/win32/orconfig.h
@@ -233,4 +233,4 @@
#define USING_TWOS_COMPLEMENT
/* Version number of package */
-#define VERSION "0.2.3.0-alpha-dev"
+#define VERSION "0.2.3.1-alpha-dev"