diff options
Diffstat (limited to 'src')
63 files changed, 11302 insertions, 7540 deletions
diff --git a/src/common/address.c b/src/common/address.c index c35f04c18..a3f12ac07 100644 --- a/src/common/address.c +++ b/src/common/address.c @@ -53,9 +53,7 @@ * 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. */ -/* XXXX021 This returns socklen_t. socklen_t is sometimes unsigned. This - * function claims to return -1 sometimes. Problematic! */ -socklen_t +int tor_addr_to_sockaddr(const tor_addr_t *a, uint16_t port, struct sockaddr *sa_out, @@ -311,7 +309,7 @@ tor_addr_is_internal(const tor_addr_t *addr, int for_listening) * brackets. */ const char * -tor_addr_to_str(char *dest, const tor_addr_t *addr, int len, int decorate) +tor_addr_to_str(char *dest, const tor_addr_t *addr, size_t len, int decorate) { const char *ptr; tor_assert(addr && dest); @@ -927,6 +925,19 @@ fmt_addr(const tor_addr_t *addr) return buf; } +/** Like fmt_addr(), but takes <b>addr</b> as a host-order IPv4 + * addresses. Also not thread-safe, also clobbers its return buffer on + * repeated calls. */ +const char * +fmt_addr32(uint32_t addr) +{ + static char buf[INET_NTOA_BUF_LEN]; + struct in_addr in; + in.s_addr = htonl(addr); + tor_inet_ntoa(&in, buf, sizeof(buf)); + return buf; +} + /** Convert the string in <b>src</b> to a tor_addr_t <b>addr</b>. The string * may be an IPv4 address, an IPv6 address, or an IPv6 address surrounded by * square brackets. diff --git a/src/common/address.h b/src/common/address.h index 6116bb4b1..e004ffb13 100644 --- a/src/common/address.h +++ b/src/common/address.h @@ -39,7 +39,7 @@ 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); -socklen_t tor_addr_to_sockaddr(const tor_addr_t *a, uint16_t port, +int 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); @@ -108,6 +108,7 @@ tor_addr_eq_ipv4h(const tor_addr_t *a, uint32_t u) 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; const char *fmt_addr(const tor_addr_t *addr); +const char * fmt_addr32(uint32_t addr); int get_interface_address6(int severity, sa_family_t family, tor_addr_t *addr); /** Flag to specify how to do a comparison between addresses. In an "exact" @@ -144,7 +145,7 @@ int tor_addr_port_parse(const char *s, tor_addr_t *addr_out, int tor_addr_parse_mask_ports(const char *s, tor_addr_t *addr_out, maskbits_t *mask_out, uint16_t *port_min_out, uint16_t *port_max_out); -const char * tor_addr_to_str(char *dest, const tor_addr_t *addr, int len, +const char * tor_addr_to_str(char *dest, const tor_addr_t *addr, size_t len, int decorate); int tor_addr_from_str(tor_addr_t *addr, const char *src); void tor_addr_copy(tor_addr_t *dest, const tor_addr_t *src); diff --git a/src/common/aes.c b/src/common/aes.c index a17328317..4998c386a 100644 --- a/src/common/aes.c +++ b/src/common/aes.c @@ -288,11 +288,20 @@ void aes_crypt(aes_cnt_cipher_t *cipher, const char *input, size_t len, char *output) { - - /* XXXX This function is up to 5% of our runtime in some profiles; - * we should look into unrolling some of the loops; taking advantage - * of alignment, using a bigger buffer, and so on. Not till after 0.1.2.x, - * though. */ + /* This function alone is up to 5% of our runtime in some profiles; anything + * we could do to make it faster would be great. + * + * Experimenting suggests that unrolling the inner loop into a switch + * statement doesn't help. What does seem to help is making the input and + * output buffers word aligned, and never crypting anything besides an + * integer number of words at a time -- it shaves maybe 4-5% of the per-byte + * encryption time measured by bench_aes. We can't do that with the current + * Tor protocol, though: Tor really likes to crypt things in 509-byte + * chunks. + * + * If we were really ambitous, we'd force len to be a multiple of the block + * size, and shave maybe another 4-5% off. + */ int c = cipher->pos; if (PREDICT_UNLIKELY(!len)) return; diff --git a/src/common/compat.h b/src/common/compat.h index 5b6cfc40b..2471e6b83 100644 --- a/src/common/compat.h +++ b/src/common/compat.h @@ -332,6 +332,13 @@ struct tm *tor_localtime_r(const time_t *timep, struct tm *result); 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)) + /* ===== File compatibility */ int replace_file(const char *from, const char *to); int touch_file(const char *fname); diff --git a/src/common/compat_libevent.c b/src/common/compat_libevent.c index d94f615f7..d3b9eb3af 100644 --- a/src/common/compat_libevent.c +++ b/src/common/compat_libevent.c @@ -187,6 +187,8 @@ tor_libevent_initialize(tor_libevent_cfg *torcfg) #endif the_event_base = event_base_new_with_config(cfg); + + event_config_free(cfg); } #else the_event_base = event_init(); @@ -340,17 +342,21 @@ tor_check_libevent_version(const char *m, int server, version = tor_get_libevent_version(&v); - /* XXX Would it be worthwhile disabling the methods that we know - * are buggy, rather than just warning about them and then proceeding - * to use them? If so, we should probably not wrap this whole thing - * in HAVE_EVENT_GET_VERSION and HAVE_EVENT_GET_METHOD. -RD */ - /* XXXX The problem is that it's not trivial to get libevent to change it's - * method once it's initialized, and it's not trivial to tell what method it - * will use without initializing it. I guess we could preemptively disable - * buggy libevent modes based on the version _before_ initializing it, - * though, but then there's no good way (afaict) to warn "I would have used - * kqueue, but instead I'm using select." -NM */ - /* XXXX022 revist the above; it is fixable now. */ + /* 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. + */ if (!strcmp(m, "kqueue")) { if (version < V_OLD(1,1,'b')) buggy = 1; diff --git a/src/common/container.c b/src/common/container.c index 72f347034..0a95f33aa 100644 --- a/src/common/container.c +++ b/src/common/container.c @@ -268,7 +268,6 @@ smartlist_subtract(smartlist_t *sl1, const smartlist_t *sl2) /** Remove the <b>idx</b>th element of sl; if idx is not the last * element, swap the last element of sl into the <b>idx</b>th space. - * Return the old value of the <b>idx</b>th element. */ void smartlist_del(smartlist_t *sl, int idx) diff --git a/src/common/crypto.c b/src/common/crypto.c index bfb81d3cc..b49547fa4 100644 --- a/src/common/crypto.c +++ b/src/common/crypto.c @@ -405,6 +405,7 @@ crypto_free_pk_env(crypto_pk_env_t *env) if (--env->refs > 0) return; + tor_assert(env->refs == 0); if (env->key) RSA_free(env->key); diff --git a/src/common/memarea.c b/src/common/memarea.c index 77579e63b..b5ac7ad97 100644 --- a/src/common/memarea.c +++ b/src/common/memarea.c @@ -53,7 +53,7 @@ realign_pointer(void *ptr) { uintptr_t x = (uintptr_t)ptr; x = (x+MEMAREA_ALIGN_MASK) & ~MEMAREA_ALIGN_MASK; - tor_assert(((void*)x) >= ptr); // XXXX021 remove this once bug 930 is solved + tor_assert(((void*)x) >= ptr); return (void*)x; } @@ -230,9 +230,10 @@ memarea_alloc(memarea_t *area, size_t sz) } result = chunk->next_mem; chunk->next_mem = chunk->next_mem + sz; - // XXXX021 remove these once bug 930 is solved. + 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; } diff --git a/src/common/tortls.c b/src/common/tortls.c index ce5411a55..ba450e4b1 100644 --- a/src/common/tortls.c +++ b/src/common/tortls.c @@ -93,7 +93,9 @@ static int use_unsafe_renegotiation_op = 0; * SSL3_FLAGS_ALLOW_UNSAFE_LEGACY_RENEGOTIATION? */ static int use_unsafe_renegotiation_flag = 0; -/** Structure holding the TLS state for a single connection. */ +/** Holds a SSL_CTX object and related state used to configure TLS + * connections. + */ typedef struct tor_tls_context_t { int refcnt; SSL_CTX *ctx; @@ -123,8 +125,10 @@ struct tor_tls_t { * of the connection protocol (client sends * different cipher list, server sends only * one certificate). */ - /** True iff we should call negotiated_callback when we're done reading. */ + /** True iff we should call negotiated_callback when we're done reading. */ unsigned int got_renegotiate:1; + /** Incremented every time we start the server side of a handshake. */ + uint8_t server_handshake_count; size_t wantwrite_n; /**< 0 normally, >0 if we returned wantwrite last * time. */ /** Last values retrieved from BIO_number_read()/write(); see @@ -196,9 +200,17 @@ static X509* tor_tls_create_certificate(crypto_pk_env_t *rsa, const char *cname_sign, unsigned int lifetime); -/** Global tls context. We keep it here because nobody else needs to - * touch it. */ -static tor_tls_context_t *global_tls_context = NULL; +static int tor_tls_context_init_one(tor_tls_context_t **ppcontext, + crypto_pk_env_t *identity, + unsigned int key_lifetime); +static tor_tls_context_t *tor_tls_context_new(crypto_pk_env_t *identity, + unsigned int key_lifetime); + +/** Global TLS contexts. We keep them here because nobody else needs + * to touch them. */ +static tor_tls_context_t *server_tls_context = NULL; +static tor_tls_context_t *client_tls_context = NULL; + /** True iff tor_tls_init() has been called. */ static int tls_library_is_initialized = 0; @@ -222,36 +234,46 @@ ssl_state_to_string(int ssl_state) return buf; } +void +tor_tls_log_one_error(tor_tls_t *tls, unsigned long err, + int severity, int domain, const char *doing) +{ + const char *state = NULL, *addr; + const char *msg, *lib, *func; + int st; + + st = (tls && tls->ssl) ? tls->ssl->state : -1; + state = (st>=0)?ssl_state_to_string(st):"---"; + + addr = tls ? tls->address : NULL; + + msg = (const char*)ERR_reason_error_string(err); + lib = (const char*)ERR_lib_error_string(err); + func = (const char*)ERR_func_error_string(err); + if (!msg) msg = "(null)"; + if (!lib) lib = "(null)"; + if (!func) func = "(null)"; + if (doing) { + log(severity, domain, "TLS error while %s%s%s: %s (in %s:%s:%s)", + doing, addr?" with ":"", addr?addr:"", + msg, lib, func, state); + } else { + log(severity, domain, "TLS error%s%s: %s (in %s:%s:%s)", + addr?" with ":"", addr?addr:"", + msg, lib, func, state); + } +} + /** Log all pending tls errors at level <b>severity</b>. Use * <b>doing</b> to describe our current activities. */ static void tls_log_errors(tor_tls_t *tls, int severity, int domain, const char *doing) { - const char *state = NULL; - int st; unsigned long err; - const char *msg, *lib, *func, *addr; - addr = tls ? tls->address : NULL; - st = (tls && tls->ssl) ? tls->ssl->state : -1; + while ((err = ERR_get_error()) != 0) { - msg = (const char*)ERR_reason_error_string(err); - lib = (const char*)ERR_lib_error_string(err); - func = (const char*)ERR_func_error_string(err); - if (!state) - state = (st>=0)?ssl_state_to_string(st):"---"; - if (!msg) msg = "(null)"; - if (!lib) lib = "(null)"; - if (!func) func = "(null)"; - if (doing) { - log(severity, domain, "TLS error while %s%s%s: %s (in %s:%s:%s)", - doing, addr?" with ":"", addr?addr:"", - msg, lib, func, state); - } else { - log(severity, domain, "TLS error%s%s: %s (in %s:%s:%s)", - addr?" with ":"", addr?addr:"", - msg, lib, func, state); - } + tor_tls_log_one_error(tls, err, severity, domain, doing); } } @@ -379,7 +401,7 @@ tor_tls_init(void) version = SSLeay(); - /* OpenSSL 0.9.8l introduced SSL3_FLAGS_ALLOW_UNSAGE_LEGACY_RENEGOTIATION + /* OpenSSL 0.9.8l introduced SSL3_FLAGS_ALLOW_UNSAFE_LEGACY_RENEGOTIATION * here, but without thinking too hard about it: it turns out that the * flag in question needed to be set at the last minute, and that it * conflicted with an existing flag number that had already been added @@ -434,9 +456,15 @@ tor_tls_init(void) void tor_tls_free_all(void) { - if (global_tls_context) { - tor_tls_context_decref(global_tls_context); - global_tls_context = NULL; + if (server_tls_context) { + tor_tls_context_t *ctx = server_tls_context; + server_tls_context = NULL; + tor_tls_context_decref(ctx); + } + if (client_tls_context) { + tor_tls_context_t *ctx = client_tls_context; + 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."); @@ -562,9 +590,9 @@ tor_tls_create_certificate(crypto_pk_env_t *rsa, (TLS1_TXT_DHE_RSA_WITH_AES_256_SHA ":" \ TLS1_TXT_DHE_RSA_WITH_AES_128_SHA ":" \ SSL3_TXT_EDH_RSA_DES_192_CBC3_SHA) -/* Note: for setting up your own private testing network with link crypto - * disabled, set the cipher lists to your cipher list to - * SSL3_TXT_RSA_NULL_SHA. If you do this, you won't be able to communicate +/* Note: to set up your own private testing network with link crypto + * disabled, set your Tors' cipher list to + * (SSL3_TXT_RSA_NULL_SHA). If you do this, you won't be able to communicate * with any of the "real" Tors, though. */ #ifdef V2_HANDSHAKE_CLIENT @@ -623,15 +651,97 @@ tor_tls_context_incref(tor_tls_context_t *ctx) ++ctx->refcnt; } -/** Create a new TLS context for use with Tor TLS handshakes. - * <b>identity</b> should be set to the identity key used to sign the - * certificate, and <b>nickname</b> set to the nickname to use. +/** Create new global client and server TLS contexts. + * + * If <b>server_identity</b> is NULL, this will not generate a server + * TLS context. If <b>is_public_server</b> is non-zero, this will use + * the same TLS context for incoming and outgoing connections, and + * ignore <b>client_identity</b>. */ +int +tor_tls_context_init(int is_public_server, + crypto_pk_env_t *client_identity, + crypto_pk_env_t *server_identity, + unsigned int key_lifetime) +{ + int rv1 = 0; + int rv2 = 0; + + if (is_public_server) { + tor_tls_context_t *new_ctx; + tor_tls_context_t *old_ctx; + + tor_assert(server_identity != NULL); + + rv1 = tor_tls_context_init_one(&server_tls_context, + server_identity, + key_lifetime); + + if (rv1 >= 0) { + new_ctx = server_tls_context; + tor_tls_context_incref(new_ctx); + old_ctx = client_tls_context; + client_tls_context = new_ctx; + + if (old_ctx != NULL) { + tor_tls_context_decref(old_ctx); + } + } + } else { + if (server_identity != NULL) { + rv1 = tor_tls_context_init_one(&server_tls_context, + server_identity, + key_lifetime); + } else { + tor_tls_context_t *old_ctx = server_tls_context; + server_tls_context = NULL; + + if (old_ctx != NULL) { + tor_tls_context_decref(old_ctx); + } + } + + rv2 = tor_tls_context_init_one(&client_tls_context, + client_identity, + key_lifetime); + } + + return MIN(rv1, rv2); +} + +/** Create a new global TLS context. * * You can call this function multiple times. Each time you call it, * it generates new certificates; all new connections will use * the new SSL context. */ -int +static int +tor_tls_context_init_one(tor_tls_context_t **ppcontext, + crypto_pk_env_t *identity, + unsigned int key_lifetime) +{ + tor_tls_context_t *new_ctx = tor_tls_context_new(identity, + key_lifetime); + tor_tls_context_t *old_ctx = *ppcontext; + + if (new_ctx != NULL) { + *ppcontext = new_ctx; + + /* Free the old context if one existed. */ + if (old_ctx != NULL) { + /* This is safe even if there are open connections: we reference- + * count tor_tls_context_t objects. */ + tor_tls_context_decref(old_ctx); + } + } + + return ((new_ctx != NULL) ? 0 : -1); +} + +/** Create a new TLS context for use with Tor TLS handshakes. + * <b>identity</b> should be set to the identity key used to sign the + * certificate. + */ +static tor_tls_context_t * tor_tls_context_new(crypto_pk_env_t *identity, unsigned int key_lifetime) { crypto_pk_env_t *rsa = NULL; @@ -726,18 +836,12 @@ tor_tls_context_new(crypto_pk_env_t *identity, unsigned int key_lifetime) always_accept_verify_cb); /* let us realloc bufs that we're writing from */ SSL_CTX_set_mode(result->ctx, SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER); - /* Free the old context if one exists. */ - if (global_tls_context) { - /* This is safe even if there are open connections: OpenSSL does - * reference counting with SSL and SSL_CTX objects. */ - tor_tls_context_decref(global_tls_context); - } - global_tls_context = result; + if (rsa) crypto_free_pk_env(rsa); tor_free(nickname); tor_free(nn2); - return 0; + return result; error: tls_log_errors(NULL, LOG_WARN, LD_NET, "creating TLS context"); @@ -753,7 +857,7 @@ tor_tls_context_new(crypto_pk_env_t *identity, unsigned int key_lifetime) X509_free(cert); if (idcert) X509_free(idcert); - return -1; + return NULL; } #ifdef V2_HANDSHAKE_SERVER @@ -829,6 +933,8 @@ tor_tls_server_info_callback(const SSL *ssl, int type, int val) /* Check whether we're watching for renegotiates. If so, this is one! */ if (tls->negotiated_callback) tls->got_renegotiate = 1; + if (tls->server_handshake_count < 127) /*avoid any overflow possibility*/ + ++tls->server_handshake_count; } else { log_warn(LD_BUG, "Couldn't look up the tls for an SSL*. How odd!"); } @@ -847,6 +953,10 @@ tor_tls_server_info_callback(const SSL *ssl, int type, int val) if (tls) { tls->wasV2Handshake = 1; +#ifdef USE_BUFFEREVENTS + if (use_unsafe_renegotiation_flag) + tls->ssl->s3->flags |= SSL3_FLAGS_ALLOW_UNSAFE_LEGACY_RENEGOTIATION; +#endif } else { log_warn(LD_BUG, "Couldn't look up the tls for an SSL*. How odd!"); } @@ -932,10 +1042,12 @@ tor_tls_new(int sock, int isServer) { BIO *bio = NULL; tor_tls_t *result = tor_malloc_zero(sizeof(tor_tls_t)); + tor_tls_context_t *context = isServer ? server_tls_context : + client_tls_context; - tor_assert(global_tls_context); /* make sure somebody made it first */ - if (!(result->ssl = SSL_new(global_tls_context->ctx))) { - tls_log_errors(NULL, LOG_WARN, LD_NET, "generating TLS context"); + tor_assert(context); /* make sure somebody made it first */ + if (!(result->ssl = SSL_new(context->ctx))) { + tls_log_errors(NULL, LOG_WARN, LD_NET, "creating SSL object"); tor_free(result); return NULL; } @@ -974,8 +1086,8 @@ tor_tls_new(int sock, int isServer) } HT_INSERT(tlsmap, &tlsmap_root, result); SSL_set_bio(result->ssl, bio, bio); - tor_tls_context_incref(global_tls_context); - result->context = global_tls_context; + tor_tls_context_incref(context); + result->context = context; result->state = TOR_TLS_ST_HANDSHAKE; result->isServer = isServer; result->wantwrite_n = 0; @@ -992,7 +1104,7 @@ tor_tls_new(int sock, int isServer) #endif /* Not expected to get called. */ - tls_log_errors(NULL, LOG_WARN, LD_NET, "generating TLS context"); + tls_log_errors(NULL, LOG_WARN, LD_NET, "creating tor_tls_t object"); return result; } @@ -1055,6 +1167,19 @@ tor_tls_block_renegotiation(tor_tls_t *tls) tls->ssl->s3->flags &= ~SSL3_FLAGS_ALLOW_UNSAFE_LEGACY_RENEGOTIATION; } +void +tor_tls_assert_renegotiation_unblocked(tor_tls_t *tls) +{ + if (use_unsafe_renegotiation_flag) { + tor_assert(0 != (tls->ssl->s3->flags & + SSL3_FLAGS_ALLOW_UNSAFE_LEGACY_RENEGOTIATION)); + } + if (use_unsafe_renegotiation_op) { + long options = SSL_get_options(tls->ssl); + tor_assert(0 != (options & SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION)); + } +} + /** Return whether this tls initiated the connect (client) or * received it (server). */ int @@ -1646,6 +1771,22 @@ tor_tls_used_v1_handshake(tor_tls_t *tls) return 1; } +/** Return the number of server handshakes that we've noticed doing on + * <b>tls</b>. */ +int +tor_tls_get_num_server_handshakes(tor_tls_t *tls) +{ + return tls->server_handshake_count; +} + +/** Return true iff the server TLS connection <b>tls</b> got the renegotiation + * request it was waiting for. */ +int +tor_tls_server_got_renegotiate(tor_tls_t *tls) +{ + return tls->got_renegotiate; +} + /** Examine the amount of memory used and available for buffers in <b>tls</b>. * Set *<b>rbuf_capacity</b> to the amount of storage allocated for the read * buffer and *<b>rbuf_bytes</b> to the amount actually used. @@ -1720,6 +1861,10 @@ tor_tls_init_bufferevent(tor_tls_t *tls, struct bufferevent *bufev_in, state, BEV_OPT_DEFER_CALLBACKS); #endif + /* Unblock _after_ creating the bufferevent, since accept/connect tend to + * clear flags. */ + tor_tls_unblock_renegotiation(tls); + return out; } #endif diff --git a/src/common/tortls.h b/src/common/tortls.h index f8603b529..50d14da52 100644 --- a/src/common/tortls.h +++ b/src/common/tortls.h @@ -50,7 +50,10 @@ typedef struct tor_tls_t tor_tls_t; const char *tor_tls_err_to_string(int err); void tor_tls_free_all(void); -int tor_tls_context_new(crypto_pk_env_t *rsa, unsigned int key_lifetime); +int tor_tls_context_init(int is_public_server, + crypto_pk_env_t *client_identity, + crypto_pk_env_t *server_identity, + unsigned int key_lifetime); tor_tls_t *tor_tls_new(int sock, int is_server); void tor_tls_set_logged_address(tor_tls_t *tls, const char *address); void tor_tls_set_renegotiate_callback(tor_tls_t *tls, @@ -68,6 +71,7 @@ int tor_tls_finish_handshake(tor_tls_t *tls); int tor_tls_renegotiate(tor_tls_t *tls); void tor_tls_unblock_renegotiation(tor_tls_t *tls); void tor_tls_block_renegotiation(tor_tls_t *tls); +void tor_tls_assert_renegotiation_unblocked(tor_tls_t *tls); int tor_tls_shutdown(tor_tls_t *tls); int tor_tls_get_pending_bytes(tor_tls_t *tls); size_t tor_tls_get_forced_write_size(tor_tls_t *tls); @@ -80,12 +84,16 @@ void tor_tls_get_buffer_sizes(tor_tls_t *tls, size_t *wbuf_capacity, size_t *wbuf_bytes); int tor_tls_used_v1_handshake(tor_tls_t *tls); +int tor_tls_get_num_server_handshakes(tor_tls_t *tls); +int tor_tls_server_got_renegotiate(tor_tls_t *tls); /* Log and abort if there are unhandled TLS errors in OpenSSL's error stack. */ #define check_no_tls_errors() _check_no_tls_errors(__FILE__,__LINE__) void _check_no_tls_errors(const char *fname, int line); +void tor_tls_log_one_error(tor_tls_t *tls, unsigned long err, + int severity, int domain, const char *doing); #ifdef USE_BUFFEREVENTS int tor_tls_start_renegotiating(tor_tls_t *tls); diff --git a/src/common/util.c b/src/common/util.c index b5a3ade2b..16e737023 100644 --- a/src/common/util.c +++ b/src/common/util.c @@ -934,7 +934,7 @@ esc_for_log(const char *s) char *result, *outp; size_t len = 3; if (!s) { - return tor_strdup(""); + return tor_strdup("(null)"); } for (cp = s; *cp; ++cp) { @@ -1503,83 +1503,6 @@ update_approx_time(time_t now) #endif /* ===== - * Fuzzy time - * XXXX022 Use this consistently or rip most of it out. - * ===== */ - -/* In a perfect world, everybody would run NTP, and NTP would be perfect, so - * if we wanted to know "Is the current time before time X?" we could just say - * "time(NULL) < X". - * - * But unfortunately, many users are running Tor in an imperfect world, on - * even more imperfect computers. Hence, we need to track time oddly. We - * model the user's computer as being "skewed" from accurate time by - * -<b>ftime_skew</b> seconds, such that our best guess of the current time is - * time(NULL)+ftime_skew. We also assume that our measurements of time may - * have up to <b>ftime_slop</b> seconds of inaccuracy; IOW, our window of - * estimate for the current time is now + ftime_skew +/- ftime_slop. - */ -/** Our current estimate of our skew, such that we think the current time is - * closest to time(NULL)+ftime_skew. */ -static int ftime_skew = 0; -/** Tolerance during time comparisons, in seconds. */ -static int ftime_slop = 60; -/** Set the largest amount of sloppiness we'll allow in fuzzy time - * comparisons. */ -void -ftime_set_maximum_sloppiness(int seconds) -{ - tor_assert(seconds >= 0); - ftime_slop = seconds; -} -/** Set the amount by which we believe our system clock to differ from - * real time. */ -void -ftime_set_estimated_skew(int seconds) -{ - ftime_skew = seconds; -} -#if 0 -void -ftime_get_window(time_t now, ftime_t *ft_out) -{ - ft_out->earliest = now + ftime_skew - ftime_slop; - ft_out->latest = now + ftime_skew + ftime_slop; -} -#endif -/** Return true iff we think that <b>now</b> might be after <b>when</b>. */ -int -ftime_maybe_after(time_t now, time_t when) -{ - /* It may be after when iff the latest possible current time is after when */ - return (now + ftime_skew + ftime_slop) >= when; -} -/** Return true iff we think that <b>now</b> might be before <b>when</b>. */ -int -ftime_maybe_before(time_t now, time_t when) -{ - /* It may be before when iff the earliest possible current time is before */ - return (now + ftime_skew - ftime_slop) < when; -} -/** Return true if we think that <b>now</b> is definitely after <b>when</b>. */ -int -ftime_definitely_after(time_t now, time_t when) -{ - /* It is definitely after when if the earliest time it could be is still - * after when. */ - return (now + ftime_skew - ftime_slop) >= when; -} -/** Return true if we think that <b>now</b> is definitely before <b>when</b>. - */ -int -ftime_definitely_before(time_t now, time_t when) -{ - /* It is definitely before when if the latest time it could be is still - * before when. */ - return (now + ftime_skew + ftime_slop) < when; -} - -/* ===== * Rate limiting * ===== */ @@ -2498,18 +2421,21 @@ digit_to_num(char d) * success, store the result in <b>out</b>, advance bufp to the next * character, and return 0. On failure, return -1. */ static int -scan_unsigned(const char **bufp, unsigned *out, int width) +scan_unsigned(const char **bufp, unsigned *out, int width, int base) { unsigned result = 0; int scanned_so_far = 0; + const int hex = base==16; + tor_assert(base == 10 || base == 16); if (!bufp || !*bufp || !out) return -1; if (width<0) width=MAX_SCANF_WIDTH; - while (**bufp && TOR_ISDIGIT(**bufp) && scanned_so_far < width) { - int digit = digit_to_num(*(*bufp)++); - unsigned new_result = result * 10 + digit; + while (**bufp && (hex?TOR_ISXDIGIT(**bufp):TOR_ISDIGIT(**bufp)) + && scanned_so_far < width) { + int digit = hex?hex_decode_digit(*(*bufp)++):digit_to_num(*(*bufp)++); + unsigned new_result = result * base + digit; if (new_result > UINT32_MAX || new_result < result) return -1; /* over/underflow. */ result = new_result; @@ -2571,11 +2497,12 @@ tor_vsscanf(const char *buf, const char *pattern, va_list ap) if (!width) /* No zero-width things. */ return -1; } - if (*pattern == 'u') { + if (*pattern == 'u' || *pattern == 'x') { unsigned *u = va_arg(ap, unsigned *); + const int base = (*pattern == 'u') ? 10 : 16; if (!*buf) return n_matched; - if (scan_unsigned(&buf, u, width)<0) + if (scan_unsigned(&buf, u, width, base)<0) return n_matched; ++pattern; ++n_matched; @@ -2612,9 +2539,9 @@ tor_vsscanf(const char *buf, const char *pattern, va_list ap) /** Minimal sscanf replacement: parse <b>buf</b> according to <b>pattern</b> * and store the results in the corresponding argument fields. Differs from - * sscanf in that it: Only handles %u and %Ns. Does not handle arbitrarily - * long widths. %u does not consume any space. Is locale-independent. - * Returns -1 on malformed patterns. + * sscanf in that it: Only handles %u and %x and %Ns. Does not handle + * arbitrarily long widths. %u and %x do not consume any space. Is + * locale-independent. Returns -1 on malformed patterns. * * (As with other locale-independent functions, we need this to parse data that * is in ASCII without worrying that the C library's locale-handling will make @@ -2879,17 +2806,34 @@ load_windows_system_library(const TCHAR *library_name) } #endif -/** Format child_state and saved_errno as a hex string placed in hex_errno. - * Called between fork and _exit, so must be signal-handler safe */ +/** Format <b>child_state</b> and <b>saved_errno</b> as a hex string placed in + * <b>hex_errno</b>. Called between fork and _exit, so must be signal-handler + * safe. + * + * <b>hex_errno</b> must have at least HEX_ERRNO_SIZE bytes available. + * + * The format of <b>hex_errno</b> is: "CHILD_STATE/ERRNO\n", left-padded + * with spaces. Note that there is no trailing \0. CHILD_STATE indicates where + * in the processs of starting the child process did the failure occur (see + * CHILD_STATE_* macros for definition), and SAVED_ERRNO is the value of + * errno when the failure occurred. + */ + void format_helper_exit_status(unsigned char child_state, int saved_errno, char *hex_errno) { - /* Convert errno to be unsigned for hex conversion */ unsigned int unsigned_errno; char *cur; + size_t i; + + /* Fill hex_errno with spaces, and a trailing newline (memset may + not be signal handler safe, so we can't use it) */ + for (i = 0; i < (HEX_ERRNO_SIZE - 1); i++) + hex_errno[i] = ' '; + hex_errno[HEX_ERRNO_SIZE - 1] = '\n'; - /* If errno is negative, negate it */ + /* Convert errno to be unsigned for hex conversion */ if (saved_errno < 0) { unsigned_errno = (unsigned int) -saved_errno; } else { @@ -2899,17 +2843,26 @@ format_helper_exit_status(unsigned char child_state, int saved_errno, /* Convert errno to hex (start before \n) */ cur = hex_errno + HEX_ERRNO_SIZE - 2; + /* Check for overflow on first iteration of the loop */ + if (cur < hex_errno) + return; + do { *cur-- = "0123456789ABCDEF"[unsigned_errno % 16]; unsigned_errno /= 16; } while (unsigned_errno != 0 && cur >= hex_errno); - /* Add on the minus side if errno was negative */ - if (saved_errno < 0) + /* Prepend the minus sign if errno was negative */ + if (saved_errno < 0 && cur >= hex_errno) *cur-- = '-'; /* Leave a gap */ - *cur-- = '/'; + if (cur >= hex_errno) + *cur-- = '/'; + + /* Check for overflow on first iteration of the loop */ + if (cur < hex_errno) + return; /* Convert child_state to hex */ do { @@ -2934,13 +2887,20 @@ format_helper_exit_status(unsigned char child_state, int saved_errno, #define SPAWN_ERROR_MESSAGE "ERR: Failed to spawn background process - code " -/** Start a program in the background. If <b>filename</b> contains a '/', then - * it will be treated as an absolute or relative path. Otherwise the system - * path will be searched for <b>filename</b>. Returns pid on success, otherwise - * returns -1. - * Some parts of this code are based on the POSIX subprocess module from Python +/** Start a program in the background. If <b>filename</b> contains a '/', + * then it will be treated as an absolute or relative path. Otherwise the + * system path will be searched for <b>filename</b>. The strings in + * <b>argv</b> will be passed as the command line arguments of the child + * program (following convention, argv[0] should normally be the filename of + * the executable). The last element of argv must be NULL. If the child + * program is launched, the PID will be returned and <b>stdout_read</b> and + * <b>stdout_err</b> will be set to file descriptors from which the stdout + * and stderr, respectively, output of the child program can be read, and the + * stdin of the child process shall be set to /dev/null. Otherwise returns + * -1. Some parts of this code are based on the POSIX subprocess module from + * Python. */ -static int +int tor_spawn_background(const char *const filename, int *stdout_read, int *stderr_read, const char **argv) { @@ -2970,16 +2930,12 @@ tor_spawn_background(const char *const filename, int *stdout_read, and we are not allowed to use unsafe functions between fork and exec */ error_message_length = strlen(error_message); - /* Fill hex_errno with spaces, and a trailing newline */ - memset(hex_errno, ' ', sizeof(hex_errno) - 1); - hex_errno[sizeof(hex_errno) - 1] = '\n'; - child_state = CHILD_STATE_PIPE; /* Set up pipe for redirecting stdout and stderr of child */ retval = pipe(stdout_pipe); if (-1 == retval) { - log_err(LD_GENERAL, + log_warn(LD_GENERAL, "Failed to set up pipe for stdout communication with child process: %s", strerror(errno)); return -1; @@ -2987,7 +2943,7 @@ tor_spawn_background(const char *const filename, int *stdout_read, retval = pipe(stderr_pipe); if (-1 == retval) { - log_err(LD_GENERAL, + log_warn(LD_GENERAL, "Failed to set up pipe for stderr communication with child process: %s", strerror(errno)); return -1; @@ -3039,7 +2995,8 @@ tor_spawn_background(const char *const filename, int *stdout_read, child_state = CHILD_STATE_CLOSEFD; /* Close all other fds, including the read end of the pipe */ - /* TODO: use closefrom if available */ + /* XXX: use closefrom if available, or better still set FD_CLOEXEC + on all of Tor's open files */ for (fd = STDERR_FILENO + 1; fd < max_fd; fd++) close(fd); @@ -3055,7 +3012,7 @@ tor_spawn_background(const char *const filename, int *stdout_read, child_state = CHILD_STATE_FAILEXEC; error: - /* TODO: are we leaking fds from the pipe? */ + /* XXX: are we leaking fds from the pipe? */ format_helper_exit_status(child_state, errno, hex_errno); @@ -3071,7 +3028,7 @@ tor_spawn_background(const char *const filename, int *stdout_read, /* In parent */ if (-1 == pid) { - log_err(LD_GENERAL, "Failed to fork child process: %s", strerror(errno)); + log_warn(LD_GENERAL, "Failed to fork child process: %s", strerror(errno)); close(stdout_pipe[0]); close(stdout_pipe[1]); close(stderr_pipe[0]); @@ -3084,7 +3041,7 @@ tor_spawn_background(const char *const filename, int *stdout_read, retval = close(stdout_pipe[1]); if (-1 == retval) { - log_err(LD_GENERAL, + log_warn(LD_GENERAL, "Failed to close write end of stdout pipe in parent process: %s", strerror(errno)); /* Do not return -1, because the child is running, so the parent @@ -3095,7 +3052,7 @@ tor_spawn_background(const char *const filename, int *stdout_read, retval = close(stderr_pipe[1]); if (-1 == retval) { - log_err(LD_GENERAL, + log_warn(LD_GENERAL, "Failed to close write end of stderr pipe in parent process: %s", strerror(errno)); /* Do not return -1, because the child is running, so the parent @@ -3148,26 +3105,27 @@ log_from_pipe(FILE *stream, int severity, const char *executable, } else { /* No newline; check whether we overflowed the buffer */ if (!feof(stream)) - log_err(LD_GENERAL, + log_warn(LD_GENERAL, "Line from port forwarding helper was truncated: %s", buf); /* TODO: What to do with this error? */ } /* Check if buf starts with SPAWN_ERROR_MESSAGE */ - if (strstr(buf, SPAWN_ERROR_MESSAGE) == buf) { + if (strcmpstart(buf, SPAWN_ERROR_MESSAGE) == 0) { /* Parse error message */ int retval, child_state, saved_errno; - retval = sscanf(buf, SPAWN_ERROR_MESSAGE "%d/%d", - &child_state, &saved_errno); + retval = tor_sscanf(buf, SPAWN_ERROR_MESSAGE "%x/%x", + &child_state, &saved_errno); if (retval == 2) { - log_err(LD_GENERAL, + log_warn(LD_GENERAL, "Failed to start child process \"%s\" in state %d: %s", executable, child_state, strerror(saved_errno)); if (child_status) *child_status = 1; } else { - /* Failed to parse message from child process, log it as error */ - log_err(LD_GENERAL, + /* Failed to parse message from child process, log it as a + warning */ + log_warn(LD_GENERAL, "Unexpected message from port forwarding helper \"%s\": %s", executable, buf); } @@ -3233,7 +3191,7 @@ tor_check_port_forwarding(const char *filename, int dir_port, int or_port, child_pid = tor_spawn_background(filename, &fd_out, &fd_err, argv); if (child_pid < 0) { - log_err(LD_GENERAL, "Failed to start port forwarding helper %s", + log_warn(LD_GENERAL, "Failed to start port forwarding helper %s", filename); child_pid = -1; return; @@ -3254,7 +3212,7 @@ tor_check_port_forwarding(const char *filename, int dir_port, int or_port, /* Read from stdout/stderr and log result */ retval = 0; stdout_status = log_from_pipe(stdout_read, LOG_INFO, filename, &retval); - stderr_status = log_from_pipe(stderr_read, LOG_ERR, filename, &retval); + stderr_status = log_from_pipe(stderr_read, LOG_WARN, filename, &retval); if (retval) { /* There was a problem in the child process */ time_to_run_helper = now + TIME_TO_EXEC_FWHELPER_FAIL; @@ -3276,7 +3234,7 @@ tor_check_port_forwarding(const char *filename, int dir_port, int or_port, if (1 == retval) { log_info(LD_GENERAL, "Port forwarding helper terminated"); } else { - log_err(LD_GENERAL, "Failed to read from port forwarding helper"); + log_warn(LD_GENERAL, "Failed to read from port forwarding helper"); } /* TODO: The child might not actually be finished (maybe it failed or diff --git a/src/common/util.h b/src/common/util.h index 86555eeb1..633c613d4 100644 --- a/src/common/util.h +++ b/src/common/util.h @@ -248,14 +248,22 @@ void update_approx_time(time_t now); #endif /* Fuzzy time. */ -void ftime_set_maximum_sloppiness(int seconds); -void ftime_set_estimated_skew(int seconds); -/* typedef struct ftime_t { time_t earliest; time_t latest; } ftime_t; */ -/* void ftime_get_window(time_t now, ftime_t *ft_out); */ -int ftime_maybe_after(time_t now, time_t when); -int ftime_maybe_before(time_t now, time_t when); -int ftime_definitely_after(time_t now, time_t when); -int ftime_definitely_before(time_t now, time_t when); + +/** 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 */ @@ -350,6 +358,8 @@ HANDLE load_windows_system_library(const TCHAR *library_name); #ifdef UTIL_PRIVATE /* Prototypes for private functions only used by util.c (and unit tests) */ +int tor_spawn_background(const char *const filename, int *stdout_read, + int *stderr_read, const char **argv); void format_helper_exit_status(unsigned char child_state, int saved_errno, char *hex_errno); diff --git a/src/config/geoip b/src/config/geoip index 082e163d9..acddeb4ab 100644 --- a/src/config/geoip +++ b/src/config/geoip @@ -1,4 +1,4 @@ -# Last updated based on September 1 2010 Maxmind GeoLite Country +# Last updated based on November 1 2010 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 @@ -35,13 +35,22 @@ 28573696,28966911,CN 28966912,29032447,IN 29097984,29884415,CN +29884416,29885439,AU 29949952,30015487,KR 30015488,30408703,CN 30408704,33554431,KR 33554432,34603007,FR +34603008,35127295,EU +35127296,35651583,GB 35651584,36700159,IT 36700160,36962303,AE 36962304,37224447,IL +37224448,37289983,UA +37289984,37298175,RU +37298176,37355519,UA +37355520,37421055,RU +37421056,37486591,UA +37486592,37748735,RU 37748736,38273023,SE 38273024,38797311,KZ 38797312,39059455,PT @@ -52,6 +61,10 @@ 40370176,40894463,DK 40894464,41418751,IT 41418752,41943039,GB +42991616,43253759,IR +43253760,43515903,NO +44040192,45088767,DE +45088768,46137343,IR 50331648,68257567,US 68257568,68257599,CA 68257600,68259583,US @@ -256,9 +269,7 @@ 209831680,209831711,DE 209831712,209845143,US 209845144,209845151,DE -209845152,209854735,US -209854736,209854743,SE -209854744,209867103,US +209845152,209867103,US 209867104,209867111,CA 209867112,209868799,US 209868800,209869055,IR @@ -268,7 +279,9 @@ 209988528,209988535,VI 209988536,210022479,US 210022480,210022487,PR -210022488,210784255,US +210022488,210439559,US +210439560,210439567,PR +210439568,210784255,US 210784256,210784383,BO 210784384,210784767,US 210784768,210786303,BO @@ -286,9 +299,7 @@ 211363752,211363759,PR 211363760,211368655,US 211368656,211368663,PR -211368664,211403527,US -211403528,211403535,MS -211403536,211410031,US +211368664,211410031,US 211410032,211410039,PR 211410040,211410119,US 211410120,211410135,PR @@ -546,8 +557,8 @@ 214858656,214858671,NL 214858672,216417663,US 216417664,216417727,PR -216417728,216627279,US -216627280,216627295,PR +216417728,216627287,US +216627288,216627295,PR 216627296,216637639,US 216637640,216637647,PR 216637648,216820479,US @@ -566,20 +577,72 @@ 217046776,217046783,PR 217046784,234881023,US 234882304,234882559,AP +234883072,234884095,JP +234885120,234889215,VN +234889216,234913791,KR +234913792,234946559,HK +234946560,234950655,JP +234950656,234951679,AU +234951680,234952703,HK +234952704,234954751,JP +234954752,234971135,NZ +234971136,234979327,IN +234979328,235012095,MY 235012096,235077631,AU 235143168,235405311,KR 235405312,235929599,JP +235929600,236978175,CN 236978176,241172479,KR 241172480,241434623,IN 241434624,241500159,SG 241500160,241565695,JP -241631232,242221055,CN +241565696,241598463,IN +241599488,241600511,JP +241600512,241602559,AU +241602560,241604607,MY +241604608,241605631,ID +241605632,241606655,CN +241606656,241614847,IN +241614848,241623039,JP +241623040,241627135,IN +241627136,241631231,HK +241631232,243269631,CN 243269632,243269887,AP -243335168,243400703,KR +243270656,243271679,NZ +243271680,243272703,TH +243272704,243273727,NP +243273728,243277823,JP +243277824,243286015,AU +243286016,243302399,JP +243302400,243400703,KR 243400704,243531775,CN +243531776,243662847,JP +243662848,243793919,CN +243793920,243859455,HK +243859456,243924991,AU +243924992,243990527,KR +243990528,244318207,IN +244318208,245366783,CN 245366784,247463935,VN +247463936,247472127,PH +247472128,247479295,JP +247479296,247480319,CN +247480320,247482367,MY +247482368,247483391,PG +247484416,247488511,KR +247488512,247496703,JP +247496704,247504895,PK +247504896,247513087,AU +247513088,247529471,MY 247529472,247595007,JP 247595008,247726079,IN +247726080,247857151,CN +247857152,247988223,HK +247988224,248250367,AU +248250368,248381439,CN +248381440,248446975,KR +248446976,248512511,TH +248512512,249561087,CN 249561088,251658239,VN 251658240,289011535,US 289011536,289011543,IT @@ -611,8 +674,7 @@ 405979136,405995519,PR 406003712,406011903,US 406011904,406028287,BS -406044672,406052863,US -406061056,406126591,US +406028288,406126591,US 406142976,406147071,US 406147072,406151167,CA 406159360,406175743,US @@ -729,7 +791,9 @@ 418693120,418709503,CA 418709504,418766847,US 418766848,418770943,CA -418775040,419430399,US +418770944,418775039,US +418775040,418807807,CA +418807808,419430399,US 419430400,436207615,GB 436207616,452984831,US 452984832,452985855,JP @@ -820,7 +884,6 @@ 460155904,460156927,AU 460156928,460158975,KH 460158976,460159999,JP -460160000,460161023,ID 460161024,460193791,MO 460193792,460210175,JP 460210176,460214271,HK @@ -834,7 +897,6 @@ 460263424,460267519,NP 460267520,460275711,ID 460275712,460277759,AU -460277760,460278783,PG 460278784,460279807,JP 460279808,460283903,AU 460283904,460292095,KR @@ -870,14 +932,67 @@ 460596224,460597247,AU 460597248,460598271,JP 460598272,460599295,CN -460599296,460600319,IN +460599296,460601343,IN 460601344,460602367,AF 460602368,460603391,KH 460603392,460718079,KR 460718080,460722175,JP 460722176,460726271,VN 460726272,460734463,IN -460734464,460849151,KR +460734464,460865535,KR +460865536,460931071,JP +460931072,460933119,AU +460935168,460937215,ID +460937216,460938239,AU +460939264,460940287,NZ +460941312,460942335,AU +460943360,460945407,AU +460947456,460980223,JP +460980224,460981247,NC +460982272,460983295,JP +460983296,460984319,HK +460984320,460988415,PG +460988416,460994559,JP +460994560,460995583,MY +460995584,460996607,SG +460996608,461008895,JP +461008896,461012991,AU +461012992,461045759,KR +461045760,461047807,ID +461047808,461049855,JP +461049856,461050879,TH +461050880,461051903,NZ +461051904,461053951,AU +461053952,461062143,AP +461062144,461078527,IN +461078528,461094911,FJ +461094912,461099007,AP +461099008,461100031,JP +461100032,461101055,MN +461101056,461102079,IN +461102080,461103103,ID +461103104,461111295,PH +461111296,461127679,IN +461127680,461131775,PH +461131776,461135871,ID +461135872,461139967,AU +461144064,461209599,KR +461209600,461225983,SG +461225984,461227007,WF +461227008,461228031,SG +461228032,461229055,IN +461229056,461230079,JP +461230080,461234175,AU +461234176,461242367,MY +461242368,461258751,KR +461258752,461279231,JP +461279232,461281279,AU +461281280,461282303,PH +461282304,461283327,MY +461283328,461287423,JP +461287424,461307903,HK +461307904,461357055,JP +461357056,461373439,AU 461373440,461504511,CN 461504512,461570047,TH 461570048,461572095,ID @@ -931,7 +1046,12 @@ 539625392,539625407,GB 539625408,539626495,US 539626496,539626543,GB -539626544,539627391,US +539626544,539627127,US +539627128,539627135,SE +539627136,539627231,US +539627232,539627247,JP +539627248,539627263,AN +539627264,539627391,US 539627392,539627399,JP 539627400,539627407,IE 539627408,539627423,JP @@ -1101,6 +1221,11 @@ 692756480,692760575,RW 692760576,692768767,ZA 692768768,692772863,MG +692772864,692776959,ZA +692776960,692781055,AO +692781056,692785151,BW +692785152,692789247,NG +692789248,692793343,KE 692830208,692834303,NG 692834304,692838399,TZ 692838400,692842495,ZA @@ -1115,6 +1240,7 @@ 692860928,692862975,ZA 692862976,692869119,NG 692869120,692871167,TZ +692871168,692873215,ZA 692875264,692877311,ZA 692877312,692879359,GA 692879360,692881407,ZA @@ -1126,7 +1252,7 @@ 692891648,692893695,ZA 692893696,692895743,KE 692895744,692897791,NG -692897792,692903935,ZA +692897792,692905983,ZA 692969472,692971519,TZ 692973568,692975615,MZ 692975616,692977663,EG @@ -1166,6 +1292,12 @@ 693016576,693017599,GA 693017600,693018623,NG 693018624,693019647,UG +693019648,693020671,ZA +693020672,693021695,TZ +693021696,693022719,NG +693022720,693023743,KE +693023744,693026815,ZA +693026816,693027839,MU 693101568,693102591,KE 693102592,693103615,CD 693103616,693104639,GN @@ -1175,6 +1307,8 @@ 693107712,693239807,KE 693239808,693370879,SN 693370880,693403647,ZA +693403648,693411839,KE +693411840,693420031,NG 693501952,693510143,LR 693510144,693518335,SC 693518336,693534719,ZA @@ -1186,7 +1320,9 @@ 693575680,693583871,KE 693583872,693592063,NG 693592064,693600255,MU -693624832,693633023,ZA +693600256,693608447,MA +693608448,693616639,BW +693616640,693633023,ZA 693633024,693698559,EG 693698560,693829631,KE 693829632,693895167,EG @@ -1545,6 +1681,7 @@ 702525440,702526463,DZ 702526464,702527487,TZ 702527488,702528511,CF +702528512,702529535,CG 702529536,702530559,NG 702530560,702531583,EG 702531584,702532607,SD @@ -1571,10 +1708,130 @@ 771751936,771817471,RU 771817472,771948543,TR 771948544,772014079,RU -772014080,772079615,DE -773062656,773066751,TR +772014080,772145151,DE +772145152,772210687,ES +772210688,772276223,IE +772276224,772341759,RU +772341760,772407295,NO +772407296,772472831,BG +772472832,772538367,MT +772538368,772603903,GR +772603904,772669439,CZ +772669440,772734975,CH +772734976,772800511,NO +772800512,772802559,GB +772802560,772804607,RU +772804608,772806655,BZ +772806656,772808703,RU +772808704,772810751,GB +772810752,772812799,FR +772812800,772814847,NO +772814848,772816895,ES +772816896,772818943,RU +772818944,772820991,DE +772820992,772823039,GB +772823040,772825087,IT +772825088,772827135,RU +772827136,772829183,RS +772829184,772831231,EE +772831232,772833279,CZ +772833280,772835327,RU +772835328,772837375,CY +772837376,772839423,KZ +772839424,772841471,CH +772841472,772843519,GB +772843520,772845567,IT +772845568,772847615,RU +772847616,772849663,GB +772849664,772851711,BG +772851712,772853759,CH +772853760,772855807,GB +772855808,772857855,DE +772857856,772859903,RU +772859904,772861951,SE +772861952,772863999,UA +772864000,772870143,NL +772870144,772872191,NO +772872192,772874239,NL +772874240,772876287,IE +772876288,772880383,RU +772880384,772882431,GB +772882432,772884479,FR +772884480,772884543,GB +772884544,772884735,LB +772884736,772884799,GB +772884800,772885503,LB +772885504,772885567,GB +772885568,772885759,LB +772885760,772885823,GB +772885824,772886527,LB +772886528,772888575,FR +772888576,772890623,GB +772890624,772892671,RU +772892672,772894719,DE +772894720,772896767,PL +772896768,772898815,RS +772898816,772900863,TR +772900864,772902911,ES +772902912,772904959,RS +772904960,772907007,IT +772907008,772909055,GB +772909056,772911103,LU +772911104,772913151,GB +772913152,772915199,SE +772915200,772917247,FI +772917248,772919295,RU +772919296,772923391,GB +772923392,772925439,AT +772925440,772927487,GB +772927488,772929535,UA +772929536,772931583,RU +772931584,772933631,UA +772933632,772935679,GB +772935680,772937727,PS +772937728,772939775,IT +772939776,772941823,BE +772941824,772943871,ES +772943872,772945919,GB +772945920,772947967,DE +772947968,772950015,AZ +772950016,772952063,ES +772952064,772954111,GB +772954112,772958207,FR +772958208,772960255,PL +772960256,772962303,GB +772962304,772966399,FR +773001216,773003263,NO +773062656,773062911,TR +773062912,773063167,US +773063168,773063424,TR +773063425,773063436,US +773063437,773063935,TR +773063936,773065215,US +773065216,773066751,TR 773066752,773070847,AT 773070848,773074943,DE +773074944,773079039,PL +773079040,773083135,RU +773083136,773087231,IT +773087232,773091327,LB +773091328,773095423,GB +773095424,773099519,RO +773099520,773103615,TR +773103616,773107711,FR +773107712,773111807,RU +773111808,773115903,TJ +773115904,773119999,PS +773120000,773124095,GB +773124096,773128191,CH +773128192,773132287,DE +773132288,773134335,IT +773134336,773134847,CH +773134848,773135359,IT +773135360,773135871,CH +773135872,773136383,IT +773136384,773140479,DK +773140480,773144575,CY 773324800,773586943,ES 773586944,773588991,IT 773588992,773591039,PL @@ -1624,7 +1881,12 @@ 773675008,773677055,GB 773677056,773679103,DE 773679104,773679135,IT -773679136,773681151,A2 +773679136,773679327,A2 +773679328,773679359,IT +773679360,773679423,GB +773679424,773679615,A2 +773679616,773680191,IT +773680192,773681151,A2 773681152,773683199,RU 773683200,773685247,FR 773685248,773687295,UA @@ -1641,9 +1903,8 @@ 773709824,773711871,CZ 773711872,773713919,RU 773713920,773715967,NL -773715968,773716223,EE -773716224,773716479,SE -773716480,773716991,EE +773715968,773716479,EE +773716480,773716991,SE 773716992,773718015,US 773718016,773720063,DE 773720064,773722111,GB @@ -1660,6 +1921,51 @@ 773746688,773748735,DE 773748736,773750783,DK 773750784,773752831,FI +773752832,773754879,GB +773754880,773756927,CZ +773756928,773758975,RU +773758976,773761023,UA +773761024,773763071,IT +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 +773787648,773789695,DK +773789696,773791743,RU +773791744,773793791,PL +773793792,773795839,FR +773795840,773797887,NL +773797888,773799935,ES +773799936,773801983,CY +773801984,773804031,IQ +773804032,773806079,GB +773806080,773808127,BE +773808128,773810175,IL +773810176,773812223,IT +773812224,773814271,TR +773814272,773816319,DE +773816320,773818367,IT +773818368,773820415,HR +773820416,773822463,TR +773822464,773824511,RU +773824512,773826559,FR +773826560,773828607,NL +773828608,773830655,HU +773830656,773832703,NO +773832704,773834751,FR +773834752,773836799,GB +773836800,773838847,FR +773838848,773840895,DE +773840896,773847039,GB +773847040,773849087,IT 773849088,773857279,IR 773857280,773865471,DK 773865472,773873663,RU @@ -1669,6 +1975,39 @@ 773898240,773906431,PS 773906432,773922815,GB 773922816,773931007,UA +773931008,773939199,FR +773939200,773947391,CZ +773947392,773955583,GB +773955584,773963775,FR +773963776,773971967,ME +773971968,773980159,UA +773980160,773988351,GB +773988352,774003199,ES +774003200,774003263,TR +774003264,774003711,ES +774003712,774004223,BE +774004224,774004479,ES +774004480,774004511,BE +774004512,774004735,ES +774004736,774012927,IR +774012928,774021119,RU +774021120,774029311,IR +774029312,774037503,RO +774037504,774045695,SK +774045696,774053887,FR +774053888,774062079,DE +774062080,774070271,YE +774070272,774078463,ES +774078464,774086655,BA +774086656,774094847,BG +774094848,774103039,HU +774103040,774111231,UA +774111232,774119423,RU +774119424,774127615,CZ +774127616,774135807,LT +774135808,774143999,IR +774144000,774152191,KZ +774152192,774160383,BA 774373376,774389759,RS 774389760,774406143,BG 774406144,774422527,IT @@ -1687,7 +2026,18 @@ 774619136,774651903,RU 774651904,774668287,SA 774668288,774684671,NL -774897664,774963199,RU +774684672,774701055,IT +774701056,774717439,RU +774717440,774733823,PL +774733824,774750207,TR +774750208,774782975,RU +774782976,774799359,UA +774799360,774815743,RU +774815744,774832127,SE +774832128,774848511,RU +774848512,774864895,BG +774864896,774881279,CZ +774881280,774963199,RU 774963200,774995967,GE 774995968,775028735,RO 775028736,775061503,PT @@ -1699,6 +2049,19 @@ 775225344,775258111,SY 775258112,775290879,BY 775290880,775323647,MT +775323648,775356415,SI +775356416,775389183,MD +775389184,775421951,BG +775421952,775487487,BY +775487488,775520255,AT +775520256,775553023,SY +775553024,775585791,EU +775585792,775618559,SY +775618560,775651327,SE +775651328,775684095,DE +775684096,775716863,PS +775716864,775749631,GB +775749632,775847935,RU 775946240,776077311,GB 776077312,776208383,NO 776208384,776339455,GB @@ -1706,7 +2069,7 @@ 776470528,776601599,RU 776601600,776732671,AT 776732672,776863743,PL -776994816,778043391,DE +776863744,778043391,DE 778043392,778108927,RU 778108928,778174463,RO 778174464,778239999,UA @@ -1731,15 +2094,66 @@ 779747328,779878399,SI 779878400,780009471,AT 780009472,780140543,CH +780140544,780206079,DE +780206080,780271615,NL +780271616,780337151,AM +780337152,780402687,EE +780402688,780468223,FI +780468224,780533759,UA +781189120,781320191,NL +781320192,781451263,RU +781582336,781590527,UA +781713408,781844479,SA +781844480,781975551,TR +782237696,782254079,RU 788529152,805306367,CA 805306368,822083583,US +822083584,822083839,AP +822083840,822084095,AU +822084608,822085631,ID +822085632,822087679,AU +822091776,822099967,BD +822099968,822116351,TH +822149120,822214655,KR +822214656,822345727,AU +822345728,822607871,CN +822607872,822870015,KR +822870016,823132159,IN +823132160,824180735,KR +824180736,825229311,IN +825229312,825360383,TH +825360384,825361407,AP +825361408,825363455,ID +825363456,825364479,MY +825376768,825393151,IN +825425920,825491455,AU +825491456,825753599,CN +825753600,826277887,KR +829423616,830210047,CN +830210048,830341119,MY +830341120,830406655,NP +830406656,830474239,AU +830474240,830475263,SG +830537728,830603263,JP +830603264,830734335,HK +830734336,830996479,JP +830996480,831258623,IN +831258624,831389695,CN +837812224,838074367,JP +838336512,838467583,IN +838467584,838729727,JP +838729728,838795263,KR +838795264,838860799,AP 838860800,838926335,US 838991872,838999039,US 838999040,838999295,CA 838999296,839010559,US 839010560,839010815,CA -839010816,839188479,US -839385088,839909375,US +839010816,839022079,US +839022080,839023103,CA +839023104,843055103,US +843055104,844103679,CA +847249408,855638015,US 855638016,872415231,GB 872415232,889192447,US 889192448,905969663,DE @@ -2155,7 +2569,8 @@ 1026408448,1026416639,JP 1026416640,1026420735,ID 1026420736,1026422783,JP -1026422784,1026424831,AP +1026422784,1026423295,AU +1026423296,1026424831,AP 1026424832,1026490367,JP 1026490368,1026523135,TH 1026523136,1026539519,CN @@ -2249,8 +2664,8 @@ 1040469056,1040469071,FR 1040469072,1040469087,EU 1040469088,1040469183,FR -1040469184,1040469215,EU -1040469216,1040469279,FR +1040469184,1040469247,EU +1040469248,1040469279,FR 1040469280,1040469311,EU 1040469312,1040469343,FR 1040469344,1040469375,EU @@ -2291,16 +2706,18 @@ 1040982016,1040982279,A2 1040982280,1040982287,NG 1040982288,1040982583,A2 -1040982584,1040982607,DK +1040982584,1040982591,DK +1040982592,1040982599,A2 +1040982600,1040982607,DK 1040982608,1040982631,A2 1040982632,1040982639,DE -1040982640,1040983807,A2 +1040982640,1040982943,A2 +1040982944,1040982951,DK +1040982952,1040983807,A2 1040983808,1040983815,NG 1040983816,1040984143,A2 1040984144,1040984151,NG -1040984152,1040984175,A2 -1040984176,1040984183,NG -1040984184,1040990207,A2 +1040984152,1040990207,A2 1040990208,1040994303,CY 1040994304,1040994815,RU 1040994816,1040998399,CY @@ -2345,13 +2762,9 @@ 1041696872,1041696879,GB 1041696880,1041697699,FR 1041697700,1041697703,GB -1041697704,1041697919,FR -1041697920,1041697983,GB -1041697984,1041698047,FR +1041697704,1041698047,FR 1041698048,1041698077,GB -1041698078,1041698135,FR -1041698136,1041698143,GB -1041698144,1041698207,FR +1041698078,1041698207,FR 1041698208,1041698223,GB 1041698224,1041698247,FR 1041698248,1041698255,GB @@ -2385,23 +2798,23 @@ 1041701312,1041701551,GB 1041701552,1041701567,FR 1041701568,1041701631,GB -1041701632,1041702303,FR -1041702304,1041702311,GB +1041701632,1041701647,FR +1041701648,1041701663,GB +1041701664,1041702167,FR +1041702168,1041702175,GB +1041702176,1041702306,FR +1041702307,1041702311,GB 1041702312,1041702327,FR 1041702328,1041702335,GB 1041702336,1041702351,FR 1041702352,1041702399,GB -1041702400,1041702855,FR -1041702856,1041702863,GB -1041702864,1041703575,FR +1041702400,1041703575,FR 1041703576,1041703583,GB 1041703584,1041704119,FR 1041704120,1041704127,GB 1041704128,1041704159,FR 1041704160,1041704175,GB -1041704176,1041704319,FR -1041704320,1041704383,GB -1041704384,1041704407,FR +1041704176,1041704407,FR 1041704408,1041704431,GB 1041704432,1041704439,FR 1041704440,1041704455,GB @@ -2491,7 +2904,9 @@ 1041707632,1041707639,GB 1041707640,1041707679,FR 1041707680,1041707687,GB -1041707688,1041707895,FR +1041707688,1041707807,FR +1041707808,1041707815,GB +1041707816,1041707895,FR 1041707896,1041707903,GB 1041707904,1041707999,FR 1041708000,1041708007,GB @@ -2575,8 +2990,8 @@ 1041711584,1041711599,GB 1041711600,1041711943,FR 1041711944,1041711951,GB -1041711952,1041712399,FR -1041712400,1041712415,GB +1041711952,1041712407,FR +1041712408,1041712415,GB 1041712416,1041712423,FR 1041712424,1041712431,GB 1041712432,1041713095,FR @@ -2593,9 +3008,7 @@ 1041714072,1041714079,GB 1041714080,1041714095,FR 1041714096,1041714103,GB -1041714104,1041714111,FR -1041714112,1041714175,GB -1041714176,1041714523,FR +1041714104,1041714523,FR 1041714524,1041714527,GB 1041714528,1041714775,FR 1041714776,1041714783,GB @@ -2638,10 +3051,10 @@ 1041715952,1041715999,FR 1041716000,1041716015,GB 1041716016,1041716047,FR -1041716048,1041716063,GB -1041716064,1041716111,FR -1041716112,1041716223,GB -1041716224,1041716311,FR +1041716048,1041716095,GB +1041716096,1041716111,FR +1041716112,1041716239,GB +1041716240,1041716311,FR 1041716312,1041716319,GB 1041716320,1041716439,FR 1041716440,1041716447,GB @@ -2663,7 +3076,9 @@ 1041717168,1041717183,GB 1041717184,1041717199,FR 1041717200,1041717247,GB -1041717248,1041717687,FR +1041717248,1041717503,FR +1041717504,1041717511,IT +1041717512,1041717687,FR 1041717688,1041717695,GB 1041717696,1041718112,FR 1041718113,1041718119,GB @@ -2707,7 +3122,9 @@ 1041719229,1041719231,GB 1041719232,1041719247,FR 1041719248,1041719263,GB -1041719264,1041719683,FR +1041719264,1041719383,FR +1041719384,1041719391,GB +1041719392,1041719683,FR 1041719684,1041719687,GB 1041719688,1041719703,FR 1041719704,1041719711,GB @@ -2752,10 +3169,10 @@ 1041722504,1041722535,FR 1041722536,1041722551,GB 1041722552,1041722567,FR -1041722568,1041722575,GB -1041722576,1041722583,FR -1041722584,1041722623,GB -1041722624,1041722983,FR +1041722568,1041722623,GB +1041722624,1041722703,FR +1041722704,1041722711,GB +1041722712,1041722983,FR 1041722984,1041723007,GB 1041723008,1041723047,FR 1041723048,1041723135,GB @@ -2771,28 +3188,32 @@ 1041724456,1041724463,GB 1041724464,1041724471,FR 1041724472,1041724479,GB -1041724480,1041724671,FR +1041724480,1041724535,FR +1041724536,1041724543,GB +1041724544,1041724671,FR 1041724672,1041724927,GB 1041724928,1041725119,FR 1041725120,1041725167,GB 1041725168,1041725175,FR -1041725176,1041725231,GB +1041725176,1041725183,GB +1041725184,1041725191,FR +1041725192,1041725231,GB 1041725232,1041725255,FR -1041725256,1041725271,GB -1041725272,1041725375,FR +1041725256,1041725279,GB +1041725280,1041725375,FR 1041725376,1041725407,GB 1041725408,1041725749,FR 1041725750,1041725751,GB -1041725752,1041725815,FR -1041725816,1041725823,GB -1041725824,1041726063,FR +1041725752,1041725863,FR +1041725864,1041725871,GB +1041725872,1041726063,FR 1041726064,1041726079,GB 1041726080,1041726127,FR 1041726128,1041726151,GB 1041726152,1041726159,FR 1041726160,1041726167,GB -1041726168,1041726511,FR -1041726512,1041726543,GB +1041726168,1041726503,FR +1041726504,1041726543,GB 1041726544,1041726639,FR 1041726640,1041726655,GB 1041726656,1041726671,FR @@ -2858,8 +3279,10 @@ 1041729568,1041729615,FR 1041729616,1041729623,GB 1041729624,1041729663,FR -1041729664,1041729791,GB -1041729792,1041730239,FR +1041729664,1041729935,GB +1041729936,1041729951,FR +1041729952,1041730047,GB +1041730048,1041730239,FR 1041730240,1041730247,GB 1041730248,1041730639,FR 1041730640,1041730655,GB @@ -2877,9 +3300,7 @@ 1041732256,1041732295,GB 1041732296,1041732303,FR 1041732304,1041732311,GB -1041732312,1041732447,FR -1041732448,1041732455,GB -1041732456,1041732463,FR +1041732312,1041732463,FR 1041732464,1041732479,GB 1041732480,1041732863,FR 1041732864,1041732871,GB @@ -2889,8 +3310,8 @@ 1041732960,1041732967,GB 1041732968,1041732991,FR 1041732992,1041733103,GB -1041733104,1041733503,FR -1041733504,1041733535,GB +1041733104,1041733519,FR +1041733520,1041733535,GB 1041733536,1041733567,FR 1041733568,1041733631,GB 1041733632,1041734927,FR @@ -2945,8 +3366,8 @@ 1041737400,1041737423,GB 1041737424,1041737455,FR 1041737456,1041737463,GB -1041737464,1041737479,FR -1041737480,1041737503,GB +1041737464,1041737487,FR +1041737488,1041737503,GB 1041737504,1041737583,FR 1041737584,1041737599,GB 1041737600,1041737607,FR @@ -3040,7 +3461,7 @@ 1041741608,1041741615,GB 1041741616,1041741631,FR 1041741632,1041741647,GB -1041741648,1041741663,FR +1041741648,1041741663,DE 1041741664,1041741679,GB 1041741680,1041741687,FR 1041741688,1041741823,GB @@ -3096,7 +3517,9 @@ 1041744360,1041744367,GB 1041744368,1041744399,FR 1041744400,1041744407,GB -1041744408,1041744479,FR +1041744408,1041744415,FR +1041744416,1041744447,GB +1041744448,1041744479,FR 1041744480,1041744543,GB 1041744544,1041744599,FR 1041744600,1041744607,GB @@ -3188,7 +3611,9 @@ 1041750776,1041750783,GB 1041750784,1041751695,FR 1041751696,1041751719,GB -1041751720,1041753319,FR +1041751720,1041751775,FR +1041751776,1041751807,GB +1041751808,1041753319,FR 1041753320,1041753327,GB 1041753328,1041753407,FR 1041753408,1041753503,GB @@ -3242,7 +3667,9 @@ 1041757504,1041757519,GB 1041757520,1041757583,FR 1041757584,1041757591,GB -1041757592,1041757631,FR +1041757592,1041757607,FR +1041757608,1041757615,GB +1041757616,1041757631,FR 1041757632,1041757647,GB 1041757648,1041757663,FR 1041757664,1041757671,GB @@ -3297,9 +3724,12 @@ 1042288416,1042292735,CH 1042292736,1042293247,NL 1042293248,1042293503,GB -1042293504,1042293535,NL +1042293504,1042293535,IT 1042293536,1042293631,IR -1042293632,1042296063,GE +1042293632,1042293759,GE +1042293760,1042293985,IT +1042293986,1042294783,NL +1042294784,1042296063,GE 1042296064,1042296191,CY 1042296192,1042296575,GE 1042296576,1042296831,BY @@ -3398,11 +3828,15 @@ 1042892960,1042892967,DE 1042892968,1042892975,PL 1042892976,1042892983,CH -1042892984,1042893055,NL +1042892984,1042892991,NL +1042892992,1042893007,FR +1042893008,1042893055,NL 1042893056,1042893087,GB 1042893088,1042893135,NL 1042893136,1042893143,DE -1042893144,1042893183,NL +1042893144,1042893151,NL +1042893152,1042893167,PL +1042893168,1042893183,NL 1042893184,1042893311,GB 1042893312,1042894079,NL 1042894080,1042894143,DE @@ -3430,7 +3864,11 @@ 1043202048,1043333119,AT 1043333120,1043341311,CH 1043341312,1043349503,IT -1043349504,1043357695,DE +1043349504,1043350851,DE +1043350852,1043350855,CH +1043350856,1043356023,DE +1043356024,1043356031,CH +1043356032,1043357695,DE 1043357696,1043365887,CH 1043365888,1043398655,PT 1043398656,1043464191,GB @@ -3879,9 +4317,7 @@ 1044020168,1044020187,BE 1044020188,1044020199,NL 1044020200,1044020203,BE -1044020204,1044020207,NL -1044020208,1044020211,BE -1044020212,1044020219,NL +1044020204,1044020219,NL 1044020220,1044020255,BE 1044020256,1044020263,NL 1044020264,1044020303,BE @@ -4053,7 +4489,9 @@ 1044588800,1044590463,DE 1044590464,1044590591,GB 1044590592,1044590671,DE -1044590672,1044590847,GB +1044590672,1044590719,GB +1044590720,1044590783,DE +1044590784,1044590847,GB 1044590848,1044591615,DE 1044591616,1044591871,GB 1044591872,1044592127,DE @@ -4109,9 +4547,15 @@ 1044668416,1044676607,BA 1044676608,1044684799,RU 1044684800,1044692991,HU -1044692992,1044697087,AT +1044692992,1044695935,AT +1044695936,1044696062,DE +1044696063,1044697087,AT 1044697088,1044697343,DE -1044697344,1044701183,AT +1044697344,1044697855,AT +1044697856,1044698110,DE +1044698111,1044698111,AT +1044698112,1044698367,DE +1044698368,1044701183,AT 1044701184,1044709375,EG 1044709376,1044717567,RU 1044717568,1044742143,GB @@ -4129,9 +4573,7 @@ 1044774912,1044800383,NO 1044800384,1044800511,IT 1044800512,1044840447,NO -1044840448,1044842751,FI -1044842752,1044842815,AX -1044842816,1044905983,FI +1044840448,1044905983,FI 1044905984,1044908031,GB 1044908032,1044909055,US 1044909056,1044910847,GB @@ -4201,12 +4643,14 @@ 1044931904,1044931911,GB 1044931912,1044931915,BE 1044931916,1044931919,GB -1044931920,1044931935,BE +1044931920,1044931923,BE +1044931924,1044931927,GB +1044931928,1044931935,BE 1044931936,1044931951,GB 1044931952,1044931975,BE 1044931976,1044931983,GB -1044931984,1044932063,BE -1044932064,1044932087,GB +1044931984,1044932047,BE +1044932048,1044932087,GB 1044932088,1044932383,BE 1044932384,1044932391,GB 1044932392,1044932399,BE @@ -4237,7 +4681,9 @@ 1044933024,1044933039,GB 1044933040,1044933055,BE 1044933056,1044933071,GB -1044933072,1044933215,BE +1044933072,1044933103,BE +1044933104,1044933107,GB +1044933108,1044933215,BE 1044933216,1044933227,GB 1044933228,1044933303,BE 1044933304,1044933311,GB @@ -4267,13 +4713,15 @@ 1044933844,1044933847,GB 1044933848,1044933863,BE 1044933864,1044933871,GB -1044933872,1044934103,BE -1044934104,1044934111,GB -1044934112,1044934191,BE +1044933872,1044933919,BE +1044933920,1044933935,GB +1044933936,1044934191,BE 1044934192,1044934199,GB 1044934200,1044934239,BE 1044934240,1044934247,GB -1044934248,1044934359,BE +1044934248,1044934287,BE +1044934288,1044934295,GB +1044934296,1044934359,BE 1044934360,1044934503,GB 1044934504,1044934575,BE 1044934576,1044934583,GB @@ -4333,7 +4781,9 @@ 1044936440,1044936447,GB 1044936448,1044936455,BE 1044936456,1044936463,GB -1044936464,1044936495,BE +1044936464,1044936479,BE +1044936480,1044936487,GB +1044936488,1044936495,BE 1044936496,1044936503,GB 1044936504,1044936711,BE 1044936712,1044936719,GB @@ -4408,18 +4858,14 @@ 1045013472,1045018207,GB 1045018208,1045018231,FI 1045018232,1045018367,GB -1045018368,1045018423,ES -1045018424,1045018431,GB -1045018432,1045018559,ES +1045018368,1045018559,ES 1045018560,1045018623,GB 1045018624,1045018751,ES 1045018752,1045020159,GB 1045020160,1045020255,ES 1045020256,1045020287,GB -1045020288,1045020519,ES -1045020520,1045020527,GB -1045020528,1045020543,ES -1045020544,1045020671,GB +1045020288,1045020655,ES +1045020656,1045020671,GB 1045020672,1045037055,NO 1045037056,1045119231,GR 1045119232,1045119743,AL @@ -4430,7 +4876,9 @@ 1045154560,1045154591,NL 1045154592,1045154623,DE 1045154624,1045154655,GB -1045154656,1045154751,DE +1045154656,1045154687,DE +1045154688,1045154719,NL +1045154720,1045154751,DE 1045154752,1045154783,SE 1045154784,1045155071,DE 1045155072,1045155327,CH @@ -4588,9 +5036,7 @@ 1045746096,1045746163,SE 1045746164,1045746175,GB 1045746176,1045746431,SE -1045746432,1045746447,GB -1045746448,1045746463,SE -1045746464,1045746495,GB +1045746432,1045746495,GB 1045746496,1045746527,SE 1045746528,1045746543,GB 1045746544,1045746559,SE @@ -4651,16 +5097,21 @@ 1046229120,1046282239,NO 1046282240,1046283007,DE 1046283008,1046283263,BZ -1046283264,1046283327,LU -1046283328,1046284287,DE -1046284288,1046285311,BZ +1046283264,1046284287,DE +1046284288,1046285055,BZ +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 1046288384,1046288663,CZ -1046288664,1046288895,DE +1046288664,1046288767,DE +1046288768,1046288775,AG +1046288776,1046288895,DE 1046288896,1046290431,AG 1046290432,1046298623,PL 1046298624,1046299903,AT @@ -4689,8 +5140,7 @@ 1046316032,1046316543,FR 1046316544,1046317055,DK 1046317056,1046317567,ES -1046317568,1046317823,GB -1046317824,1046318335,NL +1046317568,1046318335,NL 1046318336,1046318591,GB 1046318592,1046320127,NL 1046320128,1046320639,GB @@ -4722,9 +5172,7 @@ 1046339840,1046340095,FR 1046340096,1046340607,EU 1046340608,1046341119,NL -1046341120,1046341631,EU -1046341632,1046341887,FR -1046341888,1046342143,EU +1046341120,1046342143,EU 1046342144,1046342719,NL 1046342720,1046343423,EU 1046343424,1046343935,NL @@ -4986,11 +5434,9 @@ 1046528600,1046528603,DE 1046528604,1046528607,GB 1046528608,1046528639,DE -1046528640,1046528671,GB -1046528672,1046528767,DE -1046528768,1046529279,GB -1046529280,1046529535,DE -1046529536,1046530047,GB +1046528640,1046528703,GB +1046528704,1046528767,DE +1046528768,1046530047,GB 1046530048,1046530687,DE 1046530688,1046530815,GB 1046530816,1046530879,DE @@ -5015,8 +5461,8 @@ 1046535312,1046535359,GB 1046535360,1046535423,DE 1046535424,1046535487,GB -1046535488,1046535615,DE -1046535616,1046535619,GB +1046535488,1046535551,DE +1046535552,1046535619,GB 1046535620,1046535623,DE 1046535624,1046535631,GB 1046535632,1046535935,DE @@ -5075,8 +5521,8 @@ 1046543104,1046543263,GB 1046543264,1046543295,DE 1046543296,1046543327,GB -1046543328,1046543351,DE -1046543352,1046543359,GB +1046543328,1046543343,DE +1046543344,1046543359,GB 1046543360,1046543615,DE 1046543616,1046544127,GB 1046544128,1046544383,DE @@ -5180,8 +5626,8 @@ 1046896384,1046897663,GB 1046897664,1046898431,BE 1046898432,1046898687,EU -1046898688,1046898943,BE -1046898944,1046899167,EU +1046898688,1046898975,BE +1046898976,1046899167,EU 1046899168,1046904831,BE 1046904832,1046937599,RU 1046937600,1047003135,GR @@ -5223,7 +5669,9 @@ 1047340800,1047341055,NO 1047341056,1047343871,SE 1047343872,1047344127,NO -1047344128,1047347199,SE +1047344128,1047346431,SE +1047346432,1047346687,FI +1047346688,1047347199,SE 1047347200,1047363583,DE 1047363584,1047371775,CZ 1047371776,1047379967,RU @@ -5248,8 +5696,8 @@ 1047563304,1047563311,CH 1047563312,1047563319,DE 1047563320,1047563323,CH -1047563324,1047563347,DE -1047563348,1047563355,CH +1047563324,1047563351,DE +1047563352,1047563355,CH 1047563356,1047563363,DE 1047563364,1047563367,ES 1047563368,1047563403,DE @@ -5265,9 +5713,9 @@ 1047563452,1047563455,NL 1047563456,1047563467,DE 1047563468,1047563471,CH -1047563472,1047563727,DE -1047563728,1047563731,AU -1047563732,1047566363,DE +1047563472,1047565131,DE +1047565132,1047565135,GB +1047565136,1047566363,DE 1047566364,1047566367,CH 1047566368,1047566403,DE 1047566404,1047566415,CH @@ -5281,7 +5729,9 @@ 1047566492,1047566499,CH 1047566500,1047566507,DE 1047566508,1047566511,CH -1047566512,1047566535,DE +1047566512,1047566519,DE +1047566520,1047566527,CH +1047566528,1047566535,DE 1047566536,1047566539,CH 1047566540,1047566559,DE 1047566560,1047566563,CH @@ -5323,9 +5773,7 @@ 1047567316,1047567319,AT 1047567320,1047567359,DE 1047567360,1047567375,ES -1047567376,1047567435,DE -1047567436,1047567439,CH -1047567440,1047567447,DE +1047567376,1047567447,DE 1047567448,1047567451,CH 1047567452,1047567455,AT 1047567456,1047567459,CH @@ -5353,7 +5801,9 @@ 1047567756,1047567759,CH 1047567760,1047567799,DE 1047567800,1047567803,CH -1047567804,1047567847,DE +1047567804,1047567823,DE +1047567824,1047567839,CH +1047567840,1047567847,DE 1047567848,1047567851,CH 1047567852,1047567855,BE 1047567856,1047567871,DE @@ -5364,8 +5814,8 @@ 1047567936,1047567939,CH 1047567940,1047568047,DE 1047568048,1047568059,CH -1047568060,1047568083,DE -1047568084,1047568095,CH +1047568060,1047568087,DE +1047568088,1047568095,CH 1047568096,1047568159,DE 1047568160,1047568163,CH 1047568164,1047568187,DE @@ -5392,7 +5842,8 @@ 1047728128,1047732223,SE 1047732224,1047740415,EU 1047740416,1047740431,US -1047740432,1047740543,EU +1047740432,1047740447,DE +1047740448,1047740543,EU 1047740544,1047740671,DE 1047740672,1047740927,A2 1047740928,1047781663,EU @@ -5403,7 +5854,12 @@ 1047782720,1047782751,SE 1047782752,1047782783,NO 1047782784,1047782815,FI -1047782816,1047789567,EU +1047782816,1047789375,EU +1047789376,1047789383,GB +1047789384,1047789407,EU +1047789408,1047789423,DE +1047789424,1047789535,EU +1047789536,1047789567,DE 1047789568,1047806031,AT 1047806032,1047806047,IT 1047806048,1047822335,AT @@ -5471,8 +5927,8 @@ 1048604966,1048604967,UA 1048604968,1048604971,LT 1048604972,1048604975,UA -1048604976,1048605063,LT -1048605064,1048607231,UA +1048604976,1048605079,LT +1048605080,1048607231,UA 1048607232,1048607247,EE 1048607248,1048607487,UA 1048607488,1048607519,EE @@ -5635,7 +6091,9 @@ 1048856920,1048856927,DE 1048856928,1048856999,NL 1048857000,1048857007,DE -1048857008,1048857767,NL +1048857008,1048857207,NL +1048857208,1048857215,DE +1048857216,1048857767,NL 1048857768,1048857775,DE 1048857776,1048858111,NL 1048858112,1048858623,DE @@ -6226,7 +6684,9 @@ 1049020480,1049020543,GE 1049020544,1049026559,DE 1049026560,1049026815,EU -1049026816,1049032143,DE +1049026816,1049031871,DE +1049031872,1049031903,EU +1049031904,1049032143,DE 1049032144,1049032167,EU 1049032168,1049032171,DE 1049032172,1049032175,EU @@ -6406,9 +6866,7 @@ 1049778336,1049778351,AE 1049778352,1049778535,DE 1049778536,1049778543,AT -1049778544,1049779063,DE -1049779064,1049779071,PL -1049779072,1049779135,DE +1049778544,1049779135,DE 1049779136,1049779167,AE 1049779168,1049782303,DE 1049782304,1049782335,AE @@ -6428,7 +6886,9 @@ 1049787136,1049787391,PL 1049787392,1049790207,DE 1049790208,1049790463,LU -1049790464,1049817151,DE +1049790464,1049794559,DE +1049794560,1049795583,CH +1049795584,1049817151,DE 1049817152,1049817159,PL 1049817160,1049817287,DE 1049817288,1049817295,AE @@ -6661,13 +7121,11 @@ 1051578352,1051578363,GB 1051578364,1051578367,DE 1051578368,1051580415,SZ -1051580416,1051584511,GB -1051584512,1051585663,MG -1051585664,1051585919,GB -1051585920,1051586047,MG -1051586048,1051586175,GB -1051586176,1051586303,MG -1051586304,1051590655,GB +1051580416,1051584767,GB +1051584768,1051585535,MG +1051585536,1051585599,GB +1051585600,1051585663,MG +1051585664,1051590655,GB 1051590656,1051702527,ES 1051702528,1051702783,US 1051702784,1051721727,ES @@ -6768,7 +7226,9 @@ 1052003840,1052003967,EU 1052003968,1052003999,DE 1052004000,1052004671,EU -1052004672,1052004759,DE +1052004672,1052004687,DE +1052004688,1052004703,EU +1052004704,1052004759,DE 1052004760,1052004767,EU 1052004768,1052004783,DE 1052004784,1052004815,EU @@ -7809,11 +8269,11 @@ 1052507776,1052507903,EU 1052507904,1052596447,GB 1052596448,1052596463,IT -1052596464,1052602495,GB -1052602496,1052602623,ES -1052602624,1052621951,GB +1052596464,1052621951,GB 1052621952,1052622015,IE -1052622016,1052634943,GB +1052622016,1052631935,GB +1052631936,1052631999,FR +1052632000,1052634943,GB 1052634944,1052634951,IE 1052634952,1052644095,GB 1052644096,1052644351,SE @@ -8093,8 +8553,8 @@ 1053352192,1053353023,EU 1053353024,1053353031,IE 1053353032,1053353103,EU -1053353104,1053353111,IE -1053353112,1053353135,EU +1053353104,1053353119,IE +1053353120,1053353135,EU 1053353136,1053353215,IE 1053353216,1053353223,GB 1053353224,1053353255,IE @@ -8428,33 +8888,33 @@ 1055200424,1055201023,EU 1055201024,1055201279,US 1055201280,1055203327,EU -1055203328,1055203359,CZ -1055203360,1055203839,EU +1055203328,1055203343,CZ +1055203344,1055203839,EU 1055203840,1055204095,CZ 1055204096,1055204863,EU -1055204864,1055205375,CZ -1055205376,1055205631,EU +1055204864,1055205119,CZ +1055205120,1055205631,EU 1055205632,1055205887,CZ 1055205888,1055206655,EU -1055206656,1055207423,CZ +1055206656,1055206911,CZ +1055206912,1055207167,EU +1055207168,1055207423,CZ 1055207424,1055207679,EU -1055207680,1055209471,CZ -1055209472,1055209727,EU +1055207680,1055209215,CZ +1055209216,1055209727,EU 1055209728,1055210239,CZ -1055210240,1055210495,EU -1055210496,1055210751,SK -1055210752,1055211263,EU +1055210240,1055211263,EU 1055211264,1055211519,CZ 1055211520,1055212043,EU -1055212044,1055212179,PT +1055212044,1055212131,PT +1055212132,1055212175,EU +1055212176,1055212179,PT 1055212180,1055212183,EU 1055212184,1055212247,PT 1055212248,1055212351,EU 1055212352,1055212415,PT -1055212416,1055212543,EU -1055212544,1055212799,PT -1055212800,1055213055,EU -1055213056,1055213307,PT +1055212416,1055213263,EU +1055213264,1055213307,PT 1055213308,1055213311,EU 1055213312,1055213319,PT 1055213320,1055213327,EU @@ -8463,8 +8923,8 @@ 1055213368,1055213455,PT 1055213456,1055213471,EU 1055213472,1055213567,PT -1055213568,1055213823,EU -1055213824,1055214239,PT +1055213568,1055214079,EU +1055214080,1055214239,PT 1055214240,1055214271,EU 1055214272,1055214847,PT 1055214848,1055215359,EU @@ -8486,15 +8946,15 @@ 1055218448,1055218463,EU 1055218464,1055218471,PT 1055218472,1055218479,EU -1055218480,1055219711,PT -1055219712,1055220223,EU +1055218480,1055218687,PT +1055218688,1055220223,EU 1055220224,1055220287,NL 1055220288,1055220351,EU 1055220352,1055220399,NL 1055220400,1055221503,EU 1055221504,1055221631,BE -1055221632,1055223039,EU -1055223040,1055223807,NL +1055221632,1055223551,EU +1055223552,1055223807,NL 1055223808,1055223903,EU 1055223904,1055223999,LU 1055224000,1055224063,EU @@ -8651,9 +9111,7 @@ 1056964608,1061227007,US 1061227008,1061227263,HT 1061227264,1061227774,BO -1061227775,1061478143,US -1061478144,1061478399,BO -1061478400,1061518015,US +1061227775,1061518015,US 1061518016,1061518047,A2 1061518048,1061558271,US 1061558272,1061559295,PK @@ -8661,13 +9119,7 @@ 1061588736,1061588991,GU 1061588992,1061633567,US 1061633568,1061633575,CA -1061633576,1061749152,US -1061749153,1061749182,PR -1061749183,1061749183,US -1061749184,1061749191,PR -1061749192,1061749199,US -1061749200,1061749231,PR -1061749232,1061762047,US +1061633576,1061762047,US 1061762048,1061762303,FR 1061762304,1061776479,US 1061776480,1061776639,CA @@ -8825,7 +9277,9 @@ 1064973056,1064973183,AU 1064973184,1065049471,US 1065049472,1065049535,CA -1065049536,1065519359,US +1065049536,1065517087,US +1065517088,1065517119,A2 +1065517120,1065519359,US 1065519360,1065519487,CA 1065519488,1065520895,US 1065520896,1065520911,CA @@ -8833,11 +9287,9 @@ 1065583424,1065583439,HK 1065583440,1065611263,US 1065611264,1065615359,PR -1065615360,1065806947,US -1065806948,1065806957,TH -1065806958,1065811967,US +1065615360,1065811967,US 1065811968,1065820159,CA -1065820160,1065873407,US +1065824256,1065873407,US 1065873408,1065877503,PR 1065877504,1065906175,US 1065906176,1065908223,KY @@ -9055,14 +9507,12 @@ 1071362112,1071362207,US 1071362208,1071362239,HK 1071362240,1071472639,US -1071472640,1071480831,CA +1071472640,1071476735,CA +1071476736,1071477247,US +1071477248,1071480831,CA 1071480832,1071985631,US 1071985632,1071985663,ML -1071985664,1072440639,US -1072440640,1072440671,CA -1072440672,1072445631,US -1072445632,1072445663,AU -1072445664,1072512951,US +1071985664,1072512951,US 1072512952,1072512959,CA 1072512960,1072619023,US 1072619024,1072619039,CA @@ -9107,7 +9557,7 @@ 1072785472,1072790015,US 1072790016,1072790031,JP 1072790032,1072922623,US -1072922624,1072922879,PH +1072922624,1072922879,CA 1072922880,1072923135,US 1072923136,1072923391,CA 1072923392,1072923903,US @@ -9130,34 +9580,33 @@ 1072928128,1072928255,US 1072928256,1072928263,CA 1072928264,1072928287,US -1072928288,1072928319,CA -1072928320,1072928447,US +1072928288,1072928383,CA +1072928384,1072928447,US 1072928448,1072929535,CA 1072929536,1072929791,US 1072929792,1072930047,CA 1072930048,1072930303,US 1072930304,1072931071,CA -1072931072,1072931327,US -1072931328,1072931583,CA +1072931072,1072931199,US +1072931200,1072931583,CA 1072931584,1072931839,SY 1072931840,1072932607,CA 1072932608,1072932863,NG 1072932864,1072934399,CA -1072934400,1072934783,US +1072934400,1072934655,US +1072934656,1072934783,CA 1072934784,1072934847,AU 1072934848,1072934879,CA 1072934880,1072934911,TW 1072934912,1072934943,CA 1072934944,1072934975,PH -1072934976,1072935135,US +1072934976,1072935039,CA +1072935040,1072935135,US 1072935136,1072935159,CA 1072935160,1072935167,US 1072935168,1072935679,CA 1072935680,1072935807,PH -1072935808,1072935871,CA -1072935872,1072935935,US -1072935936,1072936191,CA -1072936192,1072936447,US +1072935808,1072936447,CA 1072936448,1072936703,PH 1072936704,1072937215,US 1072937216,1072937471,IR @@ -9165,7 +9614,9 @@ 1072937728,1072938239,CA 1072938240,1072938495,VG 1072938496,1072938751,CA -1072938752,1072940031,US +1072938752,1072939007,US +1072939008,1072939519,CA +1072939520,1072940031,US 1072940032,1072955391,CA 1072955392,1073022975,US 1073022976,1073025791,HN @@ -9196,9 +9647,7 @@ 1073045504,1073047551,CO 1073047552,1073049599,PR 1073049600,1073053695,BS -1073053696,1073090269,US -1073090270,1073090300,PE -1073090301,1073091397,US +1073053696,1073091397,US 1073091398,1073091407,CH 1073091408,1073092335,US 1073092336,1073092351,CA @@ -9267,8 +9716,8 @@ 1073394192,1073394207,MX 1073394208,1073394239,CA 1073394240,1073394247,MX -1073394248,1073394255,US -1073394256,1073394271,MX +1073394248,1073394263,US +1073394264,1073394271,MX 1073394272,1073394279,US 1073394280,1073394287,MX 1073394288,1073394295,US @@ -9469,17 +9918,11 @@ 1075479568,1075479583,US 1075479584,1075479607,CA 1075479608,1075479615,US -1075479616,1075480463,CA -1075480464,1075480479,US -1075480480,1075480975,CA -1075480976,1075480991,US -1075480992,1075484047,CA +1075479616,1075484047,CA 1075484048,1075484063,US 1075484064,1075484263,CA 1075484264,1075484271,US -1075484272,1075484287,CA -1075484288,1075484415,US -1075484416,1075494911,CA +1075484272,1075494911,CA 1075494912,1075513151,US 1075513152,1075513183,KW 1075513184,1075532663,US @@ -9489,7 +9932,9 @@ 1075558912,1075576831,US 1075576832,1075576871,NO 1075576872,1075576879,GB -1075576880,1075576967,NO +1075576880,1075576951,NO +1075576952,1075576959,GB +1075576960,1075576967,NO 1075576968,1075576975,GB 1075576976,1075576991,NO 1075576992,1075577023,GB @@ -9539,7 +9984,9 @@ 1075582504,1075582511,NL 1075582512,1075582615,NO 1075582616,1075582623,NL -1075582624,1075583119,NO +1075582624,1075582975,NO +1075582976,1075583007,NL +1075583008,1075583119,NO 1075583120,1075583123,NL 1075583124,1075583127,NO 1075583128,1075583135,NL @@ -9664,7 +10111,9 @@ 1075988320,1075988479,CA 1075988480,1075988735,US 1075988736,1075988991,CA -1075988992,1075989247,US +1075988992,1075989119,US +1075989120,1075989215,CA +1075989216,1075989247,US 1075989248,1075989311,FI 1075989312,1075989359,CA 1075989360,1075989375,US @@ -9778,10 +10227,10 @@ 1076007264,1076007679,CA 1076007680,1076007935,US 1076007936,1076007967,CA -1076007968,1076008191,US -1076008192,1076008383,CA -1076008384,1076008447,US -1076008448,1076009631,CA +1076007968,1076007983,US +1076007984,1076008063,CA +1076008064,1076008191,US +1076008192,1076009631,CA 1076009632,1076009639,US 1076009640,1076009643,CA 1076009644,1076009663,US @@ -9792,7 +10241,9 @@ 1076009920,1076010687,CA 1076010688,1076010695,US 1076010696,1076011007,CA -1076011008,1076026023,US +1076011008,1076024307,US +1076024308,1076024315,CA +1076024316,1076026023,US 1076026024,1076026031,CA 1076026032,1076026367,US 1076026368,1076026495,CA @@ -9806,8 +10257,8 @@ 1076027296,1076027391,CA 1076027392,1076027399,US 1076027400,1076027407,CA -1076027408,1076027455,US -1076027456,1076027711,CA +1076027408,1076027423,US +1076027424,1076027711,CA 1076027712,1076027727,US 1076027728,1076027775,CA 1076027776,1076027791,US @@ -9906,22 +10357,23 @@ 1076049920,1076050175,IL 1076050176,1076166655,US 1076183040,1076183071,IN -1076183072,1076183103,US -1076183104,1076183135,CA -1076183136,1076183263,US -1076183264,1076183295,CA +1076183072,1076183231,US +1076183232,1076183295,CA 1076183296,1076183807,US 1076183808,1076184063,CA -1076184064,1076184127,US +1076184064,1076184095,VE +1076184096,1076184127,US 1076184128,1076184159,VE -1076184160,1076184191,US +1076184160,1076184191,PK 1076184192,1076184223,IN 1076184224,1076184255,US 1076184256,1076184287,BE 1076184288,1076184319,CA 1076184320,1076184575,US -1076184576,1076184703,SG -1076184704,1076184895,US +1076184576,1076184639,CA +1076184640,1076184703,SG +1076184704,1076184831,CA +1076184832,1076184895,US 1076184896,1076184927,FR 1076184928,1076184959,US 1076184960,1076184991,VE @@ -9935,7 +10387,9 @@ 1076185504,1076185535,DO 1076185536,1076185599,US 1076185600,1076185855,MY -1076185856,1076185983,US +1076185856,1076185919,US +1076185920,1076185951,CA +1076185952,1076185983,US 1076185984,1076186015,PK 1076186016,1076186047,US 1076186048,1076186079,IN @@ -9945,17 +10399,20 @@ 1076186368,1076186623,CA 1076186624,1076186751,US 1076186752,1076186783,CA -1076186784,1076187391,US +1076186784,1076186815,TW +1076186816,1076187391,US 1076187392,1076187647,CA 1076187648,1076187679,BE -1076187680,1076187775,US +1076187680,1076187743,US +1076187744,1076187775,CA 1076187776,1076187807,AU 1076187808,1076187903,US 1076187904,1076188159,CA 1076188160,1076188287,US 1076188288,1076188415,BE -1076188416,1076188671,MY -1076188672,1076189183,US +1076188416,1076188799,US +1076188800,1076188927,CA +1076188928,1076189183,US 1076189184,1076189215,VE 1076189216,1076189279,CA 1076189280,1076189311,US @@ -9969,24 +10426,35 @@ 1076190144,1076190175,BE 1076190176,1076190207,IN 1076190208,1076190463,CA -1076190464,1076190815,US +1076190464,1076190655,US +1076190656,1076190719,CA +1076190720,1076190783,US +1076190784,1076190815,CA 1076190816,1076190847,IN -1076190848,1076192255,US +1076190848,1076190913,US +1076190914,1076190945,IN +1076190946,1076191359,US +1076191360,1076191487,CA +1076191488,1076192063,US +1076192064,1076192191,CA +1076192192,1076192255,US 1076192256,1076192383,BE -1076192384,1076192767,US +1076192384,1076192639,US +1076192640,1076192767,CA 1076192768,1076192831,IN -1076192832,1076193023,US -1076193024,1076193055,GB +1076192832,1076192895,KR +1076192896,1076193055,US 1076193056,1076193087,AU 1076193088,1076193151,US 1076193152,1076193183,TR 1076193184,1076193247,US 1076193248,1076193279,CA -1076193280,1076194367,US +1076193280,1076193535,PK +1076193536,1076194367,US 1076194368,1076194399,IN 1076194400,1076194431,IL -1076194432,1076194495,US -1076194496,1076194527,BE +1076194432,1076194463,IN +1076194464,1076194527,BE 1076194528,1076194559,US 1076194560,1076194815,CA 1076194816,1076195071,US @@ -9996,28 +10464,33 @@ 1076195584,1076195871,US 1076195872,1076195903,BE 1076195904,1076195935,CA -1076195936,1076196095,US -1076196096,1076196383,CA -1076196384,1076196479,US +1076195936,1076195999,US +1076196000,1076196031,CN +1076196032,1076196063,CA +1076196064,1076196095,US +1076196096,1076196415,CA +1076196416,1076196479,US 1076196480,1076196511,FR -1076196512,1076196543,AT -1076196544,1076196641,US +1076196512,1076196575,AT +1076196576,1076196607,CA +1076196608,1076196641,US 1076196642,1076196671,BE 1076196672,1076196703,US 1076196704,1076196735,FR -1076196736,1076197119,US +1076196736,1076196863,US +1076196864,1076196991,IN +1076196992,1076197119,US 1076197120,1076197375,CA 1076197376,1076197631,US 1076197632,1076197663,BE -1076197664,1076198655,US +1076197664,1076198399,US +1076198400,1076198655,CA 1076198656,1076198911,AE 1076198912,1076218015,US 1076218016,1076218023,GB 1076218024,1076219407,US 1076219408,1076219415,GB -1076219416,1076281631,US -1076281632,1076281663,AT -1076281664,1076281695,US +1076219416,1076281695,US 1076281696,1076281727,TH 1076281728,1076282111,US 1076282112,1076282143,AU @@ -10741,7 +11214,9 @@ 1077452800,1077460991,JP 1077460992,1077469183,US 1077469184,1077477375,CA -1077477376,1077506047,US +1077477376,1077489855,US +1077489856,1077489919,GB +1077489920,1077506047,US 1077506048,1077510143,LS 1077510144,1077561327,US 1077561328,1077561343,AR @@ -10749,9 +11224,7 @@ 1077565504,1077565567,AR 1077565568,1077567487,US 1077567488,1077571583,A2 -1077571584,1077571839,US -1077571840,1077571967,CA -1077571968,1077626239,US +1077571584,1077626239,US 1077626240,1077626271,WS 1077626272,1077627167,US 1077627168,1077627199,EC @@ -10840,9 +11313,188 @@ 1077869760,1077869823,GR 1077869824,1077870335,US 1077870336,1077870591,CN -1077870592,1077963775,US -1077963776,1077964031,CA -1077964032,1077977087,US +1077870592,1077936137,US +1077936138,1077936141,CN +1077936142,1077936169,US +1077936170,1077936173,CA +1077936174,1077936177,GB +1077936178,1077936189,US +1077936190,1077936193,CA +1077936194,1077936201,US +1077936202,1077936205,GB +1077936206,1077936209,US +1077936210,1077936213,GR +1077936214,1077936225,US +1077936226,1077936229,IN +1077936230,1077936233,US +1077936234,1077936237,ES +1077936238,1077936257,US +1077936258,1077936261,AU +1077936262,1077936265,IN +1077936266,1077936273,US +1077936274,1077936277,BR +1077936278,1077936295,US +1077936296,1077936296,CA +1077936297,1077936297,US +1077936298,1077936301,NG +1077936302,1077936305,US +1077936306,1077936309,ZA +1077936310,1077936313,US +1077936314,1077936317,BR +1077936318,1077936321,US +1077936322,1077936325,GB +1077936326,1077936329,MX +1077936330,1077936345,US +1077936346,1077936349,PE +1077936350,1077936351,IN +1077936352,1077936365,US +1077936366,1077936369,NO +1077936370,1077936373,GB +1077936374,1077936377,US +1077936378,1077936381,IE +1077936382,1077936401,US +1077936402,1077936409,GB +1077936410,1077936413,CO +1077936414,1077936421,US +1077936422,1077936422,CA +1077936423,1077936426,US +1077936427,1077936429,TH +1077936430,1077936437,US +1077936438,1077936441,NO +1077936442,1077936445,TH +1077936446,1077936449,TW +1077936450,1077936453,US +1077936454,1077936457,PT +1077936458,1077936461,US +1077936462,1077936463,GB +1077936464,1077936465,US +1077936466,1077936469,IN +1077936470,1077936473,US +1077936474,1077936474,CA +1077936475,1077936475,US +1077936476,1077936477,GB +1077936478,1077936485,US +1077936486,1077936489,TR +1077936490,1077936493,FR +1077936494,1077936497,CN +1077936498,1077936501,US +1077936502,1077936505,AR +1077936506,1077936513,US +1077936514,1077936517,BR +1077936518,1077936521,US +1077936522,1077936525,IN +1077936526,1077936529,US +1077936530,1077936533,PH +1077936534,1077936545,US +1077936546,1077936549,MY +1077936550,1077936573,US +1077936574,1077936577,AR +1077936578,1077936585,US +1077936586,1077936589,GB +1077936590,1077936593,PH +1077936594,1077936597,GR +1077936598,1077936601,CA +1077936602,1077936605,TH +1077936606,1077936609,JO +1077936610,1077936621,US +1077936622,1077936622,AU +1077936623,1077936626,US +1077936627,1077936630,CH +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 +1077936819,1077936822,RS +1077936823,1077936826,LV +1077936827,1077936834,US +1077936835,1077936838,CL +1077936839,1077936842,TH +1077936843,1077936846,US +1077936847,1077936850,PK +1077936851,1077936854,GB +1077936855,1077936859,IN +1077936860,1077936879,US +1077936880,1077936883,IT +1077936884,1077936887,CO +1077936888,1077938949,US +1077938950,1077938969,CA +1077938970,1077939209,US +1077939210,1077939210,BE +1077939211,1077939461,US +1077939462,1077939465,CA +1077939466,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 +1077939974,1077939977,CL +1077939978,1077939981,US +1077939982,1077939985,MU +1077939986,1077939993,US +1077939994,1077939997,CN +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,1077977087,US 1077977088,1077985279,CA 1077985280,1077993471,US 1077993472,1078001663,CA @@ -10853,17 +11505,23 @@ 1078124544,1078128639,CA 1078128640,1078247423,US 1078247424,1078251519,CA -1078251520,1078280191,US +1078251520,1078252559,US +1078252560,1078252591,MX +1078252592,1078252639,US +1078252640,1078252655,MX +1078252656,1078253823,US +1078253824,1078253887,MX +1078253888,1078254847,US +1078254848,1078255359,MX +1078255360,1078280191,US 1078280192,1078280575,CA 1078280576,1078280591,US 1078280592,1078280639,CA -1078280640,1078280655,CR +1078280640,1078280655,US 1078280656,1078280671,CA 1078280672,1078280695,US -1078280696,1078280943,CA -1078280944,1078281071,US -1078281072,1078281079,CA -1078281080,1078281087,US +1078280696,1078280895,CA +1078280896,1078281087,US 1078281088,1078281279,CA 1078281280,1078281295,US 1078281296,1078281663,CA @@ -10888,16 +11546,13 @@ 1078283264,1078283264,US 1078283265,1078283375,CA 1078283376,1078283391,MX -1078283392,1078283407,CA -1078283408,1078283423,US +1078283392,1078283423,US 1078283424,1078283487,CA -1078283488,1078283495,US -1078283496,1078283551,CA +1078283488,1078283503,US +1078283504,1078283551,CA 1078283552,1078283583,US 1078283584,1078283647,CA -1078283648,1078283663,US -1078283664,1078283671,CA -1078283672,1078283679,US +1078283648,1078283679,US 1078283680,1078283687,CA 1078283688,1078283695,US 1078283696,1078283751,CA @@ -10905,21 +11560,19 @@ 1078283776,1078284031,CA 1078284032,1078284159,BS 1078284160,1078284255,CA -1078284256,1078284287,US -1078284288,1078284319,CA -1078284320,1078284351,US +1078284256,1078284351,US 1078284352,1078284367,CA 1078284368,1078284383,BV 1078284384,1078284399,US 1078284400,1078284687,CA 1078284688,1078284695,US 1078284696,1078284703,MX -1078284704,1078284991,CA +1078284704,1078284719,CA +1078284720,1078284735,US +1078284736,1078284991,CA 1078284992,1078285007,US 1078285008,1078285015,CA -1078285016,1078285023,US -1078285024,1078285031,CA -1078285032,1078285039,US +1078285016,1078285039,US 1078285040,1078285191,CA 1078285192,1078285215,US 1078285216,1078285231,CA @@ -10933,12 +11586,16 @@ 1078285304,1078285567,US 1078285568,1078285639,CA 1078285640,1078285647,US -1078285648,1078285695,CA +1078285648,1078285655,CA +1078285656,1078285663,US +1078285664,1078285695,CA 1078285696,1078285703,MX 1078285704,1078285711,US 1078285712,1078285919,CA 1078285920,1078285943,US -1078285944,1078286047,CA +1078285944,1078285951,CA +1078285952,1078286015,US +1078286016,1078286047,CA 1078286048,1078286079,US 1078286080,1078286111,CA 1078286112,1078286115,US @@ -10970,13 +11627,15 @@ 1078287184,1078287199,US 1078287200,1078287231,CA 1078287232,1078287247,US -1078287248,1078287295,CA -1078287296,1078287311,US +1078287248,1078287279,CA +1078287280,1078287311,US 1078287312,1078287327,CA 1078287328,1078287343,US 1078287344,1078287759,CA 1078287760,1078287767,US -1078287768,1078287839,CA +1078287768,1078287775,CA +1078287776,1078287807,US +1078287808,1078287839,CA 1078287840,1078287863,US 1078287864,1078288383,CA 1078288384,1078309695,US @@ -11075,7 +11734,9 @@ 1078456320,1078460415,CA 1078460416,1078517759,US 1078517760,1078525951,CA -1078525952,1078600639,US +1078525952,1078581311,US +1078581312,1078581327,CR +1078581328,1078600639,US 1078600640,1078600647,GB 1078600648,1078615679,US 1078615680,1078615711,GB @@ -11235,7 +11896,13 @@ 1078814136,1078814143,HK 1078814144,1078814399,US 1078814400,1078814415,CA -1078814416,1078956799,US +1078814416,1078895103,US +1078895104,1078895359,CN +1078895360,1078895967,US +1078895968,1078895983,CN +1078895984,1078945023,US +1078945024,1078945279,GB +1078945280,1078956799,US 1078956800,1078957055,GB 1078957056,1079320575,US 1079320576,1079320671,CA @@ -11291,21 +11958,20 @@ 1079354704,1079354711,CA 1079354712,1079355359,US 1079355360,1079355367,CA -1079355368,1079355903,US -1079355904,1079355939,CA -1079355940,1079355951,AU -1079355952,1079356415,CA -1079356416,1079356663,US +1079355368,1079355967,US +1079355968,1079355991,CA +1079355992,1079356663,US 1079356664,1079356671,CA 1079356672,1079377919,US 1079377920,1079378943,CA 1079378944,1079379711,US 1079379712,1079380927,CA -1079380928,1079381183,US -1079381184,1079381503,CA -1079381504,1079381599,US +1079380928,1079380991,US +1079380992,1079381567,CA +1079381568,1079381599,US 1079381600,1079381631,WS -1079381632,1079382015,US +1079381632,1079381759,CA +1079381760,1079382015,US 1079382016,1079382527,CA 1079382528,1079383039,US 1079383040,1079383295,VG @@ -11318,21 +11984,23 @@ 1079385472,1079385599,US 1079385600,1079385855,CA 1079385856,1079386111,SZ -1079386112,1079386623,US +1079386112,1079386623,CA 1079386624,1079386879,SG 1079386880,1079387135,EG 1079387136,1079387903,US 1079387904,1079388159,PH 1079388160,1079389439,CA -1079389440,1079389951,US +1079389440,1079389567,US +1079389568,1079389695,CA +1079389696,1079389951,US 1079389952,1079390719,CA 1079390720,1079391487,US 1079391488,1079391615,CA 1079391616,1079391679,US 1079391680,1079391743,CA 1079391744,1079392255,HT -1079392256,1079393279,CA -1079393280,1079394047,US +1079392256,1079393791,CA +1079393792,1079394047,US 1079394048,1079394063,CA 1079394064,1079394071,SG 1079394072,1079394079,CA @@ -11348,31 +12016,27 @@ 1079396096,1079396351,CA 1079396352,1079397375,MP 1079397376,1079397631,MH -1079397632,1079398399,US -1079398400,1079399583,CA +1079397632,1079399583,CA 1079399584,1079399599,US -1079399600,1079399935,CA -1079399936,1079400447,US +1079399600,1079400447,CA 1079400448,1079400511,FR 1079400512,1079400575,CA 1079400576,1079400639,US -1079400640,1079400703,CA -1079400704,1079400831,US +1079400640,1079400767,CA +1079400768,1079400831,US 1079400832,1079401215,CA 1079401216,1079401471,US -1079401472,1079401983,CA -1079401984,1079402495,US -1079402496,1079403007,CA -1079403008,1079403519,US -1079403520,1079403775,CA +1079401472,1079403775,CA 1079403776,1079403807,US -1079403808,1079403839,CA -1079403840,1079403935,US +1079403808,1079403903,CA +1079403904,1079403935,US 1079403936,1079403999,CA -1079404000,1079404799,US +1079404000,1079404031,US +1079404032,1079404543,CA +1079404544,1079404799,US 1079404800,1079405023,CA -1079405024,1079405247,US -1079405248,1079405407,CA +1079405024,1079405119,US +1079405120,1079405407,CA 1079405408,1079405439,BD 1079405440,1079405567,US 1079405568,1079407103,CA @@ -11391,43 +12055,31 @@ 1079410944,1079411199,CA 1079411200,1079411455,US 1079411456,1079411711,PK -1079411712,1079412735,CA -1079412736,1079413247,US -1079413248,1079413311,CA +1079411712,1079413311,CA 1079413312,1079413343,US -1079413344,1079414271,CA -1079414272,1079415039,US +1079413344,1079414783,CA +1079414784,1079415039,US 1079415040,1079415295,HN -1079415296,1079415551,CA -1079415552,1079416319,US -1079416320,1079419135,CA -1079419136,1079419903,US -1079419904,1079420159,CA -1079420160,1079420671,US -1079420672,1079421951,CA +1079415296,1079415807,CA +1079415808,1079416319,US +1079416320,1079421951,CA 1079421952,1079422207,US -1079422208,1079422463,CA -1079422464,1079423487,MZ -1079423488,1079423999,CA -1079424000,1079424767,MZ -1079424768,1079425279,US +1079422208,1079425023,CA +1079425024,1079425279,US 1079425280,1079425535,CA 1079425536,1079425551,US 1079425552,1079427071,CA 1079427072,1079427327,US 1079427328,1079427583,CA 1079427584,1079428095,PW -1079428096,1079429375,CA -1079429376,1079429887,US -1079429888,1079431679,CA +1079428096,1079431679,CA 1079431680,1079432191,ZM 1079432192,1079432703,CA 1079432704,1079432959,US 1079432960,1079433215,CA 1079433216,1079435263,CR 1079435264,1079435775,CO -1079435776,1079436799,HT -1079436800,1079437311,CA +1079435776,1079437311,CA 1079437312,1079439359,US 1079439360,1079442431,CA 1079442432,1079442687,US @@ -11447,13 +12099,12 @@ 1079576496,1079578623,PR 1079578624,1079585391,US 1079585392,1079585407,IN -1079585408,1079664639,US +1079585408,1079648255,US +1079656448,1079664639,US 1079664640,1079668735,CA 1079668736,1079827871,US 1079827872,1079827887,RU -1079827888,1079856639,US -1079856640,1079856895,IN -1079856896,1079857887,US +1079827888,1079857887,US 1079857888,1079857903,NZ 1079857904,1079861247,US 1079861248,1079865343,CA @@ -11467,10 +12118,12 @@ 1079946432,1079946463,CA 1079946464,1079953567,US 1079953568,1079953599,GB -1079953600,1079994367,US +1079953600,1079962879,US +1079962880,1079963135,GB +1079963136,1079994367,US 1079994368,1079996415,CA 1079996416,1080021999,US -1080022000,1080022007,CA +1080022000,1080022007,GT 1080022008,1080033279,US 1080033280,1080295423,CA 1080295424,1080722827,US @@ -11600,7 +12253,6 @@ 1080750612,1080820871,US 1080820872,1080820879,PR 1080820880,1080954879,US -1080955904,1080957183,US 1080957952,1080958207,A2 1080958208,1080958463,BH 1080958464,1080958719,A2 @@ -11642,9 +12294,7 @@ 1081369120,1081369151,CO 1081369152,1081369599,US 1081369600,1081370111,CO -1081370112,1081377055,US -1081377056,1081377071,VE -1081377072,1081377079,US +1081370112,1081377079,US 1081377080,1081377087,VE 1081377088,1081377119,US 1081377120,1081377135,VE @@ -11659,20 +12309,16 @@ 1081377824,1081377887,US 1081377888,1081377919,VE 1081377920,1081377935,US -1081377936,1081377999,VE -1081378000,1081378015,US +1081377936,1081377983,VE +1081377984,1081378015,US 1081378016,1081378047,VE -1081378048,1081378303,US -1081378304,1081378319,VE -1081378320,1081378375,US +1081378048,1081378375,US 1081378376,1081378399,VE 1081378400,1081378495,US 1081378496,1081378575,VE 1081378576,1081378607,US 1081378608,1081378655,VE -1081378656,1081378751,US -1081378752,1081378815,VE -1081378816,1081379327,US +1081378656,1081379327,US 1081379328,1081379839,VE 1081379840,1081385215,US 1081385216,1081385535,PA @@ -11681,9 +12327,7 @@ 1081385992,1081385999,US 1081386000,1081386015,PA 1081386016,1081386047,VE -1081386048,1081386623,US -1081386624,1081386687,PA -1081386688,1081387519,US +1081386048,1081387519,US 1081387520,1081388031,PA 1081388032,1081388127,US 1081388128,1081388143,PA @@ -11694,9 +12338,7 @@ 1081393408,1081393751,CL 1081393752,1081393759,US 1081393760,1081393783,CL -1081393784,1081393799,US -1081393800,1081393807,CL -1081393808,1081393831,US +1081393784,1081393831,US 1081393832,1081393839,CL 1081393840,1081393887,US 1081393888,1081393903,CL @@ -11706,13 +12348,23 @@ 1081397760,1081398783,CL 1081398784,1081399295,US 1081399296,1081401343,CL -1081401344,1081401391,AR +1081401344,1081401375,AR +1081401376,1081401383,US +1081401384,1081401391,AR 1081401392,1081401415,US -1081401416,1081401535,AR -1081401536,1081401567,US -1081401568,1081401735,AR -1081401736,1081401743,US -1081401744,1081402367,AR +1081401416,1081401471,AR +1081401472,1081401567,US +1081401568,1081401599,AR +1081401600,1081401615,US +1081401616,1081401735,AR +1081401736,1081401751,US +1081401752,1081401775,AR +1081401776,1081401791,US +1081401792,1081401807,AR +1081401808,1081401815,US +1081401816,1081401823,AR +1081401824,1081401855,US +1081401856,1081402367,AR 1081402368,1081402895,US 1081402896,1081403007,AR 1081403008,1081403055,US @@ -11731,8 +12383,8 @@ 1081403904,1081403967,AR 1081403968,1081404031,US 1081404032,1081404095,AR -1081404096,1081404991,US -1081404992,1081405119,AR +1081404096,1081405055,US +1081405056,1081405119,AR 1081405120,1081409791,US 1081409792,1081410047,PR 1081410048,1081410559,US @@ -11749,43 +12401,31 @@ 1081413584,1081413631,PR 1081413632,1081416191,US 1081416192,1081416447,PR -1081416448,1081419199,US -1081419200,1081419231,PR -1081419232,1081419263,US -1081419264,1081419391,PR +1081416448,1081419327,US +1081419328,1081419391,PR 1081419392,1081419423,US 1081419424,1081419431,PR 1081419432,1081419447,US 1081419448,1081419455,PR -1081419456,1081419487,US -1081419488,1081419519,PR -1081419520,1081419775,US +1081419456,1081419775,US 1081419776,1081420287,PR 1081420288,1081420319,US 1081420320,1081420351,PR -1081420352,1081420479,US -1081420480,1081420543,PR -1081420544,1081421183,US -1081421184,1081421215,PR -1081421216,1081442367,US +1081420352,1081442367,US 1081442368,1081442399,CL -1081442400,1081442463,US -1081442464,1081442495,CL -1081442496,1081442911,US +1081442400,1081442911,US 1081442912,1081442927,CL 1081442928,1081442959,US 1081442960,1081442967,CL 1081442968,1081443327,US -1081443328,1081444863,CL -1081444864,1081445303,US -1081445304,1081445311,CL -1081445312,1081445375,US -1081445376,1081450495,CL -1081450496,1081460735,US +1081443328,1081444351,CL +1081444352,1081445375,US +1081445376,1081446399,CL +1081446400,1081460735,US 1081460736,1081462783,PA 1081462784,1081462815,CO -1081462816,1081462911,BR -1081462912,1081462919,US +1081462816,1081462847,BR +1081462848,1081462919,US 1081462920,1081462927,BR 1081462928,1081463231,US 1081463232,1081463247,BR @@ -11902,13 +12542,33 @@ 1081589112,1081589759,US 1081589760,1081593855,BB 1081593856,1081597951,CA -1081597952,1081608703,US -1081608704,1081608959,CA -1081608960,1081609823,US +1081597952,1081609823,US 1081609824,1081609831,LK 1081609832,1081609887,US 1081609888,1081609919,IN -1081609920,1081616831,US +1081609920,1081611415,US +1081611416,1081611423,IN +1081611424,1081611511,US +1081611512,1081611519,IN +1081611520,1081611815,US +1081611816,1081611823,IN +1081611824,1081611831,US +1081611832,1081611839,IN +1081611840,1081611847,US +1081611848,1081611855,IN +1081611856,1081611903,US +1081611904,1081611911,IN +1081611912,1081611919,US +1081611920,1081611927,IN +1081611928,1081611935,LK +1081611936,1081611943,IN +1081611944,1081612015,US +1081612016,1081612023,IN +1081612024,1081612159,US +1081612160,1081612191,IN +1081612192,1081612663,US +1081612664,1081612671,IN +1081612672,1081616831,US 1081616832,1081616839,GB 1081616840,1081618951,US 1081618952,1081618959,GB @@ -11916,9 +12576,7 @@ 1081803288,1081803295,PR 1081803296,1081803895,US 1081803896,1081803903,PR -1081803904,1081832663,US -1081832664,1081832671,PR -1081832672,1081862639,US +1081803904,1081862639,US 1081862640,1081862647,PR 1081862648,1081872663,US 1081872664,1081872671,FI @@ -11946,9 +12604,7 @@ 1082093680,1082093695,AU 1082093696,1082097055,US 1082097056,1082097071,CA -1082097072,1082097143,US -1082097144,1082097151,AU -1082097152,1082138623,US +1082097072,1082138623,US 1082138624,1082140671,A2 1082140672,1082314751,US 1082314752,1082315263,CA @@ -11966,9 +12622,7 @@ 1082348400,1082348407,BE 1082348408,1082348415,US 1082348416,1082348423,GB -1082348424,1082348439,US -1082348440,1082348447,SE -1082348448,1082348471,US +1082348424,1082348471,US 1082348472,1082348479,GB 1082348480,1082348735,US 1082348736,1082348799,NL @@ -11988,9 +12642,7 @@ 1082349776,1082349783,IT 1082349784,1082349815,US 1082349816,1082349823,RU -1082349824,1082350623,US -1082350624,1082350639,IT -1082350640,1082350655,US +1082349824,1082350655,US 1082350656,1082350671,IT 1082350672,1082350911,US 1082350912,1082350943,RU @@ -12016,15 +12668,17 @@ 1083396096,1083400191,BM 1083400192,1083417727,US 1083417728,1083417791,CA -1083417792,1083421695,US -1083421696,1083421759,AU -1083421760,1083424511,US -1083424512,1083424767,AU -1083424768,1083437055,US +1083417792,1083437055,US 1083437056,1083441151,CA 1083441152,1083486911,US 1083486912,1083486943,IS -1083486944,1083621375,US +1083486944,1083618602,US +1083618603,1083618611,DE +1083618612,1083618714,US +1083618715,1083618725,BR +1083618726,1083619954,US +1083619955,1083619986,CY +1083619987,1083621375,US 1083621376,1083637759,BS 1083637760,1083686911,US 1083686912,1083703295,CA @@ -12160,8 +12814,8 @@ 1086022208,1086022303,US 1086022304,1086022367,CA 1086022368,1086022591,US -1086022592,1086022655,CA -1086022656,1086023175,US +1086022592,1086022623,CA +1086022624,1086023175,US 1086023176,1086023183,GB 1086023184,1086023215,US 1086023216,1086023223,CA @@ -12175,15 +12829,15 @@ 1086027392,1086027407,IT 1086027408,1086027423,US 1086027424,1086027455,VN -1086027456,1086028663,US +1086027456,1086028031,US +1086028032,1086028287,PA +1086028288,1086028663,US 1086028664,1086028671,BR 1086028672,1086028751,US 1086028752,1086028759,BR 1086028760,1086029567,US 1086029568,1086029599,BO -1086029600,1086029703,US -1086029704,1086029719,GB -1086029720,1086029727,US +1086029600,1086029727,US 1086029728,1086029743,CA 1086029744,1086309887,US 1086309888,1086310143,AU @@ -12307,9 +12961,7 @@ 1088020360,1088020367,PR 1088020368,1088030663,US 1088030664,1088030671,PR -1088030672,1088031839,US -1088031840,1088031847,PR -1088031848,1088031943,US +1088030672,1088031943,US 1088031944,1088031951,PR 1088031952,1088091583,US 1088091584,1088091591,PR @@ -12393,17 +13045,13 @@ 1089154969,1089154977,IN 1089154978,1089155011,US 1089155012,1089155031,TR -1089155032,1089156607,US -1089156608,1089156863,CA -1089156864,1089167359,US +1089155032,1089167359,US 1089167360,1089171455,CA 1089171456,1089171967,A2 1089171968,1089172735,US 1089172736,1089172839,A2 1089172840,1089172863,US -1089172864,1089172879,A2 -1089172880,1089172887,US -1089172888,1089172895,A2 +1089172864,1089172895,A2 1089172896,1089172927,US 1089172928,1089172983,A2 1089172984,1089172991,US @@ -12422,9 +13070,7 @@ 1089192592,1089192599,IT 1089192600,1089196623,CA 1089196624,1089196639,US -1089196640,1089197311,CA -1089197312,1089197567,AU -1089197568,1089200127,CA +1089196640,1089200127,CA 1089200128,1089200751,US 1089200752,1089200783,CA 1089200784,1089203439,US @@ -12556,11 +13202,13 @@ 1090391303,1090391359,CA 1090391360,1090391360,US 1090391361,1090396159,CA -1090396160,1090424095,US -1090424096,1090424111,FI -1090424112,1090424287,US -1090424288,1090424303,FI -1090424304,1090424831,US +1090396160,1090423759,US +1090423760,1090423783,FI +1090423784,1090424095,US +1090424096,1090424127,FI +1090424128,1090424287,US +1090424288,1090424319,FI +1090424320,1090424831,US 1090424832,1090428927,CA 1090428928,1090445311,US 1090445312,1090447359,CA @@ -12568,13 +13216,9 @@ 1090447488,1090448127,CA 1090448128,1090448255,US 1090448256,1090453503,CA -1090453504,1090495487,US -1090495488,1090495743,NO -1090495744,1090497903,US +1090453504,1090497903,US 1090497904,1090497919,AU -1090497920,1090499583,US -1090499584,1090499839,NO -1090499840,1091444735,US +1090497920,1091444735,US 1091444736,1091445247,A2 1091445248,1091683357,US 1091683358,1091683367,GB @@ -12659,9 +13303,7 @@ 1091797264,1091797279,IT 1091797280,1091797855,US 1091797856,1091797871,IT -1091797872,1091797999,US -1091798000,1091798015,DE -1091798016,1091798639,US +1091797872,1091798639,US 1091798640,1091798647,CN 1091798648,1091798783,US 1091798784,1091799039,CN @@ -12681,17 +13323,15 @@ 1091804264,1091804271,BM 1091804272,1091806719,US 1091806720,1091806847,IT -1091806848,1091807087,US -1091807088,1091807095,MY -1091807096,1091807231,US +1091806848,1091807231,US 1091807232,1091807487,CA 1091807488,1091807999,US 1091808000,1091808511,CA 1091808512,1091809375,US 1091809376,1091809391,GB 1091809392,1091809407,US -1091809408,1091809439,JP -1091809440,1091811839,US +1091809408,1091809471,JP +1091809472,1091811839,US 1091811840,1091812095,IT 1091812096,1091812351,US 1091812352,1091812607,CN @@ -12769,7 +13409,9 @@ 1093091328,1093107711,US 1093107712,1093107823,CA 1093107824,1093107839,US -1093107840,1093109367,CA +1093107840,1093108223,CA +1093108224,1093108479,US +1093108480,1093109367,CA 1093109368,1093109375,US 1093109376,1093109879,CA 1093109880,1093109887,US @@ -12783,7 +13425,9 @@ 1093110832,1093110911,US 1093110912,1093110927,CA 1093110928,1093110935,US -1093110936,1093111711,CA +1093110936,1093111039,CA +1093111040,1093111295,US +1093111296,1093111711,CA 1093111712,1093111727,US 1093111728,1093111743,CA 1093111744,1093111759,US @@ -12798,7 +13442,13 @@ 1093112416,1093112431,CA 1093112432,1093112479,US 1093112480,1093112527,CA -1093112528,1093114623,US +1093112528,1093112855,US +1093112856,1093112863,CA +1093112864,1093112895,US +1093112896,1093112911,CA +1093112912,1093113087,US +1093113088,1093113119,CA +1093113120,1093114623,US 1093114624,1093114679,CA 1093114680,1093114703,US 1093114704,1093114711,CA @@ -12876,8 +13526,8 @@ 1093122784,1093122791,CA 1093122792,1093122799,US 1093122800,1093122807,CA -1093122808,1093122815,US -1093122816,1093123839,CA +1093122808,1093123071,US +1093123072,1093123839,CA 1093123840,1093123903,US 1093123904,1093123935,AN 1093123936,1093123943,US @@ -13001,7 +13651,13 @@ 1093740096,1093740159,JP 1093740160,1093740167,US 1093740168,1093740191,CN -1093740192,1093740335,US +1093740192,1093740223,US +1093740224,1093740239,CN +1093740240,1093740247,US +1093740248,1093740255,HK +1093740256,1093740271,US +1093740272,1093740279,CN +1093740280,1093740335,US 1093740336,1093740351,SG 1093740352,1093740415,JP 1093740416,1093741599,US @@ -13019,9 +13675,9 @@ 1093746880,1093746943,DE 1093746944,1093748799,US 1093748800,1093748863,CN -1093748864,1094319583,US -1094319584,1094319599,CA -1094319600,1094549687,US +1093748864,1093753111,US +1093753112,1093753119,CN +1093753120,1094549687,US 1094549688,1094549695,CA 1094549696,1094549783,US 1094549784,1094549791,AU @@ -13522,7 +14178,9 @@ 1096548352,1096810495,CA 1096810496,1096884223,US 1096884224,1096888319,CA -1096888320,1096925183,US +1096888320,1096890879,US +1096890880,1096891135,GB +1096891136,1096925183,US 1096925184,1096941567,CA 1096941568,1096942679,US 1096942680,1096942687,IE @@ -13548,9 +14206,7 @@ 1096960768,1096960895,GB 1096960896,1096961023,US 1096961024,1096961151,GB -1096961152,1096964119,US -1096964120,1096964127,GB -1096964128,1096964263,US +1096961152,1096964263,US 1096964264,1096964271,IN 1096964272,1096968127,US 1096968128,1096968159,CA @@ -13589,24 +14245,12 @@ 1097729152,1097729167,US 1097729168,1097730847,CA 1097730848,1097730855,US -1097730856,1097730919,CA -1097730920,1097730927,US -1097730928,1097731447,CA +1097730856,1097731447,CA 1097731448,1097731455,GB 1097731456,1097736191,CA 1097736192,1097768959,US 1097768960,1097777151,CA -1097777152,1097798495,US -1097798496,1097798527,CA -1097798528,1097799167,US -1097799168,1097799199,CA -1097799200,1097799231,US -1097799232,1097799423,CA -1097799424,1097799679,US -1097799680,1097799711,CA -1097799712,1097799775,US -1097799776,1097799871,CA -1097799872,1097800959,US +1097777152,1097800959,US 1097800960,1097800991,CY 1097800992,1097801183,US 1097801184,1097801215,DE @@ -13782,12 +14426,17 @@ 1101983232,1101983743,AN 1101983744,1102004223,US 1102004224,1102004479,IN -1102004480,1102005503,US +1102004480,1102004735,US +1102004736,1102004991,IN +1102004992,1102005247,US +1102005248,1102005503,CA 1102005504,1102005759,PK 1102005760,1102005823,BE 1102005824,1102006271,US 1102006272,1102006527,CA -1102006528,1102007599,US +1102006528,1102007295,US +1102007296,1102007551,PK +1102007552,1102007599,US 1102007600,1102007615,AR 1102007616,1102007679,US 1102007680,1102007695,IN @@ -13799,7 +14448,10 @@ 1102008096,1102008103,CA 1102008104,1102008159,US 1102008160,1102008167,GB -1102008168,1102008639,US +1102008168,1102008223,US +1102008224,1102008231,CA +1102008232,1102008607,US +1102008608,1102008639,CA 1102008640,1102008671,BE 1102008672,1102008735,US 1102008736,1102008767,BE @@ -13809,8 +14461,7 @@ 1102010624,1102010879,PK 1102010880,1102011647,US 1102011648,1102011663,VE -1102011664,1102011679,GB -1102011680,1102011743,US +1102011664,1102011743,US 1102011744,1102011759,TR 1102011760,1102011855,US 1102011856,1102011871,CR @@ -13822,13 +14473,19 @@ 1102012976,1102012991,RU 1102012992,1102013167,US 1102013168,1102013183,VE -1102013184,1102016255,US +1102013184,1102014271,US +1102014272,1102014335,IN +1102014336,1102014399,CA +1102014400,1102016255,US 1102016256,1102016287,AR -1102016288,1102019583,US +1102016288,1102016351,US +1102016352,1102016383,MY +1102016384,1102019583,US 1102019584,1102019711,IN 1102019712,1102389247,US 1102389248,1102393343,CA -1102393344,1102446591,US +1102393344,1102397439,US +1102413824,1102446591,US 1102446592,1102448383,HN 1102448384,1102449151,US 1102449152,1102449407,SV @@ -14018,16 +14675,14 @@ 1107247104,1107275775,US 1107275776,1107279871,CA 1107279872,1107288063,US -1107288064,1107296255,CA +1107288064,1107292159,CA 1107296256,1107701759,US 1107701760,1107705855,CA 1107705856,1107800063,US 1107800064,1107800319,CA 1107800320,1107801367,US 1107801368,1107801375,CA -1107801376,1107805695,US -1107805696,1107805951,TR -1107805952,1107808842,US +1107801376,1107808842,US 1107808843,1107808846,PE 1107808847,1107808877,US 1107808878,1107808881,PE @@ -14198,8 +14853,7 @@ 1109705824,1109705839,CD 1109705840,1109705855,US 1109705856,1109705983,CD -1109705984,1109706239,HT -1109706240,1109707007,US +1109705984,1109707007,US 1109707008,1109707263,JM 1109707264,1109707519,US 1109707520,1109707775,MW @@ -14226,8 +14880,8 @@ 1109902512,1109902527,CY 1109902528,1109918463,US 1109918464,1109918719,GB -1109918720,1109919487,US -1109919488,1109919999,GB +1109918720,1109919743,US +1109919744,1109919999,GB 1109920000,1109923135,US 1109923136,1109923151,BG 1109923152,1109923183,US @@ -14324,7 +14978,9 @@ 1110458848,1110458879,US 1110458880,1110458927,CA 1110458928,1110458943,US -1110458944,1110459071,CA +1110458944,1110459007,CA +1110459008,1110459023,US +1110459024,1110459071,CA 1110459072,1110459087,US 1110459088,1110459151,CA 1110459152,1110459167,US @@ -14410,16 +15066,16 @@ 1110870816,1110870847,HK 1110870848,1110870919,US 1110870920,1110870927,JP -1110870928,1110921215,US +1110870928,1110887423,US +1110887424,1110887679,IE +1110887680,1110921215,US 1110925312,1110929407,US 1110929408,1110933503,BM 1110933504,1111195647,US 1111195648,1111212031,CA 1111212032,1111228415,US 1111228416,1111244799,AR -1111244800,1111472127,US -1111472128,1111472383,AU -1111472384,1111888905,US +1111244800,1111888905,US 1111888906,1111888915,IN 1111888916,1111900223,US 1111900224,1111900287,NL @@ -14501,9 +15157,7 @@ 1114054656,1114062847,CA 1114062848,1114095615,US 1114095616,1114103807,CA -1114103808,1114163967,US -1114163968,1114164479,VI -1114164480,1114170095,US +1114103808,1114170095,US 1114170096,1114170111,CA 1114170112,1114505215,US 1114505216,1114507263,CA @@ -14514,7 +15168,7 @@ 1114511360,1114511871,US 1114511872,1114513407,CA 1114513408,1114515455,SA -1114515456,1114517503,GU +1114515456,1114517503,US 1114517504,1114520063,CA 1114520064,1114520319,PH 1114520320,1114520575,US @@ -14527,9 +15181,7 @@ 1114533376,1114533887,ZA 1114533888,1114537983,AO 1114537984,1114550271,CA -1114550272,1114623999,US -1114624000,1114625023,NZ -1114625024,1114627071,US +1114550272,1114627071,US 1114627072,1114628095,NZ 1114628096,1114653951,US 1114653952,1114653983,MO @@ -14570,9 +15222,7 @@ 1114881344,1114881407,CY 1114881408,1114881471,US 1114881472,1114881535,CY -1114881536,1114881743,US -1114881744,1114881759,CA -1114881760,1114930175,US +1114881536,1114930175,US 1114930176,1114930303,GB 1114930304,1114966815,US 1114966816,1114966831,GB @@ -14655,9 +15305,7 @@ 1115698432,1115698687,DO 1115698688,1115698783,US 1115698784,1115698791,CO -1115698792,1115698943,US -1115698944,1115698951,CA -1115698952,1115698983,US +1115698792,1115698983,US 1115698984,1115698991,CO 1115698992,1115699903,US 1115699904,1115699911,CA @@ -14667,9 +15315,7 @@ 1115700224,1115700479,DO 1115700480,1115700735,US 1115700736,1115700743,CA -1115700744,1115700791,US -1115700792,1115700799,CA -1115700800,1115705343,US +1115700744,1115705343,US 1115705344,1115709439,CA 1115709440,1115783167,US 1115783168,1115784599,CA @@ -14939,8 +15585,8 @@ 1117417280,1117417343,US 1117417344,1117418655,CA 1117418656,1117418671,US -1117418672,1117419007,CA -1117419008,1117419519,US +1117418672,1117419263,CA +1117419264,1117419519,US 1117419520,1117419775,CA 1117419776,1117420543,US 1117420544,1117421055,CA @@ -15028,12 +15674,15 @@ 1118031760,1118031799,US 1118031800,1118031871,CA 1118031872,1118126079,US -1118126080,1118126591,CA -1118126592,1118126847,US +1118126080,1118126719,CA +1118126720,1118126847,US 1118126848,1118127231,CA 1118127232,1118127359,US 1118127360,1118127615,CA -1118127616,1118128383,US +1118127616,1118128191,US +1118128192,1118128255,MY +1118128256,1118128319,CA +1118128320,1118128383,MY 1118128384,1118128639,CA 1118128640,1118129151,US 1118129152,1118129663,CA @@ -15059,12 +15708,17 @@ 1118134912,1118134975,CA 1118134976,1118135007,US 1118135008,1118135039,IN -1118135040,1118135647,US +1118135040,1118135567,US +1118135568,1118135583,CA +1118135584,1118135615,US +1118135616,1118135631,TZ +1118135632,1118135647,US 1118135648,1118135663,CA -1118135664,1118135791,US -1118135792,1118135807,ID +1118135664,1118135807,US 1118135808,1118136191,CA -1118136192,1118136831,US +1118136192,1118136319,US +1118136320,1118136351,CA +1118136352,1118136831,US 1118136832,1118136863,IN 1118136864,1118136895,BE 1118136896,1118136927,US @@ -15077,15 +15731,24 @@ 1118137280,1118137311,FR 1118137312,1118138559,US 1118138560,1118138591,AU -1118138592,1118139903,US +1118138592,1118138623,FR +1118138624,1118138879,US +1118138880,1118139135,CA +1118139136,1118139903,US 1118139904,1118140415,CA -1118140416,1118140735,US +1118140416,1118140703,US +1118140704,1118140735,IN 1118140736,1118140767,AU -1118140768,1118141183,US +1118140768,1118140831,US +1118140832,1118140895,VE +1118140896,1118141183,US 1118141184,1118141439,CA 1118141440,1118141695,US 1118141696,1118141951,CA -1118141952,1118151215,US +1118141952,1118141967,CN +1118141968,1118142063,US +1118142064,1118142079,IN +1118142080,1118151215,US 1118151216,1118151231,TT 1118151232,1118151391,US 1118151392,1118151407,PR @@ -15138,7 +15801,9 @@ 1118155184,1118155199,CA 1118155200,1118155215,US 1118155216,1118155231,PA -1118155232,1118156319,US +1118155232,1118155999,US +1118156000,1118156015,GT +1118156016,1118156319,US 1118156320,1118156335,PE 1118156336,1118156399,US 1118156400,1118156415,VE @@ -15183,7 +15848,8 @@ 1118476896,1118477535,CA 1118477536,1118477543,US 1118477544,1118478335,CA -1118478336,1118789783,US +1118478336,1118502911,US +1118568448,1118789783,US 1118789784,1118789791,BB 1118789792,1118790351,US 1118790352,1118790367,GB @@ -15191,12 +15857,10 @@ 1118791552,1118791567,LU 1118791568,1118791599,US 1118791600,1118791615,ES -1118791616,1118792703,US -1118792704,1118792831,JM -1118792832,1118792895,US -1118792896,1118793151,JM -1118793152,1118793279,US -1118793280,1118793727,JM +1118791616,1118792815,US +1118792816,1118792831,DO +1118792832,1118793471,US +1118793472,1118793727,CO 1118793728,1118793823,US 1118793824,1118793839,CA 1118793840,1118793935,US @@ -15409,8 +16073,7 @@ 1118974128,1118974135,US 1118974136,1118974207,EC 1118974208,1118974215,US -1118974216,1118975231,A2 -1118975232,1118975487,NI +1118974216,1118975487,A2 1118975488,1118975743,KE 1118975744,1118975999,A2 1118976000,1118976255,GB @@ -15604,8 +16267,7 @@ 1118992736,1118992743,SA 1118992744,1118992767,A2 1118992768,1118992839,US -1118992840,1118993919,A2 -1118993920,1118994431,GY +1118992840,1118994431,A2 1118994432,1119023735,US 1119023736,1119023743,UY 1119023744,1119109119,US @@ -15631,9 +16293,7 @@ 1119167896,1119167903,CA 1119167904,1119168023,US 1119168024,1119168031,CA -1119168032,1119168055,US -1119168056,1119168063,MX -1119168064,1119168183,US +1119168032,1119168183,US 1119168184,1119168191,CA 1119168192,1119168687,US 1119168688,1119168695,CA @@ -15729,16 +16389,13 @@ 1119469568,1119477759,CA 1119477760,1119486623,US 1119486624,1119486631,AU -1119486632,1119490015,US -1119490016,1119490047,IE -1119490048,1119490495,US +1119486632,1119490495,US 1119490496,1119490527,GI 1119490528,1119502335,US 1119502336,1119510527,CA 1119510528,1119558143,US 1119558144,1119558655,PR 1119558656,1119567871,US -1119567872,1119571967,CA 1119571968,1119580159,US 1119580160,1119584255,CA 1119584256,1119999935,US @@ -15797,18 +16454,17 @@ 1120299264,1120299519,US 1120299520,1120300799,PK 1120300800,1120301055,US -1120301056,1120306175,CA -1120306176,1120306943,PH +1120301056,1120306687,CA +1120306688,1120306943,PH 1120306944,1120307199,US 1120307200,1120307967,EC 1120307968,1120308223,PH -1120308224,1120309247,HT -1120309248,1120310015,CA +1120308224,1120310015,CA 1120310016,1120310783,PH 1120310784,1120311807,CA 1120311808,1120312063,US 1120312064,1120312447,PH -1120312448,1120312575,US +1120312448,1120312575,CA 1120312576,1120312831,PH 1120312832,1120313343,CA 1120313344,1120313599,US @@ -15818,7 +16474,9 @@ 1120321536,1120346111,US 1120346112,1120350207,CA 1120350208,1120370687,US -1120370688,1120371511,CA +1120370688,1120371487,CA +1120371488,1120371503,US +1120371504,1120371511,CA 1120371512,1120371519,US 1120371520,1120371647,CA 1120371648,1120371651,US @@ -15828,7 +16486,9 @@ 1120372080,1120372223,US 1120372224,1120372479,CA 1120372480,1120372735,US -1120372736,1120374047,CA +1120372736,1120373423,CA +1120373424,1120373503,US +1120373504,1120374047,CA 1120374048,1120374063,US 1120374064,1120374271,CA 1120374272,1120374303,US @@ -15837,10 +16497,8 @@ 1120374416,1120374479,CA 1120374480,1120374487,US 1120374488,1120374511,CA -1120374512,1120374527,US -1120374528,1120375231,CA -1120375232,1120375239,US -1120375240,1120375243,CA +1120374512,1120374783,US +1120374784,1120375243,CA 1120375244,1120375263,US 1120375264,1120376063,CA 1120376064,1120376079,US @@ -15876,7 +16534,9 @@ 1120378920,1120378927,US 1120378928,1120379039,CA 1120379040,1120379071,PA -1120379072,1120380027,CA +1120379072,1120379167,CA +1120379168,1120379183,US +1120379184,1120380027,CA 1120380028,1120380031,US 1120380032,1120380095,CA 1120380096,1120380127,US @@ -15900,8 +16560,8 @@ 1120381120,1120382231,CA 1120382232,1120382239,US 1120382240,1120382271,CA -1120382272,1120382335,US -1120382336,1120382431,CA +1120382272,1120382367,US +1120382368,1120382431,CA 1120382432,1120382463,US 1120382464,1120382975,CA 1120382976,1120383263,US @@ -15923,7 +16583,9 @@ 1120385144,1120385151,US 1120385152,1120385183,GB 1120385184,1120385535,CA -1120385536,1120485759,US +1120385536,1120386559,US +1120386560,1120386815,CA +1120386816,1120485759,US 1120485760,1120485887,CA 1120485888,1120486079,US 1120486080,1120486143,IN @@ -15938,9 +16600,7 @@ 1120487392,1120487423,BE 1120487424,1120487679,CA 1120487680,1120487935,US -1120487936,1120488191,CA -1120488192,1120488447,US -1120488448,1120488703,CA +1120487936,1120488703,CA 1120488704,1120488767,US 1120488768,1120488799,VE 1120488800,1120488831,IL @@ -15952,8 +16612,7 @@ 1120489344,1120489471,US 1120489472,1120489727,CA 1120489728,1120489983,US -1120489984,1120490111,SG -1120490112,1120490751,CA +1120489984,1120490751,CA 1120490752,1120490783,GB 1120490784,1120491007,US 1120491008,1120491775,CA @@ -15970,7 +16629,9 @@ 1120493824,1120494079,CA 1120494080,1120494335,US 1120494336,1120494591,CA -1120494592,1120495359,US +1120494592,1120494975,US +1120494976,1120495039,CA +1120495040,1120495359,US 1120495360,1120495615,CA 1120495616,1120495743,US 1120495744,1120495871,SG @@ -15980,20 +16641,21 @@ 1120496288,1120496385,US 1120496386,1120496638,CA 1120496639,1120496639,US -1120496640,1120497023,CA -1120497024,1120497151,IN +1120496640,1120497151,CA 1120497152,1120497183,BE 1120497184,1120497215,US 1120497216,1120497247,BE -1120497248,1120497375,US +1120497248,1120497311,US +1120497312,1120497343,IN +1120497344,1120497375,US 1120497376,1120497663,CA 1120497664,1120497791,US 1120497792,1120497919,AU 1120497920,1120497983,US 1120497984,1120498013,BE 1120498014,1120498143,US -1120498144,1120498175,CA -1120498176,1120498943,US +1120498144,1120498303,CA +1120498304,1120498943,US 1120498944,1120499199,CA 1120499200,1120499487,US 1120499488,1120499519,CA @@ -16015,9 +16677,7 @@ 1120568640,1120568671,CA 1120568672,1120575167,US 1120575168,1120575199,CA -1120575200,1120616807,US -1120616808,1120616815,CA -1120616816,1120641023,US +1120575200,1120641023,US 1120641024,1120657407,CA 1120657408,1120735487,US 1120735488,1120735743,BB @@ -16115,15 +16775,14 @@ 1121247504,1121247511,AW 1121247512,1121247519,VG 1121247520,1121247527,BZ -1121247528,1121247535,GI +1121247528,1121247535,CA 1121247536,1121247543,BZ 1121247544,1121247551,CA 1121247552,1121247559,VG 1121247560,1121247567,CA 1121247568,1121247583,PA 1121247584,1121247591,CY -1121247592,1121247615,CA -1121247616,1121247631,BZ +1121247592,1121247631,CA 1121247632,1121247639,AW 1121247640,1121247647,VG 1121247648,1121247663,US @@ -16153,7 +16812,7 @@ 1121248320,1121248335,CA 1121248336,1121248343,VG 1121248344,1121248351,BZ -1121248352,1121248367,CY +1121248352,1121248367,MT 1121248368,1121248383,CA 1121248384,1121248399,VG 1121248400,1121248407,CA @@ -16162,8 +16821,7 @@ 1121248448,1121248495,BZ 1121248496,1121248783,CA 1121248784,1121248799,VG -1121248800,1121248831,GI -1121248832,1121248863,CA +1121248800,1121248863,CA 1121248864,1121248879,VG 1121248880,1121248911,CA 1121248912,1121248919,BZ @@ -16171,8 +16829,7 @@ 1121248960,1121248983,CA 1121248984,1121248991,AW 1121248992,1121249023,VG -1121249024,1121249279,CA -1121249280,1121249375,SE +1121249024,1121249375,CA 1121249376,1121249383,VG 1121249384,1121249407,CA 1121249408,1121249439,AG @@ -16200,7 +16857,9 @@ 1121250208,1121250239,CA 1121250240,1121250303,GB 1121250304,1121250815,BZ -1121250816,1121250879,AG +1121250816,1121250831,AG +1121250832,1121250839,BZ +1121250840,1121250879,AG 1121250880,1121250911,CA 1121250912,1121250927,VG 1121250928,1121250935,CA @@ -16211,16 +16870,14 @@ 1121251048,1121251055,AW 1121251056,1121251071,CA 1121251072,1121251079,GB -1121251080,1121251087,CA -1121251088,1121251103,CY -1121251104,1121251135,CA +1121251080,1121251087,CY +1121251088,1121251135,CA 1121251136,1121251167,AG 1121251168,1121251199,VG 1121251200,1121251263,AW 1121251264,1121251271,CA 1121251272,1121251279,KN -1121251280,1121251287,CA -1121251288,1121251295,MU +1121251280,1121251295,CA 1121251296,1121251311,IM 1121251312,1121251583,CA 1121251584,1121251591,BZ @@ -16239,7 +16896,8 @@ 1121251840,1121251847,BZ 1121251848,1121251871,CA 1121251872,1121251887,VG -1121251888,1121251903,CA +1121251888,1121251895,CY +1121251896,1121251903,CA 1121251904,1121251935,AG 1121251936,1121251943,CY 1121251944,1121251951,PA @@ -16577,23 +17235,25 @@ 1121717432,1121717439,JP 1121717440,1121717759,US 1121717760,1121718015,IT -1121718016,1121878015,US +1121718016,1121721711,US +1121721712,1121721727,CN +1121721728,1121878015,US 1121878016,1121910783,CA 1121910784,1122074623,US 1122074624,1122087935,CA 1122087936,1122088191,US 1122088192,1122091007,CA -1122091008,1122092799,US +1122091008,1122092623,US +1122092624,1122092631,CA +1122092632,1122092695,US +1122092696,1122092703,CA +1122092704,1122092799,US 1122092800,1122093055,CA 1122093056,1122093807,US 1122093808,1122093815,HK 1122093816,1122103471,US 1122103472,1122103479,BE -1122103480,1122108671,US -1122108672,1122108735,GR -1122108736,1122125978,US -1122125979,1122125988,PH -1122125989,1122125996,US +1122103480,1122125996,US 1122125997,1122126004,GB 1122126005,1122126239,US 1122126240,1122126249,GB @@ -16608,16 +17268,14 @@ 1122197608,1122197623,US 1122197624,1122197631,FR 1122197632,1122197695,US -1122197696,1122197759,GB +1122197696,1122197727,GB +1122197728,1122197735,US +1122197736,1122197759,GB 1122197760,1122197767,US 1122197768,1122197775,FR 1122197776,1122197823,US 1122197824,1122197831,GB -1122197832,1122197839,US -1122197840,1122197855,GB -1122197856,1122197887,US -1122197888,1122198015,GB -1122198016,1122203135,US +1122197832,1122203135,US 1122203136,1122203391,GB 1122203392,1122320959,US 1122320960,1122320995,PT @@ -16640,13 +17298,9 @@ 1122480168,1122480207,US 1122480208,1122480223,GB 1122480224,1122480231,PL -1122480232,1122480343,US -1122480344,1122480351,PR -1122480352,1122480415,US +1122480232,1122480415,US 1122480416,1122480423,CL -1122480424,1122480447,US -1122480448,1122480455,PR -1122480456,1122480479,US +1122480424,1122480479,US 1122480480,1122480487,CA 1122480488,1122493055,US 1122493056,1122493183,ES @@ -16657,24 +17311,22 @@ 1122496000,1122497407,US 1122497408,1122497471,SV 1122497472,1122497535,US -1122497536,1122498303,PR -1122498304,1122498559,US +1122497536,1122498047,PR +1122498048,1122498559,US 1122498560,1122498815,PR -1122498816,1122499327,US -1122499328,1122500095,PR -1122500096,1122525855,US +1122498816,1122499583,US +1122499584,1122500095,PR +1122500096,1122506751,US +1122506752,1122507007,IN +1122507008,1122525855,US 1122525856,1122525865,RU 1122525866,1122526096,US 1122526097,1122526111,RU 1122526112,1122526454,US 1122526455,1122526462,RU -1122526463,1122526517,US -1122526518,1122526541,HK -1122526542,1122526876,US +1122526463,1122526876,US 1122526877,1122526888,RU -1122526889,1122526925,US -1122526926,1122526939,RU -1122526940,1122528183,US +1122526889,1122528183,US 1122528184,1122528254,RU 1122528255,1122528603,US 1122528604,1122528613,ES @@ -16711,15 +17363,11 @@ 1123582272,1123582399,US 1123582400,1123582431,DE 1123582432,1123582463,CA -1123582464,1123583327,US -1123583328,1123583359,CA -1123583360,1123583455,US +1123582464,1123583455,US 1123583456,1123583519,CY 1123583520,1123584351,US 1123584352,1123584383,DE -1123584384,1123584703,US -1123584704,1123584735,CA -1123584736,1123588063,US +1123584384,1123588063,US 1123588064,1123588095,CY 1123588096,1123590143,US 1123590144,1123598335,VI @@ -16736,15 +17384,7 @@ 1123801088,1123801343,RU 1123801344,1123848191,US 1123848192,1123852287,CA -1123852288,1123862080,US -1123862081,1123862270,RU -1123862271,1123862454,US -1123862455,1123862520,RU -1123862521,1123862592,US -1123862593,1123862782,RU -1123862783,1123862880,US -1123862881,1123862888,RU -1123862889,1123870063,US +1123852288,1123870063,US 1123870064,1123870071,GB 1123870072,1123870295,US 1123870296,1123870303,HK @@ -16807,9 +17447,7 @@ 1125091744,1125091759,US 1125091760,1125091775,UY 1125091776,1125091839,CA -1125091840,1125093375,US -1125093376,1125093407,TH -1125093408,1125093471,US +1125091840,1125093471,US 1125093472,1125093503,IL 1125093504,1125093567,SK 1125093568,1125093631,AU @@ -16817,8 +17455,7 @@ 1125094464,1125094527,BR 1125094528,1125094655,US 1125094656,1125094671,GB -1125094672,1125094687,SK -1125094688,1125094783,US +1125094672,1125094783,US 1125094784,1125094799,GB 1125094800,1125094847,CA 1125094848,1125094911,BR @@ -16931,16 +17568,39 @@ 1125474304,1125478399,CA 1125478400,1125479199,US 1125479200,1125479231,BR -1125479232,1125498879,US +1125479232,1125493127,US +1125493128,1125493135,CA +1125493136,1125498879,US 1125498880,1125508095,CA 1125508096,1125508351,PA 1125508352,1125514495,CA 1125514496,1125514751,US 1125514752,1125515263,CA 1125515264,1125531647,US -1125531648,1125543935,CA +1125531648,1125539903,CA +1125539904,1125539935,US +1125539936,1125540151,CA +1125540152,1125540159,GB +1125540160,1125540207,CA +1125540208,1125540223,US +1125540224,1125540479,CA +1125540480,1125540495,US +1125540496,1125540511,CA +1125540512,1125540527,US +1125540528,1125540543,IE +1125540544,1125540575,CA +1125540576,1125540591,US +1125540592,1125540703,CA +1125540704,1125540711,US +1125540712,1125540927,CA +1125540928,1125540959,US +1125540960,1125543935,CA 1125543936,1125545983,US -1125548032,1125552127,CA +1125548032,1125548291,CA +1125548292,1125548351,US +1125548352,1125550079,CA +1125550080,1125550335,US +1125550336,1125552127,CA 1125552128,1125572607,US 1125572608,1125576703,CA 1125576704,1125613567,US @@ -16967,15 +17627,12 @@ 1126682720,1126682727,PR 1126682728,1126682823,US 1126682824,1126682831,PR -1126682832,1126907535,US -1126907536,1126907543,ES -1126907544,1126924287,US +1126682832,1126924287,US 1126924288,1126928383,CA 1126928384,1126948863,US 1126948864,1126949375,CA 1126949376,1126949503,GB -1126949504,1126949551,CA -1126949552,1126949559,GB +1126949504,1126949559,CA 1126949560,1126949567,BZ 1126949568,1126949583,CA 1126949584,1126949591,LB @@ -16984,35 +17641,21 @@ 1126949616,1126949631,LB 1126949632,1126949695,CA 1126949696,1126949759,PK -1126949760,1126949823,CA -1126949824,1126949855,US -1126949856,1126950191,CA +1126949760,1126950191,CA 1126950192,1126950199,ES 1126950200,1126950207,HR -1126950208,1126950303,CA -1126950304,1126950335,US -1126950336,1126950367,CA -1126950368,1126950399,US -1126950400,1126950415,CA +1126950208,1126950415,CA 1126950416,1126950423,PK 1126950424,1126950431,RU 1126950432,1126950463,CA 1126950464,1126950495,IT -1126950496,1126950527,US -1126950528,1126950559,CA -1126950560,1126950591,US -1126950592,1126950599,CA +1126950496,1126950599,CA 1126950600,1126950607,CN 1126950608,1126950623,CA 1126950624,1126950655,FR 1126950656,1126950783,CA 1126950784,1126950847,MY -1126950848,1126950911,US -1126950912,1126951039,CA -1126951040,1126951071,US -1126951072,1126951103,CA -1126951104,1126951135,US -1126951136,1126951775,CA +1126950848,1126951775,CA 1126951776,1126951783,PH 1126951784,1126951967,CA 1126951968,1126951975,KP @@ -17026,29 +17669,13 @@ 1126952264,1126952271,PH 1126952272,1126952447,CA 1126952448,1126952511,AE -1126952512,1126952543,US -1126952544,1126952559,CA +1126952512,1126952559,CA 1126952560,1126952567,TH -1126952568,1126952703,CA -1126952704,1126952767,CY -1126952768,1126952895,CA +1126952568,1126952895,CA 1126952896,1126952959,CY 1126952960,1127677951,US 1127677952,1127694335,CA -1127694336,1127874559,US -1127875328,1127875839,US -1127875840,1127876095,CA -1127876608,1127876863,US -1127877120,1127877375,US -1127877376,1127877631,CA -1127878144,1127878399,US -1127878400,1127878911,CA -1127878912,1127879167,US -1127879680,1127879935,CA -1127879936,1127880191,US -1127880448,1127880703,US -1127880704,1127882751,CA -1127882752,1127923711,US +1127694336,1127923711,US 1127923712,1127931903,CA 1127931904,1127976191,US 1127976192,1127976223,IL @@ -17836,13 +18463,9 @@ 1136721920,1136787455,CA 1136787456,1137090815,US 1137090816,1137091327,NZ -1137091328,1137134083,US -1137134084,1137134099,CA -1137134100,1137134283,US -1137134284,1137134331,CA -1137134332,1137189135,US +1137091328,1137189135,US 1137189136,1137189151,IE -1137189152,1137189183,GB +1137189152,1137189183,US 1137189184,1137189247,IE 1137189248,1137189255,GB 1137189256,1137189263,US @@ -17855,9 +18478,7 @@ 1137278976,1137283071,CA 1137283072,1137287167,US 1137287168,1137295359,CA -1137295360,1137337599,US -1137337600,1137337855,CA -1137337856,1137369087,US +1137295360,1137369087,US 1137369088,1137369519,CA 1137369520,1137369535,US 1137369536,1137370111,CA @@ -17867,7 +18488,9 @@ 1137376352,1137376367,CA 1137376368,1137376383,US 1137376384,1137376463,CA -1137376464,1137377311,US +1137376464,1137376479,US +1137376480,1137376511,CA +1137376512,1137377311,US 1137377312,1137377327,DE 1137377328,1137377471,US 1137377472,1137377479,IN @@ -18153,7 +18776,9 @@ 1137927680,1137927807,CR 1137927808,1137927935,CA 1137927936,1137928063,VG -1137928064,1137930143,CA +1137928064,1137928255,CA +1137928256,1137928319,BZ +1137928320,1137930143,CA 1137930144,1137930159,MT 1137930160,1137934335,CA 1137934336,1137946145,US @@ -18183,8 +18808,7 @@ 1138164008,1138164015,FR 1138164016,1138164127,CA 1138164128,1138164151,FR -1138164152,1138164159,GB -1138164160,1138164175,CA +1138164152,1138164175,CA 1138164176,1138164183,SK 1138164184,1138164191,PH 1138164192,1138164199,PK @@ -18195,8 +18819,7 @@ 1138164256,1138164263,LB 1138164264,1138164271,FR 1138164272,1138164279,PH -1138164280,1138164311,CA -1138164312,1138164327,GB +1138164280,1138164327,CA 1138164328,1138164335,PA 1138164336,1138164367,CA 1138164368,1138164375,PH @@ -18213,14 +18836,11 @@ 1138164832,1138164839,PH 1138164840,1138164863,CA 1138164864,1138165247,US -1138165248,1138165255,GB -1138165256,1138165311,CA +1138165248,1138165311,CA 1138165312,1138165319,US 1138165320,1138165431,CA 1138165432,1138165439,LB -1138165440,1138165463,CA -1138165464,1138165471,GB -1138165472,1138165487,CA +1138165440,1138165487,CA 1138165488,1138165503,SK 1138165504,1138165807,CA 1138165808,1138165815,FR @@ -18286,7 +18906,8 @@ 1138212864,1138216959,CA 1138216960,1138271087,US 1138271088,1138271103,TN -1138271104,1138417663,US +1138271104,1138401279,US +1138409472,1138417663,US 1138417664,1138417695,CA 1138417696,1138417727,DE 1138417728,1138450959,US @@ -18316,8 +18937,7 @@ 1138452016,1138452047,US 1138452048,1138452055,AU 1138452056,1138452063,GB -1138452064,1138452255,US -1138452256,1138452263,GB +1138452064,1138452263,US 1138452264,1138452271,IN 1138452272,1138452287,US 1138452288,1138452295,GR @@ -18337,7 +18957,9 @@ 1138454016,1138454271,RU 1138454272,1138454591,US 1138454592,1138454599,CA -1138454600,1138499583,US +1138454600,1138480127,US +1138480128,1138482687,AU +1138482688,1138499583,US 1138499584,1138503679,CA 1138503680,1138508031,US 1138508032,1138508095,GB @@ -18366,35 +18988,23 @@ 1138512672,1138512895,US 1138512896,1138512927,ID 1138512928,1138548735,US -1138548736,1138549260,CA -1138549261,1138549347,HK -1138549348,1138549503,CA -1138549504,1138549631,PL -1138549632,1138550015,CA -1138550016,1138552575,US -1138552576,1138556927,CA +1138548736,1138556927,CA 1138556928,1138593791,US 1138593792,1138597887,CA 1138597888,1138600447,US 1138600448,1138600703,BE 1138600704,1138615299,US 1138615300,1138615323,IT -1138615324,1138655241,US -1138655242,1138655316,CA -1138655317,1138655328,US -1138655329,1138655336,CA -1138655337,1138655374,US +1138615324,1138655245,US +1138655246,1138655316,CA +1138655317,1138655374,US 1138655375,1138655382,CA -1138655383,1138655422,US -1138655423,1138655430,RU -1138655431,1138655446,US +1138655383,1138655446,US 1138655447,1138655454,CA 1138655455,1138655458,US 1138655459,1138655486,CA 1138655487,1138655503,US -1138655504,1138655513,MX -1138655514,1138655519,US -1138655520,1138655521,MX +1138655504,1138655521,MX 1138655522,1138655609,US 1138655610,1138655617,MX 1138655618,1138655695,US @@ -18403,84 +19013,39 @@ 1138655716,1138655723,GB 1138655724,1138655841,US 1138655842,1138655849,CN -1138655850,1138655857,US -1138655858,1138655865,CN -1138655866,1138655899,US +1138655850,1138655899,US 1138655900,1138655911,MX -1138655912,1138656021,US -1138656022,1138656029,TW -1138656030,1138656077,US +1138655912,1138656077,US 1138656078,1138656093,MX -1138656094,1138656097,US -1138656098,1138656113,GB -1138656114,1138656121,US -1138656122,1138656129,GB -1138656130,1138656141,US +1138656094,1138656141,US 1138656142,1138656173,GB 1138656174,1138656190,US 1138656191,1138656198,CH 1138656199,1138656206,GB 1138656207,1138656222,US 1138656223,1138656230,EG -1138656231,1138656301,US -1138656302,1138656309,MO -1138656310,1138656330,US -1138656331,1138656338,TR -1138656339,1138656398,US -1138656399,1138656406,MO -1138656407,1138656407,GB -1138656408,1138656413,US -1138656414,1138656415,GB -1138656416,1138656521,US -1138656522,1138656529,EG -1138656530,1138656661,US +1138656231,1138656661,US 1138656662,1138656669,MA 1138656670,1138656745,US 1138656746,1138656753,AE -1138656754,1138656777,US -1138656778,1138656793,UY -1138656794,1138656933,US -1138656934,1138656941,UY -1138656942,1138656973,US -1138656974,1138656981,UY -1138656982,1138656997,US -1138656998,1138657005,UY -1138657006,1138657041,US -1138657042,1138657056,SA -1138657057,1138657123,US +1138656754,1138657123,US 1138657124,1138657131,EG -1138657132,1138657159,US -1138657160,1138657173,MO +1138657132,1138657173,US 1138657174,1138657181,EG -1138657182,1138657193,US -1138657194,1138657195,AE -1138657196,1138657197,US -1138657198,1138657199,EG -1138657200,1138657201,AE -1138657202,1138657205,EG +1138657182,1138657197,US +1138657198,1138657205,EG 1138657206,1138657206,US 1138657207,1138657214,EG 1138657215,1138657222,IN 1138657223,1138657235,US 1138657236,1138657244,MA -1138657245,1138657346,US -1138657347,1138657354,MO -1138657355,1138657504,US +1138657245,1138657504,US 1138657505,1138657520,EG 1138657521,1138657569,US 1138657570,1138657577,UY -1138657578,1138657597,US -1138657598,1138657605,UY -1138657606,1138657671,US -1138657672,1138657679,UY -1138657680,1138657681,US -1138657682,1138657691,UY -1138657692,1138657707,US -1138657708,1138657732,UY -1138657733,1138657748,US +1138657578,1138657748,US 1138657749,1138657780,GB -1138657781,1138657790,UY -1138657791,1138658057,US +1138657781,1138658057,US 1138658058,1138658123,GB 1138658124,1138658175,US 1138658176,1138658302,GB @@ -18489,35 +19054,30 @@ 1138658497,1138658497,US 1138658498,1138658525,PK 1138658526,1138659081,US -1138659082,1138659211,ES -1138659212,1138659369,US +1138659082,1138659207,ES +1138659208,1138659369,US 1138659370,1138659401,GB 1138659402,1138659465,US 1138659466,1138659497,GB 1138659498,1138659593,US 1138659594,1138659609,LK 1138659610,1138659642,GB -1138659643,1138659650,US -1138659651,1138659660,UY -1138659661,1138659673,US +1138659643,1138659673,US 1138659674,1138659681,MA 1138659682,1138659705,US 1138659706,1138659713,CA -1138659714,1138659721,UY -1138659722,1138659723,US +1138659714,1138659723,US 1138659724,1138659731,ID 1138659732,1138659789,US 1138659790,1138659797,ID -1138659798,1138659805,UY +1138659798,1138659805,US 1138659806,1138659813,ID -1138659814,1138659823,UY +1138659814,1138659823,US 1138659824,1138659831,ID 1138659832,1138659849,US 1138659850,1138659857,MA 1138659858,1138659889,GB -1138659890,1138659903,US -1138659904,1138659911,CA -1138659912,1138659922,US +1138659890,1138659922,US 1138659923,1138659930,LK 1138659931,1138659983,US 1138659984,1138659999,EG @@ -18543,9 +19103,7 @@ 1138660362,1138660483,EG 1138660484,1138660499,US 1138660500,1138660507,AE -1138660508,1138660563,US -1138660564,1138660571,GB -1138660572,1138660617,US +1138660508,1138660617,US 1138660618,1138660625,AE 1138660626,1138660633,EG 1138660634,1138660665,US @@ -18553,13 +19111,11 @@ 1138660674,1138660694,US 1138660695,1138660726,GB 1138660727,1138660734,EG -1138660735,1138660778,US -1138660779,1138660786,MY -1138660787,1138660805,US +1138660735,1138660805,US 1138660806,1138660821,EG 1138660822,1138660873,US 1138660874,1138660881,EG -1138660882,1138660889,MA +1138660882,1138660889,US 1138660890,1138660897,EG 1138660898,1138660921,US 1138660922,1138660929,EG @@ -18576,14 +19132,9 @@ 1138661056,1138661063,EG 1138661064,1138661169,US 1138661170,1138661177,LK -1138661178,1138661185,US -1138661186,1138661193,UY -1138661194,1138661201,US +1138661178,1138661201,US 1138661202,1138661209,MA -1138661210,1138661217,UY -1138661218,1138661249,US -1138661250,1138661257,UY -1138661258,1138661265,US +1138661210,1138661265,US 1138661266,1138661281,EG 1138661282,1138661299,US 1138661300,1138661307,GB @@ -18611,9 +19162,7 @@ 1138661914,1138661954,EG 1138661955,1138661985,US 1138661986,1138661993,EG -1138661994,1138662017,US -1138662018,1138662025,EG -1138662026,1138662057,US +1138661994,1138662057,US 1138662058,1138662107,EG 1138662108,1138662169,US 1138662170,1138662233,EG @@ -18655,20 +19204,18 @@ 1138774016,1138778111,CA 1138778112,1138780159,US 1138780160,1138780191,CA -1138780192,1138786303,US +1138780192,1138780271,US +1138780272,1138780287,CA +1138780288,1138786303,US 1138786304,1138819071,PR 1138819072,1138851839,CA 1138851840,1138851847,US 1138851848,1138851855,IN -1138851856,1138865562,US -1138865563,1138865566,IN -1138865567,1138865578,US +1138851856,1138865578,US 1138865579,1138865586,IN 1138865587,1138874252,US 1138874253,1138874264,UY -1138874265,1138879999,US -1138880000,1138880511,CA -1138880512,1138882331,US +1138874265,1138882331,US 1138882332,1138882339,GB 1138882340,1138882445,US 1138882446,1138882453,GB @@ -18676,16 +19223,13 @@ 1138917376,1138937855,CA 1138937856,1138941951,US 1138941952,1138950143,CA -1138950144,1139120127,US -1139120128,1139124223,NZ -1139124224,1139146751,US +1138950144,1139146751,US 1139146752,1139154943,GT 1139154944,1139167231,JM 1139167232,1139179519,US 1139179520,1139195903,CA -1139195904,1139204095,US -1139212288,1139261439,US -1139261440,1139269631,CA +1139195904,1139265535,US +1139265536,1139269631,CA 1139269632,1142187775,US 1142187776,1142187783,PR 1142187784,1142191847,US @@ -18704,20 +19248,39 @@ 1145188352,1145192447,CA 1145192448,1145249791,US 1145249792,1145257983,CA -1145257984,1145262079,US +1145257984,1145259007,US +1145259008,1145259071,IN +1145259072,1145259263,US +1145259264,1145259327,IN +1145259328,1145260031,US +1145260032,1145260095,IN +1145260096,1145261055,US +1145261056,1145261119,IN +1145261120,1145261311,US +1145261312,1145261375,IN +1145261376,1145262079,US 1145262080,1145266175,CA 1145266176,1145307135,US 1145307136,1145311231,CA -1145311232,1145376767,US +1145311232,1145315559,US +1145315560,1145315567,GB +1145315568,1145333863,US +1145333864,1145333871,EG +1145333872,1145335175,US +1145335176,1145335183,CN +1145335184,1145376767,US 1145376768,1145380863,CA 1145380864,1145405439,US 1145405440,1145413631,CA 1145413632,1145421823,US 1145421824,1145430015,CA -1145430016,1145434111,US -1145438208,1145475071,US +1145430016,1145475071,US 1145475072,1145479167,CA -1145479168,1145491455,US +1145479168,1145483583,US +1145483584,1145483591,VG +1145483592,1145484031,US +1145484032,1145484063,VG +1145484064,1145503743,US 1145503744,1145520127,CA 1145520128,1145552895,US 1145552896,1145556991,CA @@ -18746,9 +19309,7 @@ 1151889792,1151889823,MA 1151889824,1151889839,CA 1151889840,1151889847,PH -1151889848,1151889919,CA -1151889920,1151889943,GB -1151889944,1151890007,CA +1151889848,1151890007,CA 1151890008,1151890015,GB 1151890016,1151890079,CA 1151890080,1151890087,GB @@ -18758,35 +19319,23 @@ 1151890216,1151890223,GB 1151890224,1151892735,CA 1151892736,1151892991,MA -1151892992,1151897599,CA -1151897600,1151943679,US -1151943680,1151943807,GB -1151943808,1151943871,NL -1151943872,1151943935,CA -1151943936,1151943999,DE +1151892992,1151894783,CA +1151894784,1151895039,US +1151895040,1151895295,CA +1151895296,1151895807,US +1151895808,1151895919,CA +1151895920,1151895935,US +1151895936,1151896079,CA +1151896080,1151896087,US +1151896088,1151896127,CA +1151896128,1151896191,US +1151896192,1151896319,CA +1151896320,1151943999,US 1151944000,1151944063,HK -1151944064,1151944079,CH -1151944080,1151944095,NO -1151944096,1151944111,KR -1151944112,1151944127,US -1151944128,1151944159,AU -1151944160,1151944175,FR -1151944176,1151944575,US -1151944576,1151944703,ES -1151944704,1151945727,US -1151945728,1151945759,RU +1151944064,1151945759,US 1151945760,1151945791,IE -1151945792,1151945823,IT -1151945824,1151945855,AT -1151945856,1151945887,SE -1151945888,1151945919,US -1151945920,1151945935,JP -1151945936,1151946239,US -1151946240,1151946751,GB -1151946752,1151954943,US -1151959040,1152057343,US -1152057344,1152061439,CA -1152061440,1152073727,US +1151945792,1151954943,US +1151959040,1152073727,US 1152073728,1152077823,CA 1152077824,1152581631,US 1152581632,1152614399,CA @@ -18796,14 +19345,22 @@ 1154488320,1154488575,A2 1154488576,1156071423,US 1156071424,1156079615,CA -1156079616,1156259839,US +1156079616,1156129479,US +1156129480,1156129487,SG +1156129488,1156129495,JP +1156129496,1156129503,US +1156129504,1156129791,CA +1156129792,1156129983,US +1156129984,1156129999,CY +1156130000,1156130015,US +1156130016,1156130303,CA +1156130304,1156131327,US +1156131328,1156131583,CA +1156131584,1156259839,US 1156259840,1156265983,CA -1156265984,1156276223,US -1156284416,1156296703,US +1156265984,1156296703,US 1156296704,1156300799,CA -1156300800,1156335367,US -1156335368,1156335375,PR -1156335376,1157670431,US +1156300800,1157670431,US 1157670432,1157670463,CA 1157670464,1157713663,US 1157713664,1157713791,CA @@ -19416,7 +19973,13 @@ 1159213056,1159217151,CA 1159217152,1159249919,US 1159249920,1159254015,PR -1159254016,1159266935,US +1159254016,1159262471,US +1159262472,1159262475,TZ +1159262476,1159262479,SA +1159262480,1159262727,US +1159262728,1159262731,DE +1159262732,1159262735,RU +1159262736,1159266935,US 1159266936,1159266943,PR 1159266944,1159269119,US 1159269120,1159269375,CA @@ -19440,9 +20003,7 @@ 1159293488,1159293503,BR 1159293504,1159300607,US 1159300608,1159300863,SE -1159300864,1159304223,US -1159304224,1159304255,CA -1159304256,1159313919,US +1159300864,1159313919,US 1159313920,1159313927,MX 1159313928,1159314079,US 1159314080,1159314087,TR @@ -19464,9 +20025,7 @@ 1159480440,1159480447,CA 1159480448,1159481167,US 1159481168,1159481183,VG -1159481184,1159481855,US -1159481856,1159481887,EG -1159481888,1159482423,US +1159481184,1159482423,US 1159482424,1159482431,AN 1159482432,1159512063,US 1159512064,1159512159,CA @@ -19478,14 +20037,14 @@ 1159513024,1159513343,CA 1159513344,1159513375,US 1159513376,1159513439,CA -1159513440,1159513471,US -1159513472,1159513519,CA +1159513440,1159513487,US +1159513488,1159513519,CA 1159513520,1159513535,US 1159513536,1159513567,CA 1159513568,1159513599,US 1159513600,1159514879,CA -1159514880,1159515391,US -1159515392,1159515647,CA +1159514880,1159515135,US +1159515136,1159515647,CA 1159515648,1159515711,US 1159515712,1159515887,CA 1159515888,1159515895,US @@ -19497,32 +20056,34 @@ 1159517120,1159517151,CA 1159517152,1159517183,US 1159517184,1159517327,CA -1159517328,1159517343,US -1159517344,1159517359,CA -1159517360,1159517439,US -1159517440,1159517599,CA +1159517328,1159517567,US +1159517568,1159517599,CA 1159517600,1159517631,US -1159517632,1159517679,CA -1159517680,1159517695,US +1159517632,1159517663,CA +1159517664,1159517695,US 1159517696,1159517975,CA 1159517976,1159517991,US -1159517992,1159518007,CA -1159518008,1159518015,US +1159517992,1159517999,CA +1159518000,1159518015,US 1159518016,1159518175,CA 1159518176,1159518199,US 1159518200,1159518207,CA 1159518208,1159519743,US 1159519744,1159520767,CA 1159520768,1159520799,US -1159520800,1159521023,CA -1159521024,1159521087,US +1159520800,1159520959,CA +1159520960,1159520975,US +1159520976,1159521007,CA +1159521008,1159521087,US 1159521088,1159521199,CA 1159521200,1159521215,US 1159521216,1159521823,CA 1159521824,1159521855,US 1159521856,1159522031,CA 1159522032,1159522047,US -1159522048,1159522095,CA +1159522048,1159522063,CA +1159522064,1159522071,US +1159522072,1159522095,CA 1159522096,1159522111,US 1159522112,1159522143,CA 1159522144,1159522167,US @@ -19535,9 +20096,7 @@ 1159522304,1159523327,CA 1159523328,1159523583,US 1159523584,1159524351,CA -1159524352,1159525071,US -1159525072,1159525087,CA -1159525088,1159525375,US +1159524352,1159525375,US 1159525376,1159526399,CA 1159526400,1159527935,US 1159527936,1159528191,CA @@ -19558,17 +20117,13 @@ 1159657072,1159657087,NZ 1159657088,1159659063,US 1159659064,1159659079,IN -1159659080,1159667967,US -1159667968,1159668991,AU -1159668992,1159669247,US -1159669248,1159669759,AU -1159669760,1159700479,US +1159659080,1159700479,US 1159700480,1159725055,CA 1159725056,1159988735,US 1159988736,1159988991,MX -1159988992,1159990783,US -1159990784,1159991039,MX -1159991040,1159995935,US +1159988992,1159995647,US +1159995648,1159995655,AU +1159995656,1159995935,US 1159995936,1159995951,CA 1159995952,1159996063,US 1159996064,1159996079,GB @@ -19643,50 +20198,9 @@ 1160017160,1160019967,CA 1160019968,1160364031,US 1160364032,1160368127,CA -1160368128,1160392751,US -1160392752,1160392799,CA -1160392800,1160392815,US -1160392816,1160392939,CA -1160392940,1160392959,US -1160392960,1160393031,CA -1160393032,1160393039,US -1160393040,1160393055,CA -1160393056,1160393087,US -1160393088,1160393151,CA -1160393152,1160393215,US -1160393216,1160393279,CA -1160393280,1160393295,HK -1160393296,1160393311,CA -1160393312,1160393327,US -1160393328,1160393343,CA -1160393344,1160393359,US -1160393360,1160393535,CA -1160393536,1160393599,US -1160393600,1160393791,CA -1160393792,1160393799,HK -1160393800,1160393807,US -1160393808,1160393871,CA -1160393872,1160393879,GB -1160393880,1160393951,CA -1160393952,1160393959,HK -1160393960,1160393983,CA -1160393984,1160394239,US -1160394240,1160394295,CA -1160394296,1160394303,US -1160394304,1160394495,CA -1160394496,1160394751,US -1160394752,1160395007,CA -1160395008,1160395263,US -1160395264,1160395391,CA -1160395392,1160395775,US -1160395776,1160396031,CA -1160396032,1160396287,US -1160396288,1160396543,CA -1160396544,1160397007,US +1160368128,1160397007,US 1160397008,1160397023,GB -1160397024,1160405503,US -1160405504,1160405615,DO -1160405616,1160405631,US +1160397024,1160405631,US 1160405632,1160406015,DO 1160406016,1160406271,US 1160406272,1160406303,VE @@ -19835,8 +20349,8 @@ 1160689304,1160689311,CA 1160689312,1160689319,IN 1160689320,1160689367,CA -1160689368,1160689383,US -1160689384,1160689419,CA +1160689368,1160689375,US +1160689376,1160689419,CA 1160689420,1160689447,US 1160689448,1160689531,CA 1160689532,1160689571,US @@ -19916,15 +20430,7 @@ 1160925184,1160941535,US 1160941536,1160941567,CA 1160941568,1160945663,US -1160947712,1160948991,US -1160948992,1160949023,CA -1160949024,1160949087,US -1160949120,1160949151,US -1160949168,1160949183,JP -1160949200,1160949215,US -1160949248,1160949535,US -1160949632,1160949759,CY -1160949760,1160973439,US +1160953856,1160973439,US 1160973440,1160973503,MX 1160973504,1160973567,US 1160973568,1160973599,CA @@ -19946,7 +20452,9 @@ 1161293824,1161297919,CA 1161297920,1161298303,US 1161298304,1161298311,IL -1161298312,1161304591,US +1161298312,1161300511,US +1161300512,1161300519,CA +1161300520,1161304591,US 1161304592,1161304599,AU 1161304600,1161311743,US 1161311744,1161311759,KN @@ -19994,7 +20502,9 @@ 1161428224,1161428991,KN 1161428992,1161453567,US 1161453568,1161457663,CA -1161457664,1161576447,US +1161457664,1161501443,US +1161501444,1161501470,TR +1161501471,1161576447,US 1161576448,1161580543,CA 1161580544,1161586687,US 1161586688,1161586943,PA @@ -20003,16 +20513,16 @@ 1161625600,1161627695,US 1161627696,1161627703,AR 1161627704,1161627727,US -1161627728,1161627735,AR -1161627736,1161627759,US +1161627728,1161627743,AR +1161627744,1161627759,US 1161627760,1161627775,GB -1161627776,1161627839,US -1161627840,1161627863,AR +1161627776,1161627807,US +1161627808,1161627863,AR 1161627864,1161628479,US 1161628480,1161628487,GB 1161628488,1161628607,US 1161628608,1161628639,AR -1161628640,1161628647,CH +1161628640,1161628647,IN 1161628648,1161628655,CA 1161628656,1161628663,US 1161628664,1161628671,AR @@ -20025,9 +20535,7 @@ 1161629520,1161629527,GB 1161629528,1161629535,MY 1161629536,1161629551,GB -1161629552,1161629567,US -1161629568,1161629575,AU -1161629576,1161629695,US +1161629552,1161629695,US 1161629696,1161629951,PL 1161629952,1161630335,US 1161630336,1161630343,PL @@ -20060,7 +20568,9 @@ 1161631040,1161631047,GB 1161631048,1161631079,US 1161631080,1161631087,AR -1161631088,1161631159,US +1161631088,1161631127,US +1161631128,1161631135,BG +1161631136,1161631159,US 1161631160,1161631167,CA 1161631168,1161631183,US 1161631184,1161631199,GB @@ -20076,8 +20586,10 @@ 1161631520,1161631535,US 1161631536,1161631543,AR 1161631544,1161631551,BR -1161631552,1161631631,US -1161631632,1161631639,CH +1161631552,1161631591,US +1161631592,1161631599,BR +1161631600,1161631631,US +1161631632,1161631639,BR 1161631640,1161631647,US 1161631648,1161631655,AU 1161631656,1161631663,AR @@ -20094,12 +20606,14 @@ 1161632664,1161632719,US 1161632720,1161632735,GB 1161632736,1161633023,US -1161633024,1161633055,IL +1161633024,1161633055,CA 1161633056,1161633215,US 1161633216,1161633231,EE 1161633232,1161634063,US 1161634064,1161634071,RO -1161634072,1161634199,US +1161634072,1161634127,US +1161634128,1161634135,AR +1161634136,1161634199,US 1161634200,1161634207,NZ 1161634208,1161634239,AR 1161634240,1161634247,GB @@ -20115,7 +20629,8 @@ 1161634976,1161635007,PL 1161635008,1161635855,US 1161635856,1161635871,BE -1161635872,1161636095,US +1161635872,1161636063,US +1161636064,1161636095,IL 1161636096,1161636127,GB 1161636128,1161636159,US 1161636160,1161636223,IL @@ -20170,9 +20685,7 @@ 1161639832,1161639839,AR 1161639840,1161639887,US 1161639888,1161639895,AT -1161639896,1161639935,US -1161639936,1161639943,CH -1161639944,1161639951,US +1161639896,1161639951,US 1161639952,1161639959,IL 1161639960,1161639967,GB 1161639968,1161639999,US @@ -20201,9 +20714,7 @@ 1161644704,1161644743,GB 1161644744,1161644751,AR 1161644752,1161644767,PL -1161644768,1161645839,US -1161645840,1161645855,PL -1161645856,1161645887,US +1161644768,1161645887,US 1161645888,1161645903,GB 1161645904,1161645911,US 1161645912,1161645919,GB @@ -20234,12 +20745,17 @@ 1161650848,1161650863,AR 1161650864,1161650927,US 1161650928,1161650935,HR -1161650936,1161651103,US +1161650936,1161651055,US +1161651056,1161651071,PL +1161651072,1161651103,US 1161651104,1161651135,GB 1161651136,1161651487,US 1161651488,1161651503,GB -1161651504,1161651935,US -1161651936,1161651967,AR +1161651504,1161651535,US +1161651536,1161651543,PL +1161651544,1161651551,US +1161651552,1161651559,CA +1161651560,1161651967,US 1161651968,1161651975,CH 1161651976,1161652007,US 1161652008,1161652015,GB @@ -20247,7 +20763,9 @@ 1161652096,1161652103,CY 1161652104,1161652127,US 1161652128,1161652135,AR -1161652136,1161653791,US +1161652136,1161653023,US +1161653024,1161653055,AR +1161653056,1161653791,US 1161653792,1161653799,SI 1161653800,1161653831,US 1161653832,1161653839,HR @@ -20283,8 +20801,7 @@ 1161836032,1161836063,CA 1161836064,1161836159,US 1161836160,1161836191,BR -1161836192,1161836223,MX -1161836224,1161836255,US +1161836192,1161836255,US 1161836256,1161836287,UA 1161836288,1161836319,RS 1161836320,1161836383,US @@ -20294,9 +20811,7 @@ 1161836480,1161836511,UA 1161836512,1161837567,US 1161837568,1161837823,JP -1161837824,1161838351,US -1161838352,1161838367,GB -1161838368,1161838548,US +1161837824,1161838548,US 1161838549,1161838560,RU 1161838561,1161841101,US 1161841102,1161841112,DE @@ -20359,8 +20874,8 @@ 1162059776,1162067967,CA 1162067968,1162215423,US 1162215424,1162280959,CA -1162280960,1162296007,US -1162296008,1162296023,CA +1162280960,1162296015,US +1162296016,1162296023,CA 1162296024,1162296407,US 1162296408,1162296415,CA 1162296416,1162297343,US @@ -20422,7 +20937,7 @@ 1162811648,1162812159,US 1162812160,1162812415,DO 1162812416,1162813439,BS -1162813440,1162821631,CO +1162813440,1162821631,US 1162821632,1162823679,PR 1162823680,1162825727,GT 1162825728,1162827775,US @@ -20433,12 +20948,10 @@ 1162836736,1162836991,US 1162836992,1162838015,BS 1162838016,1162870783,US -1162870784,1162887167,BB -1162903552,1162923391,US -1162923392,1162923519,BE -1162923520,1162924031,US -1162924032,1162924287,AU -1162924288,1162925983,US +1162870784,1162871295,BB +1162871296,1162874367,LC +1162874368,1162887167,BB +1162903552,1162925983,US 1162925984,1162926015,AU 1162926016,1162926071,US 1162926072,1162926079,AU @@ -20579,23 +21092,19 @@ 1163527776,1163527791,US 1163527792,1163528191,CA 1163528192,1163528703,US -1163528704,1163528959,CA -1163528960,1163530239,US -1163530240,1163530527,CA -1163530528,1163530543,US -1163530544,1163530639,CA +1163528704,1163529215,CA +1163529216,1163530239,US +1163530240,1163530399,CA +1163530400,1163530431,US +1163530432,1163530639,CA 1163530640,1163530655,US -1163530656,1163530663,CA -1163530664,1163530671,US -1163530672,1163530783,CA -1163530784,1163530815,US -1163530816,1163530839,CA +1163530656,1163530839,CA 1163530840,1163530847,RS 1163530848,1163530887,CA 1163530888,1163530895,US 1163530896,1163530903,CA -1163530904,1163530943,US -1163530944,1163530959,CA +1163530904,1163530935,US +1163530936,1163530959,CA 1163530960,1163530967,US 1163530968,1163533023,CA 1163533024,1163533055,US @@ -20737,8 +21246,8 @@ 1163551664,1163551679,US 1163551680,1163551727,CA 1163551728,1163551743,US -1163551744,1163552255,CA -1163552256,1163552519,US +1163551744,1163552511,CA +1163552512,1163552519,US 1163552520,1163552527,CA 1163552528,1163552535,US 1163552536,1163552575,CA @@ -20760,7 +21269,9 @@ 1163554656,1163554703,CA 1163554704,1163554751,US 1163554752,1163554815,CA -1163554816,1163556095,US +1163554816,1163555071,US +1163555072,1163555327,CA +1163555328,1163556095,US 1163556096,1163556607,CA 1163556608,1163557727,US 1163557728,1163557759,CA @@ -20771,9 +21282,7 @@ 1163560448,1163560959,US 1163560960,1163561727,CA 1163561728,1163561983,FI -1163561984,1163561999,CA -1163562000,1163562007,US -1163562008,1163562063,CA +1163561984,1163562063,CA 1163562064,1163562079,US 1163562080,1163562119,CA 1163562120,1163562127,SG @@ -20789,9 +21298,7 @@ 1163568128,1163570431,US 1163570432,1163570495,CA 1163570496,1163571199,US -1163571200,1163571711,CA -1163571712,1163571967,US -1163571968,1163571983,CA +1163571200,1163571983,CA 1163571984,1163571999,US 1163572000,1163572031,CA 1163572032,1163572063,BE @@ -20799,11 +21306,9 @@ 1163572080,1163572087,US 1163572088,1163572175,CA 1163572176,1163572183,US -1163572184,1163572223,CA -1163572224,1163572479,US -1163572480,1163572671,CA -1163572672,1163572679,US -1163572680,1163573071,CA +1163572184,1163572687,CA +1163572688,1163572703,US +1163572704,1163573071,CA 1163573072,1163573087,US 1163573088,1163573199,CA 1163573200,1163573215,US @@ -20812,8 +21317,8 @@ 1163573440,1163573503,EG 1163573504,1163575295,US 1163575296,1163576703,CA -1163576704,1163576831,US -1163576832,1163576959,CA +1163576704,1163576799,US +1163576800,1163576959,CA 1163576960,1163576991,US 1163576992,1163577087,CA 1163577088,1163577151,US @@ -20891,13 +21396,15 @@ 1163876472,1163876479,PA 1163876480,1163878399,US 1163878400,1163878407,CN -1163878408,1167320679,US -1167320680,1167320687,IN -1167320688,1167321959,US +1163878408,1167321959,US 1167321960,1167321967,GB 1167321968,1167322695,US 1167322696,1167322703,IN -1167322704,1167325935,US +1167322704,1167323799,US +1167323800,1167323807,IN +1167323808,1167323823,US +1167323824,1167323831,IN +1167323832,1167325935,US 1167325936,1167325951,CA 1167325952,1167326207,US 1167326208,1167326271,IN @@ -20908,37 +21415,47 @@ 1167326400,1167326431,IN 1167326432,1167326439,US 1167326440,1167326447,IN -1167326448,1167326463,US -1167326464,1167326719,IN -1167326720,1167693199,US +1167326448,1167326983,US +1167326984,1167326991,IN +1167326992,1167327111,US +1167327112,1167327119,IN +1167327120,1167327207,US +1167327208,1167327215,IN +1167327216,1167693199,US 1167693200,1167693215,UA 1167693216,1167851519,US 1167851520,1168113663,CA -1168113664,1168211967,US +1168113664,1168138239,US +1168138240,1168146431,JM +1168146432,1168211967,US 1168211968,1168220159,CA -1168228352,1168393215,US -1168393216,1168394151,CA -1168394152,1168394175,US -1168394176,1168394271,CA -1168394272,1168394287,US -1168394288,1168394367,CA -1168394368,1168394399,US -1168394400,1168394407,CA -1168394408,1168394415,US -1168394416,1168394423,CA +1168220160,1168318719,US +1168318720,1168318975,CA +1168318976,1168321535,US +1168321536,1168321791,CA +1168321792,1168393215,US +1168393216,1168394271,CA +1168394272,1168394279,US +1168394280,1168394375,CA +1168394376,1168394383,US +1168394384,1168394423,CA 1168394424,1168394463,US 1168394464,1168394471,CA 1168394472,1168394479,US 1168394480,1168394495,CA 1168394496,1168394511,US 1168394512,1168394527,CA -1168394528,1168420863,US +1168394528,1168394559,US +1168394560,1168394687,CA +1168394688,1168420863,US 1168420864,1168424959,CA 1168424960,1168474111,US 1168474112,1168506879,CA 1168508928,1168510975,US 1168510976,1168515071,CA -1168515072,1168670719,US +1168515072,1168535551,US +1168535552,1168539647,CA +1168539648,1168670719,US 1168670720,1168687103,CA 1168687104,1168859135,US 1168859136,1168863231,CA @@ -20964,13 +21481,11 @@ 1168952888,1168952895,CA 1168952896,1168952959,US 1168952960,1168953343,CA -1168953344,1168954015,US -1168954016,1168954047,EG -1168954048,1168954075,US +1168953344,1168954075,US 1168954076,1168954079,CA -1168954080,1168955647,US -1168955648,1168956415,CA -1168956416,1168957439,US +1168954080,1168955903,US +1168955904,1168956159,CA +1168956160,1168957439,US 1168957440,1168958047,CA 1168958048,1168958055,DE 1168958056,1168958063,CA @@ -20988,17 +21503,15 @@ 1168958464,1168958479,CA 1168958480,1168958495,US 1168958496,1168958527,FR -1168958528,1168958655,US -1168958656,1168958687,EG -1168958688,1168958719,US -1168958720,1168958975,CA -1168958976,1168960543,US +1168958528,1168960543,US 1168960544,1168960591,CA 1168960592,1168960607,US 1168960608,1168960623,CA 1168960624,1168960639,US 1168960640,1168960767,CA -1168960768,1168960863,US +1168960768,1168960799,US +1168960800,1168960831,CA +1168960832,1168960863,US 1168960864,1168960887,CA 1168960888,1168960895,US 1168960896,1168961887,CA @@ -21014,7 +21527,36 @@ 1168973824,1168982015,CA 1168982016,1169051903,US 1169051904,1169051911,SG -1169051912,1169182975,US +1169051912,1169057039,US +1169057040,1169057055,BR +1169057056,1169057071,US +1169057072,1169057079,AR +1169057080,1169057087,US +1169057088,1169057119,BR +1169057120,1169057127,US +1169057128,1169057135,BR +1169057136,1169057143,US +1169057144,1169057151,BR +1169057152,1169057215,US +1169057216,1169057223,BR +1169057224,1169057231,US +1169057232,1169057247,BR +1169057248,1169057263,US +1169057264,1169057279,BR +1169057280,1169092639,US +1169092640,1169092671,GB +1169092672,1169093503,US +1169093504,1169093567,DE +1169093568,1169094713,US +1169094714,1169094726,CA +1169094727,1169094755,US +1169094756,1169094763,AU +1169094764,1169094771,IN +1169094772,1169094925,US +1169094926,1169094933,IN +1169094934,1169095017,US +1169095018,1169095027,IN +1169095028,1169182975,US 1169182976,1169183487,CA 1169183488,1169184767,US 1169184768,1169185023,CA @@ -21023,7 +21565,18 @@ 1169186048,1169186303,SG 1169186304,1169203199,US 1169203200,1169211391,CA -1169211392,1170472959,US +1169211392,1170448383,US +1170456576,1170456959,US +1170456960,1170456975,CR +1170456976,1170456991,US +1170456992,1170457007,PR +1170457008,1170458063,US +1170458064,1170458079,DE +1170458080,1170461183,US +1170461184,1170461439,CO +1170461440,1170461695,US +1170461696,1170462719,IL +1170462720,1170472959,US 1170472960,1170481151,CA 1170481152,1170489343,US 1170489344,1170497535,CA @@ -21081,16 +21634,18 @@ 1176620784,1176620967,CA 1176620968,1176620975,US 1176620976,1176620991,CA -1176620992,1176621055,US -1176621056,1176622079,CA -1176622080,1176623103,US -1176623104,1176623359,CA +1176620992,1176620999,US +1176621000,1176621023,CA +1176621024,1176621055,US +1176621056,1176623359,CA 1176623360,1176623487,US -1176623488,1176623583,CA -1176623584,1176623599,US -1176623600,1176623615,CA +1176623488,1176623567,CA +1176623568,1176623583,US +1176623584,1176623615,CA 1176623616,1176623871,US -1176623872,1176629303,CA +1176623872,1176629287,CA +1176629288,1176629295,US +1176629296,1176629303,CA 1176629304,1176629311,US 1176629312,1176629343,CA 1176629344,1176629375,US @@ -21101,12 +21656,11 @@ 1176629472,1176629503,US 1176629504,1176629519,CA 1176629520,1176629535,NZ -1176629536,1176629695,CA -1176629696,1176629727,US +1176629536,1176629631,CA +1176629632,1176629727,US 1176629728,1176631295,CA -1176631296,1176631807,US -1176631808,1176632063,CR -1176632064,1176662015,US +1176631296,1176631551,NL +1176631552,1176662015,US 1176662016,1176666111,CA 1176666112,1176682527,US 1176682528,1176682535,JM @@ -21130,11 +21684,15 @@ 1176731648,1176735743,PR 1176735744,1176739839,A2 1176739840,1176743935,CA -1176748032,1176752127,US +1176743936,1176752127,US 1176752128,1176756223,CA 1176756224,1176764415,US 1176764416,1176768511,PM -1176768512,1176776703,US +1176768512,1176770751,US +1176770752,1176770783,AE +1176770784,1176771895,US +1176771896,1176771903,AE +1176771904,1176776703,US 1176776704,1176780799,CA 1176780800,1176895487,US 1176895488,1176896519,CA @@ -21160,11 +21718,11 @@ 1177053696,1177053951,GB 1177053952,1177059327,US 1177059328,1177061375,CA -1177061376,1177063423,US -1177063424,1177067519,CA -1177067520,1177071615,US -1177071616,1177074687,CA -1177074688,1177164255,US +1177061376,1177062399,US +1177062400,1177074943,CA +1177074944,1177075199,US +1177075200,1177075455,CA +1177075456,1177164255,US 1177164256,1177164263,CA 1177164264,1177164415,US 1177164416,1177164479,CA @@ -21174,11 +21732,7 @@ 1177164928,1177164943,CA 1177164944,1177165311,US 1177165312,1177165823,CA -1177165824,1177168127,US -1177168128,1177168143,FR -1177168144,1177169687,US -1177169688,1177169695,GB -1177169696,1177175199,US +1177165824,1177175199,US 1177175200,1177175231,CZ 1177175232,1177182527,US 1177182528,1177182591,CA @@ -21581,29 +22135,55 @@ 1208333568,1208333823,GB 1208333824,1208337919,US 1208337920,1208338175,A2 -1208338176,1208518143,US +1208338176,1208516607,US +1208516608,1208516623,MX +1208516624,1208516639,US +1208516640,1208516671,CN +1208516672,1208516735,TR +1208516736,1208516799,ID +1208516800,1208516855,US +1208516856,1208516859,CN +1208516860,1208517001,US +1208517002,1208517002,CN +1208517003,1208517009,US +1208517010,1208517011,CN +1208517012,1208517017,US +1208517018,1208517018,GB +1208517019,1208517019,US +1208517020,1208517020,FR +1208517021,1208518143,US 1208518144,1208518207,MY -1208518208,1208519551,US +1208518208,1208518263,US +1208518264,1208518264,GB +1208518265,1208518271,US +1208518272,1208518287,GB +1208518288,1208518291,US +1208518292,1208518295,CN +1208518296,1208519167,US +1208519168,1208519423,CN +1208519424,1208519551,US 1208519552,1208519679,TR -1208519680,1208519935,CA -1208519936,1208521983,US -1208521984,1208522239,CA -1208522240,1208523775,US +1208519680,1208523775,US 1208523776,1208523903,GB 1208523904,1208523991,US 1208523992,1208523995,TR -1208523996,1208524159,US -1208524160,1208524287,TR -1208524288,1208524563,US -1208524564,1208524567,IT -1208524568,1208525823,US +1208523996,1208524063,US +1208524064,1208524079,CN +1208524080,1208524159,US +1208524160,1208524223,ID +1208524224,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,1208531967,US +1208529152,1208529919,US +1208529920,1208530175,CN +1208530176,1208531967,US 1208531968,1208532223,CA 1208532224,1208586364,US 1208586365,1208586372,MA @@ -21659,8 +22239,7 @@ 1208587419,1208587426,TR 1208587427,1208587427,US 1208587428,1208587443,GB -1208587444,1208587457,TW -1208587458,1208587479,US +1208587444,1208587479,US 1208587480,1208587487,LK 1208587488,1208587488,US 1208587489,1208587504,GB @@ -21679,9 +22258,7 @@ 1208587738,1208587759,CN 1208587760,1208587873,US 1208587874,1208587881,PK -1208587882,1208587909,US -1208587910,1208587943,UY -1208587944,1208587944,US +1208587882,1208587944,US 1208587945,1208587976,GB 1208587977,1208588071,US 1208588072,1208588079,RU @@ -21693,11 +22270,7 @@ 1208588212,1208588219,CA 1208588220,1208588427,US 1208588428,1208588435,MO -1208588436,1208588437,US -1208588438,1208588445,PK -1208588446,1208588451,US -1208588452,1208588455,EG -1208588456,1208588463,US +1208588436,1208588463,US 1208588464,1208588476,AU 1208588477,1208588591,US 1208588592,1208588599,IN @@ -21705,19 +22278,13 @@ 1208588729,1208588760,GB 1208588761,1208588771,US 1208588772,1208588779,GB -1208588780,1208588819,US -1208588820,1208588839,PK -1208588840,1208588941,US -1208588942,1208588949,MO -1208588950,1208588953,US +1208588780,1208588953,US 1208588954,1208588961,TR 1208588962,1208588972,US 1208588973,1208588985,GB 1208588986,1208588989,US 1208588990,1208589000,GB -1208589001,1208589011,US -1208589012,1208589021,MO -1208589022,1208589065,US +1208589001,1208589065,US 1208589066,1208589073,CA 1208589074,1208589082,GB 1208589083,1208589156,US @@ -21740,16 +22307,12 @@ 1208589971,1208590002,GB 1208590003,1208590004,US 1208590005,1208590014,GB -1208590015,1208590045,US -1208590046,1208590053,SA -1208590054,1208590061,US +1208590015,1208590061,US 1208590062,1208590071,CN 1208590072,1208590091,US 1208590092,1208590108,GB 1208590109,1208590115,US -1208590116,1208590119,EG -1208590120,1208590120,US -1208590121,1208590123,EG +1208590116,1208590123,EG 1208590124,1208590140,US 1208590141,1208590154,CA 1208590155,1208590157,US @@ -21763,33 +22326,22 @@ 1208590266,1208590335,US 1208590336,1208598527,CA 1208598528,1208647679,US -1208647680,1208656159,CA -1208656160,1208656191,US -1208656192,1208656223,CA -1208656224,1208656255,US -1208656256,1208656319,CA +1208647680,1208656319,CA 1208656320,1208656351,US -1208656352,1208656383,CA -1208656384,1208656511,ID +1208656352,1208656511,CA 1208656512,1208656543,US 1208656544,1208656575,CA 1208656576,1208656583,DO 1208656584,1208656591,PA -1208656592,1208656599,RS -1208656600,1208656607,UA -1208656608,1208656639,US +1208656592,1208656639,CA 1208656640,1208656703,MY -1208656704,1208656711,UA -1208656712,1208656735,CA -1208656736,1208656767,US +1208656704,1208656767,CA 1208656768,1208656895,MY 1208656896,1208656903,CA 1208656904,1208656911,LB 1208656912,1208657087,CA 1208657088,1208657103,MA -1208657104,1208657111,CA -1208657112,1208657119,MA -1208657120,1208657139,CA +1208657104,1208657139,CA 1208657140,1208657143,SE 1208657144,1208657415,CA 1208657416,1208657423,CH @@ -21804,24 +22356,18 @@ 1208657720,1208657727,CH 1208657728,1208657775,CA 1208657776,1208657783,PA -1208657784,1208657823,CA -1208657824,1208657831,DO -1208657832,1208657855,CA +1208657784,1208657855,CA 1208657856,1208657871,PA 1208657872,1208657919,CA 1208657920,1208657975,MA 1208657976,1208657983,CA 1208657984,1208657991,CN 1208657992,1208658015,MA -1208658016,1208658023,CA -1208658024,1208658031,DO +1208658016,1208658031,CA 1208658032,1208658039,MA -1208658040,1208658047,CA -1208658048,1208658079,US -1208658080,1208658103,CA +1208658040,1208658103,CA 1208658104,1208658111,FR -1208658112,1208658119,DO -1208658120,1208658127,CA +1208658112,1208658127,CA 1208658128,1208658143,MA 1208658144,1208658159,CA 1208658160,1208658167,MA @@ -21829,29 +22375,23 @@ 1208658176,1208658199,MA 1208658200,1208658223,CA 1208658224,1208658239,MA -1208658240,1208658247,CY -1208658248,1208658263,CA +1208658240,1208658263,CA 1208658264,1208658271,KE 1208658272,1208658279,IL 1208658280,1208658303,CA 1208658304,1208658335,US 1208658336,1208658343,KE -1208658344,1208658351,CA -1208658352,1208658367,US -1208658368,1208658431,CA -1208658432,1208658767,US +1208658344,1208658431,CA +1208658432,1208658687,US +1208658688,1208658767,CA 1208658768,1208658775,MA -1208658776,1208658783,UA -1208658784,1208658799,CA +1208658776,1208658799,CA 1208658800,1208658807,KE -1208658808,1208658815,RS -1208658816,1208658847,CA +1208658808,1208658847,CA 1208658848,1208658855,MA 1208658856,1208658879,CA 1208658880,1208658887,DO -1208658888,1208658895,GB -1208658896,1208659103,CA -1208659104,1208659135,US +1208658888,1208659135,CA 1208659136,1208659151,CN 1208659152,1208659167,CA 1208659168,1208659199,AE @@ -21870,9 +22410,7 @@ 1208659744,1208659775,ID 1208659776,1208659791,CA 1208659792,1208659799,US -1208659800,1208659815,CA -1208659816,1208659823,UA -1208659824,1208659831,CA +1208659800,1208659831,CA 1208659832,1208659839,ID 1208659840,1208659903,PK 1208659904,1208721407,US @@ -21900,15 +22438,17 @@ 1208832776,1208832783,CA 1208832784,1208833023,US 1208833024,1208833031,PR -1208833032,1208852479,US +1208833032,1208833439,US +1208833440,1208833471,GB +1208833472,1208852479,US 1208852480,1208860671,CA 1208860672,1208918015,US 1208918016,1208920007,CA 1208920008,1208920015,US 1208920016,1208922111,CA 1208922112,1208954879,US -1208954880,1208958463,CA -1208958464,1208975359,US +1208954880,1208958975,CA +1208958976,1208975359,US 1208975360,1208980191,CA 1208980192,1208980223,US 1208980224,1208980503,CA @@ -21920,15 +22460,9 @@ 1208995456,1208995471,CA 1208995472,1209004863,US 1209004864,1209004927,GB -1209004928,1209189308,US -1209189309,1209189310,ES -1209189311,1209189342,US -1209189343,1209189374,ES -1209189375,1209189379,US +1209004928,1209189379,US 1209189380,1209189395,MX -1209189396,1209189631,US -1209189632,1209189887,MX -1209189888,1209190147,US +1209189396,1209190147,US 1209190148,1209190163,MX 1209190164,1209190167,US 1209190168,1209190195,GR @@ -21936,63 +22470,144 @@ 1209190852,1209190883,CA 1209190884,1209190911,US 1209190912,1209191167,MX -1209191168,1209270759,US -1209270760,1209270767,CA -1209270768,1209270859,US +1209191168,1209270543,US +1209270544,1209270547,CN +1209270548,1209270579,US +1209270580,1209270583,ID +1209270584,1209270759,US +1209270760,1209270763,CA +1209270764,1209270859,US 1209270860,1209270863,CA -1209270864,1209270919,US -1209270920,1209270923,CA -1209270924,1209271067,US +1209270864,1209271067,US 1209271068,1209271071,VN -1209271072,1209271095,US -1209271096,1209271099,CA -1209271100,1209271111,US +1209271072,1209271111,US 1209271112,1209271115,CA -1209271116,1209271463,US +1209271116,1209271207,US +1209271208,1209271211,FR +1209271212,1209271435,US +1209271436,1209271439,CN +1209271440,1209271463,US 1209271464,1209271467,IN -1209271468,1209271495,US -1209271496,1209271499,CA -1209271500,1209271503,US -1209271504,1209271507,TR -1209271508,1209271527,US +1209271468,1209271491,US +1209271492,1209271499,CA +1209271500,1209271503,MX +1209271504,1209271527,US 1209271528,1209271531,CA -1209271532,1209271691,US +1209271532,1209271579,US +1209271580,1209271583,BD +1209271584,1209271691,US 1209271692,1209271695,CA -1209271696,1209271827,US -1209271828,1209271831,CA -1209271832,1209271871,US +1209271696,1209271791,US +1209271792,1209271795,GB +1209271796,1209271871,US 1209271872,1209271875,TR 1209271876,1209271967,US 1209271968,1209271971,VN -1209271972,1209272003,US -1209272004,1209272007,GB -1209272008,1209272035,US -1209272036,1209272039,IT -1209272040,1209274623,US -1209274624,1209274751,CA +1209271972,1209271975,TR +1209271976,1209271995,US +1209271996,1209271999,FR +1209272000,1209272015,US +1209272016,1209272019,GB +1209272020,1209272031,US +1209272032,1209272035,GB +1209272036,1209272511,US +1209272512,1209272575,CN +1209272576,1209272895,US +1209272896,1209272959,CN +1209272960,1209273215,US +1209273216,1209273279,CN +1209273280,1209273647,US +1209273648,1209273655,CN +1209273656,1209273663,US +1209273664,1209273671,BD +1209273672,1209273991,US +1209273992,1209273999,FR +1209274000,1209274175,US +1209274176,1209274239,FR +1209274240,1209274303,US +1209274304,1209274367,CN +1209274368,1209274607,US +1209274608,1209274623,FR +1209274624,1209274751,CN 1209274752,1209274815,US 1209274816,1209274879,CA -1209274880,1209275910,US +1209274880,1209275071,US +1209275072,1209275135,GB +1209275136,1209275863,US +1209275864,1209275871,FR +1209275872,1209275910,US 1209275911,1209275911,MY -1209275912,1209276511,US -1209276512,1209276543,VN -1209276544,1209276799,US +1209275912,1209275924,US +1209275925,1209275925,CN +1209275926,1209275928,US +1209275929,1209275929,MY +1209275930,1209275931,US +1209275932,1209275932,CN +1209275933,1209276351,US +1209276352,1209276415,CN +1209276416,1209276799,US 1209276800,1209276807,BD -1209276808,1209277183,US -1209277184,1209277215,BD -1209277216,1209277575,US +1209276808,1209276815,FR +1209276816,1209277087,US +1209277088,1209277095,FR +1209277096,1209277135,US +1209277136,1209277143,FR +1209277144,1209277155,US +1209277156,1209277156,SE +1209277157,1209277177,US +1209277178,1209277178,FR +1209277179,1209277575,US 1209277576,1209277583,BD -1209277584,1209279167,US +1209277584,1209278207,US +1209278208,1209278463,IE +1209278464,1209278911,US +1209278912,1209278919,TR +1209278920,1209279167,US 1209279168,1209279231,VN -1209279232,1209280191,US +1209279232,1209279615,US +1209279616,1209279743,GB +1209279744,1209279871,US +1209279872,1209279935,MY +1209279936,1209280191,US 1209280192,1209280255,VN -1209280256,1209280975,US -1209280976,1209280983,IT -1209280984,1209281247,US +1209280256,1209280575,US +1209280576,1209280607,FR +1209280608,1209280619,US +1209280620,1209280623,GB +1209280624,1209280959,US +1209280960,1209280975,GB +1209280976,1209281247,US 1209281248,1209281279,CA -1209281280,1209283967,US +1209281280,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 +1209283752,1209283759,BD +1209283760,1209283871,US +1209283872,1209283875,TR +1209283876,1209283967,US 1209283968,1209284095,GB -1209284096,1209347839,US +1209284096,1209284223,US +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 +1209285064,1209285071,TR +1209285072,1209347839,US 1209347840,1209348095,GB 1209348096,1209357215,US 1209357216,1209357231,SI @@ -22710,8 +23325,8 @@ 1210418208,1210427039,US 1210427040,1210427071,JP 1210427072,1210449919,US -1210449920,1210468743,CA -1210468744,1210468767,US +1210449920,1210468751,CA +1210468752,1210468767,US 1210468768,1210580991,CA 1210580992,1210861207,US 1210861208,1210861215,GB @@ -22742,8 +23357,7 @@ 1211036032,1211036095,EC 1211036096,1211036703,US 1211036704,1211036719,BO -1211036720,1211036727,US -1211036728,1211036735,JM +1211036720,1211036735,US 1211036736,1211036751,GT 1211036752,1211036991,US 1211036992,1211037055,BR @@ -22778,8 +23392,8 @@ 1211304320,1211304351,NL 1211304352,1211304703,CA 1211304704,1211304767,GB -1211304768,1211304799,US -1211304800,1211304959,CA +1211304768,1211304831,US +1211304832,1211304959,CA 1211304960,1211305983,US 1211305984,1211306111,NL 1211306112,1211306751,US @@ -22799,10 +23413,18 @@ 1211308704,1211308719,VG 1211308720,1211308735,CA 1211308736,1211308751,BV -1211308752,1211309055,CA +1211308752,1211308767,CA +1211308768,1211308783,US +1211308784,1211309055,CA 1211309056,1211309311,US 1211309312,1211310079,CA -1211310080,1211314383,US +1211310080,1211313219,US +1211313220,1211313231,IN +1211313232,1211313431,US +1211313432,1211313439,IN +1211313440,1211313567,US +1211313568,1211313579,IN +1211313580,1211314383,US 1211314384,1211314399,CA 1211314400,1211314415,US 1211314416,1211314423,CA @@ -22810,9 +23432,7 @@ 1211314640,1211314671,CA 1211314672,1211314863,US 1211314864,1211314879,CA -1211314880,1211315711,US -1211315712,1211316223,CA -1211316224,1211316479,US +1211314880,1211316479,US 1211316480,1211316991,CA 1211316992,1211317503,US 1211317504,1211317759,CA @@ -22833,9 +23453,9 @@ 1211367504,1211367519,CH 1211367520,1211367615,US 1211367616,1211367679,GB -1211367680,1211367935,GI +1211367680,1211367935,US 1211367936,1211368191,CA -1211368192,1211368447,CY +1211368192,1211368447,EE 1211368448,1211384279,US 1211384280,1211384287,GB 1211384288,1211387983,US @@ -22844,7 +23464,11 @@ 1211388672,1211388687,IT 1211388688,1211391455,US 1211391456,1211391487,CN -1211391488,1211391743,US +1211391488,1211391711,US +1211391712,1211391719,CN +1211391720,1211391727,US +1211391728,1211391735,CN +1211391736,1211391743,US 1211391744,1211391999,IT 1211392000,1211392591,US 1211392592,1211392607,IT @@ -22884,9 +23508,7 @@ 1219256320,1219264511,CA 1219264512,1219272703,US 1219272704,1219276799,CA -1219276800,1219290047,US -1219290048,1219290063,CA -1219290064,1219290623,US +1219276800,1219290623,US 1219290624,1219290751,AU 1219290752,1219295295,US 1219295296,1219295359,GR @@ -22924,12 +23546,9 @@ 1224278600,1224278607,AU 1224278608,1224278815,US 1224278816,1224278823,CH -1224278824,1224285695,US -1224285696,1224286207,GB -1224286208,1224286719,US +1224278824,1224286719,US 1224286720,1224286975,CA -1224286976,1224290303,US -1224290304,1224290815,GB +1224286976,1224290815,US 1224290816,1224291071,CA 1224291072,1224292095,US 1224292096,1224292351,CA @@ -22941,9 +23560,7 @@ 1224299520,1224299775,CA 1224299776,1224303359,US 1224303360,1224303367,CA -1224303368,1224305151,US -1224305152,1224305663,GB -1224305664,1224311063,US +1224303368,1224311063,US 1224311064,1224311071,MX 1224311072,1224311247,US 1224311248,1224311255,CA @@ -22960,8 +23577,7 @@ 1224317440,1224317695,CA 1224317696,1224318207,US 1224318208,1224318463,CA -1224318464,1224320511,US -1224320512,1224321023,GB +1224318464,1224321023,US 1224321024,1224321535,CA 1224321536,1224322559,US 1224322560,1224323071,GB @@ -22991,9 +23607,7 @@ 1242300416,1242562559,CA 1242562560,1244659711,US 1244659712,1244790783,CA -1244790784,1244821247,US -1244821248,1244821375,CA -1244821376,1244831743,US +1244790784,1244831743,US 1244831744,1244839935,CA 1244839936,1244848127,US 1244848128,1244852223,CA @@ -23005,12 +23619,8 @@ 1246864900,1246864958,EG 1246864959,1246872069,US 1246872070,1246872081,GB -1246872082,1246873461,US -1246873462,1246873469,CA -1246873470,1246873491,US -1246873492,1246873501,GR -1246873502,1246874112,US -1246874113,1246874216,GB +1246872082,1246874127,US +1246874128,1246874216,GB 1246874217,1246874290,US 1246874291,1246874304,CA 1246874305,1246874368,US @@ -23025,9 +23635,10 @@ 1246902784,1246903039,NL 1246903040,1246937087,US 1246937088,1246945279,CA -1246945280,1246949375,US -1246953472,1247027199,US -1247027200,1247035391,A2 +1246945280,1247027199,US +1247027200,1247034559,A2 +1247034560,1247034575,US +1247034576,1247035391,A2 1247035392,1247069303,US 1247069304,1247069311,VA 1247069312,1247070815,US @@ -23060,7 +23671,25 @@ 1249010688,1249011711,CA 1249011712,1249019903,US 1249019904,1249020927,CA -1249020928,1249029119,US +1249020928,1249027175,US +1249027176,1249027183,IN +1249027184,1249027391,US +1249027392,1249027407,PH +1249027408,1249027455,US +1249027456,1249027471,CA +1249027472,1249027503,US +1249027504,1249027519,CA +1249027520,1249027551,US +1249027552,1249027559,CA +1249027560,1249027647,US +1249027648,1249027655,AU +1249027656,1249027823,US +1249027824,1249027839,CA +1249027840,1249027887,US +1249027888,1249027895,EG +1249027896,1249027919,US +1249027920,1249027935,AU +1249027936,1249029119,US 1249029120,1249030143,CA 1249030144,1249036287,US 1249036288,1249037311,TC @@ -23077,7 +23706,19 @@ 1249099776,1249101823,CA 1249101824,1249102847,PR 1249102848,1249103871,CA -1249103872,1249106943,US +1249103872,1249103887,TW +1249103888,1249103903,PH +1249103904,1249103951,US +1249103952,1249103967,TW +1249103968,1249104095,US +1249104096,1249104111,TW +1249104112,1249105119,US +1249105120,1249105127,AR +1249105128,1249105135,US +1249105136,1249105143,CH +1249105144,1249105183,US +1249105184,1249105191,ZA +1249105192,1249106943,US 1249106944,1249107967,CA 1249107968,1249130495,US 1249130496,1249131519,JM @@ -23090,7 +23731,11 @@ 1249171456,1249173503,CA 1249173504,1249179831,US 1249179832,1249179839,CA -1249179840,1249191935,US +1249179840,1249179967,US +1249179968,1249179983,SE +1249179984,1249180031,US +1249180032,1249180095,TW +1249180096,1249191935,US 1249191936,1249193983,CA 1249193984,1249203199,US 1249203200,1249204223,GD @@ -23098,7 +23743,9 @@ 1249210368,1249212415,KY 1249212416,1249217535,US 1249217536,1249218559,CA -1249218560,1249236991,US +1249218560,1249221887,US +1249221888,1249222655,RO +1249222656,1249236991,US 1249236992,1249239039,KY 1249239040,1249245183,US 1249245184,1249247231,CA @@ -23164,9 +23811,15 @@ 1249796096,1249804287,CA 1249804288,1249838847,US 1249838848,1249838911,IN -1249838912,1249839423,US +1249838912,1249838975,US +1249838976,1249839039,IN +1249839040,1249839423,US 1249839424,1249839487,VE -1249839488,1249845311,US +1249839488,1249843231,US +1249843232,1249843247,IN +1249843248,1249843423,US +1249843424,1249843439,IN +1249843440,1249845311,US 1249845312,1249845327,IN 1249845328,1249845343,US 1249845344,1249845375,IN @@ -23207,7 +23860,9 @@ 1254490112,1254555647,CA 1254555648,1254604159,US 1254604160,1254604175,GB -1254604176,1254621183,US +1254604176,1254604191,US +1254604192,1254604199,IE +1254604200,1254621183,US 1254621184,1254629375,CA 1254629376,1254704383,US 1254704384,1254704639,PH @@ -23745,8 +24400,8 @@ 1255007488,1255007711,CA 1255007712,1255011343,US 1255011344,1255011359,CA -1255011360,1255011367,US -1255011368,1255011551,CA +1255011360,1255011375,US +1255011376,1255011551,CA 1255011552,1255011559,US 1255011560,1255011839,CA 1255011840,1255039631,US @@ -23765,8 +24420,7 @@ 1255058672,1255058687,GB 1255058688,1255059151,US 1255059152,1255059167,GB -1255059168,1255059199,BS -1255059200,1255059327,US +1255059168,1255059327,US 1255059328,1255059343,NL 1255059344,1255059359,US 1255059360,1255059407,CA @@ -23793,19 +24447,13 @@ 1255062848,1255062863,CA 1255062864,1255063551,US 1255063552,1255071743,PR -1255071744,1255193599,US -1255193600,1255194623,GB -1255194624,1255210495,US +1255071744,1255210495,US 1255210496,1255211007,DE 1255211008,1255276543,US 1255276544,1255342079,CA 1255342080,1255369055,US 1255369056,1255369087,DE -1255369088,1255372287,US -1255372288,1255372543,CA -1255372544,1255373823,US -1255373824,1255374079,CA -1255374080,1255489535,US +1255369088,1255489535,US 1255489536,1255505919,PR 1255505920,1255514111,US 1255514112,1255522303,CA @@ -23819,9 +24467,9 @@ 1255753216,1255753471,GB 1255753472,1255768063,US 1255768064,1255768575,CA -1255768576,1255771135,US -1255771136,1255772159,CA -1255772160,1255780351,US +1255768576,1255770367,US +1255770368,1255770623,CA +1255770624,1255780351,US 1255780352,1255782399,CA 1255782400,1255796743,US 1255796744,1255796751,GB @@ -23833,26 +24481,20 @@ 1256057976,1256057983,BZ 1256057984,1256079359,US 1256079360,1256087551,KY -1256087552,1256098303,US -1256098304,1256098339,CA -1256098340,1256098343,US -1256098344,1256098815,CA +1256087552,1256098559,US +1256098560,1256098815,CA 1256098816,1263264273,US 1263264274,1263264289,PK -1263264290,1263264305,CA +1263264290,1263264305,US 1263264306,1263264354,PK -1263264355,1263264386,US -1263264387,1263264450,CA -1263264451,1263264767,US -1263264768,1263265023,CA -1263265024,1263266559,US -1263266560,1263266815,CA -1263266816,1263267327,US +1263264355,1263266623,US +1263266624,1263266655,CA +1263266656,1263267327,US 1263267328,1263267583,CA 1263267584,1263267647,US 1263267648,1263267679,CA -1263267680,1263268095,US -1263268096,1263268191,CA +1263267680,1263267839,US +1263267840,1263268191,CA 1263268192,1263268275,US 1263268276,1263268340,CA 1263268341,1263268343,US @@ -23861,20 +24503,15 @@ 1263268608,1263268672,CA 1263268673,1263268769,US 1263268770,1263268863,CA -1263268864,1263269119,US -1263269120,1263269631,CA -1263269632,1263270143,US -1263270144,1263270911,CA -1263270912,1263271423,US +1263268864,1263271423,US 1263271424,1263271679,CA 1263271680,1264717823,US 1264717824,1264718335,CA 1264718336,1264736255,US 1264736256,1264737279,DO -1264737280,1264738303,US -1264779264,1264980223,US -1264980224,1264980479,HK -1264980480,1264980735,US +1264737280,1264762879,US +1264762880,1264766975,CA +1264766976,1264980735,US 1264980736,1264980743,CA 1264980744,1266107759,US 1266107760,1266107775,UM @@ -23892,7 +24529,23 @@ 1268252672,1268776959,CA 1268776960,1275600895,US 1275600896,1275604991,BM -1275604992,1275621375,US +1275604992,1275605263,US +1275605264,1275605279,PL +1275605280,1275605567,US +1275605568,1275605583,PL +1275605584,1275605823,US +1275605824,1275605839,PL +1275605840,1275606207,US +1275606208,1275606223,PL +1275606224,1275606367,US +1275606368,1275606383,PL +1275606384,1275606975,US +1275606976,1275606991,PL +1275606992,1275607071,US +1275607072,1275607087,PL +1275607088,1275607407,US +1275607408,1275607423,PL +1275607424,1275621375,US 1275621376,1275625471,CA 1275625472,1275658239,US 1275658240,1275658495,GB @@ -24277,7 +24930,8 @@ 1279955104,1279955119,CA 1279955120,1279955151,US 1279955152,1279955159,AU -1279955160,1279956031,US +1279955160,1279956023,US +1279956024,1279956031,MX 1279956032,1279956047,CR 1279956048,1279956059,US 1279956060,1279956063,MX @@ -24289,7 +24943,29 @@ 1279956312,1279956351,CA 1279956352,1279956455,US 1279956456,1279956463,PA -1279956464,1279959551,US +1279956464,1279956998,US +1279956999,1279957007,IN +1279957008,1279957119,US +1279957120,1279957128,IN +1279957129,1279957135,US +1279957136,1279957151,IN +1279957152,1279957231,US +1279957232,1279957243,IN +1279957244,1279957375,US +1279957376,1279957383,IN +1279957384,1279957407,US +1279957408,1279957427,IN +1279957428,1279957431,US +1279957432,1279957439,IN +1279957440,1279957631,US +1279957632,1279957651,IN +1279957652,1279957655,US +1279957656,1279957674,IN +1279957675,1279958020,US +1279958021,1279958030,IN +1279958031,1279958399,US +1279958400,1279958495,IN +1279958496,1279959551,US 1279959552,1279959807,CA 1279959808,1279960063,US 1279960064,1279960127,CA @@ -24356,7 +25032,19 @@ 1279978272,1279978303,US 1279978304,1279978367,CA 1279978368,1279978495,VG -1279978496,1279979559,US +1279978496,1279978683,US +1279978684,1279978692,IN +1279978693,1279978693,US +1279978694,1279978702,IN +1279978703,1279978891,US +1279978892,1279978899,IN +1279978900,1279978927,US +1279978928,1279978939,IN +1279978940,1279979007,US +1279979008,1279979263,IN +1279979264,1279979327,US +1279979328,1279979391,IN +1279979392,1279979559,US 1279979560,1279979575,CA 1279979576,1279979583,US 1279979584,1279980063,CA @@ -24365,7 +25053,17 @@ 1279980080,1279980127,CA 1279980128,1279980135,US 1279980136,1279981567,CA -1279981568,1279999999,US +1279981568,1279981823,US +1279981824,1279981855,VG +1279981856,1279982778,US +1279982779,1279982788,IN +1279982789,1279983047,US +1279983048,1279983072,IN +1279983073,1279983079,US +1279983080,1279983087,IN +1279983088,1279983519,US +1279983520,1279983532,IN +1279983533,1279999999,US 1280000000,1280032767,CA 1280032768,1280040959,US 1280040960,1280043527,CA @@ -24494,193 +25192,8 @@ 1280049072,1280049095,CA 1280049096,1280049127,US 1280049128,1280049151,CA -1280049152,1280073735,US -1280073736,1280073743,DE -1280073744,1280073759,US -1280073760,1280073767,CA -1280073768,1280073775,US -1280073776,1280073791,CA -1280073792,1280073799,CR -1280073800,1280073807,US -1280073808,1280073815,MY -1280073816,1280073823,CA -1280073824,1280073831,US -1280073832,1280073847,CA -1280073848,1280073855,LT -1280073856,1280073863,UA -1280073864,1280073879,US -1280073880,1280073887,CA -1280073888,1280073895,RU -1280073896,1280073903,US -1280073904,1280073911,CA -1280073912,1280073919,NL -1280073920,1280073935,CA -1280073936,1280073943,US -1280073944,1280073951,ZA -1280073952,1280073959,CR -1280073960,1280073967,FR -1280073968,1280073975,US -1280073976,1280073983,CA -1280073984,1280073999,US -1280074000,1280074007,BR -1280074008,1280074023,US -1280074024,1280074039,CA -1280074040,1280074047,US -1280074048,1280074055,HU -1280074056,1280074071,US -1280074072,1280074087,CA -1280074088,1280074095,US -1280074096,1280074103,IL -1280074104,1280074127,US -1280074128,1280074135,CA -1280074136,1280074143,CN -1280074144,1280074151,GB -1280074152,1280074159,CA -1280074160,1280074175,US -1280074176,1280074183,CA -1280074184,1280074199,US -1280074200,1280074207,MY -1280074208,1280074215,DE -1280074216,1280074223,US -1280074224,1280074231,CA -1280074232,1280074239,SG -1280074240,1280074247,GB -1280074248,1280074255,US -1280074256,1280074263,DE -1280074264,1280074271,FR -1280074272,1280074279,CA -1280074280,1280074287,US -1280074288,1280074295,CA -1280074296,1280074303,US -1280074304,1280074311,CA -1280074312,1280074319,RU -1280074320,1280074327,US -1280074328,1280074359,CA -1280074360,1280074375,US -1280074376,1280074383,CA -1280074384,1280074391,PA -1280074392,1280074399,US -1280074400,1280074415,CA -1280074416,1280074423,JP -1280074424,1280074431,CA -1280074432,1280074439,US -1280074440,1280074455,CA -1280074456,1280074463,US -1280074464,1280074479,CA -1280074480,1280074487,AU -1280074488,1280074495,PA -1280074496,1280074511,US -1280074512,1280074519,MY -1280074520,1280074527,CA -1280074528,1280074567,US -1280074568,1280074575,CA -1280074576,1280074583,NL -1280074584,1280074599,US -1280074600,1280074607,CA -1280074608,1280074615,US -1280074616,1280074623,CA -1280074624,1280074631,VG -1280074632,1280074639,CA -1280074640,1280074655,US -1280074656,1280074663,AU -1280074664,1280074671,CA -1280074672,1280074687,US -1280074688,1280074695,FR -1280074696,1280074703,CA -1280074704,1280074711,MY -1280074712,1280074719,CA -1280074720,1280074735,US -1280074736,1280074751,CA -1280074752,1280074759,US -1280074760,1280074767,RO -1280074768,1280074775,CA -1280074776,1280074783,AE -1280074784,1280074791,AU -1280074792,1280074799,US -1280074800,1280074807,NL -1280074808,1280074815,GB -1280074816,1280074823,CA -1280074824,1280074831,FR -1280074832,1280074839,IL -1280074840,1280074847,CO -1280074848,1280074855,IT -1280074856,1280074871,CA -1280074872,1280074887,US -1280074888,1280074895,CA -1280074896,1280074911,US -1280074912,1280074919,CA -1280074920,1280074935,US -1280074936,1280074943,GB -1280074944,1280074959,CA -1280074960,1280074967,US -1280074968,1280074975,CA -1280074976,1280074999,US -1280075000,1280075007,GI -1280075008,1280075015,US -1280075016,1280075039,CA -1280075040,1280075047,IE -1280075048,1280075055,NL -1280075056,1280075063,RU -1280075064,1280075071,IT -1280075072,1280075087,CA -1280075088,1280075095,US -1280075096,1280075103,CL -1280075104,1280075119,US -1280075120,1280075127,CA -1280075128,1280075135,MY -1280075136,1280075143,CA -1280075144,1280075151,US -1280075152,1280075159,MY -1280075160,1280075167,US -1280075168,1280075175,MY -1280075176,1280075183,CA -1280075184,1280075191,US -1280075192,1280075231,CA -1280075232,1280075239,NL -1280075240,1280075271,US -1280075272,1280075295,CA -1280075296,1280075303,US -1280075304,1280075327,CA -1280075328,1280075343,US -1280075344,1280075351,CA -1280075352,1280075359,MY -1280075360,1280075367,US -1280075368,1280075375,CA -1280075376,1280075383,US -1280075384,1280075391,CA -1280075392,1280075415,MY -1280075416,1280075423,US -1280075424,1280075439,CA -1280075440,1280075471,US -1280075472,1280075487,CA -1280075488,1280075495,CR -1280075496,1280075503,GB -1280075504,1280075511,CA -1280075512,1280075519,CN -1280075520,1280075527,PH -1280075528,1280075535,CA -1280075536,1280075543,IT -1280075544,1280075551,ZA -1280075552,1280075559,TR -1280075560,1280075567,AE -1280075568,1280075575,US -1280075576,1280075583,CA -1280075584,1280075615,US -1280075616,1280075623,GB -1280075624,1280075655,CA -1280075656,1280075679,US -1280075680,1280075687,MY -1280075688,1280075719,CA -1280075720,1280075727,US -1280075728,1280075759,CA -1280075760,1280075767,US -1280075768,1280075775,GB -1280075776,1280075783,US -1280075784,1280078711,CA -1280078712,1280078719,US -1280078720,1280078743,CA -1280078744,1280078751,US -1280078752,1280081919,CA +1280049152,1280073727,US +1280073728,1280081919,CA 1280081920,1280090111,US 1280090112,1280091135,AI 1280091136,1280092159,VG @@ -24692,9 +25205,11 @@ 1280097280,1280097791,LC 1280097792,1280098303,AG 1280098304,1280102399,PR -1280102400,1280131071,US +1280102400,1280122879,US 1280131072,1280139263,CA -1280139264,1287877503,US +1280139264,1287612122,US +1287612123,1287612136,SE +1287612137,1287877503,US 1287877504,1287877567,UM 1287877568,1290252799,US 1290252800,1290252863,GB @@ -24768,8 +25283,7 @@ 1296238592,1296239103,NL 1296239104,1296239231,FR 1296239232,1296239359,NL -1296239360,1296239615,ES -1296239616,1296240127,FR +1296239360,1296240127,FR 1296240128,1296241151,BE 1296241152,1296241407,IT 1296241408,1296242175,NL @@ -24778,7 +25292,8 @@ 1296242432,1296242687,BE 1296242688,1296243199,FR 1296243200,1296243455,GB -1296243456,1296244223,US +1296243456,1296243711,FR +1296243712,1296244223,US 1296244224,1296244479,NL 1296244480,1296244735,GB 1296244736,1296244991,IR @@ -24796,7 +25311,7 @@ 1296248256,1296248318,BE 1296248319,1296248319,FR 1296248320,1296248383,BE -1296248384,1296248447,FR +1296248384,1296248447,IT 1296248448,1296248575,US 1296248576,1296248703,IE 1296248704,1296249855,FR @@ -24812,7 +25327,9 @@ 1296250208,1296250239,ES 1296250240,1296250271,BE 1296250272,1296250303,DE -1296250304,1296251135,FR +1296250304,1296250335,FR +1296250336,1296250367,ES +1296250368,1296251135,FR 1296251136,1296251167,GB 1296251168,1296251199,HR 1296251200,1296251295,DE @@ -24820,7 +25337,9 @@ 1296251328,1296251359,IE 1296251360,1296251391,DE 1296251392,1296251775,NL -1296251776,1296252127,FR +1296251776,1296252095,FR +1296252096,1296252111,US +1296252112,1296252127,GB 1296252128,1296252143,ES 1296252144,1296252159,US 1296252160,1296252175,GB @@ -24835,7 +25354,9 @@ 1296252320,1296252367,FR 1296252368,1296252383,DE 1296252384,1296252415,IE -1296252416,1296252703,FR +1296252416,1296252687,FR +1296252688,1296252695,NL +1296252696,1296252703,IE 1296252704,1296252711,DE 1296252712,1296252719,FR 1296252720,1296252727,BE @@ -24853,7 +25374,7 @@ 1296252880,1296252887,DE 1296252888,1296252895,IE 1296252896,1296252911,BE -1296252912,1296252919,FR +1296252912,1296252919,GB 1296252920,1296252927,PL 1296252928,1296255743,DE 1296255744,1296255999,FR @@ -24898,10 +25419,14 @@ 1296265024,1296265087,FR 1296265088,1296265151,CA 1296265152,1296265215,FR -1296265216,1296267263,US +1296265216,1296265727,US +1296265728,1296265983,FR +1296265984,1296267263,US 1296267264,1296267519,FR 1296267520,1296267775,CA -1296267776,1296268799,US +1296267776,1296268031,US +1296268032,1296268287,FR +1296268288,1296268799,US 1296268800,1296269055,FR 1296269056,1296269311,US 1296269312,1296302079,TR @@ -24918,10 +25443,11 @@ 1296466384,1296466399,NO 1296466400,1296466415,AO 1296466416,1296466431,NG -1296466432,1296466559,NO +1296466432,1296466439,TZ +1296466440,1296466559,NO 1296466560,1296466583,NG -1296466584,1296466591,NO -1296466592,1296466623,NG +1296466584,1296466607,NO +1296466608,1296466623,NG 1296466624,1296466639,NO 1296466640,1296466655,NG 1296466656,1296466671,BJ @@ -24944,8 +25470,8 @@ 1296473088,1296474623,LT 1296474624,1296476159,US 1296476160,1296480255,LT -1296480256,1296481791,NO -1296481792,1296498687,LT +1296480256,1296482303,NO +1296482304,1296498687,LT 1296498688,1296531455,BG 1296531456,1296564223,MT 1296564224,1296566271,GB @@ -24963,6 +25489,7 @@ 1296590848,1296592895,ES 1296592896,1296594943,NL 1296594944,1296596991,RU +1296596992,1296599039,DE 1296599040,1296601087,RU 1296601088,1296603135,DE 1296603136,1296605183,NL @@ -25136,12 +25663,7 @@ 1296957440,1296973823,BG 1296973824,1296990207,CZ 1296990208,1297006591,BG -1297006592,1297018623,BA -1297018624,1297019135,MD -1297019136,1297020927,BA -1297020928,1297021183,RS -1297021184,1297021439,MD -1297021440,1297022207,BA +1297006592,1297022207,BA 1297022208,1297022463,MD 1297022464,1297022975,BA 1297022976,1297039359,LT @@ -25212,7 +25734,8 @@ 1297867584,1297867647,SC 1297867648,1297867687,RU 1297867688,1297867695,CY -1297867696,1297867871,RU +1297867696,1297867855,RU +1297867856,1297867871,MK 1297867872,1297867879,ES 1297867880,1297868799,RU 1297868800,1297870847,DE @@ -25241,7 +25764,7 @@ 1297993312,1297997823,CZ 1297997824,1298006015,IT 1298006016,1298014207,RU -1298014208,1298014719,LB +1298014208,1298014719,LT 1298014720,1298014975,RU 1298014976,1298015231,LT 1298015232,1298015487,RU @@ -25343,7 +25866,9 @@ 1299017728,1299021823,BE 1299021824,1299026111,CH 1299026112,1299026127,ES -1299026128,1299032063,CH +1299026128,1299026251,CH +1299026252,1299026263,PT +1299026264,1299032063,CH 1299032064,1299032319,NL 1299032320,1299038207,CH 1299038208,1299054591,FI @@ -25363,6 +25888,7 @@ 1299447808,1299709951,AT 1299709952,1299972095,UA 1299972096,1300234239,IL +1300234240,1302331391,FR 1302331392,1303379967,NL 1303379968,1304428543,DE 1304428544,1305477119,FR @@ -25373,7 +25899,10 @@ 1306263552,1306271743,KE 1306271744,1306279935,RU 1306279936,1306286079,IT -1306286080,1306288127,CH +1306286080,1306287103,CH +1306287104,1306287615,IT +1306287616,1306287903,CH +1306287904,1306288127,IT 1306288128,1306296319,AT 1306296320,1306311143,RU 1306311144,1306311151,CH @@ -25455,6 +25984,7 @@ 1307435008,1307443199,DE 1307443200,1307451391,IT 1307451392,1307459583,SE +1307459584,1307467775,BG 1307467776,1307484159,RU 1307484160,1307488767,GB 1307488768,1307489023,IE @@ -25466,7 +25996,9 @@ 1307508736,1307516927,BA 1307516928,1307525119,CH 1307525120,1307533311,BA -1307533312,1307541503,GB +1307533312,1307535359,GB +1307535360,1307535615,DE +1307535616,1307541503,GB 1307541504,1307549695,IT 1307549696,1307557887,UA 1307557888,1307574271,RU @@ -25570,14 +26102,18 @@ 1307848704,1307852799,CH 1307852800,1307856895,RU 1307856896,1307860991,IT -1307860992,1307861119,DE +1307860992,1307861079,DE +1307861080,1307861083,LU +1307861084,1307861119,DE 1307861120,1307861123,LU 1307861124,1307861127,A2 1307861128,1307861151,DE 1307861152,1307861155,LU 1307861156,1307861919,DE 1307861920,1307861935,LU -1307861936,1307864127,DE +1307861936,1307861983,DE +1307861984,1307861987,A2 +1307861988,1307864127,DE 1307864128,1307864135,LU 1307864136,1307864143,DE 1307864144,1307864147,A2 @@ -25615,7 +26151,9 @@ 1307919700,1307919703,ZA 1307919704,1307920575,GB 1307920576,1307920583,AU -1307920584,1307921471,GB +1307920584,1307921431,GB +1307921432,1307921439,BD +1307921440,1307921471,GB 1307921472,1307921535,ES 1307921536,1307922431,GB 1307922432,1307926527,NL @@ -25632,7 +26170,8 @@ 1307971584,1307979775,GB 1307979776,1307981823,ZW 1307981824,1307982847,ZA -1307982848,1307983871,GB +1307982848,1307983359,ZW +1307983360,1307983871,GB 1307983872,1307987967,LB 1307987968,1307992063,FR 1307992064,1307996159,RU @@ -25890,6 +26429,7 @@ 1310251008,1310255103,RU 1310255104,1310257151,CZ 1310257152,1310259199,FR +1310259200,1310261247,GB 1310261248,1310277631,UA 1310277632,1310310399,RU 1310310400,1310326783,GB @@ -26021,10 +26561,10 @@ 1311367808,1311367839,US 1311367840,1311367871,DK 1311367872,1311367887,LR -1311367888,1311367895,GB +1311367888,1311367895,A2 1311367896,1311367935,DK 1311367936,1311367967,BJ -1311367968,1311368191,GB +1311367968,1311368191,A2 1311368192,1311368319,BD 1311368320,1311368447,CF 1311368448,1311368575,TZ @@ -26276,7 +26816,9 @@ 1317129472,1317129727,IT 1317129728,1317137663,GB 1317137664,1317137919,SE -1317137920,1317142143,GB +1317137920,1317140095,GB +1317140096,1317140223,US +1317140224,1317142143,GB 1317142144,1317142271,CA 1317142272,1317142527,GB 1317142528,1317175295,PT @@ -26320,10 +26862,10 @@ 1317649920,1317650023,IE 1317650024,1317650031,GB 1317650032,1317650047,IE -1317650048,1317650087,GB -1317650088,1317650127,IE -1317650128,1317650175,GB -1317650176,1317650431,IE +1317650048,1317650095,GB +1317650096,1317650135,IE +1317650136,1317650143,GB +1317650144,1317650431,IE 1317650432,1317666815,RU 1317666816,1317666823,IQ 1317666824,1317666831,CD @@ -26331,27 +26873,21 @@ 1317666840,1317666855,GH 1317666856,1317666863,A2 1317666864,1317666871,GH -1317666872,1317666879,NG +1317666872,1317666879,A2 1317666880,1317666887,LR 1317666888,1317666911,NG -1317666912,1317666919,A2 -1317666920,1317666927,NG -1317666928,1317666959,A2 +1317666912,1317666959,A2 1317666960,1317666967,NG -1317666968,1317666983,A2 -1317666984,1317666991,CM -1317666992,1317666999,A2 +1317666968,1317666999,A2 1317667000,1317667007,AO 1317667008,1317667015,GH -1317667016,1317667023,A2 -1317667024,1317667031,LR -1317667032,1317667039,NG +1317667016,1317667039,A2 1317667040,1317667047,GH -1317667048,1317667055,NG +1317667048,1317667055,A2 1317667056,1317667063,LR -1317667064,1317667087,AO -1317667088,1317667095,A2 -1317667096,1317667103,GH +1317667064,1317667071,A2 +1317667072,1317667079,AO +1317667080,1317667103,A2 1317667104,1317667111,NG 1317667112,1317667119,GH 1317667120,1317667135,A2 @@ -26365,68 +26901,63 @@ 1317667192,1317667231,NG 1317667232,1317667239,GH 1317667240,1317667247,NG -1317667248,1317667255,A2 -1317667256,1317667263,NG +1317667248,1317667263,A2 1317667264,1317667271,GB 1317667272,1317667295,NG 1317667296,1317667303,A2 1317667304,1317667335,NG 1317667336,1317667343,A2 1317667344,1317667351,NG -1317667352,1317667367,AO +1317667352,1317667359,AO +1317667360,1317667367,A2 1317667368,1317667375,NG -1317667376,1317667391,AO -1317667392,1317667407,A2 +1317667376,1317667407,A2 1317667408,1317667423,NG 1317667424,1317667431,TD 1317667432,1317667439,GH -1317667440,1317667447,A2 -1317667448,1317667471,NG -1317667472,1317667479,A2 -1317667480,1317667487,NG +1317667440,1317667455,A2 +1317667456,1317667463,NG +1317667464,1317667487,A2 1317667488,1317667495,GH 1317667496,1317667503,NG -1317667504,1317667527,A2 -1317667528,1317667535,AO -1317667536,1317667543,A2 -1317667544,1317667551,AO +1317667504,1317667551,A2 1317667552,1317667567,NG -1317667568,1317667583,GH -1317667584,1317667759,NG +1317667568,1317667583,A2 +1317667584,1317667719,NG +1317667720,1317667735,A2 +1317667736,1317667743,NG +1317667744,1317667751,A2 +1317667752,1317667759,NG 1317667760,1317667767,FR 1317667768,1317667775,ZA -1317667776,1317667783,CD +1317667776,1317667783,A2 1317667784,1317667823,NG 1317667824,1317668095,A2 1317668096,1317668103,GH 1317668104,1317668111,ZM -1317668112,1317668127,AO -1317668128,1317668143,A2 +1317668112,1317668143,A2 1317668144,1317668151,AO 1317668152,1317668167,NG 1317668168,1317668183,A2 1317668184,1317668191,CI -1317668192,1317668199,NG +1317668192,1317668199,A2 1317668200,1317668207,BW 1317668208,1317668215,LR 1317668216,1317668223,CM 1317668224,1317668239,NG 1317668240,1317668247,A2 1317668248,1317668255,NG -1317668256,1317668263,A2 -1317668264,1317668271,AO +1317668256,1317668271,A2 1317668272,1317668279,SL 1317668280,1317668295,A2 1317668296,1317668303,CD 1317668304,1317668311,NG 1317668312,1317668319,IQ -1317668320,1317668327,A2 -1317668328,1317668343,NG +1317668320,1317668343,A2 1317668344,1317668351,AO 1317668352,1317668359,NG 1317668360,1317668367,SL -1317668368,1317668383,NG -1317668384,1317668391,A2 +1317668368,1317668391,A2 1317668392,1317668399,NG 1317668400,1317668407,A2 1317668408,1317668415,GH @@ -26435,18 +26966,18 @@ 1317668456,1317668463,NG 1317668464,1317668471,AO 1317668472,1317668479,NG -1317668480,1317668487,GH +1317668480,1317668487,A2 1317668488,1317668495,NG 1317668496,1317668503,GH 1317668504,1317668511,CD 1317668512,1317668519,IQ 1317668520,1317668527,MZ -1317668528,1317668535,AO +1317668528,1317668535,A2 1317668536,1317668543,BJ -1317668544,1317668551,UG +1317668544,1317668551,A2 1317668552,1317668559,AO 1317668560,1317668575,NG -1317668576,1317668583,IQ +1317668576,1317668583,A2 1317668584,1317668591,LR 1317668592,1317668599,NG 1317668600,1317668615,A2 @@ -26455,50 +26986,51 @@ 1317668632,1317668639,A2 1317668640,1317668655,NG 1317668656,1317668671,A2 -1317668672,1317668735,NG -1317668736,1317668743,A2 -1317668744,1317668751,AO -1317668752,1317668759,A2 +1317668672,1317668703,NG +1317668704,1317668727,A2 +1317668728,1317668735,NG +1317668736,1317668759,A2 1317668760,1317668767,IQ 1317668768,1317668775,LR 1317668776,1317668791,NG -1317668792,1317668799,A2 -1317668800,1317668807,AO +1317668792,1317668807,A2 1317668808,1317668815,NG -1317668816,1317668823,A2 -1317668824,1317668831,AO -1317668832,1317668855,NG +1317668816,1317668831,A2 +1317668832,1317668839,NG +1317668840,1317668847,A2 +1317668848,1317668855,NG 1317668856,1317668863,A2 1317668864,1317668871,LR -1317668872,1317668887,NG -1317668888,1317668895,A2 -1317668896,1317668903,NG -1317668904,1317668911,A2 +1317668872,1317668911,A2 1317668912,1317668927,NG 1317668928,1317668935,A2 -1317668936,1317668983,NG -1317668984,1317668991,A2 -1317668992,1317668999,NG +1317668936,1317668943,NG +1317668944,1317668959,A2 +1317668960,1317668983,NG +1317668984,1317668999,A2 1317669000,1317669007,CD -1317669008,1317669031,NG -1317669032,1317669055,A2 -1317669056,1317669103,NG +1317669008,1317669023,NG +1317669024,1317669055,A2 +1317669056,1317669079,NG +1317669080,1317669087,A2 +1317669088,1317669103,NG 1317669104,1317669111,A2 1317669112,1317669119,NG 1317669120,1317669375,GE 1317669376,1317669631,CG -1317669632,1317669887,A2 -1317669888,1317669895,AO -1317669896,1317669911,NG +1317669632,1317669903,A2 +1317669904,1317669911,NG 1317669912,1317669919,GH -1317669920,1317669959,NG +1317669920,1317669943,A2 +1317669944,1317669959,NG 1317669960,1317669983,A2 1317669984,1317669991,LR 1317669992,1317670015,NG -1317670016,1317670031,A2 -1317670032,1317670103,NG +1317670016,1317670063,A2 +1317670064,1317670103,NG 1317670104,1317670111,A2 -1317670112,1317670143,NG +1317670112,1317670135,NG +1317670136,1317670143,A2 1317670144,1317670175,SL 1317670176,1317670215,A2 1317670216,1317670223,NG @@ -26507,39 +27039,34 @@ 1317670240,1317670247,NG 1317670248,1317670255,A2 1317670256,1317670263,NG -1317670264,1317670399,A2 -1317670400,1317670415,CD +1317670264,1317670407,A2 +1317670408,1317670415,CD 1317670416,1317670423,A2 1317670424,1317670431,NG 1317670432,1317670447,A2 1317670448,1317670455,IQ 1317670456,1317670471,NG 1317670472,1317670479,CO -1317670480,1317670495,A2 -1317670496,1317670503,NG -1317670504,1317670511,A2 +1317670480,1317670511,A2 1317670512,1317670519,CI 1317670520,1317670543,NG 1317670544,1317670551,IQ 1317670552,1317670567,NG 1317670568,1317670575,A2 1317670576,1317670583,NG -1317670584,1317670599,GH -1317670600,1317670607,AO +1317670584,1317670591,GH +1317670592,1317670607,A2 1317670608,1317670639,NG 1317670640,1317670647,A2 1317670648,1317670655,NG 1317670656,1317670663,AO -1317670664,1317670671,A2 -1317670672,1317670679,CM +1317670664,1317670679,A2 1317670680,1317670703,NG 1317670704,1317670711,A2 1317670712,1317670719,GH 1317670720,1317670727,A2 1317670728,1317670735,GH -1317670736,1317670743,AO -1317670744,1317670751,NG -1317670752,1317670759,A2 +1317670736,1317670759,A2 1317670760,1317670767,NG 1317670768,1317670775,GH 1317670776,1317670783,A2 @@ -26547,18 +27074,14 @@ 1317670792,1317670807,NG 1317670808,1317670815,AO 1317670816,1317670823,NG -1317670824,1317670831,CD -1317670832,1317670839,NG -1317670840,1317670847,A2 +1317670824,1317670847,A2 1317670848,1317670855,NG 1317670856,1317670863,CD -1317670864,1317670871,A2 -1317670872,1317670887,NG -1317670888,1317670895,AO -1317670896,1317670896,A2 +1317670864,1317670879,A2 +1317670880,1317670887,NG +1317670888,1317670896,A2 1317670897,1317670911,NG -1317670912,1317671167,A2 -1317671168,1317671175,AO +1317670912,1317671175,A2 1317671176,1317671191,NG 1317671192,1317671199,A2 1317671200,1317671207,CI @@ -26569,7 +27092,9 @@ 1317671256,1317671263,CI 1317671264,1317671271,NG 1317671272,1317671279,A2 -1317671280,1317671335,NG +1317671280,1317671311,NG +1317671312,1317671319,A2 +1317671320,1317671335,NG 1317671336,1317671343,BW 1317671344,1317671351,CD 1317671352,1317671359,A2 @@ -26579,113 +27104,103 @@ 1317671384,1317671391,CI 1317671392,1317671399,NG 1317671400,1317671407,IQ -1317671408,1317671423,NG +1317671408,1317671415,A2 +1317671416,1317671423,NG 1317671424,1317671439,A2 1317671440,1317671487,NG -1317671488,1317671511,AO -1317671512,1317671519,A2 -1317671520,1317671527,AO +1317671488,1317671503,AO +1317671504,1317671527,A2 1317671528,1317671543,NG 1317671544,1317671551,GH 1317671552,1317671567,NG 1317671568,1317671583,A2 1317671584,1317671591,NG -1317671592,1317671599,A2 -1317671600,1317671607,NG +1317671592,1317671607,A2 1317671608,1317671615,GH 1317671616,1317671647,A2 1317671648,1317671679,NG 1317671680,1317671687,LR -1317671688,1317671703,A2 -1317671704,1317671727,NG -1317671728,1317671735,A2 -1317671736,1317671743,NG -1317671744,1317671759,A2 +1317671688,1317671711,A2 +1317671712,1317671727,NG +1317671728,1317671759,A2 1317671760,1317671767,IQ -1317671768,1317671775,A2 -1317671776,1317671807,NG +1317671768,1317671783,A2 +1317671784,1317671807,NG 1317671808,1317671823,CI 1317671824,1317671831,NG -1317671832,1317671839,GH -1317671840,1317671847,AO -1317671848,1317671871,NG -1317671872,1317671879,A2 -1317671880,1317671895,NG +1317671832,1317671847,A2 +1317671848,1317671863,NG +1317671864,1317671887,A2 +1317671888,1317671895,NG 1317671896,1317671903,CM 1317671904,1317671911,NG 1317671912,1317671919,AO 1317671920,1317671927,NG 1317671928,1317671935,A2 1317671936,1317672447,GA -1317672448,1317672455,NG -1317672456,1317672463,A2 +1317672448,1317672463,A2 1317672464,1317672471,NG 1317672472,1317672479,A2 1317672480,1317672487,ZM -1317672488,1317672511,NG -1317672512,1317672519,A2 -1317672520,1317672527,NG -1317672528,1317672543,A2 +1317672488,1317672503,NG +1317672504,1317672543,A2 1317672544,1317672551,CD 1317672552,1317672583,A2 1317672584,1317672591,CD 1317672592,1317672599,NG -1317672600,1317672607,A2 -1317672608,1317672615,CM -1317672616,1317672631,NG -1317672632,1317672639,A2 -1317672640,1317672655,NG +1317672600,1317672615,A2 +1317672616,1317672623,NG +1317672624,1317672655,A2 1317672656,1317672663,CD -1317672664,1317672695,NG -1317672696,1317672703,A2 +1317672664,1317672679,NG +1317672680,1317672703,A2 1317672704,1317672711,NG -1317672712,1317672719,A2 -1317672720,1317672727,LR +1317672712,1317672727,A2 1317672728,1317672735,NG 1317672736,1317672743,LR 1317672744,1317672759,A2 1317672760,1317672767,NG 1317672768,1317672775,A2 1317672776,1317672783,NG -1317672784,1317672791,AO -1317672792,1317672815,A2 +1317672784,1317672815,A2 1317672816,1317672823,BW 1317672824,1317672831,NG 1317672832,1317672839,A2 -1317672840,1317672855,NG -1317672856,1317672863,A2 +1317672840,1317672847,NG +1317672848,1317672863,A2 1317672864,1317672895,NG 1317672896,1317672903,A2 1317672904,1317672919,CI 1317672920,1317672927,GH 1317672928,1317672951,NG -1317672952,1317672959,AO +1317672952,1317672959,A2 1317672960,1317673239,NG 1317673240,1317673255,A2 -1317673256,1317673287,NG -1317673288,1317673295,LR -1317673296,1317673303,NG -1317673304,1317673311,A2 +1317673256,1317673271,NG +1317673272,1317673279,A2 +1317673280,1317673287,NG +1317673288,1317673311,A2 1317673312,1317673319,NG -1317673320,1317673327,LR -1317673328,1317673335,NG +1317673320,1317673335,A2 1317673336,1317673343,GH -1317673344,1317673351,A2 -1317673352,1317673375,NG +1317673344,1317673359,A2 +1317673360,1317673375,NG 1317673376,1317673383,AO -1317673384,1317673415,NG -1317673416,1317673423,A2 +1317673384,1317673391,NG +1317673392,1317673399,A2 +1317673400,1317673407,NG +1317673408,1317673423,A2 1317673424,1317673431,NG -1317673432,1317673439,AO -1317673440,1317673447,A2 +1317673432,1317673447,A2 1317673448,1317673463,AO 1317673464,1317673471,A2 1317673472,1317673479,NG -1317673480,1317673487,A2 -1317673488,1317673495,HK +1317673480,1317673495,A2 1317673496,1317673527,NG 1317673528,1317673535,A2 -1317673536,1317673575,NG +1317673536,1317673551,NG +1317673552,1317673559,A2 +1317673560,1317673575,NG 1317673576,1317673583,CD 1317673584,1317673591,A2 1317673592,1317673615,NG @@ -26693,31 +27208,23 @@ 1317673624,1317673631,NG 1317673632,1317673639,A2 1317673640,1317673647,AO -1317673648,1317673655,A2 -1317673656,1317673671,NG +1317673648,1317673671,A2 1317673672,1317673679,CM 1317673680,1317673687,IQ -1317673688,1317673711,NG +1317673688,1317673695,A2 +1317673696,1317673703,NG +1317673704,1317673711,A2 1317673712,1317673719,CO 1317673720,1317673727,NG -1317673728,1317673743,AO +1317673728,1317673735,A2 +1317673736,1317673743,AO 1317673744,1317673751,IQ -1317673752,1317673759,A2 -1317673760,1317673767,NG -1317673768,1317673775,AO -1317673776,1317673783,NG -1317673784,1317673791,AO -1317673792,1317673799,NG -1317673800,1317673807,A2 -1317673808,1317673815,NG +1317673752,1317673815,A2 1317673816,1317673823,LR -1317673824,1317673831,NG -1317673832,1317673839,AO -1317673840,1317673847,NG -1317673848,1317673855,A2 +1317673824,1317673855,A2 1317673856,1317673871,NG -1317673872,1317673895,A2 -1317673896,1317673911,NG +1317673872,1317673903,A2 +1317673904,1317673911,NG 1317673912,1317673919,AO 1317673920,1317673927,CI 1317673928,1317673943,NG @@ -26728,7 +27235,7 @@ 1317674240,1317674247,A2 1317674248,1317674255,NG 1317674256,1317674263,CM -1317674264,1317674271,AO +1317674264,1317674271,A2 1317674272,1317674279,NG 1317674280,1317674287,CD 1317674288,1317674295,GH @@ -26736,29 +27243,23 @@ 1317674304,1317674319,NG 1317674320,1317674351,A2 1317674352,1317674359,NG -1317674360,1317674367,AO -1317674368,1317674375,NG -1317674376,1317674383,A2 +1317674360,1317674383,A2 1317674384,1317674399,NG -1317674400,1317674407,A2 -1317674408,1317674415,NG +1317674400,1317674415,A2 1317674416,1317674423,AO 1317674424,1317674431,NG -1317674432,1317674440,AO +1317674432,1317674439,A2 +1317674440,1317674440,AO 1317674441,1317674447,A2 1317674448,1317674455,AO 1317674456,1317674471,NG -1317674472,1317674479,A2 -1317674480,1317674487,AO +1317674472,1317674487,A2 1317674488,1317674495,NG -1317674496,1317674503,A2 -1317674504,1317674511,AO -1317674512,1317674519,NG -1317674520,1317674527,A2 +1317674496,1317674527,A2 1317674528,1317674535,NG 1317674536,1317674543,IQ -1317674544,1317674599,NG -1317674600,1317674607,A2 +1317674544,1317674575,NG +1317674576,1317674607,A2 1317674608,1317674615,NG 1317674616,1317674623,IQ 1317674624,1317674631,NG @@ -26766,21 +27267,23 @@ 1317674640,1317674647,NG 1317674648,1317674655,A2 1317674656,1317674671,NG -1317674672,1317674679,A2 -1317674680,1317674687,AO -1317674688,1317674735,NG +1317674672,1317674687,A2 +1317674688,1317674703,NG +1317674704,1317674711,A2 +1317674712,1317674735,NG 1317674736,1317674743,AO 1317674744,1317674751,IQ 1317674752,1317674791,NG 1317674792,1317674799,A2 1317674800,1317674807,NG 1317674808,1317674823,A2 -1317674824,1317674871,NG -1317674872,1317674879,A2 +1317674824,1317674863,NG +1317674864,1317674879,A2 1317674880,1317674887,NG -1317674888,1317674911,AO +1317674888,1317674895,AO +1317674896,1317674911,A2 1317674912,1317674927,NG -1317674928,1317674935,AO +1317674928,1317674935,A2 1317674936,1317674943,NG 1317674944,1317674951,GA 1317674952,1317674959,NG @@ -26789,32 +27292,32 @@ 1317674976,1317674991,A2 1317674992,1317675007,NG 1317675008,1317675023,A2 -1317675024,1317675047,NG +1317675024,1317675031,NG +1317675032,1317675039,A2 +1317675040,1317675047,NG 1317675048,1317675055,A2 1317675056,1317675063,NG 1317675064,1317675071,AO 1317675072,1317675095,NG 1317675096,1317675119,A2 1317675120,1317675127,NG -1317675128,1317675135,HK -1317675136,1317675143,NG -1317675144,1317675159,A2 -1317675160,1317675167,AO -1317675168,1317675175,NG -1317675176,1317675183,A2 +1317675128,1317675183,A2 1317675184,1317675199,CM -1317675200,1317675231,NG +1317675200,1317675223,NG +1317675224,1317675231,A2 1317675232,1317675239,LR -1317675240,1317675255,AO -1317675256,1317675263,A2 -1317675264,1317675279,NG +1317675240,1317675247,A2 +1317675248,1317675255,AO +1317675256,1317675271,A2 +1317675272,1317675279,NG 1317675280,1317675287,CM 1317675288,1317675295,A2 1317675296,1317675319,NG 1317675320,1317675343,CM -1317675344,1317675351,AO +1317675344,1317675351,A2 1317675352,1317675359,IQ -1317675360,1317675375,NG +1317675360,1317675367,NG +1317675368,1317675375,A2 1317675376,1317675383,CM 1317675384,1317675391,NG 1317675392,1317675407,A2 @@ -26823,19 +27326,18 @@ 1317675424,1317675439,NG 1317675440,1317675447,A2 1317675448,1317675455,NG -1317675456,1317675463,CD +1317675456,1317675463,A2 1317675464,1317675471,CI 1317675472,1317675479,A2 -1317675480,1317675511,NG -1317675512,1317675519,A2 -1317675520,1317675527,NG -1317675528,1317675535,AO +1317675480,1317675487,NG +1317675488,1317675503,A2 +1317675504,1317675511,NG +1317675512,1317675535,A2 1317675536,1317675543,NG 1317675544,1317675551,IQ 1317675552,1317675559,NG 1317675560,1317675567,NA -1317675568,1317675575,AO -1317675576,1317675583,A2 +1317675568,1317675583,A2 1317675584,1317675591,LR 1317675592,1317675607,NG 1317675608,1317675623,A2 @@ -26844,47 +27346,46 @@ 1317675648,1317675655,LR 1317675656,1317675663,NG 1317675664,1317675671,A2 -1317675672,1317675687,NG -1317675688,1317675695,CM +1317675672,1317675679,NG +1317675680,1317675695,A2 1317675696,1317675703,NG 1317675704,1317675711,A2 1317675712,1317675719,CM 1317675720,1317675735,NG -1317675736,1317675743,CD +1317675736,1317675743,A2 1317675744,1317675751,GH 1317675752,1317675759,NG 1317675760,1317675775,GH 1317675776,1317675783,NG 1317675784,1317675815,A2 1317675816,1317675831,NG -1317675832,1317675855,A2 -1317675856,1317675863,CM -1317675864,1317675903,A2 -1317675904,1317675911,GN +1317675832,1317675911,A2 1317675912,1317675927,NG -1317675928,1317675935,A2 -1317675936,1317675943,NG -1317675944,1317675951,A2 -1317675952,1317675959,NG -1317675960,1317676287,A2 +1317675928,1317675951,A2 +1317675952,1317675967,NG +1317675968,1317676287,A2 1317676288,1317676543,LR 1317676544,1317676583,A2 1317676584,1317676591,NG -1317676592,1317676663,A2 -1317676664,1317676671,NG -1317676672,1317676807,A2 -1317676808,1317676815,NG -1317676816,1317676823,A2 +1317676592,1317676655,A2 +1317676656,1317676671,NG +1317676672,1317676823,A2 1317676824,1317676831,NG -1317676832,1317676847,A2 -1317676848,1317676855,NG -1317676856,1317676895,A2 -1317676896,1317676935,NG -1317676936,1317676991,A2 +1317676832,1317676895,A2 +1317676896,1317676919,NG +1317676920,1317676991,A2 1317676992,1317676999,LR 1317677000,1317677007,IQ 1317677008,1317677015,IT -1317677016,1317677223,A2 +1317677016,1317677023,A2 +1317677024,1317677031,NG +1317677032,1317677079,A2 +1317677080,1317677087,SD +1317677088,1317677143,A2 +1317677144,1317677151,SD +1317677152,1317677199,A2 +1317677200,1317677207,NG +1317677208,1317677223,A2 1317677224,1317677231,NG 1317677232,1317677247,A2 1317677248,1317677255,NG @@ -26899,9 +27400,7 @@ 1317685504,1317685631,BE 1317685632,1317686271,DE 1317686272,1317686287,NL -1317686288,1317686303,DE -1317686304,1317686319,NL -1317686320,1317686335,DE +1317686288,1317686335,DE 1317686336,1317686399,NL 1317686400,1317695743,DE 1317695744,1317695999,CH @@ -26940,8 +27439,8 @@ 1317842944,1317843071,CY 1317843072,1317843135,HK 1317843136,1317843199,CY -1317843200,1317843327,US -1317843328,1317847039,NL +1317843200,1317843391,US +1317843392,1317847039,NL 1317847040,1317863423,RU 1317863424,1317879807,GB 1317879808,1317896191,SK @@ -27002,11 +27501,15 @@ 1318707200,1318707775,FR 1318707776,1318707783,GB 1318707784,1318708511,FR -1318708512,1318708527,GB -1318708528,1318708543,FR -1318708544,1318708547,GB -1318708548,1318708559,FR -1318708560,1318708991,GB +1318708512,1318708519,GB +1318708520,1318708523,FR +1318708524,1318708527,GB +1318708528,1318708599,FR +1318708600,1318708607,GB +1318708608,1318708631,FR +1318708632,1318708731,GB +1318708732,1318708735,FR +1318708736,1318708991,GB 1318708992,1318711647,FR 1318711648,1318711663,IT 1318711664,1318713855,FR @@ -27135,7 +27638,6 @@ 1331881984,1331883007,GB 1331883008,1331883263,SE 1331883264,1331886079,GB -1331886080,1331888127,ES 1331888128,1331890175,SE 1331890176,1331892223,IT 1331892224,1331894271,RU @@ -27160,6 +27662,7 @@ 1331929088,1331931135,FR 1331931136,1331933183,SE 1331933184,1331935231,TR +1331935232,1331937279,NL 1331937280,1331937535,GB 1331937536,1331937567,SM 1331937568,1331937583,US @@ -27170,9 +27673,12 @@ 1331938192,1331938207,AE 1331938208,1331938375,GB 1331938376,1331938383,AE -1331938384,1331938823,GB +1331938384,1331938399,IE +1331938400,1331938823,GB 1331938824,1331938831,US -1331938832,1331939327,GB +1331938832,1331938839,NG +1331938840,1331938847,IE +1331938848,1331939327,GB 1331939328,1331941375,BE 1331941376,1331943423,ES 1331943424,1331945471,RU @@ -27217,7 +27723,8 @@ 1333428224,1333460991,RU 1333460992,1333493759,GB 1333493760,1333526527,TR -1333526528,1333559295,BG +1333526528,1333551103,BG +1333551104,1333559295,PL 1333559296,1333592063,UA 1333592064,1333624831,IE 1333624832,1333657599,MK @@ -27244,6 +27751,7 @@ 1334165504,1334173695,PL 1334173696,1334181887,LT 1334181888,1334190079,RU +1334190080,1334198271,BG 1334198272,1334206463,RU 1334206464,1334214655,FI 1334214656,1334222847,JO @@ -27258,9 +27766,7 @@ 1334288384,1334296575,PL 1334296576,1334304767,UA 1334304768,1334312959,RU -1334312960,1334316031,SE -1334316032,1334316543,NO -1334316544,1334343047,SE +1334312960,1334343047,SE 1334343048,1334343055,NO 1334343056,1334345727,SE 1334345728,1334378495,RU @@ -27286,9 +27792,7 @@ 1334584256,1334584287,AT 1334584288,1334584351,DE 1334584352,1334584383,LU -1334584384,1334584903,DE -1334584904,1334584911,AT -1334584912,1334584999,DE +1334584384,1334584999,DE 1334585000,1334585007,US 1334585008,1334585111,DE 1334585112,1334585119,AT @@ -27382,6 +27886,7 @@ 1334730744,1334734847,RU 1334734848,1334738943,LT 1334738944,1334743039,CH +1334743040,1334747135,CZ 1334747136,1334751231,RU 1334751232,1334755327,BH 1334755328,1334759423,UA @@ -27579,47 +28084,7 @@ 1346392064,1346396159,UA 1346396160,1346400255,RU 1346400256,1346404351,IT -1346404352,1346404859,AT -1346404860,1346404863,NL -1346404864,1346404927,AT -1346404928,1346404943,NL -1346404944,1346405087,AT -1346405088,1346405103,NL -1346405104,1346405135,AT -1346405136,1346405199,NL -1346405200,1346405255,AT -1346405256,1346405263,NL -1346405264,1346405319,AT -1346405320,1346405351,NL -1346405352,1346405663,AT -1346405664,1346405887,NL -1346405888,1346406159,AT -1346406160,1346406231,NL -1346406232,1346406255,AT -1346406256,1346406258,NL -1346406259,1346406259,AT -1346406260,1346406263,NL -1346406264,1346406271,AT -1346406272,1346406295,NL -1346406296,1346406351,AT -1346406352,1346406359,NL -1346406360,1346406495,AT -1346406496,1346406503,NL -1346406504,1346406543,AT -1346406544,1346406575,NL -1346406576,1346406655,AT -1346406656,1346406671,NL -1346406672,1346406919,AT -1346406920,1346406927,NL -1346406928,1346406951,AT -1346406952,1346406975,NL -1346406976,1346406991,AT -1346406992,1346407039,NL -1346407040,1346407167,AT -1346407168,1346407183,NL -1346407184,1346407207,AT -1346407208,1346407295,NL -1346407296,1346408447,AT +1346404352,1346408447,AT 1346408448,1346412543,LU 1346412544,1346416639,RU 1346416640,1346420735,DE @@ -27659,8 +28124,8 @@ 1346501248,1346501343,GB 1346501344,1346501375,IM 1346501376,1346501743,GB -1346501744,1346501751,IM -1346501752,1346501795,GB +1346501744,1346501759,IM +1346501760,1346501795,GB 1346501796,1346501823,IM 1346501824,1346501848,GB 1346501849,1346501879,IM @@ -27676,7 +28141,9 @@ 1346519040,1346527231,RU 1346527232,1346531327,DE 1346531328,1346535423,ES -1346535424,1346537983,BE +1346535424,1346537335,BE +1346537336,1346537343,GB +1346537344,1346537983,BE 1346537984,1346537988,AT 1346537989,1346537991,BE 1346537992,1346537999,AT @@ -27772,6 +28239,7 @@ 1346846720,1346854911,DK 1346854912,1346859007,MT 1346859008,1346863103,IR +1346863104,1346867199,DK 1346867200,1346871295,BA 1346871296,1346879487,RU 1346879488,1346883583,FI @@ -27788,7 +28256,6 @@ 1346928640,1346932735,DE 1346932736,1346936831,DK 1346936832,1346940927,IT -1346940928,1346945023,DE 1346945024,1346949119,PL 1346949120,1346957311,RU 1346957312,1346961407,DE @@ -27858,6 +28325,7 @@ 1347162112,1347166207,IT 1347166208,1347174399,GR 1347174400,1347182591,IT +1347182592,1347186687,RU 1347186688,1347190783,GB 1347190784,1347194879,RU 1347194880,1347198975,SE @@ -27884,15 +28352,21 @@ 1347226624,1347227135,EG 1347227136,1347227391,HK 1347227392,1347227647,EG -1347227648,1347229311,DE +1347227648,1347228055,DE +1347228056,1347228063,GR +1347228064,1347229311,DE 1347229312,1347229343,AT -1347229344,1347231071,DE +1347229344,1347229895,DE +1347229896,1347229903,GR +1347229904,1347231071,DE 1347231072,1347231087,AT 1347231088,1347231095,GR 1347231096,1347231743,DE 1347231744,1347235839,UA 1347235840,1347239935,GE -1347239936,1347244031,DK +1347239936,1347240943,DK +1347240944,1347240959,GB +1347240960,1347244031,DK 1347244032,1347247359,GB 1347247360,1347247871,RU 1347247872,1347248127,US @@ -27994,9 +28468,7 @@ 1347293928,1347293935,US 1347293936,1347293943,NG 1347293944,1347293951,A2 -1347293952,1347293959,NG -1347293960,1347293967,GN -1347293968,1347293975,NG +1347293952,1347293975,NG 1347293976,1347293983,GN 1347293984,1347293991,US 1347293992,1347293999,NG @@ -28098,13 +28570,16 @@ 1347342336,1347346431,SE 1347346432,1347350527,BG 1347350528,1347354623,RU +1347354624,1347358719,GR 1347358720,1347362815,CZ 1347362816,1347366911,NL 1347366912,1347371007,IT 1347371008,1347375103,RU 1347375104,1347379199,GB 1347379200,1347383295,NL -1347383296,1347387391,EE +1347383296,1347386751,EE +1347386752,1347386815,MY +1347386816,1347387391,EE 1347387392,1347391487,GB 1347391488,1347395583,LB 1347395584,1347399679,SE @@ -28128,6 +28603,7 @@ 1347424352,1347427135,DK 1347427136,1347427327,NO 1347427328,1347428351,DK +1347428352,1347432447,BA 1347432448,1347436543,HR 1347436544,1347440639,SE 1347440640,1347444735,ES @@ -28304,14 +28780,12 @@ 1347855960,1347855967,DE 1347855968,1347855999,EU 1347856000,1347856063,DE -1347856064,1347856079,EU -1347856080,1347856239,DE +1347856064,1347856095,EU +1347856096,1347856239,DE 1347856240,1347856255,EU 1347856256,1347856383,DE 1347856384,1347856391,EU -1347856392,1347856415,DE -1347856416,1347856423,EU -1347856424,1347856431,DE +1347856392,1347856431,DE 1347856432,1347856447,EU 1347856448,1347856639,DE 1347856640,1347856895,AT @@ -28320,8 +28794,8 @@ 1347858504,1347858527,DE 1347858528,1347858559,EU 1347858560,1347858575,DE -1347858576,1347858591,EU -1347858592,1347858631,DE +1347858576,1347858623,EU +1347858624,1347858631,DE 1347858632,1347858639,EU 1347858640,1347859351,DE 1347859352,1347859359,EU @@ -28380,11 +28854,9 @@ 1347977600,1347977607,NG 1347977608,1347978007,A2 1347978008,1347978015,NG -1347978016,1347978023,A2 -1347978024,1347978039,NG -1347978040,1347978143,A2 -1347978144,1347978159,NG -1347978160,1347978191,A2 +1347978016,1347978031,A2 +1347978032,1347978039,NG +1347978040,1347978191,A2 1347978192,1347978199,NG 1347978200,1347978263,A2 1347978264,1347978271,NG @@ -28399,9 +28871,11 @@ 1347978408,1347978447,A2 1347978448,1347978463,NG 1347978464,1347978575,A2 -1347978576,1347978655,NG -1347978656,1347978719,A2 -1347978720,1347978735,NG +1347978576,1347978623,NG +1347978624,1347978631,A2 +1347978632,1347978647,NG +1347978648,1347978727,A2 +1347978728,1347978735,NG 1347978736,1347978775,A2 1347978776,1347978783,NG 1347978784,1347978847,A2 @@ -28426,16 +28900,14 @@ 1347979584,1347979591,NG 1347979592,1347979743,A2 1347979744,1347979751,NG -1347979752,1347980079,A2 -1347980080,1347980095,GH -1347980096,1347980111,NG +1347979752,1347980111,A2 1347980112,1347980127,GN 1347980128,1347980167,A2 1347980168,1347980175,NG 1347980176,1347980223,A2 1347980224,1347980271,NG -1347980272,1347980287,DK -1347980288,1347980415,A2 +1347980272,1347980279,DK +1347980280,1347980415,A2 1347980416,1347980479,NG 1347980480,1347980543,A2 1347980544,1347980559,DK @@ -28443,9 +28915,7 @@ 1347981008,1347981015,NG 1347981016,1347981023,A2 1347981024,1347981031,NG -1347981032,1347981183,A2 -1347981184,1347981191,NG -1347981192,1347981239,A2 +1347981032,1347981239,A2 1347981240,1347981247,NG 1347981248,1347981255,A2 1347981256,1347981263,DK @@ -28454,12 +28924,10 @@ 1347981936,1347982031,A2 1347982032,1347982055,NG 1347982056,1347982223,A2 -1347982224,1347982239,NG -1347982240,1347982279,A2 +1347982224,1347982231,NG +1347982232,1347982279,A2 1347982280,1347982287,NG -1347982288,1347982887,A2 -1347982888,1347982895,NG -1347982896,1347982911,A2 +1347982288,1347982911,A2 1347982912,1347982919,NG 1347982920,1347982927,A2 1347982928,1347982943,NG @@ -28475,9 +28943,7 @@ 1347983304,1347983311,NG 1347983312,1347983423,A2 1347983424,1347983487,NG -1347983488,1347983527,A2 -1347983528,1347983535,NG -1347983536,1347983567,A2 +1347983488,1347983567,A2 1347983568,1347983575,NG 1347983576,1347983903,A2 1347983904,1347983911,NG @@ -28495,9 +28961,7 @@ 1347984720,1347984735,NG 1347984736,1347984879,A2 1347984880,1347984895,NG -1347984896,1347984935,A2 -1347984936,1347984943,NG -1347984944,1347984959,A2 +1347984896,1347984959,A2 1347984960,1347984991,NG 1347984992,1347985031,A2 1347985032,1347985039,NG @@ -28530,9 +28994,7 @@ 1348076032,1348076287,LV 1348076288,1348076543,RU 1348076544,1348083711,LV -1348083712,1348086535,LU -1348086536,1348086543,NL -1348086544,1348091903,LU +1348083712,1348091903,LU 1348091904,1348095999,RU 1348096000,1348100095,AL 1348100096,1348104191,DE @@ -28760,7 +29222,9 @@ 1352445688,1352445703,NL 1352445704,1352663039,DE 1352663040,1353187327,DK -1353187328,1353253791,GB +1353187328,1353253663,GB +1353253664,1353253671,NL +1353253672,1353253791,GB 1353253792,1353253823,FR 1353253824,1353255071,GB 1353255072,1353255087,CA @@ -28782,7 +29246,9 @@ 1353258504,1353258639,SE 1353258640,1353258783,GB 1353258784,1353258807,SE -1353258808,1353265943,GB +1353258808,1353265375,GB +1353265376,1353265383,IE +1353265384,1353265943,GB 1353265944,1353265951,IE 1353265952,1353266959,GB 1353266960,1353266975,IE @@ -28794,8 +29260,8 @@ 1353270528,1353270783,IE 1353270784,1353271295,GB 1353271296,1353271423,IE -1353271424,1353271807,GB -1353271808,1353271831,ES +1353271424,1353271815,GB +1353271816,1353271831,ES 1353271832,1353271839,GB 1353271840,1353271847,ES 1353271848,1353271895,GB @@ -28808,21 +29274,13 @@ 1353272056,1353272063,GB 1353272064,1353272245,ES 1353272246,1353272255,GB -1353272256,1353272647,ES -1353272648,1353272655,GB -1353272656,1353272691,ES +1353272256,1353272691,ES 1353272692,1353272695,GB -1353272696,1353272727,ES -1353272728,1353272735,GB -1353272736,1353272783,ES -1353272784,1353272799,GB -1353272800,1353272807,ES +1353272696,1353272807,ES 1353272808,1353272815,GB 1353272816,1353272847,ES -1353272848,1353272879,GB -1353272880,1353272951,ES -1353272952,1353272959,GB -1353272960,1353273047,ES +1353272848,1353272863,GB +1353272864,1353273047,ES 1353273048,1353273055,GB 1353273056,1353273343,ES 1353273344,1353273631,BE @@ -28846,7 +29304,9 @@ 1353274896,1353274911,GB 1353274912,1353274919,ES 1353274920,1353274927,GB -1353274928,1353275023,ES +1353274928,1353275007,ES +1353275008,1353275015,GB +1353275016,1353275023,ES 1353275024,1353275039,GB 1353275040,1353275087,ES 1353275088,1353275103,GB @@ -28863,10 +29323,14 @@ 1353279744,1353279751,GB 1353279752,1353279759,IT 1353279760,1353279763,GB -1353279764,1353280119,IT -1353280120,1353280135,GB -1353280136,1353280543,IT -1353280544,1353280575,GB +1353279764,1353280079,IT +1353280080,1353280087,GB +1353280088,1353280119,IT +1353280120,1353280127,GB +1353280128,1353280143,IT +1353280144,1353280151,GB +1353280152,1353280559,IT +1353280560,1353280575,GB 1353280576,1353281023,IT 1353281024,1353281535,BE 1353281536,1353282047,GB @@ -28896,11 +29360,15 @@ 1353288832,1353288839,GB 1353288840,1353288847,IE 1353288848,1353288855,GB -1353288856,1353288887,IE -1353288888,1353288895,GB -1353288896,1353289247,IE +1353288856,1353288879,IE +1353288880,1353288895,GB +1353288896,1353288959,IE +1353288960,1353289087,GB +1353289088,1353289247,IE 1353289248,1353289255,GB -1353289256,1353289359,IE +1353289256,1353289279,IE +1353289280,1353289295,GB +1353289296,1353289359,IE 1353289360,1353289367,GB 1353289368,1353289391,IE 1353289392,1353289407,GB @@ -28923,16 +29391,18 @@ 1353298704,1353298707,SE 1353298708,1353298719,GB 1353298720,1353298751,DE -1353298752,1353298881,SE +1353298752,1353298815,SE +1353298816,1353298831,PT +1353298832,1353298879,GB +1353298880,1353298881,SE 1353298882,1353298887,GB -1353298888,1353299711,SE -1353299712,1353299839,GB +1353298888,1353299647,SE +1353299648,1353299839,GB 1353299840,1353299855,SE 1353299856,1353299863,GB -1353299864,1353300063,SE -1353300064,1353300071,GB -1353300072,1353300079,SE -1353300080,1353300103,GB +1353299864,1353300079,SE +1353300080,1353300095,PT +1353300096,1353300103,GB 1353300104,1353300111,SE 1353300112,1353300175,GB 1353300176,1353300191,SE @@ -28942,19 +29412,12 @@ 1353300280,1353300735,SE 1353300736,1353301095,GB 1353301096,1353301103,US -1353301104,1353305599,GB -1353305600,1353305607,IE -1353305608,1353306111,GB +1353301104,1353306111,GB 1353306112,1353306623,ES -1353306624,1353306624,BE -1353306625,1353306687,GB -1353306688,1353306695,BE -1353306696,1353306703,GB -1353306704,1353306735,BE +1353306624,1353306687,GB +1353306688,1353306735,BE 1353306736,1353306751,GB -1353306752,1353306831,BE -1353306832,1353306847,GB -1353306848,1353307135,BE +1353306752,1353307135,BE 1353307136,1353307143,IT 1353307144,1353308159,GB 1353308160,1353309183,FR @@ -28964,7 +29427,9 @@ 1353310608,1353310719,ES 1353310720,1353311175,IT 1353311176,1353311183,ES -1353311184,1353311231,IT +1353311184,1353311199,IT +1353311200,1353311215,GB +1353311216,1353311231,IT 1353311232,1353312255,GB 1353312256,1353312767,CH 1353312768,1353313111,IT @@ -29098,9 +29563,7 @@ 1354682772,1354682775,RS 1354682776,1354682895,DE 1354682896,1354682911,AE -1354682912,1354682939,DE -1354682940,1354682943,MC -1354682944,1354683095,DE +1354682912,1354683095,DE 1354683096,1354683103,IT 1354683104,1354683391,DE 1354683392,1354683903,PL @@ -29186,7 +29649,7 @@ 1357332480,1357333247,DE 1357333248,1357333503,GB 1357333504,1357333759,IR -1357333760,1357333823,EU +1357333760,1357333823,FR 1357333824,1357333855,GB 1357333856,1357334015,ES 1357334016,1357334271,TZ @@ -29201,10 +29664,9 @@ 1357336576,1357337599,NL 1357337600,1357337855,ES 1357337856,1357338111,SA -1357338112,1357338623,EU -1357338624,1357338879,FR +1357338112,1357338879,FR 1357338880,1357339391,NO -1357339392,1357339647,AT +1357339392,1357339647,ES 1357339648,1357339903,DZ 1357339904,1357340159,GB 1357340160,1357340415,DE @@ -29213,19 +29675,18 @@ 1357342720,1357348863,EU 1357348864,1357349119,DE 1357349120,1357349375,LU -1357349376,1357349887,EU +1357349376,1357349887,GB 1357349888,1357350399,ES 1357350400,1357350911,QA 1357350912,1357351167,GB 1357351168,1357351423,PL -1357351424,1357351935,EU -1357351936,1357352959,GB +1357351424,1357352959,GB 1357352960,1357355007,EU 1357355008,1357355263,NL 1357355264,1357355775,FR 1357355776,1357356031,GB 1357356032,1357356543,ES -1357356544,1357357055,EU +1357356544,1357357055,PT 1357357056,1357357567,ES 1357357568,1357358079,DE 1357358080,1357358335,ES @@ -29261,7 +29722,8 @@ 1357366880,1357366911,GB 1357366912,1357367039,EU 1357367040,1357367295,GB -1357367296,1357367807,EU +1357367296,1357367551,FR +1357367552,1357367807,EU 1357367808,1357368063,GB 1357368064,1357368831,GN 1357368832,1357369343,ES @@ -29272,7 +29734,7 @@ 1357370368,1357370879,EU 1357370880,1357371391,LY 1357371392,1357371647,GB -1357371648,1357371903,EU +1357371648,1357371903,FR 1357371904,1357372159,RU 1357372160,1357372415,GB 1357372416,1357372927,EU @@ -29361,10 +29823,13 @@ 1357883552,1357883583,EU 1357883584,1357883727,FR 1357883728,1357883759,EU -1357883760,1357883935,FR +1357883760,1357883903,FR +1357883904,1357883911,EU +1357883912,1357883935,FR 1357883936,1357883999,EU 1357884000,1357884031,FR -1357884032,1357884159,EU +1357884032,1357884095,RU +1357884096,1357884159,EU 1357884160,1357884423,FR 1357884424,1357884427,BE 1357884428,1357884439,EU @@ -29571,19 +30036,22 @@ 1358223728,1358223775,GB 1358223776,1358223843,DE 1358223844,1358223871,GB -1358223872,1358223911,DE +1358223872,1358223887,NL +1358223888,1358223911,DE 1358223912,1358223927,NL -1358223928,1358223967,DE -1358223968,1358224055,NL -1358224056,1358224511,DE +1358223928,1358223975,DE +1358223976,1358223991,NL +1358223992,1358223999,DE +1358224000,1358224079,NL +1358224080,1358224511,DE 1358224512,1358224519,BE 1358224520,1358224611,DE 1358224612,1358224651,BE 1358224652,1358224655,DE 1358224656,1358224719,BE 1358224720,1358224927,DE -1358224928,1358225119,IT -1358225120,1358225407,DE +1358224928,1358225127,IT +1358225128,1358225407,DE 1358225408,1358229503,RU 1358229504,1358229631,DE 1358229632,1358229639,LU @@ -29626,9 +30094,7 @@ 1358295040,1358299135,RU 1358299136,1358303231,DZ 1358303232,1358307327,RU -1358307328,1358313215,DE -1358313216,1358313727,ES -1358313728,1358315519,DE +1358307328,1358315519,DE 1358315520,1358323711,RU 1358323712,1358327807,LU 1358327808,1358328671,DE @@ -29759,7 +30225,7 @@ 1358524416,1358528511,DE 1358528512,1358536703,RU 1358536704,1358540799,HU -1358540800,1358544895,RU +1358540800,1358548991,RU 1358548992,1358553087,JO 1358553088,1358557183,UA 1358557184,1358559503,IE @@ -29775,7 +30241,7 @@ 1358598144,1358602239,IL 1358602240,1358622719,RU 1358622720,1358626815,SK -1358626816,1358630911,GB +1358626816,1358630911,A2 1358630912,1358634495,US 1358634496,1358635007,GB 1358635008,1358639103,TR @@ -29786,10 +30252,8 @@ 1358655488,1358667775,RU 1358667776,1358668067,PT 1358668068,1358668071,GB -1358668072,1358668231,PT -1358668232,1358668239,GB -1358668240,1358668263,PT -1358668264,1358668279,GB +1358668072,1358668271,PT +1358668272,1358668279,ES 1358668280,1358668359,PT 1358668360,1358668367,GB 1358668368,1358668463,PT @@ -29801,9 +30265,7 @@ 1358668800,1358668807,GB 1358668808,1358668927,PT 1358668928,1358668959,ES -1358668960,1358668983,PT -1358668984,1358668991,GB -1358668992,1358669351,PT +1358668960,1358669351,PT 1358669352,1358669359,GB 1358669360,1358669431,PT 1358669432,1358669439,GB @@ -29819,9 +30281,13 @@ 1358670016,1358670023,GB 1358670024,1358670071,PT 1358670072,1358670079,GB -1358670080,1358670175,PT -1358670176,1358670335,GB -1358670336,1358671415,PT +1358670080,1358670183,PT +1358670184,1358670191,GB +1358670192,1358670199,PT +1358670200,1358670207,GB +1358670208,1358671383,PT +1358671384,1358671391,GB +1358671392,1358671415,PT 1358671416,1358671423,GB 1358671424,1358671431,PT 1358671432,1358671439,GB @@ -29899,7 +30365,9 @@ 1358740672,1358740687,GB 1358740688,1358740883,SE 1358740884,1358740887,NL -1358740888,1358741055,SE +1358740888,1358740927,SE +1358740928,1358740943,DK +1358740944,1358741055,SE 1358741056,1358741071,GB 1358741072,1358741503,SE 1358741504,1358745599,IT @@ -30343,14 +30811,13 @@ 1360322560,1360326655,FI 1360326656,1360330751,PT 1360330752,1360334847,UA -1360334848,1360338943,AT 1360338944,1360343039,CY 1360343040,1360347135,SA 1360347136,1360351231,GB 1360351232,1360355327,AZ 1360355328,1360359423,EG 1360359424,1360363519,AT -1360363520,1360367615,IT +1360363520,1360365567,IT 1360367616,1360371711,IE 1360371712,1360375807,TR 1360375808,1360379903,NL @@ -30400,6 +30867,7 @@ 1360556032,1360564223,RU 1360564224,1360568319,AT 1360568320,1360572415,ES +1360572416,1360576511,RU 1360576512,1360580607,GB 1360580608,1360584703,UA 1360584704,1360588799,IT @@ -30411,14 +30879,16 @@ 1360613376,1360617471,SE 1360617472,1360621567,IT 1360621568,1360625663,ES -1360625664,1360627711,A2 -1360627712,1360627743,LB -1360627744,1360627967,A2 +1360625664,1360627455,DE +1360627456,1360627743,LB +1360627744,1360627967,DE 1360627968,1360628095,IQ 1360628096,1360628223,LU 1360628224,1360628735,LB 1360628736,1360628991,IQ -1360628992,1360629503,A2 +1360628992,1360629055,TR +1360629056,1360629247,DE +1360629248,1360629503,A2 1360629504,1360629759,IQ 1360629760,1360633855,SE 1360633856,1360637951,RU @@ -30917,7 +31387,6 @@ 1361038312,1361038319,NL 1361038320,1361038335,US 1361038336,1361039359,NL -1361039360,1361043455,IT 1361043456,1361051647,NO 1361051648,1362100223,ES 1362100224,1362395135,FR @@ -30989,9 +31458,7 @@ 1364526592,1364528639,GB 1364528640,1364528895,UA 1364528896,1364530175,GB -1364530176,1364539903,NL -1364539904,1364540159,US -1364540160,1364540671,NL +1364530176,1364540671,NL 1364540672,1364540927,US 1364540928,1364577023,NL 1364577024,1364577279,GB @@ -31096,8 +31563,8 @@ 1364970496,1364971519,GB 1364971520,1364975615,CZ 1364975616,1364979711,BJ -1364979712,1364983039,GB -1364983040,1364983551,CH +1364979712,1364982783,GB +1364982784,1364983551,CH 1364983552,1364983807,GB 1364983808,1364991999,DE 1364992000,1364996095,IT @@ -31230,7 +31697,9 @@ 1365159936,1365164031,HU 1365164032,1365166255,GB 1365166256,1365166271,IE -1365166272,1365172223,GB +1365166272,1365166303,GB +1365166304,1365166311,BD +1365166312,1365172223,GB 1365172224,1365176319,LV 1365176320,1365180415,HU 1365180416,1365183231,DE @@ -31243,50 +31712,195 @@ 1365204992,1365209087,CZ 1365209088,1365213183,BE 1365213184,1365217279,RU -1365217280,1365220391,GB +1365217280,1365217567,GB +1365217568,1365217575,PT +1365217576,1365217791,GB +1365217792,1365217807,BD +1365217808,1365217815,US +1365217816,1365217831,GB +1365217832,1365217839,TR +1365217840,1365217879,GB +1365217880,1365217919,US +1365217920,1365217975,GB +1365217976,1365218031,US +1365218032,1365218039,CA +1365218040,1365218047,GB +1365218048,1365218303,US +1365218304,1365218311,CA +1365218312,1365218319,AR +1365218320,1365218327,ZA +1365218328,1365218351,US +1365218352,1365218367,CY +1365218368,1365218375,RO +1365218376,1365218383,UA +1365218384,1365218407,EG +1365218408,1365218415,IN +1365218416,1365218431,GB +1365218432,1365218439,EG +1365218440,1365218447,ZA +1365218448,1365218455,CA +1365218456,1365218459,GB +1365218460,1365218463,US +1365218464,1365218471,EG +1365218472,1365218479,GB +1365218480,1365218511,GR +1365218512,1365218519,AU +1365218520,1365218527,US +1365218528,1365218543,GR +1365218544,1365218551,CY +1365218552,1365218559,GR +1365218560,1365218815,GB +1365218816,1365218879,EG +1365218880,1365218895,US +1365218896,1365218903,GB +1365218904,1365218911,MU +1365218912,1365218927,US +1365218928,1365218943,BR +1365218944,1365218951,IN +1365218952,1365218959,NL +1365218960,1365218975,US +1365218976,1365219007,CN +1365219008,1365219023,US +1365219024,1365219031,DK +1365219032,1365219039,CY +1365219040,1365219071,GB +1365219072,1365219103,TR +1365219104,1365219111,SA +1365219112,1365219119,GB +1365219120,1365219135,US +1365219136,1365219143,SA +1365219144,1365219159,US +1365219160,1365219167,CA +1365219168,1365219183,ES +1365219184,1365219191,CA +1365219192,1365219199,DE +1365219200,1365219207,IN +1365219208,1365219215,US +1365219216,1365219231,GB +1365219232,1365219247,CY +1365219248,1365219279,GB +1365219280,1365219287,BD +1365219288,1365219295,US +1365219296,1365219311,GB +1365219312,1365219327,TR +1365219328,1365219391,US +1365219392,1365219399,DK +1365219400,1365219407,AU +1365219408,1365219415,GB +1365219416,1365219423,TR +1365219424,1365219431,US +1365219432,1365219439,RU +1365219440,1365219455,US +1365219456,1365219463,NL +1365219464,1365219471,AU +1365219472,1365219479,IL +1365219480,1365219511,GB +1365219512,1365219519,BD +1365219520,1365219583,US +1365219584,1365219647,CN +1365219648,1365219663,IN +1365219664,1365219671,TR +1365219672,1365219679,GB +1365219680,1365219687,BD +1365219688,1365219695,US +1365219696,1365219703,DK +1365219704,1365219711,UA +1365219712,1365219743,TR +1365219744,1365219751,US +1365219752,1365219759,SG +1365219760,1365219775,UA +1365219776,1365219783,PY +1365219784,1365219791,BA +1365219792,1365219799,NO +1365219800,1365219807,TR +1365219808,1365219811,US +1365219812,1365219815,AU +1365219816,1365219903,US +1365219904,1365219919,ES +1365219920,1365219935,IN +1365219936,1365219951,CA +1365219952,1365219967,DK +1365219968,1365219983,ES +1365219984,1365219991,IT +1365219992,1365220007,EE +1365220008,1365220015,ES +1365220016,1365220031,US +1365220032,1365220127,CN +1365220128,1365220143,TR +1365220144,1365220151,IL +1365220152,1365220159,AR +1365220160,1365220223,US +1365220224,1365220255,JO +1365220256,1365220263,KW +1365220264,1365220271,GB +1365220272,1365220287,KW +1365220288,1365220303,AR +1365220304,1365220311,NL +1365220312,1365220319,BR +1365220320,1365220371,US +1365220372,1365220375,GB +1365220376,1365220387,US +1365220388,1365220391,JO 1365220392,1365220399,ZA -1365220400,1365220471,GB +1365220400,1365220407,GB +1365220408,1365220423,US +1365220424,1365220431,GB +1365220432,1365220435,JO +1365220436,1365220439,US +1365220440,1365220471,GB 1365220472,1365220479,US 1365220480,1365220487,AU -1365220488,1365220495,GB -1365220496,1365220503,US -1365220504,1365220511,GB -1365220512,1365220519,US -1365220520,1365220527,GB +1365220488,1365220523,US +1365220524,1365220527,GB 1365220528,1365220535,IS 1365220536,1365220551,GB 1365220552,1365220567,IS -1365220568,1365220575,GB +1365220568,1365220575,IL 1365220576,1365220583,CH 1365220584,1365220599,TR 1365220600,1365220607,GR 1365220608,1365220615,TR -1365220616,1365220623,GB -1365220624,1365220631,US -1365220632,1365220663,GB +1365220616,1365220631,US +1365220632,1365220639,GR +1365220640,1365220663,GB 1365220664,1365220679,US 1365220680,1365220687,IT -1365220688,1365220703,US -1365220704,1365220719,GB -1365220720,1365220727,US -1365220728,1365220735,GB -1365220736,1365220743,US -1365220744,1365220767,GB +1365220688,1365220727,US +1365220728,1365220735,JO +1365220736,1365220767,US 1365220768,1365220775,GR -1365220776,1365220783,JO +1365220776,1365220783,US 1365220784,1365220791,IN 1365220792,1365220799,KW 1365220800,1365220807,RU -1365220808,1365220815,GB +1365220808,1365220815,US 1365220816,1365220823,IN 1365220824,1365220831,GB -1365220832,1365220839,IT -1365220840,1365220847,GB +1365220832,1365220847,IT 1365220848,1365220855,AU -1365220856,1365220863,US -1365220864,1365220895,GB -1365220896,1365220903,GR -1365220904,1365221375,GB +1365220856,1365220903,US +1365220904,1365220911,CA +1365220912,1365220919,US +1365220920,1365220927,KW +1365220928,1365220935,IT +1365220936,1365220939,AR +1365220940,1365220943,US +1365220944,1365220959,GB +1365220960,1365220967,US +1365220968,1365220975,GB +1365220976,1365220979,US +1365220980,1365220983,GB +1365220984,1365220991,BR +1365220992,1365220999,ZA +1365221000,1365221023,US +1365221024,1365221031,TR +1365221032,1365221047,IL +1365221048,1365221055,GB +1365221056,1365221063,KW +1365221064,1365221071,MY +1365221072,1365221087,ES +1365221088,1365221119,US +1365221120,1365221375,GB 1365221376,1365225471,GE 1365225472,1365229567,UA 1365229568,1365233663,PL @@ -31548,9 +32162,7 @@ 1372702720,1372702735,DE 1372702736,1372702751,EU 1372702752,1372702991,DE -1372702992,1372703231,EU -1372703232,1372703263,DE -1372703264,1372703271,EU +1372702992,1372703271,EU 1372703272,1372703323,DE 1372703324,1372703327,EU 1372703328,1372703407,DE @@ -31654,7 +32266,9 @@ 1382154240,1382170623,FR 1382170624,1382171776,DE 1382171777,1382171791,CH -1382171792,1382173663,DE +1382171792,1382172215,DE +1382172216,1382172223,CH +1382172224,1382173663,DE 1382173664,1382173671,GB 1382173672,1382173675,DE 1382173676,1382173679,CH @@ -31664,9 +32278,7 @@ 1382177984,1382178303,LI 1382178304,1382179247,DE 1382179248,1382179279,GB -1382179280,1382179839,DE -1382179840,1382180863,CN -1382180864,1382182327,DE +1382179280,1382182327,DE 1382182328,1382182335,GB 1382182336,1382182547,DE 1382182548,1382182551,CH @@ -31700,8 +32312,7 @@ 1382212224,1382212239,FR 1382212240,1382212287,EU 1382212288,1382212351,NL -1382212352,1382212479,FR -1382212480,1382212607,EU +1382212352,1382212607,EU 1382212608,1382212863,FR 1382212864,1382213183,NL 1382213184,1382213199,EU @@ -31712,10 +32323,8 @@ 1382214896,1382216831,NL 1382216832,1382216895,GB 1382216896,1382216959,NL -1382216960,1382217215,FR -1382217216,1382217727,NL -1382217728,1382217983,GB -1382217984,1382218399,NL +1382216960,1382217215,GB +1382217216,1382218399,NL 1382218400,1382218447,GB 1382218448,1382218455,NL 1382218456,1382218495,GB @@ -31726,7 +32335,9 @@ 1382218912,1382218959,NL 1382218960,1382218991,GB 1382218992,1382219775,NL -1382219776,1382223551,SE +1382219776,1382223327,SE +1382223328,1382223359,FI +1382223360,1382223551,SE 1382223552,1382223615,NO 1382223616,1382224287,SE 1382224288,1382224319,NO @@ -31741,7 +32352,9 @@ 1382229512,1382232575,SE 1382232576,1382232639,NO 1382232640,1382232703,DK -1382232704,1382233407,SE +1382232704,1382233279,SE +1382233280,1382233343,NO +1382233344,1382233407,SE 1382233408,1382233423,NO 1382233424,1382252543,SE 1382252544,1382268927,CZ @@ -31790,8 +32403,8 @@ 1383098368,1383099391,GB 1383099392,1383099903,DE 1383099904,1383100159,GB -1383100160,1383100287,FR -1383100288,1383100831,GB +1383100160,1383100351,FR +1383100352,1383100831,GB 1383100832,1383100847,IE 1383100848,1383100879,GB 1383100880,1383100895,IE @@ -31824,7 +32437,24 @@ 1383194624,1383202815,GB 1383202816,1383211007,RU 1383211008,1383219199,CY -1383219200,1383227391,RS +1383219200,1383220223,AL +1383220224,1383222447,RS +1383222448,1383222455,AL +1383222456,1383223695,RS +1383223696,1383223703,AL +1383223704,1383225759,RS +1383225760,1383225771,AL +1383225772,1383225807,RS +1383225808,1383225808,AL +1383225809,1383225819,RS +1383225820,1383225827,AL +1383225828,1383226091,RS +1383226092,1383226095,AL +1383226096,1383226111,RS +1383226112,1383226623,AL +1383226624,1383226751,RS +1383226752,1383226815,AL +1383226816,1383227391,RS 1383227392,1383239295,RU 1383239296,1383239423,AR 1383239424,1383243775,RU @@ -31927,9 +32557,7 @@ 1383590656,1383590911,SK 1383590912,1383591167,CZ 1383591168,1383591935,SK -1383591936,1383592887,CZ -1383592888,1383592895,VC -1383592896,1383596031,CZ +1383591936,1383596031,CZ 1383596032,1384120319,FR 1384120320,1384153087,NG 1384153088,1384185855,FI @@ -32027,27 +32655,76 @@ 1384801088,1384802495,FR 1384802496,1384802559,IT 1384802560,1384808447,FR -1384808448,1384808959,EU -1384808960,1384808967,DE -1384808968,1384808975,SE +1384808448,1384808479,BE +1384808480,1384808735,EU +1384808736,1384808799,BE +1384808800,1384808831,FR +1384808832,1384808959,FI +1384808960,1384808967,BE +1384808968,1384808975,EU 1384808976,1384808991,DE -1384808992,1384809007,FI -1384809008,1384809015,PT +1384808992,1384809015,BE 1384809016,1384809023,GB -1384809024,1384809039,EU -1384809040,1384809055,FR -1384809056,1384809063,GE -1384809064,1384809071,GB -1384809072,1384809087,EU -1384809088,1384809103,FR -1384809104,1384811007,EU +1384809024,1384809039,FR +1384809040,1384809047,BE +1384809048,1384809055,EU +1384809056,1384809071,BE +1384809072,1384809087,FR +1384809088,1384809103,BE +1384809104,1384809111,EU +1384809112,1384809119,GE +1384809120,1384809175,BE +1384809176,1384809183,EU +1384809184,1384809199,BE +1384809200,1384809207,EU +1384809208,1384809215,BE +1384809216,1384809407,BR +1384809408,1384809439,FR +1384809440,1384809471,DE +1384809472,1384809983,US +1384809984,1384810239,PT +1384810240,1384811007,US 1384811008,1384811519,GB 1384811520,1384811647,IR -1384811648,1384812799,EU -1384812800,1384813311,GB -1384813312,1384818463,EU -1384818464,1384818495,BE -1384818496,1384824831,EU +1384811648,1384811711,EU +1384811712,1384811743,ES +1384811744,1384811775,BE +1384811776,1384812031,FR +1384812032,1384812159,PR +1384812160,1384812287,PT +1384812288,1384812543,ES +1384812544,1384813567,GB +1384813568,1384814079,ES +1384814080,1384814591,GB +1384814592,1384815103,BE +1384815104,1384815615,FR +1384815616,1384816127,BE +1384816128,1384816255,EU +1384816256,1384816383,ES +1384816384,1384816639,EU +1384816640,1384817151,DK +1384817152,1384817407,EU +1384817408,1384817439,GB +1384817440,1384817471,EU +1384817472,1384817503,SE +1384817504,1384817599,BE +1384817600,1384817663,FR +1384817664,1384817919,BE +1384817920,1384818175,EU +1384818176,1384818815,BE +1384818816,1384818879,NL +1384818880,1384819199,EU +1384819200,1384819711,GB +1384819712,1384820223,CH +1384820224,1384820735,BE +1384820736,1384821247,EU +1384821248,1384821759,BE +1384821760,1384822271,DK +1384822272,1384822783,ES +1384822784,1384823295,BE +1384823296,1384823807,CH +1384823808,1384824703,EU +1384824704,1384824831,BE 1384824832,1384841215,GB 1384841216,1384857599,PL 1384857600,1384873983,NL @@ -32084,7 +32761,8 @@ 1385259008,1385267199,IT 1385267200,1385275391,SE 1385275392,1385283583,IT -1385283584,1385287679,KW +1385287680,1385289727,IS +1385289728,1385291775,NO 1385291776,1385299967,TR 1385299968,1385308159,BG 1385308160,1385309439,BE @@ -32138,8 +32816,8 @@ 1385563936,1385564031,EU 1385564032,1385564095,IE 1385564096,1385564103,EU -1385564104,1385564127,IE -1385564128,1385564159,EU +1385564104,1385564111,IE +1385564112,1385564159,EU 1385564160,1385564231,HU 1385564232,1385564383,EU 1385564384,1385564671,HU @@ -32207,8 +32885,8 @@ 1386348544,1386414079,RU 1386414080,1386479615,GB 1386479616,1386545151,NO -1386545152,1386582015,DE -1386582016,1386594303,US +1386545152,1386586111,DE +1386586112,1386594303,US 1386594304,1386602495,DE 1386602496,1386610687,US 1386610688,1386676223,IL @@ -32250,11 +32928,15 @@ 1388388936,1388388991,NG 1388388992,1388389119,IT 1388389120,1388389135,NG -1388389136,1388389439,IT -1388389440,1388389471,NG +1388389136,1388389447,IT +1388389448,1388389471,NG 1388389472,1388389567,IT 1388389568,1388389631,NG -1388389632,1388390143,IT +1388389632,1388389903,IT +1388389904,1388389911,NG +1388389912,1388389919,IT +1388389920,1388390015,NG +1388390016,1388390143,IT 1388390144,1388394495,NG 1388394496,1388395519,IT 1388395520,1388396287,NG @@ -32342,11 +33024,10 @@ 1388642304,1388650495,FI 1388650496,1388658687,PL 1388658688,1388666879,GB +1388666880,1388675071,FR 1388675072,1388675327,NL 1388675328,1388675583,EU -1388675584,1388676095,DE -1388676096,1388676607,EU -1388676608,1388676863,DE +1388675584,1388676863,DE 1388676864,1388677119,EU 1388677120,1388677375,GB 1388677376,1388677631,EU @@ -32367,12 +33048,13 @@ 1388691456,1388699647,NL 1388699648,1388707839,SE 1388707840,1388708863,RU -1388708864,1388709119,LB +1388708864,1388709119,LT 1388709120,1388712191,RU 1388712192,1388712703,LT 1388712704,1388713215,LB -1388713216,1388713727,TJ -1388713728,1388714239,LB +1388713216,1388713727,RU +1388713728,1388713983,LT +1388713984,1388714239,LB 1388714240,1388714495,LT 1388714496,1388714751,RU 1388714752,1388715007,IQ @@ -32412,11 +33094,13 @@ 1388741760,1388741767,IE 1388741768,1388741787,GB 1388741788,1388741795,IE -1388741796,1388741819,GB +1388741796,1388741800,GB +1388741801,1388741807,IE +1388741808,1388741819,GB 1388741820,1388741859,IE 1388741860,1388741863,GB -1388741864,1388742007,IE -1388742008,1388742015,GB +1388741864,1388742011,IE +1388742012,1388742015,GB 1388742016,1388742019,IE 1388742020,1388742023,GB 1388742024,1388742024,IE @@ -32428,8 +33112,8 @@ 1388742740,1388743043,IE 1388743044,1388743055,GB 1388743056,1388743435,IE -1388743436,1388743439,GB -1388743440,1388744087,IE +1388743436,1388743451,GB +1388743452,1388744087,IE 1388744088,1388744095,GB 1388744096,1388744117,IE 1388744118,1388744127,GB @@ -32451,22 +33135,20 @@ 1388745916,1388745919,GB 1388745920,1388745927,IE 1388745928,1388745935,GB -1388745936,1388745971,IE -1388745972,1388745975,GB -1388745976,1388746151,IE -1388746152,1388746155,GB -1388746156,1388746167,IE -1388746168,1388746239,GB +1388745936,1388746155,IE +1388746156,1388746159,GB +1388746160,1388746171,IE +1388746172,1388746239,GB 1388746240,1388746659,IE 1388746660,1388746671,GB 1388746672,1388746703,IE -1388746704,1388746707,GB -1388746708,1388746859,IE +1388746704,1388746711,GB +1388746712,1388746859,IE 1388746860,1388746863,GB 1388746864,1388746895,IE 1388746896,1388746903,GB -1388746904,1388746967,IE -1388746968,1388746975,GB +1388746904,1388746959,IE +1388746960,1388746975,GB 1388746976,1388747083,IE 1388747084,1388747087,GB 1388747088,1388747551,IE @@ -32497,12 +33179,14 @@ 1388765184,1388773375,GB 1388773376,1388781567,NO 1388781568,1388789759,ES -1388789760,1388789887,NL -1388789888,1388789951,GB -1388789952,1388797951,NL +1388789760,1388797951,NL 1388797952,1388806143,RU 1388806144,1388814335,DE -1388814336,1388821119,AX +1388814336,1388815103,AX +1388815104,1388815231,FI +1388815232,1388818687,AX +1388818688,1388818815,FI +1388818816,1388821119,AX 1388821120,1388821150,SE 1388821151,1388821247,AX 1388821248,1388822527,SE @@ -32610,8 +33294,9 @@ 1389213208,1389213215,LY 1389213216,1389213311,A2 1389213312,1389213343,LY -1389213344,1389215231,A2 -1389215232,1389217791,AF +1389213344,1389214719,A2 +1389214720,1389215743,LY +1389215744,1389217791,AF 1389217792,1389218303,A2 1389218304,1389219839,AF 1389219840,1389220095,A2 @@ -32672,9 +33357,7 @@ 1389224512,1389224543,A2 1389224544,1389224559,IR 1389224560,1389224575,SA -1389224576,1389224703,A2 -1389224704,1389224959,LY -1389224960,1389225215,A2 +1389224576,1389225215,A2 1389225216,1389225471,SA 1389225472,1389225535,A2 1389225536,1389225599,IQ @@ -32778,8 +33461,10 @@ 1389269377,1389269759,A2 1389269760,1389269887,CD 1389269888,1389270015,A2 -1389270016,1389270271,CD -1389270272,1389270815,A2 +1389270016,1389270079,CD +1389270080,1389270095,A2 +1389270096,1389270111,CD +1389270112,1389270815,A2 1389270816,1389270823,US 1389270824,1389271039,A2 1389271040,1389271295,CA @@ -33083,7 +33768,9 @@ 1401241600,1401242623,DK 1401242624,1401244159,DE 1401244160,1401246719,EU -1401246720,1401264903,DE +1401246720,1401257983,DE +1401257984,1401264127,EU +1401264128,1401264903,DE 1401264904,1401265151,EU 1401265152,1401265919,DE 1401265920,1401266175,EU @@ -33136,6 +33823,7 @@ 1401477120,1401479167,BE 1401479168,1401481215,PL 1401481216,1401485311,RU +1401485312,1401487359,FI 1401487360,1401489407,GB 1401489408,1401491455,SE 1401491456,1401493503,NL @@ -33179,17 +33867,19 @@ 1401565184,1401567231,RU 1401567232,1401569279,GB 1401569280,1401585663,DE -1401585664,1401595087,GB -1401595088,1401595095,NG -1401595096,1401599167,GB -1401599168,1401599231,IE +1401585664,1401599167,GB +1401599168,1401599211,IE +1401599212,1401599213,GB +1401599214,1401599231,IE 1401599232,1401602047,GB 1401602048,1401618431,ES 1401618432,1401634815,AM 1401634816,1401651199,HR 1401651200,1401667583,RU 1401667584,1401683967,IT -1401683968,1401684479,SE +1401683968,1401684067,SE +1401684068,1401684071,NO +1401684072,1401684479,SE 1401684480,1401684511,DK 1401684512,1401684543,SE 1401684544,1401684607,DK @@ -33254,7 +33944,8 @@ 1401743344,1401743359,GB 1401743360,1401745439,SE 1401745440,1401745443,GB -1401745444,1401745487,SE +1401745444,1401745447,US +1401745448,1401745487,SE 1401745488,1401745503,ES 1401745504,1401745919,SE 1401745920,1401745935,IT @@ -33271,8 +33962,8 @@ 1401746224,1401746239,SE 1401746240,1401746255,NL 1401746256,1401746271,ES -1401746272,1401746275,GB -1401746276,1401746431,SE +1401746272,1401746279,GB +1401746280,1401746431,SE 1401746432,1401746447,NL 1401746448,1401746467,SE 1401746468,1401746471,NL @@ -33303,7 +33994,8 @@ 1401747280,1401747295,ES 1401747296,1401747391,SE 1401747392,1401747407,DE -1401747408,1401747487,SE +1401747408,1401747423,GB +1401747424,1401747487,SE 1401747488,1401747495,DK 1401747496,1401747499,SE 1401747500,1401747503,GB @@ -33565,7 +34257,8 @@ 1404026880,1404043263,ES 1404043264,1404076031,SE 1404076032,1404084223,DE -1404084224,1404184063,SE +1404084224,1404092415,NO +1404092416,1404184063,SE 1404184064,1404184575,NO 1404184576,1404186623,SE 1404186624,1404187647,NO @@ -33582,8 +34275,10 @@ 1404197888,1404198911,LT 1404198912,1404200959,SE 1404200960,1404203007,NL -1404203008,1404204031,HR -1404204032,1404207103,SE +1404203008,1404204800,HR +1404204801,1404205055,SE +1404205056,1404206079,HR +1404206080,1404207103,SE 1404207104,1404210175,NO 1404210176,1404212223,LV 1404212224,1404215295,SE @@ -33612,10 +34307,11 @@ 1404411904,1404645375,SE 1404645376,1404645887,HR 1404645888,1404764159,SE -1404764160,1404768255,NL -1404768256,1404802047,SE -1404802048,1404802815,EE -1404802816,1404803071,SE +1404764160,1404768511,NL +1404768512,1404768767,SE +1404768768,1404769279,NL +1404769280,1404802047,SE +1404802048,1404803071,EE 1404803072,1404803583,LV 1404803584,1404805119,SE 1404805120,1404813311,AT @@ -33705,7 +34401,6 @@ 1406763008,1406771199,BE 1406771200,1406779391,GB 1406779392,1406787583,RU -1406787584,1406795775,AM 1406795776,1406803967,GB 1406803968,1406812159,DE 1406812160,1406820351,SE @@ -33728,7 +34423,7 @@ 1406951424,1406959615,PL 1406959616,1406964287,DE 1406964288,1406964319,CH -1406964320,1406964327,BG +1406964320,1406964327,DE 1406964328,1406964351,NL 1406964352,1406964735,DE 1406964736,1406964927,US @@ -33776,7 +34471,9 @@ 1407516672,1407516679,A2 1407516680,1407516687,NG 1407516688,1407516703,A2 -1407516704,1407516735,NG +1407516704,1407516711,NG +1407516712,1407516727,A2 +1407516728,1407516735,NG 1407516736,1407516743,UG 1407516744,1407516751,LR 1407516752,1407516759,SL @@ -33784,15 +34481,16 @@ 1407516768,1407516775,AO 1407516776,1407516783,A2 1407516784,1407516791,NG -1407516792,1407516799,AO -1407516800,1407516807,GH +1407516792,1407516807,A2 1407516808,1407516815,NG 1407516816,1407516831,A2 1407516832,1407516839,NG 1407516840,1407516847,A2 1407516848,1407516855,NG 1407516856,1407516863,A2 -1407516864,1407516895,NG +1407516864,1407516871,NG +1407516872,1407516879,A2 +1407516880,1407516895,NG 1407516896,1407516911,A2 1407516912,1407516927,NG 1407516928,1407517183,ZW @@ -33800,9 +34498,10 @@ 1407517312,1407517383,A2 1407517384,1407517391,CD 1407517392,1407517415,A2 -1407517416,1407517439,NG -1407517440,1407517823,A2 -1407517824,1407517887,NG +1407517416,1407517423,NG +1407517424,1407517431,A2 +1407517432,1407517439,NG +1407517440,1407517887,A2 1407517888,1407517919,CD 1407517920,1407517951,A2 1407517952,1407518015,SL @@ -33811,32 +34510,30 @@ 1407518040,1407518047,CD 1407518048,1407518063,NG 1407518064,1407518079,A2 -1407518080,1407518111,FR +1407518080,1407518111,LR 1407518112,1407518127,NG 1407518128,1407518135,KE 1407518136,1407518143,GH -1407518144,1407518159,ZA +1407518144,1407518151,A2 +1407518152,1407518159,ZA 1407518160,1407518167,NG 1407518168,1407518175,CD -1407518176,1407518183,GH -1407518184,1407518199,NG +1407518176,1407518183,A2 +1407518184,1407518191,NG +1407518192,1407518199,A2 1407518200,1407518207,AE 1407518208,1407518215,ZW -1407518216,1407518223,ZA -1407518224,1407518231,A2 -1407518232,1407518255,NG -1407518256,1407518263,CD +1407518216,1407518239,A2 +1407518240,1407518247,NG +1407518248,1407518263,A2 1407518264,1407518269,GH 1407518270,1407518335,A2 1407518336,1407518343,CG 1407518344,1407518351,ZA -1407518352,1407518359,GH +1407518352,1407518359,A2 1407518360,1407518367,NG 1407518368,1407518375,ZA -1407518376,1407518391,NG -1407518392,1407518399,CD -1407518400,1407518719,A2 -1407518720,1407518783,AO +1407518376,1407518783,A2 1407518784,1407518815,CD 1407518816,1407518831,A2 1407518832,1407518847,NG @@ -33846,8 +34543,7 @@ 1407518976,1407518983,NG 1407518984,1407518991,A2 1407518992,1407518999,NG -1407519000,1407519007,A2 -1407519008,1407519015,NG +1407519000,1407519015,A2 1407519016,1407519023,AO 1407519024,1407519031,NG 1407519032,1407519039,AO @@ -33855,7 +34551,7 @@ 1407519048,1407519055,A2 1407519056,1407519063,NG 1407519064,1407519071,BJ -1407519072,1407519079,CD +1407519072,1407519079,A2 1407519080,1407519095,NG 1407519096,1407519103,CM 1407519104,1407519111,NG @@ -33864,23 +34560,20 @@ 1407519144,1407519151,AO 1407519152,1407519159,A2 1407519160,1407519167,AO -1407519168,1407519175,NG +1407519168,1407519175,A2 1407519176,1407519183,SL 1407519184,1407519191,NG 1407519192,1407519199,CD -1407519200,1407519207,AO +1407519200,1407519207,A2 1407519208,1407519215,TG 1407519216,1407519223,NG 1407519224,1407519231,A2 1407519232,1407519615,NG -1407519616,1407519743,A2 -1407519744,1407519751,NG -1407519752,1407519759,A2 -1407519760,1407519775,NG -1407519776,1407519783,A2 +1407519616,1407519751,A2 +1407519752,1407519767,NG +1407519768,1407519783,A2 1407519784,1407519791,NG -1407519792,1407519799,IQ -1407519800,1407519839,A2 +1407519792,1407519839,A2 1407519840,1407519855,NG 1407519856,1407519863,A2 1407519864,1407519871,NG @@ -33889,14 +34582,12 @@ 1407520280,1407520303,A2 1407520304,1407520327,NG 1407520328,1407520335,SL -1407520336,1407520343,A2 -1407520344,1407520359,NG +1407520336,1407520351,A2 +1407520352,1407520359,NG 1407520360,1407520367,CD 1407520368,1407520375,A2 1407520376,1407520397,NG -1407520398,1407520399,A2 -1407520400,1407520423,NG -1407520424,1407520439,A2 +1407520398,1407520439,A2 1407520440,1407520447,CD 1407520448,1407520463,NG 1407520464,1407520519,A2 @@ -33913,21 +34604,16 @@ 1407520632,1407520639,A2 1407520640,1407520655,NG 1407520656,1407520663,GA -1407520664,1407520671,A2 -1407520672,1407520679,CM -1407520680,1407520687,A2 +1407520664,1407520687,A2 1407520688,1407520695,NG 1407520696,1407520711,A2 1407520712,1407520719,NG -1407520720,1407520727,A2 -1407520728,1407520735,AO -1407520736,1407520759,A2 +1407520720,1407520759,A2 1407520760,1407520767,CD 1407520768,1407520775,ZW 1407520776,1407520783,A2 1407520784,1407520791,SD -1407520792,1407520839,A2 -1407520840,1407520847,NG +1407520792,1407520847,A2 1407520848,1407520855,ZM 1407520856,1407520863,A2 1407520864,1407520871,NG @@ -33936,25 +34622,23 @@ 1407520904,1407520911,NG 1407520912,1407520919,ZW 1407520920,1407520927,IQ -1407520928,1407520943,A2 -1407520944,1407520951,IQ +1407520928,1407520951,A2 1407520952,1407520959,ZW 1407520960,1407520967,TZ 1407520968,1407520975,CD 1407520976,1407520983,A2 1407520984,1407520991,ZM -1407520992,1407520999,AO -1407521000,1407521023,A2 +1407520992,1407521023,A2 1407521024,1407521031,ZW 1407521032,1407521055,A2 1407521056,1407521063,KE 1407521064,1407521127,A2 1407521128,1407521135,NG -1407521136,1407521415,A2 +1407521136,1407521215,A2 +1407521216,1407521223,NG +1407521224,1407521415,A2 1407521416,1407521423,LR -1407521424,1407522047,A2 -1407522048,1407522303,TZ -1407522304,1407522319,A2 +1407521424,1407522319,A2 1407522320,1407522327,BF 1407522328,1407522335,NG 1407522336,1407522351,SO @@ -33962,19 +34646,17 @@ 1407522360,1407522367,NG 1407522368,1407522375,A2 1407522376,1407522383,LR -1407522384,1407522399,A2 -1407522400,1407522407,NG +1407522384,1407522407,A2 1407522408,1407522415,LR -1407522416,1407522431,NG +1407522416,1407522431,A2 1407522432,1407522439,IQ 1407522440,1407522440,NG 1407522441,1407522463,A2 1407522464,1407522479,NG -1407522480,1407522487,CD -1407522488,1407522495,A2 +1407522480,1407522495,A2 1407522496,1407522503,NG -1407522504,1407522527,A2 -1407522528,1407522559,NG +1407522504,1407522535,A2 +1407522536,1407522559,NG 1407522560,1407522567,A2 1407522568,1407522575,NG 1407522576,1407522583,A2 @@ -33993,20 +34675,21 @@ 1407522712,1407522727,A2 1407522728,1407522735,CD 1407522736,1407522775,A2 -1407522776,1407522799,NG +1407522776,1407522791,NG +1407522792,1407522799,A2 1407522800,1407522807,ZM -1407522808,1407522815,IQ +1407522808,1407522815,A2 1407522816,1407523071,ZW 1407523072,1407523279,A2 1407523280,1407523287,MZ 1407523288,1407523295,NG 1407523296,1407523327,A2 -1407523328,1407523343,MW +1407523328,1407523335,MW +1407523336,1407523343,A2 1407523344,1407523351,NG 1407523352,1407523359,LU 1407523360,1407523367,ZW -1407523368,1407523375,NG -1407523376,1407523391,A2 +1407523368,1407523391,A2 1407523392,1407523455,ZW 1407523456,1407523519,MW 1407523520,1407523535,A2 @@ -34015,24 +34698,32 @@ 1407523560,1407523567,KE 1407523568,1407523575,A2 1407523576,1407523583,MW -1407523584,1407523839,SO +1407523584,1407523839,A2 1407523840,1407524351,MW 1407524352,1407524607,GB -1407524608,1407524615,A2 +1407524608,1407524615,ZW 1407524616,1407524623,CM 1407524624,1407524631,NG -1407524632,1407524639,BF -1407524640,1407524655,A2 +1407524632,1407524639,A2 +1407524640,1407524647,NG +1407524648,1407524655,CD 1407524656,1407524663,NG 1407524664,1407524687,A2 1407524688,1407524703,MZ -1407524704,1407525071,A2 +1407524704,1407524735,A2 +1407524736,1407524743,NG +1407524744,1407524783,A2 +1407524784,1407524791,ZW +1407524792,1407524967,A2 +1407524968,1407524975,NG +1407524976,1407525071,A2 1407525072,1407525079,NG -1407525080,1407526911,A2 -1407526912,1407527935,MZ -1407527936,1407529023,A2 +1407525080,1407525247,A2 +1407525248,1407525255,CD +1407525256,1407525263,NG +1407525264,1407529023,A2 1407529024,1407529087,NG -1407529088,1407529095,TZ +1407529088,1407529095,A2 1407529096,1407529103,ZW 1407529104,1407529111,NG 1407529112,1407529127,A2 @@ -34041,25 +34732,20 @@ 1407529144,1407529151,ZW 1407529152,1407529183,A2 1407529184,1407529191,NG -1407529192,1407529199,MZ -1407529200,1407529207,A2 +1407529192,1407529207,A2 1407529208,1407529215,NG 1407529216,1407531007,A2 -1407531008,1407531775,NG -1407531776,1407532543,A2 +1407531008,1407531519,NG +1407531520,1407532543,A2 1407532544,1407532551,UG 1407532552,1407532559,AO 1407532560,1407532583,A2 1407532584,1407532591,ZW -1407532592,1407532607,A2 -1407532608,1407532615,ZW +1407532592,1407532615,A2 1407532616,1407532623,KG -1407532624,1407532631,A2 -1407532632,1407532639,MW -1407532640,1407532647,TZ -1407532648,1407532663,A2 +1407532624,1407532663,A2 1407532664,1407532671,TZ -1407532672,1407532799,ZW +1407532672,1407532799,A2 1407532800,1407532927,SO 1407532928,1407533055,A2 1407533056,1407533311,NG @@ -34070,8 +34756,8 @@ 1407533376,1407533407,CD 1407533408,1407533423,A2 1407533424,1407533567,GH -1407533568,1407533591,NG -1407533592,1407533607,A2 +1407533568,1407533583,NG +1407533584,1407533607,A2 1407533608,1407533631,NG 1407533632,1407533663,IQ 1407533664,1407533679,A2 @@ -34083,7 +34769,9 @@ 1407533736,1407533743,GN 1407533744,1407533751,NG 1407533752,1407533759,A2 -1407533760,1407533783,NG +1407533760,1407533767,NG +1407533768,1407533775,A2 +1407533776,1407533783,NG 1407533784,1407533815,A2 1407533816,1407533823,NG 1407533824,1407534079,A2 @@ -34101,8 +34789,8 @@ 1407534560,1407534567,NG 1407534568,1407534575,A2 1407534576,1407534583,CD -1407534584,1407534591,A2 -1407534592,1407534727,NG +1407534584,1407534719,A2 +1407534720,1407534727,NG 1407534728,1407534735,A2 1407534736,1407534775,NG 1407534776,1407534783,ML @@ -34110,7 +34798,11 @@ 1407534792,1407534847,A2 1407534848,1407535103,CM 1407535104,1407535615,GA -1407535616,1407536127,A2 +1407535616,1407535711,A2 +1407535712,1407535719,GB +1407535720,1407535735,A2 +1407535736,1407535743,NG +1407535744,1407536127,A2 1407536128,1407536639,GA 1407536640,1407536895,CD 1407536896,1407536903,A2 @@ -34125,54 +34817,50 @@ 1407537040,1407537047,A2 1407537048,1407537055,NG 1407537056,1407537071,GH -1407537072,1407537087,NG +1407537072,1407537079,A2 +1407537080,1407537087,NG 1407537088,1407537095,GH 1407537096,1407537103,A2 1407537104,1407537111,NG 1407537112,1407537119,LR 1407537120,1407537135,A2 1407537136,1407537143,NG -1407537144,1407537167,A2 -1407537168,1407537175,ZM -1407537176,1407537191,NG +1407537144,1407537183,A2 +1407537184,1407537191,NG 1407537192,1407537199,A2 1407537200,1407537207,NG -1407537208,1407537215,A2 -1407537216,1407537255,NG +1407537208,1407537231,A2 +1407537232,1407537255,NG 1407537256,1407537263,A2 1407537264,1407537279,NG -1407537280,1407537287,LR +1407537280,1407537287,A2 1407537288,1407537295,NG -1407537296,1407537303,A2 -1407537304,1407537311,NG -1407537312,1407537327,A2 -1407537328,1407537351,NG -1407537352,1407537359,A2 -1407537360,1407537367,LR -1407537368,1407537391,NG -1407537392,1407537399,LR -1407537400,1407537423,A2 -1407537424,1407537455,NG +1407537296,1407537335,A2 +1407537336,1407537351,NG +1407537352,1407537367,A2 +1407537368,1407537383,NG +1407537384,1407537431,A2 +1407537432,1407537455,NG 1407537456,1407537479,A2 1407537480,1407537487,CM 1407537488,1407537495,GH 1407537496,1407537511,NG 1407537512,1407537519,LR -1407537520,1407537527,A2 -1407537528,1407537535,NG +1407537520,1407537535,A2 1407537536,1407537543,LR 1407537544,1407537559,A2 1407537560,1407537567,NG 1407537568,1407537575,A2 -1407537576,1407537639,NG +1407537576,1407537599,NG +1407537600,1407537623,A2 +1407537624,1407537639,NG 1407537640,1407537663,A2 1407537664,1407537671,AO -1407537672,1407537679,NG +1407537672,1407537679,A2 1407537680,1407537687,IQ 1407537688,1407537703,A2 1407537704,1407537735,NG -1407537736,1407537743,A2 -1407537744,1407537751,IQ +1407537736,1407537751,A2 1407537752,1407537847,NG 1407537848,1407537855,A2 1407537856,1407537863,NG @@ -34181,17 +34869,15 @@ 1407537880,1407537887,A2 1407537888,1407537895,NG 1407537896,1407537903,IQ -1407537904,1407537911,A2 -1407537912,1407537927,NG -1407537928,1407537935,A2 +1407537904,1407537935,A2 1407537936,1407537943,GH -1407537944,1407537959,NG +1407537944,1407537951,A2 +1407537952,1407537959,NG 1407537960,1407537967,A2 1407537968,1407537991,NG 1407537992,1407537999,IQ 1407538000,1407538023,NG -1407538024,1407538039,A2 -1407538040,1407538047,IQ +1407538024,1407538047,A2 1407538048,1407538055,NG 1407538056,1407538071,LU 1407538072,1407538079,NG @@ -34199,26 +34885,21 @@ 1407538088,1407538095,AO 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,1407538295,AT +1407538176,1407538295,A2 1407538296,1407538303,AO -1407538304,1407538431,AT -1407538432,1407538439,A2 +1407538304,1407538439,A2 1407538440,1407538447,NG 1407538448,1407538463,A2 1407538464,1407538471,ZM 1407538472,1407538479,NG -1407538480,1407538495,A2 -1407538496,1407538503,NG -1407538504,1407538559,A2 -1407538560,1407538623,CD -1407538624,1407538663,A2 -1407538664,1407538687,NG -1407538688,1407538751,A2 +1407538480,1407538663,A2 +1407538664,1407538679,NG +1407538680,1407538751,A2 1407538752,1407538783,NG 1407538784,1407538847,A2 1407538848,1407538863,NG @@ -34230,19 +34911,14 @@ 1407538920,1407538927,A2 1407538928,1407538935,NG 1407538936,1407538943,GH -1407538944,1407538967,A2 -1407538968,1407538975,CM +1407538944,1407538975,A2 1407538976,1407538983,NG 1407538984,1407538991,SL 1407538992,1407538999,A2 1407539000,1407539007,NG 1407539008,1407539055,A2 1407539056,1407539063,NG -1407539064,1407539071,A2 -1407539072,1407539079,NG -1407539080,1407539087,A2 -1407539088,1407539095,AO -1407539096,1407539103,A2 +1407539064,1407539103,A2 1407539104,1407539111,NG 1407539112,1407539143,A2 1407539144,1407539151,NG @@ -34251,16 +34927,17 @@ 1407539176,1407539183,GH 1407539184,1407539199,NG 1407539200,1407539455,GE -1407539456,1407539967,NG -1407539968,1407541471,A2 +1407539456,1407540119,A2 +1407540120,1407540127,NG +1407540128,1407541471,A2 1407541472,1407541495,NG 1407541496,1407541535,A2 1407541536,1407541543,CM 1407541544,1407541551,A2 1407541552,1407541559,NG 1407541560,1407541567,GH -1407541568,1407541703,A2 -1407541704,1407541719,NG +1407541568,1407541711,A2 +1407541712,1407541719,NG 1407541720,1407541727,A2 1407541728,1407541735,NG 1407541736,1407541751,A2 @@ -34284,12 +34961,11 @@ 1407542680,1407542687,NG 1407542688,1407542695,CD 1407542696,1407542703,NG -1407542704,1407542719,A2 -1407542720,1407542735,NG +1407542704,1407542727,A2 +1407542728,1407542735,NG 1407542736,1407542767,A2 1407542768,1407542775,GA -1407542776,1407542783,NG -1407542784,1407542791,A2 +1407542776,1407542791,A2 1407542792,1407542799,NG 1407542800,1407542831,A2 1407542832,1407542863,NG @@ -34298,13 +34974,13 @@ 1407542912,1407543039,AT 1407543040,1407543167,A2 1407543168,1407543183,GH -1407543184,1407543239,NG +1407543184,1407543191,A2 +1407543192,1407543239,NG 1407543240,1407543255,A2 1407543256,1407543263,NG 1407543264,1407543279,A2 1407543280,1407543287,NG -1407543288,1407545343,A2 -1407545344,1407546367,SL +1407543288,1407546367,A2 1407546368,1407546495,AE 1407546496,1407546879,A2 1407546880,1407547135,ZW @@ -34316,12 +34992,13 @@ 1407547184,1407547199,NG 1407547200,1407547207,AO 1407547208,1407547215,TD -1407547216,1407547223,SL -1407547224,1407547231,A2 -1407547232,1407547255,SL +1407547216,1407547239,A2 +1407547240,1407547255,SL 1407547256,1407547263,A2 1407547264,1407547271,SL -1407547272,1407547295,NG +1407547272,1407547279,NG +1407547280,1407547287,A2 +1407547288,1407547295,NG 1407547296,1407547303,A2 1407547304,1407547311,SL 1407547312,1407547327,NG @@ -34393,7 +35070,9 @@ 1407705760,1407705791,FR 1407705792,1407706367,GB 1407706368,1407706423,FR -1407706424,1407707703,GB +1407706424,1407706431,GB +1407706432,1407706447,FR +1407706448,1407707703,GB 1407707704,1407707839,CH 1407707840,1407707903,GB 1407707904,1407707935,CH @@ -34404,10 +35083,8 @@ 1407710240,1407710975,GB 1407710976,1407711319,FR 1407711320,1407711327,GB -1407711328,1407711623,FR -1407711624,1407711631,GB -1407711632,1407711727,FR -1407711728,1407712207,GB +1407711328,1407711743,FR +1407711744,1407712207,GB 1407712208,1407712223,FR 1407712224,1407712767,GB 1407712768,1407712831,DE @@ -34498,8 +35175,7 @@ 1410010400,1410010431,LY 1410010432,1410010543,DE 1410010544,1410010575,LY -1410010576,1410010591,DE -1410010592,1410010599,LY +1410010576,1410010599,DE 1410010600,1410010607,IR 1410010608,1410010623,LY 1410010624,1410010687,DE @@ -34685,15 +35361,13 @@ 1410206544,1410206551,ES 1410206552,1410212863,FR 1410212864,1410213119,GB -1410213120,1410214495,FR -1410214496,1410214503,PT -1410214504,1410221663,FR +1410213120,1410221663,FR 1410221664,1410221671,GB -1410221672,1410250551,FR +1410221672,1410234839,FR +1410234840,1410234847,A2 +1410234848,1410250551,FR 1410250552,1410250559,GB -1410250560,1410255895,FR -1410255896,1410255911,CH -1410255912,1410261007,FR +1410250560,1410261007,FR 1410261008,1410261015,GB 1410261016,1410262799,FR 1410262800,1410262815,DE @@ -34761,9 +35435,14 @@ 1410573408,1410573439,RU 1410573440,1410573695,DE 1410573696,1410573711,RU -1410573712,1410573815,DE +1410573712,1410573759,DE +1410573760,1410573775,BA +1410573776,1410573807,DE +1410573808,1410573815,IT 1410573816,1410573823,RU -1410573824,1410574559,DE +1410573824,1410574527,DE +1410574528,1410574543,IT +1410574544,1410574559,DE 1410574560,1410574575,RU 1410574576,1410574583,DE 1410574584,1410574591,RU @@ -34823,16 +35502,18 @@ 1410745248,1410745279,US 1410745280,1410745855,FR 1410745856,1410746111,CH -1410746112,1410746623,AO -1410746624,1410748415,A2 +1410746112,1410746879,AO +1410746880,1410748415,A2 1410748416,1410752511,DE -1410752512,1410752639,AQ -1410752640,1410752763,DE +1410752512,1410752703,AQ +1410752704,1410752763,DE 1410752764,1410752785,AQ 1410752786,1410752799,DE 1410752800,1410752827,AQ 1410752828,1410753023,DE -1410753024,1410753151,AQ +1410753024,1410753031,AQ +1410753032,1410753055,BS +1410753056,1410753151,AQ 1410753152,1410753303,DE 1410753304,1410753327,AQ 1410753328,1410753335,DE @@ -34840,7 +35521,8 @@ 1410753344,1410753351,DE 1410753352,1410753367,AQ 1410753368,1410753391,DE -1410753392,1410754831,AQ +1410753392,1410753399,NL +1410753400,1410754831,AQ 1410754832,1410754855,DE 1410754856,1410754859,AQ 1410754860,1410754867,DE @@ -34854,9 +35536,12 @@ 1410756736,1410756863,DE 1410756864,1410757119,AQ 1410757120,1410758655,DE -1410758656,1410760191,AQ +1410758656,1410759423,AQ +1410759424,1410759679,GB +1410759680,1410760191,AQ 1410760192,1410760455,DE -1410760456,1410760479,AQ +1410760456,1410760471,AQ +1410760472,1410760479,SC 1410760480,1410760487,DE 1410760488,1410760503,AQ 1410760504,1410760683,DE @@ -34973,25 +35658,23 @@ 1411919872,1411923967,DE 1411923968,1411940351,BG 1411940352,1411973119,PL -1411973120,1411999767,SI +1411973120,1411999743,SI +1411999744,1411999759,BA +1411999760,1411999767,SI 1411999768,1411999783,BA 1411999784,1411999791,SI 1411999792,1411999799,BA 1411999800,1411999807,SI -1411999808,1411999823,BA -1411999824,1411999831,SI -1411999832,1411999839,BA +1411999808,1411999839,BA 1411999840,1411999871,SI 1411999872,1412000767,BA 1412000768,1412000783,SI 1412000784,1412000791,BA 1412000792,1412000863,SI 1412000864,1412000879,BA -1412000880,1412000895,SI -1412000896,1412000911,BA -1412000912,1412000959,SI -1412000960,1412001023,BA -1412001024,1412001311,SI +1412000880,1412000903,SI +1412000904,1412000911,BA +1412000912,1412001311,SI 1412001312,1412001319,DE 1412001320,1412001807,SI 1412001808,1412001855,RO @@ -35011,31 +35694,34 @@ 1412003056,1412003119,BA 1412003120,1412003135,SI 1412003136,1412003143,BA -1412003144,1412003167,SI -1412003168,1412003215,BA +1412003144,1412003199,SI +1412003200,1412003215,BA 1412003216,1412003223,SI 1412003224,1412003231,BA 1412003232,1412003247,SI 1412003248,1412003263,BA 1412003264,1412003271,SI 1412003272,1412003303,BA -1412003304,1412003359,SI +1412003304,1412003327,SI +1412003328,1412003343,BA +1412003344,1412003359,SI 1412003360,1412003375,BA -1412003376,1412003383,SI -1412003384,1412003391,BA -1412003392,1412003399,HR -1412003400,1412003407,BA +1412003376,1412003391,SI +1412003392,1412003407,BA 1412003408,1412003423,SI 1412003424,1412003527,BA 1412003528,1412003535,SI 1412003536,1412003551,BA 1412003552,1412003583,SI -1412003584,1412003839,BA +1412003584,1412003599,BA +1412003600,1412003623,SI +1412003624,1412003839,BA 1412003840,1412003855,SI 1412003856,1412003903,BG 1412003904,1412003935,SI -1412003936,1412004607,BG -1412004608,1412005887,SI +1412003936,1412004351,BG +1412004352,1412004863,BA +1412004864,1412005887,SI 1412005888,1412038655,NL 1412038656,1412071423,RU 1412071424,1412104191,CZ @@ -35065,8 +35751,7 @@ 1412628480,1412641791,TR 1412641792,1412642815,DE 1412642816,1412644863,TR -1412644864,1412653055,UA -1412653056,1412661247,RU +1412644864,1412661247,RU 1412661248,1412677631,GB 1412677632,1412685823,RU 1412685824,1412686239,IE @@ -35155,7 +35840,9 @@ 1422853920,1422854143,EU 1422854144,1422854151,FR 1422854152,1422856319,EU -1422856320,1422856575,FR +1422856320,1422856447,FR +1422856448,1422856511,EU +1422856512,1422856575,FR 1422856576,1422856703,EU 1422856704,1422857855,FR 1422857856,1422857919,EU @@ -35212,8 +35899,8 @@ 1424594104,1424594111,GB 1424594112,1424594175,FR 1424594176,1424594431,GB -1424594432,1424594495,IE -1424594496,1424595455,GB +1424594432,1424594519,IE +1424594520,1424595455,GB 1424595456,1424595527,IT 1424595528,1424595535,GB 1424595536,1424595551,IT @@ -35231,7 +35918,9 @@ 1424597264,1424597311,CZ 1424597312,1424597343,GB 1424597344,1424597351,CH -1424597352,1424597503,GB +1424597352,1424597375,GB +1424597376,1424597391,CZ +1424597392,1424597503,GB 1424597504,1424597759,FR 1424597760,1424598015,IT 1424598016,1424599039,GB @@ -35273,8 +35962,8 @@ 1424603392,1424603647,DE 1424603648,1424603903,GB 1424603904,1424604067,ES -1424604068,1424604095,GB -1424604096,1424604159,ES +1424604068,1424604071,GB +1424604072,1424604159,ES 1424604160,1424604543,NL 1424604544,1424604671,GB 1424604672,1424604799,NL @@ -35284,7 +35973,9 @@ 1424605136,1424605183,NL 1424605184,1424605439,GB 1424605440,1424605567,BG -1424605568,1424605607,GB +1424605568,1424605583,GB +1424605584,1424605599,BE +1424605600,1424605607,GB 1424605608,1424605623,BG 1424605624,1424605631,GB 1424605632,1424605695,BG @@ -35310,32 +36001,27 @@ 1424608084,1424608087,GB 1424608088,1424608127,FR 1424608128,1424608279,GB -1424608280,1424608383,FR +1424608280,1424608351,FR +1424608352,1424608383,GB 1424608384,1424608399,ES 1424608400,1424608511,FR -1424608512,1424608567,ES -1424608568,1424608671,GB -1424608672,1424608687,ES +1424608512,1424608687,ES 1424608688,1424608695,GB -1424608696,1424608743,ES -1424608744,1424608751,GB -1424608752,1424609023,ES +1424608696,1424609023,ES 1424609024,1424609259,DE 1424609260,1424609271,GB 1424609272,1424609279,DE 1424609280,1424609395,CH 1424609396,1424609399,GB -1424609400,1424609543,CH -1424609544,1424609551,GB -1424609552,1424609791,CH +1424609400,1424609791,CH 1424609792,1424610303,GB 1424610304,1424610559,TZ 1424610560,1424610815,PL 1424610816,1424611071,FR -1424611072,1424611087,BE -1424611088,1424611103,GB -1424611104,1424611143,BE -1424611144,1424611151,GB +1424611072,1424611095,BE +1424611096,1424611103,GB +1424611104,1424611135,BE +1424611136,1424611151,GB 1424611152,1424611327,BE 1424611328,1424611583,PL 1424611584,1424612095,GB @@ -35353,7 +36039,9 @@ 1424614136,1424614143,IT 1424614144,1424614399,GB 1424614400,1424614415,FR -1424614416,1424614655,IT +1424614416,1424614559,IT +1424614560,1424614591,GB +1424614592,1424614655,IT 1424614656,1424614911,FR 1424614912,1424615167,RO 1424615168,1424615679,GB @@ -35389,9 +36077,7 @@ 1424618016,1424618239,IT 1424618240,1424618495,NL 1424618496,1424618751,GB -1424618752,1424618983,FR -1424618984,1424618991,GB -1424618992,1424619007,FR +1424618752,1424619007,FR 1424619008,1424619775,IT 1424619776,1424619807,BE 1424619808,1424619815,GB @@ -35511,7 +36197,6 @@ 1425426432,1425428479,KW 1425428480,1425430527,GB 1425430528,1425432575,SE -1425432576,1425434623,IT 1425434624,1425436671,FR 1425436672,1425438719,GB 1425438720,1425439271,DE @@ -35599,9 +36284,7 @@ 1425966721,1425966728,BJ 1425966729,1425966735,A2 1425966736,1425966751,BJ -1425966752,1425966784,A2 -1425966785,1425966808,BJ -1425966809,1425966815,A2 +1425966752,1425966815,A2 1425966816,1425966847,BJ 1425966848,1425966852,A2 1425966853,1425966896,DE @@ -35660,7 +36343,9 @@ 1425970944,1425971007,IT 1425971008,1425971071,NL 1425971072,1425971199,A2 -1425971200,1425971455,NL +1425971200,1425971231,NL +1425971232,1425971263,DE +1425971264,1425971455,NL 1425971456,1425971519,A2 1425971520,1425971583,IT 1425971584,1425971647,A2 @@ -35804,7 +36489,9 @@ 1426685952,1426702335,TJ 1426702336,1426703103,LV 1426703104,1426703167,RU -1426703168,1426718719,LV +1426703168,1426703214,LV +1426703215,1426703217,RU +1426703218,1426718719,LV 1426718720,1426731007,SI 1426731008,1426735103,HR 1426735104,1426751487,BE @@ -35879,9 +36566,7 @@ 1427031680,1427031743,AT 1427031744,1427031807,DE 1427031808,1427032063,AT -1427032064,1427032143,DE -1427032144,1427032151,AT -1427032152,1427032183,DE +1427032064,1427032183,DE 1427032184,1427032191,PL 1427032192,1427032223,DE 1427032224,1427032231,GR @@ -35923,17 +36608,14 @@ 1427668992,1427701759,SE 1427701760,1427723391,DE 1427723392,1427723519,LI -1427723520,1427728383,DE -1427728384,1427728415,US -1427728416,1427728479,DE +1427723520,1427728479,DE 1427728480,1427728511,CY 1427728512,1427728543,BR 1427728544,1427728671,DE 1427728672,1427728703,TR 1427728704,1427728799,DE 1427728800,1427728831,RU -1427728832,1427728863,DE -1427728864,1427728895,CY +1427728832,1427728895,CY 1427728896,1427728927,DE 1427728928,1427728959,IL 1427728960,1427728991,RU @@ -35957,7 +36639,9 @@ 1427743616,1427743647,DK 1427743648,1427743775,DE 1427743776,1427743807,ZA -1427743808,1427744159,DE +1427743808,1427743839,DE +1427743840,1427743871,RU +1427743872,1427744159,DE 1427744160,1427744191,RU 1427744192,1427744255,DE 1427744256,1427744287,US @@ -35989,34 +36673,31 @@ 1427745696,1427745727,US 1427745728,1427745791,DE 1427745792,1427745823,GB -1427745824,1427745983,DE -1427745984,1427746015,PL -1427746016,1427746079,DE +1427745824,1427745855,US +1427745856,1427746079,DE 1427746080,1427746111,GB 1427746112,1427746239,DE -1427746240,1427746271,TR +1427746240,1427746271,NL 1427746272,1427746367,DE 1427746368,1427746399,SE 1427746400,1427747839,DE 1427747840,1427747871,FI -1427747872,1427748543,DE +1427747872,1427748063,DE +1427748064,1427748095,NL +1427748096,1427748543,DE 1427748544,1427748575,MX -1427748576,1427748831,DE -1427748832,1427748863,US -1427748864,1427749503,DE +1427748576,1427749503,DE 1427749504,1427749535,UA 1427749536,1427749567,DE 1427749568,1427749599,CY 1427749600,1427749631,DE 1427749632,1427749663,US -1427749664,1427749695,DE -1427749696,1427749727,PL -1427749728,1427749919,DE -1427749920,1427749983,RU +1427749664,1427749951,DE +1427749952,1427749983,RU 1427749984,1427750143,DE 1427750144,1427750175,TR 1427750176,1427750239,DE -1427750240,1427750271,TR +1427750240,1427750271,NL 1427750272,1427750303,DE 1427750304,1427750335,GB 1427750336,1427751167,DE @@ -36027,7 +36708,8 @@ 1427760192,1427760223,TR 1427760224,1427760255,US 1427760256,1427760319,BR -1427760320,1427760383,DE +1427760320,1427760351,DE +1427760352,1427760383,RU 1427760384,1427760415,TR 1427760416,1427760799,DE 1427760800,1427760831,NL @@ -36063,13 +36745,15 @@ 1427980288,1427996671,FI 1427996672,1428013055,KZ 1428013056,1428029439,EE +1428029440,1428045823,SE 1428045824,1428062207,MK 1428062208,1428078591,SE 1428078592,1428094975,RU 1428094976,1428096031,AT 1428096032,1428096039,CH 1428096040,1428103167,AT -1428103168,1428119551,GB +1428103168,1428111359,GB +1428111360,1428119551,A2 1428119552,1428121599,LV 1428121600,1428123647,FR 1428123648,1428126975,RU @@ -36085,33 +36769,26 @@ 1428142080,1428143263,DE 1428143264,1428143279,CH 1428143280,1428144127,DE -1428144128,1428147103,FR -1428147104,1428147119,GB -1428147120,1428147127,FR -1428147128,1428147135,GB -1428147136,1428147359,FR -1428147360,1428147375,IT -1428147376,1428147391,ES -1428147392,1428147591,FR -1428147592,1428147711,GB +1428144128,1428147111,FR +1428147112,1428147119,GB +1428147120,1428147595,FR +1428147596,1428147711,GB 1428147712,1428147855,FR 1428147856,1428147871,US -1428147872,1428147903,GB -1428147904,1428148031,FR -1428148032,1428148063,GB -1428148064,1428148143,FR -1428148144,1428148151,DE -1428148152,1428148159,NL -1428148160,1428148175,FR +1428147872,1428147895,FR +1428147896,1428147903,GB +1428147904,1428148039,FR +1428148040,1428148047,GB +1428148048,1428148175,FR 1428148176,1428148191,CH 1428148192,1428148223,GB -1428148224,1428150495,FR -1428150496,1428150511,GB -1428150512,1428150735,FR +1428148224,1428150735,FR 1428150736,1428150751,GB 1428150752,1428151007,FR 1428151008,1428151039,GB -1428151040,1428152127,FR +1428151040,1428151231,FR +1428151232,1428151295,CH +1428151296,1428152127,FR 1428152128,1428152319,GB 1428152320,1428160511,PL 1428160512,1429209087,IT @@ -36192,11 +36869,17 @@ 1432131584,1432133631,PH 1432133632,1432150015,GB 1432150016,1432158207,BA -1432158208,1432159743,DE +1432158208,1432159042,DE +1432159043,1432159046,IR +1432159047,1432159311,DE +1432159312,1432159321,IR +1432159322,1432159743,DE 1432159744,1432159871,PL 1432159872,1432160255,DE 1432160256,1432160511,CH -1432160512,1432165247,DE +1432160512,1432162907,DE +1432162908,1432162914,IR +1432162915,1432165247,DE 1432165248,1432165375,PL 1432165376,1432166399,DE 1432166400,1432174591,RU @@ -36220,13 +36903,21 @@ 1432322048,1432338431,RU 1432338432,1432346623,FR 1432346624,1433403391,TR -1433403392,1433407487,ES -1433407488,1433410559,NL +1433403392,1433406239,ES +1433406240,1433406271,US +1433406272,1433406431,ES +1433406432,1433406447,US +1433406448,1433407487,ES +1433407488,1433410047,NL +1433410048,1433410559,US 1433410560,1433411071,ES -1433411072,1433411375,TR -1433411376,1433411391,US -1433411392,1433411407,NL -1433411408,1433411583,TR +1433411072,1433411327,US +1433411328,1433411343,ES +1433411344,1433411375,TR +1433411376,1433411407,US +1433411408,1433411455,TR +1433411456,1433411519,US +1433411520,1433411583,ES 1433411584,1433419775,RU 1433419776,1433427967,LB 1433427968,1433436159,RU @@ -36280,7 +36971,6 @@ 1433739264,1433747455,GE 1433747456,1433755647,RU 1433755648,1433763839,EE -1433763840,1433772031,CZ 1433772032,1433788415,SE 1433788416,1433796607,UZ 1433796608,1433804799,GB @@ -36309,7 +36999,9 @@ 1433860096,1433862143,DE 1433862144,1433862751,CH 1433862752,1433862783,MC -1433862784,1433863423,CH +1433862784,1433862975,CH +1433862976,1433862991,GB +1433862992,1433863423,CH 1433863424,1433863487,US 1433863488,1433864191,CH 1433864192,1433866239,HU @@ -36368,10 +37060,10 @@ 1434681856,1434682111,MY 1434682112,1434682303,DE 1434682304,1434682367,NL -1434682368,1434683087,DE -1434683088,1434683135,NL -1434683136,1434683263,DE -1434683264,1434683391,NL +1434682368,1434683103,DE +1434683104,1434683135,NL +1434683136,1434683327,DE +1434683328,1434683391,NL 1434683392,1434684415,DE 1434684416,1434684671,NL 1434684672,1434685439,DE @@ -36450,7 +37142,7 @@ 1436471808,1436473343,BE 1436473344,1436475391,RO 1436475392,1436477439,AT -1436477440,1436481535,CH +1436477440,1436479487,CH 1436481536,1436483583,NL 1436483584,1436485631,UA 1436485632,1436487471,DE @@ -36534,7 +37226,15 @@ 1438842880,1438859263,SE 1438859264,1438861823,DE 1438861824,1438862079,CH -1438862080,1438873119,DE +1438862080,1438869591,DE +1438869592,1438869595,RU +1438869596,1438869647,DE +1438869648,1438869651,LV +1438869652,1438869655,US +1438869656,1438869663,UA +1438869664,1438869671,DE +1438869672,1438869679,CY +1438869680,1438873119,DE 1438873120,1438873127,PA 1438873128,1438873671,DE 1438873672,1438873679,PA @@ -36555,7 +37255,7 @@ 1438875256,1438875257,CH 1438875258,1438875647,DE 1438875648,1438876159,RU -1438876160,1438876415,LB +1438876160,1438876415,LT 1438876416,1438876927,RU 1438876928,1438877183,IQ 1438877184,1438877439,LT @@ -36573,8 +37273,7 @@ 1438884352,1438884607,LB 1438884608,1438884863,IQ 1438884864,1438885887,RU -1438885888,1438889983,LT -1438889984,1438890239,LB +1438885888,1438890239,LT 1438890240,1438890495,RU 1438890496,1438890751,IQ 1438890752,1438892031,RU @@ -36733,15 +37432,17 @@ 1441384592,1441384599,AU 1441384600,1441384607,FR 1441384608,1441384639,CN -1441384640,1441385103,FR -1441385104,1441385119,ES -1441385120,1441386111,FR +1441384640,1441386111,FR 1441386112,1441386239,IL 1441386240,1441388671,FR 1441388672,1441388799,CA 1441388800,1441389055,FR 1441389056,1441389119,IE -1441389120,1441390591,FR +1441389120,1441389223,FR +1441389224,1441389231,LU +1441389232,1441389567,FR +1441389568,1441389599,LU +1441389600,1441390591,FR 1441390592,1441398783,DK 1441398784,1441415167,RU 1441415168,1441423359,GB @@ -36766,7 +37467,8 @@ 1441543152,1441543167,LI 1441543168,1441543567,DE 1441543568,1441543583,CH -1441543584,1441544063,DE +1441543584,1441543599,HR +1441543600,1441544063,DE 1441544064,1441544127,TR 1441544128,1441544143,DE 1441544144,1441544159,CH @@ -36944,25 +37646,606 @@ 1446862080,1446862591,HR 1446862592,1446871039,SI 1446871040,1446903807,CZ -1446903808,1446904071,A2 -1446904072,1446904079,CY +1446903808,1446904063,A2 +1446904064,1446904071,CY +1446904072,1446904079,IQ 1446904080,1446904095,BH -1446904096,1446904111,SA -1446904112,1446904119,BH -1446904120,1446904127,A2 +1446904096,1446904103,SD +1446904104,1446904111,SA +1446904112,1446904119,LY +1446904120,1446904127,SD 1446904128,1446904135,SA 1446904136,1446904143,IQ -1446904144,1446904151,SA +1446904144,1446904151,ER 1446904152,1446904159,IR 1446904160,1446904167,ES 1446904168,1446904175,IQ -1446904176,1446904831,A2 -1446904832,1446904835,LY -1446904836,1446904931,A2 +1446904176,1446904183,A2 +1446904184,1446904191,IQ +1446904192,1446904215,A2 +1446904216,1446904223,IQ +1446904224,1446904231,LY +1446904232,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 +1446904320,1446904335,AE +1446904336,1446904351,A2 +1446904352,1446904367,AE +1446904368,1446904527,A2 +1446904528,1446904543,ZM +1446904544,1446904575,A2 +1446904576,1446904591,SD +1446904592,1446904599,NG +1446904600,1446904607,A2 +1446904608,1446904623,SD +1446904624,1446904631,IQ +1446904632,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 +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,1446908539,A2 +1446904936,1446904939,LY +1446904940,1446904947,IQ +1446904948,1446904951,A2 +1446904952,1446904955,AF +1446904956,1446904959,A2 +1446904960,1446904963,IQ +1446904964,1446904975,A2 +1446904976,1446904979,CG +1446904980,1446904987,IQ +1446904988,1446904991,A2 +1446904992,1446905007,IQ +1446905008,1446905011,CG +1446905012,1446905015,A2 +1446905016,1446905019,NG +1446905020,1446905023,LY +1446905024,1446905031,IQ +1446905032,1446905035,A2 +1446905036,1446905039,IQ +1446905040,1446905043,AF +1446905044,1446905051,IQ +1446905052,1446905055,LY +1446905056,1446905063,IQ +1446905064,1446905067,NG +1446905068,1446905071,IQ +1446905072,1446905083,A2 +1446905084,1446905095,AF +1446905096,1446905103,BJ +1446905104,1446905107,IQ +1446905108,1446905111,A2 +1446905112,1446905115,BJ +1446905116,1446905119,A2 +1446905120,1446905123,GN +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 +1446905176,1446905179,AF +1446905180,1446905191,LY +1446905192,1446905195,A2 +1446905196,1446905199,AF +1446905200,1446905203,NG +1446905204,1446905207,AF +1446905208,1446905211,ER +1446905212,1446905215,IQ +1446905216,1446905223,A2 +1446905224,1446905227,IQ +1446905228,1446905235,NG +1446905236,1446905251,A2 +1446905252,1446905255,IQ +1446905256,1446905259,A2 +1446905260,1446905263,IQ +1446905264,1446905267,LY +1446905268,1446905271,NG +1446905272,1446905275,IQ +1446905276,1446905279,A2 +1446905280,1446905283,IQ +1446905284,1446905287,A2 +1446905288,1446905295,IQ +1446905296,1446905303,ZM +1446905304,1446905307,CF +1446905308,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 +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 +1446905636,1446905639,IQ +1446905640,1446905643,A2 +1446905644,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 +1446905720,1446905723,AF +1446905724,1446905727,A2 +1446905728,1446905731,IQ +1446905732,1446905735,AF +1446905736,1446905743,A2 +1446905744,1446905747,LY +1446905748,1446905751,A2 +1446905752,1446905755,IQ +1446905756,1446905759,A2 +1446905760,1446905763,ML +1446905764,1446905767,LY +1446905768,1446905779,A2 +1446905780,1446905783,LY +1446905784,1446905787,A2 +1446905788,1446905791,LY +1446905792,1446905795,TD +1446905796,1446905803,A2 +1446905804,1446905807,IQ +1446905808,1446905815,A2 +1446905816,1446905823,LY +1446905824,1446905827,A2 +1446905828,1446905831,LY +1446905832,1446905835,NG +1446905836,1446905839,A2 +1446905840,1446905843,IQ +1446905844,1446905847,A2 +1446905848,1446905851,IQ +1446905852,1446905855,AF +1446905856,1446905856,A2 +1446905857,1446905863,LY +1446905864,1446905871,SD +1446905872,1446905911,A2 +1446905912,1446905943,SD +1446905944,1446906023,A2 +1446906024,1446906031,SD +1446906032,1446906039,A2 +1446906040,1446906047,SD +1446906048,1446906071,A2 +1446906072,1446906079,CY +1446906080,1446906115,A2 +1446906116,1446906119,ZM +1446906120,1446906123,SD +1446906124,1446906131,IQ +1446906132,1446906135,LY +1446906136,1446906139,IQ +1446906140,1446906143,A2 +1446906144,1446906151,ZM +1446906152,1446906167,AF +1446906168,1446906171,A2 +1446906172,1446906179,AF +1446906180,1446906187,A2 +1446906188,1446906191,AF +1446906192,1446906195,A2 +1446906196,1446906203,IQ +1446906204,1446906211,A2 +1446906212,1446906215,AF +1446906216,1446906219,A2 +1446906220,1446906223,BG +1446906224,1446906231,IQ +1446906232,1446906239,AF +1446906240,1446906243,IQ +1446906244,1446906247,A2 +1446906248,1446906259,IQ +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 +1446906344,1446906347,NG +1446906348,1446906351,ZM +1446906352,1446906359,A2 +1446906360,1446906363,SD +1446906364,1446906367,IQ +1446906368,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 +1446906884,1446906887,AF +1446906888,1446906891,IQ +1446906892,1446906895,A2 +1446906896,1446906899,IQ +1446906900,1446906907,A2 +1446906908,1446906919,IQ +1446906920,1446906923,A2 +1446906924,1446906927,IQ +1446906928,1446906931,SA +1446906932,1446906935,IQ +1446906936,1446906943,LY +1446906944,1446906947,IQ +1446906948,1446906951,A2 +1446906952,1446906955,IQ +1446906956,1446906963,A2 +1446906964,1446906967,AF +1446906968,1446906971,A2 +1446906972,1446906983,IQ +1446906984,1446906987,NG +1446906988,1446906995,IQ +1446906996,1446906999,AF +1446907000,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 +1446907044,1446907047,CG +1446907048,1446907055,IQ +1446907056,1446907067,A2 +1446907068,1446907071,AF +1446907072,1446907075,A2 +1446907076,1446907079,IQ +1446907080,1446907083,AF +1446907084,1446907087,IQ +1446907088,1446907091,LY +1446907092,1446907095,IQ +1446907096,1446907099,NG +1446907100,1446907103,IQ +1446907104,1446907123,A2 +1446907124,1446907131,IQ +1446907132,1446907135,AF +1446907136,1446907147,A2 +1446907148,1446907151,IQ +1446907152,1446907155,A2 +1446907156,1446907159,LY +1446907160,1446907163,AF +1446907164,1446907167,IQ +1446907168,1446907171,LY +1446907172,1446907175,IQ +1446907176,1446907187,LY +1446907188,1446907191,CG +1446907192,1446907199,IQ +1446907200,1446907203,A2 +1446907204,1446907207,IQ +1446907208,1446907211,A2 +1446907212,1446907215,IQ +1446907216,1446907223,A2 +1446907224,1446907227,ZM +1446907228,1446907231,A2 +1446907232,1446907243,IQ +1446907244,1446907247,NG +1446907248,1446907255,A2 +1446907256,1446907259,GA +1446907260,1446907279,IQ +1446907280,1446907283,GA +1446907284,1446907287,A2 +1446907288,1446907291,AF +1446907292,1446907303,A2 +1446907304,1446907307,IQ +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 +1446907372,1446907375,AF +1446907376,1446907379,ZM +1446907380,1446907383,IQ +1446907384,1446907387,CI +1446907388,1446907391,A2 +1446907392,1446907395,AF +1446907396,1446907399,IQ +1446907400,1446907403,A2 +1446907404,1446907407,IQ +1446907408,1446907411,A2 +1446907412,1446907419,IQ +1446907420,1446907423,A2 +1446907424,1446907427,ZM +1446907428,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 +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 +1446907548,1446907551,A2 +1446907552,1446907559,IQ +1446907560,1446907571,A2 +1446907572,1446907575,AF +1446907576,1446907579,A2 +1446907580,1446907583,GH +1446907584,1446907615,A2 +1446907616,1446907619,TD +1446907620,1446907631,A2 +1446907632,1446907635,LY +1446907636,1446907647,IQ +1446907648,1446907659,A2 +1446907660,1446907663,ZM +1446907664,1446907667,NG +1446907668,1446907671,A2 +1446907672,1446907675,IQ +1446907676,1446907679,LY +1446907680,1446907691,A2 +1446907692,1446907695,IQ +1446907696,1446907699,LY +1446907700,1446907703,IQ +1446907704,1446907715,A2 +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 +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 +1446907856,1446907859,AF +1446907860,1446907863,A2 +1446907864,1446907871,LY +1446907872,1446907875,A2 +1446907876,1446907883,IQ +1446907884,1446907887,A2 +1446907888,1446907891,SD +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 +1446908144,1446908151,AE +1446908152,1446908159,SD +1446908160,1446908163,AF +1446908164,1446908167,A2 +1446908168,1446908175,IQ +1446908176,1446908187,A2 +1446908188,1446908191,GH +1446908192,1446908235,A2 +1446908236,1446908243,IQ +1446908244,1446908247,A2 +1446908248,1446908251,AF +1446908252,1446908255,A2 +1446908256,1446908259,SZ +1446908260,1446908267,A2 +1446908268,1446908271,AF +1446908272,1446908275,LY +1446908276,1446908279,A2 +1446908280,1446908283,IQ +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 +1446908332,1446908335,NG +1446908336,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 +1446908436,1446908443,AF +1446908444,1446908447,A2 +1446908448,1446908451,ZM +1446908452,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 1446908540,1446908543,ZM -1446908544,1446920191,A2 +1446908544,1446908591,A2 +1446908592,1446908595,IQ +1446908596,1446908599,A2 +1446908600,1446908603,ZM +1446908604,1446908607,CG +1446908608,1446908631,A2 +1446908632,1446908635,IQ +1446908636,1446908651,A2 +1446908652,1446908663,IQ +1446908664,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 +1446908788,1446908791,NG +1446908792,1446908811,A2 +1446908812,1446908815,IQ +1446908816,1446908835,A2 +1446908836,1446908843,IQ +1446908844,1446908855,A2 +1446908856,1446908859,ZM +1446908860,1446908863,A2 +1446908864,1446908871,AF +1446908872,1446908875,A2 +1446908876,1446908879,AF +1446908880,1446908907,A2 +1446908908,1446908911,IQ +1446908912,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 +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 +1446909084,1446909087,CG +1446909088,1446909091,IQ +1446909092,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 +1446909204,1446909207,IQ +1446909208,1446909211,LY +1446909212,1446909215,A2 +1446909216,1446909219,LY +1446909220,1446909223,IQ +1446909224,1446909271,A2 +1446909272,1446909275,IQ +1446909276,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 +1446909364,1446909367,IQ +1446909368,1446909391,A2 +1446909392,1446909395,ZM +1446909396,1446909401,NG +1446909402,1446909423,A2 +1446909424,1446909435,AF +1446909436,1446909443,A2 +1446909444,1446909447,NG +1446909448,1446909471,A2 +1446909472,1446909475,IQ +1446909476,1446909491,A2 +1446909492,1446909495,IQ +1446909496,1446909499,A2 +1446909500,1446909507,IQ +1446909508,1446909519,A2 +1446909520,1446909523,CG +1446909524,1446909539,A2 +1446909540,1446909543,IQ +1446909544,1446909555,A2 +1446909556,1446909559,IQ +1446909560,1446920191,A2 1446920192,1446936575,RU 1446936576,1446952959,NO 1446952960,1446969343,QA @@ -37114,9 +38397,9 @@ 1467318272,1467334655,RU 1467334656,1467340959,GB 1467340960,1467340991,TR -1467340992,1467344127,GB -1467344128,1467344383,CA -1467344384,1467347903,GB +1467340992,1467344639,GB +1467344640,1467344895,ZA +1467344896,1467347903,GB 1467347904,1467347935,SE 1467347936,1467351039,GB 1467351040,1467367423,NO @@ -37130,7 +38413,9 @@ 1467367904,1467367935,DE 1467367936,1467368191,SI 1467368192,1467368319,DK -1467368320,1467369519,DE +1467368320,1467368447,DE +1467368448,1467368703,DK +1467368704,1467369519,DE 1467369520,1467369535,RU 1467369536,1467369599,DE 1467369600,1467369663,IT @@ -37273,7 +38558,9 @@ 1475175056,1475176447,NL 1475176448,1475178495,RO 1475178496,1475180543,RU -1475180544,1475181455,DE +1475180544,1475181343,DE +1475181344,1475181375,LU +1475181376,1475181455,DE 1475181456,1475181471,SC 1475181472,1475181519,DE 1475181520,1475181535,GB @@ -37326,8 +38613,8 @@ 1475223552,1475229695,NO 1475229696,1475229759,SE 1475229760,1475229951,NO -1475229952,1475229991,SE -1475229992,1475233791,NO +1475229952,1475230071,SE +1475230072,1475233791,NO 1475233792,1475234303,GB 1475234304,1475234559,IE 1475234560,1475235839,GB @@ -37337,14 +38624,10 @@ 1475241984,1475242239,MC 1475242240,1475243775,FR 1475243776,1475244031,MC -1475244032,1475244287,DE -1475244288,1475244311,CV -1475244312,1475244319,DE -1475244320,1475244543,CV -1475244544,1475245055,DE +1475244032,1475245055,DE 1475245056,1475245183,IE 1475245184,1475245311,SD -1475245312,1475245567,CV +1475245312,1475245567,DE 1475245568,1475246078,SA 1475246079,1475246079,DE 1475246080,1475248127,CH @@ -37469,9 +38752,11 @@ 1475639272,1475639295,JE 1475639296,1475639343,GB 1475639344,1475639351,JE -1475639352,1475639367,GB -1475639368,1475639383,JE -1475639384,1475639595,GB +1475639352,1475639375,GB +1475639376,1475639383,JE +1475639384,1475639527,GB +1475639528,1475639543,JE +1475639544,1475639595,GB 1475639596,1475639599,JE 1475639600,1475639727,GB 1475639728,1475639735,JE @@ -37488,7 +38773,9 @@ 1475706880,1475723263,RU 1475723264,1475725311,CY 1475725312,1475725951,RU -1475725952,1475727103,GB +1475725952,1475726591,GB +1475726592,1475726719,RU +1475726720,1475727103,GB 1475727104,1475727167,RU 1475727168,1475727343,GB 1475727344,1475727359,RU @@ -37550,8 +38837,8 @@ 1476075520,1476077911,NL 1476077912,1476077919,DE 1476077920,1476079551,NL -1476079552,1476079567,DE -1476079568,1476083711,NL +1476079552,1476079571,DE +1476079572,1476083711,NL 1476083712,1476116479,RU 1476116480,1476124671,SE 1476124672,1476132863,PL @@ -37560,8 +38847,11 @@ 1476135168,1476141055,FR 1476141056,1476149247,GB 1476149248,1476157439,NO -1476157440,1476165375,BH -1476165376,1476165631,JO +1476157440,1476158975,BR +1476158976,1476159487,BH +1476159488,1476161535,GB +1476161536,1476165119,BH +1476165120,1476165631,JO 1476165632,1476173823,HR 1476173824,1476182015,BG 1476182016,1476190207,IE @@ -37603,9 +38893,7 @@ 1481679776,1481680639,SE 1481680640,1481680643,GB 1481680644,1481687039,SE -1481687040,1481691071,DE -1481691072,1481691135,ES -1481691136,1481695231,DE +1481687040,1481695231,DE 1481695232,1481703423,SK 1481703424,1481711615,SA 1481711616,1481719807,RU @@ -37673,9 +38961,7 @@ 1482060920,1482060927,SK 1482060928,1482063871,CZ 1482063872,1482072063,FI -1482072064,1482076159,IT -1482076160,1482076223,CH -1482076224,1482076383,IT +1482072064,1482076383,IT 1482076384,1482076415,MT 1482076416,1482080255,IT 1482080256,1482088447,RU @@ -37747,9 +39033,7 @@ 1486295040,1486297087,ES 1486297088,1486299135,IE 1486299136,1486301183,NL -1486301184,1486301951,DK -1486301952,1486302719,SE -1486302720,1486302863,DK +1486301184,1486302863,DK 1486302864,1486302879,SE 1486302880,1486303231,DK 1486303232,1486305023,IS @@ -37768,7 +39052,7 @@ 1486321856,1486321887,NL 1486321888,1486321919,US 1486321920,1486323199,EU -1486323200,1486323215,GU +1486323200,1486323215,US 1486323216,1486323231,NL 1486323232,1486323239,GB 1486323240,1486323447,EU @@ -37830,8 +39114,8 @@ 1489646848,1489647103,IT 1489647104,1489647359,A2 1489647360,1489648639,IT -1489648640,1489649407,A2 -1489649408,1489650687,FR +1489648640,1489649663,A2 +1489649664,1489650687,FR 1489650688,1489651199,A2 1489651200,1489653759,IT 1489653760,1489657855,A2 @@ -37858,7 +39142,8 @@ 1490028544,1490029055,UA 1490029056,1490040839,NL 1490040840,1490041855,UA -1490041856,1490049879,CZ +1490041856,1490042879,NL +1490042880,1490049879,CZ 1490049880,1490049887,AT 1490049888,1490049919,CZ 1490049920,1490049983,PL @@ -38040,7 +39325,9 @@ 1495070720,1495072767,RU 1495072768,1495105535,CZ 1495105536,1495138303,ES -1495138304,1495139327,FR +1495138304,1495139095,FR +1495139096,1495139103,IT +1495139104,1495139327,FR 1495139328,1495139583,EU 1495139584,1495139591,GB 1495139592,1495139711,EU @@ -38272,7 +39559,9 @@ 1500231680,1500233727,DE 1500233728,1500237823,RU 1500237824,1500241919,SE -1500241920,1500242483,TR +1500241920,1500241960,TR +1500241961,1500241966,US +1500241967,1500242483,TR 1500242484,1500242485,US 1500242486,1500242801,TR 1500242802,1500242814,US @@ -38361,8 +39650,8 @@ 1502975744,1502975775,IE 1502975776,1502975999,FR 1502976000,1502977055,US -1502977056,1502977279,FR -1502977280,1502979071,US +1502977056,1502977151,FR +1502977152,1502979071,US 1502979072,1502979103,FR 1502979104,1502979111,ES 1502979112,1502979119,FR @@ -38375,9 +39664,7 @@ 1502980096,1502980159,US 1502980160,1502980351,FR 1502980352,1502980871,US -1502980872,1502980927,FR -1502980928,1502980991,US -1502980992,1502981119,FR +1502980872,1502981119,FR 1502981120,1502981887,US 1502981888,1502982143,NL 1502982144,1502982911,DE @@ -38425,8 +39712,8 @@ 1503821824,1503854591,UA 1503854592,1503887359,RU 1503887360,1503895607,DE -1503895608,1503895623,NL -1503895624,1503895631,DE +1503895608,1503895615,NL +1503895616,1503895631,DE 1503895632,1503895639,AT 1503895640,1503895671,DE 1503895672,1503895679,PL @@ -38453,19 +39740,16 @@ 1503897312,1503897367,DE 1503897368,1503897375,BE 1503897376,1503897383,GR -1503897384,1503897391,DE -1503897392,1503897399,CH -1503897400,1503897407,DE +1503897384,1503897407,DE 1503897408,1503897415,IT -1503897416,1503897423,CH -1503897424,1503897431,DE +1503897416,1503897431,DE 1503897432,1503897439,IT 1503897440,1503897463,DE 1503897464,1503897471,GR 1503897472,1503897479,AT 1503897480,1503897575,DE -1503897576,1503897583,GB -1503897584,1503898119,DE +1503897576,1503897591,GB +1503897592,1503898119,DE 1503898120,1503898135,TH 1503898136,1503898167,DE 1503898168,1503898175,RO @@ -38474,7 +39758,20 @@ 1503898192,1503898199,GR 1503898200,1503898207,US 1503898208,1503898215,BE -1503898216,1503908351,DE +1503898216,1503898223,DE +1503898224,1503898231,CH +1503898232,1503898239,GR +1503898240,1503898303,IT +1503898304,1503898311,BE +1503898312,1503898327,DE +1503898328,1503898335,AT +1503898336,1503898343,CH +1503898344,1503898351,DE +1503898352,1503898359,CH +1503898360,1503898415,DE +1503898416,1503898423,BE +1503898424,1503898431,CH +1503898432,1503908351,DE 1503908352,1503909375,IT 1503909376,1503920127,DE 1503920128,1503985663,HR @@ -38532,25 +39829,23 @@ 1505273088,1505273095,NZ 1505273096,1505279999,NL 1505280000,1505280007,IR -1505280008,1505284863,AE +1505280008,1505284095,AE +1505284096,1505284607,IR +1505284608,1505284863,AE 1505284864,1505288191,IR 1505288192,1505296383,RU 1505296384,1505304575,UA -1505304576,1505305198,FR -1505305199,1505305199,DK -1505305200,1505305200,BE -1505305201,1505305201,NL -1505305202,1505305202,GB -1505305203,1505305203,CA -1505305204,1505305204,FR -1505305205,1505305205,CH -1505305206,1505305206,DE -1505305207,1505305207,AT -1505305208,1505305208,IT -1505305209,1505305209,ES -1505305210,1505305210,SE -1505305211,1505305211,NO -1505305212,1505305878,FR +1505304576,1505305351,FR +1505305352,1505305359,GB +1505305360,1505305367,BE +1505305368,1505305375,ES +1505305376,1505305383,NL +1505305384,1505305391,DE +1505305392,1505305399,IT +1505305400,1505305407,PT +1505305408,1505305415,US +1505305416,1505305423,CH +1505305424,1505305878,FR 1505305879,1505305879,US 1505305880,1505305880,ES 1505305881,1505305899,FR @@ -38577,7 +39872,11 @@ 1505321984,1505322287,AT 1505322288,1505322415,DE 1505322416,1505322879,AT -1505322880,1505325055,DE +1505322880,1505324335,DE +1505324336,1505324351,AT +1505324352,1505324791,DE +1505324792,1505324799,AT +1505324800,1505325055,DE 1505325056,1505329151,AT 1505329152,1505329215,GB 1505329216,1505329375,IE @@ -38586,9 +39885,13 @@ 1505332992,1505332999,GB 1505333000,1505333623,IE 1505333624,1505333631,GB -1505333632,1505336063,IE +1505333632,1505333887,IE +1505333888,1505333951,GB +1505333952,1505336063,IE 1505336064,1505336071,GB -1505336072,1505336831,IE +1505336072,1505336576,IE +1505336577,1505336639,GB +1505336640,1505336831,IE 1505336832,1505336863,GB 1505336864,1505336864,IE 1505336865,1505336879,GB @@ -38639,9 +39942,13 @@ 1505456640,1505456895,US 1505456896,1505456927,GB 1505456928,1505456935,US -1505456936,1505458175,GB +1505456936,1505456983,GB +1505456984,1505456987,IL +1505456988,1505458175,GB 1505458176,1505458431,US -1505458432,1505460223,GB +1505458432,1505458463,GB +1505458464,1505458495,US +1505458496,1505460223,GB 1505460224,1505476607,CZ 1505476608,1505484799,RU 1505484800,1505492991,PL @@ -38727,11 +40034,14 @@ 1506438864,1506438871,DE 1506438872,1506438879,FR 1506438880,1506438883,US -1506438884,1506438911,DE +1506438884,1506438895,DE +1506438896,1506438911,CH 1506438912,1506439039,US 1506439040,1506439463,DE 1506439464,1506439471,GB -1506439472,1506439935,DE +1506439472,1506439571,DE +1506439572,1506439575,US +1506439576,1506439935,DE 1506439936,1506440191,US 1506440192,1506440447,DE 1506440448,1506440575,US @@ -38800,9 +40110,7 @@ 1506444288,1506445311,DE 1506445312,1506445337,FR 1506445338,1506445343,GB -1506445344,1506445375,FR -1506445376,1506445407,GB -1506445408,1506445519,FR +1506445344,1506445519,FR 1506445520,1506445527,GB 1506445528,1506445703,FR 1506445704,1506445711,NL @@ -38813,11 +40121,13 @@ 1506445776,1506445791,GB 1506445792,1506445807,FR 1506445808,1506445823,GB -1506445824,1506446159,FR -1506446160,1506446175,GB -1506446176,1506446335,FR +1506445824,1506446335,FR 1506446336,1506447359,NL -1506447360,1506448383,IT +1506447360,1506447423,IT +1506447424,1506447455,GB +1506447456,1506448255,IT +1506448256,1506448287,GB +1506448288,1506448383,IT 1506448384,1506448639,AT 1506448640,1506448647,GB 1506448648,1506448663,AT @@ -38839,8 +40149,8 @@ 1506450848,1506450863,CZ 1506450864,1506450879,GB 1506450880,1506450943,CZ -1506450944,1506451007,DK -1506451008,1506451199,GB +1506450944,1506451023,DK +1506451024,1506451199,GB 1506451200,1506451895,ES 1506451896,1506451903,GB 1506451904,1506452223,ES @@ -38854,8 +40164,8 @@ 1506453400,1506453415,SE 1506453416,1506453423,GB 1506453424,1506453439,SE -1506453440,1506453455,GB -1506453456,1506453471,SE +1506453440,1506453447,GB +1506453448,1506453471,SE 1506453472,1506453503,GB 1506453504,1506453759,DE 1506453760,1506454015,FR @@ -38871,7 +40181,9 @@ 1506456576,1506456831,IE 1506456832,1506456847,IT 1506456848,1506456863,GB -1506456864,1506457087,IT +1506456864,1506456959,IT +1506456960,1506456991,GB +1506456992,1506457087,IT 1506457088,1506458239,GB 1506458240,1506458623,CH 1506458624,1506459135,GB @@ -38902,7 +40214,9 @@ 1506462624,1506462719,FR 1506462720,1506463231,IT 1506463232,1506463487,SE -1506463488,1506463999,DE +1506463488,1506463527,DE +1506463528,1506463535,GB +1506463536,1506463999,DE 1506464000,1506464767,GB 1506464768,1506465279,NL 1506465280,1506465791,GB @@ -38929,12 +40243,14 @@ 1506472448,1506472703,GB 1506472704,1506473215,IT 1506473216,1506473471,GB -1506473472,1506474271,IT +1506473472,1506473759,IT +1506473760,1506473791,GB +1506473792,1506474271,IT 1506474272,1506474303,SE 1506474304,1506474495,IT 1506474496,1506474751,FR -1506474752,1506474879,IT -1506474880,1506475007,GB +1506474752,1506474887,IT +1506474888,1506475007,GB 1506475008,1506475519,IT 1506475520,1506475527,AT 1506475528,1506476031,GB @@ -38976,7 +40292,6 @@ 1506781888,1506781951,AU 1506781952,1506783231,GB 1506783232,1506785279,RU -1506785280,1506787327,UA 1506787328,1506789375,ME 1506789376,1506791423,DE 1506791424,1506793471,GB @@ -39076,12 +40391,12 @@ 1508642816,1508646911,SE 1508646912,1508646927,DK 1508646928,1508646935,SE -1508646936,1508647015,DK -1508647016,1508648447,SE +1508646936,1508647039,DK +1508647040,1508648447,SE 1508648448,1508648703,DK 1508648704,1508650751,SE -1508650752,1508650815,DK -1508650816,1508650879,SE +1508650752,1508650823,DK +1508650824,1508650879,SE 1508650880,1508651263,DK 1508651264,1508652543,SE 1508652544,1508654079,DK @@ -39224,10 +40539,13 @@ 1515467264,1515467519,FR 1515467520,1515468031,US 1515468032,1515468287,ES -1515468288,1515486975,FR +1515468288,1515468415,NL +1515468416,1515486975,FR 1515486976,1515487231,CD -1515487232,1515487359,HK -1515487360,1515487999,FR +1515487232,1515487487,HK +1515487488,1515487743,FR +1515487744,1515487775,HK +1515487776,1515487999,FR 1515488000,1515488255,HK 1515488256,1515519743,FR 1515519744,1515519999,ES @@ -39238,12 +40556,10 @@ 1518452736,1518460927,AT 1518460928,1518501887,SE 1518501888,1518503935,EE -1518503936,1518504959,LT -1518504960,1518505983,SE -1518505984,1518508031,LT -1518508032,1518510079,SE -1518510080,1518514175,LV -1518514176,1518665727,SE +1518503936,1518508799,LT +1518508800,1518510079,SE +1518510080,1518516479,LV +1518516480,1518665727,SE 1518665728,1518727167,RU 1518727168,1518731263,SE 1518731264,1518927871,DE @@ -39414,7 +40730,13 @@ 1520074752,1520099327,BG 1520099328,1520099583,A2 1520099584,1520107519,BG -1520107520,1520140287,GB +1520107520,1520138167,GB +1520138168,1520138175,IE +1520138176,1520138611,GB +1520138612,1520138615,IE +1520138616,1520139399,GB +1520139400,1520139407,IE +1520139408,1520140287,GB 1520140288,1520173055,RU 1520173056,1520205823,PL 1520205824,1520230399,RU @@ -39565,10 +40887,13 @@ 1534711808,1534712831,BE 1534712832,1534713855,FR 1534713856,1534713887,PL -1534713888,1534713935,FR +1534713888,1534713919,FR +1534713920,1534713927,IT +1534713928,1534713931,GB +1534713932,1534713935,FI 1534713936,1534713943,CH 1534713944,1534713947,DE -1534713948,1534713951,GB +1534713948,1534713951,PL 1534713952,1534713955,DE 1534713956,1534713959,BE 1534713960,1534713963,CH @@ -39603,8 +40928,9 @@ 1534714352,1534714367,CH 1534714368,1534714383,GB 1534714384,1534714399,FR -1534714400,1534714415,ES -1534714416,1534714431,GB +1534714400,1534714403,GB +1534714404,1534714407,PL +1534714408,1534714431,GB 1534714432,1534714463,FR 1534714464,1534714495,GB 1534714496,1534714511,FR @@ -39629,17 +40955,18 @@ 1534714864,1534714871,FR 1534714872,1534714875,DE 1534714876,1534714879,FR -1534714880,1534714895,IT +1534714880,1534714895,PL 1534714896,1534714911,FR 1534714912,1534714927,DE -1534714928,1534715039,FR +1534714928,1534714943,FR +1534714944,1534714975,DE +1534714976,1534715039,FR 1534715040,1534715055,GB 1534715056,1534715071,PL 1534715072,1534715135,FR 1534715136,1534715139,PL 1534715140,1534715143,GB -1534715144,1534715151,NL -1534715152,1534715167,FR +1534715144,1534715167,FR 1534715168,1534715183,NL 1534715184,1534715199,FR 1534715200,1534715203,DE @@ -39648,7 +40975,10 @@ 1534715216,1534715263,FR 1534715264,1534715279,ES 1534715280,1534715295,FR -1534715296,1534715311,ES +1534715296,1534715299,ES +1534715300,1534715303,FR +1534715304,1534715307,ES +1534715308,1534715311,DE 1534715312,1534715315,FR 1534715316,1534715319,ES 1534715320,1534715327,PL @@ -39658,12 +40988,13 @@ 1534715372,1534715375,GB 1534715376,1534715391,ES 1534715392,1534715407,PL -1534715408,1534715423,ES +1534715408,1534715423,DE 1534715424,1534715439,PL 1534715440,1534715447,ES 1534715448,1534715451,FR 1534715452,1534715487,PL -1534715488,1534715503,ES +1534715488,1534715495,IT +1534715496,1534715503,CZ 1534715504,1534715519,CH 1534715520,1534715551,FR 1534715552,1534715583,ES @@ -39672,14 +41003,18 @@ 1534715616,1534715631,FR 1534715632,1534715647,ES 1534715648,1534715663,PL -1534715664,1534715679,ES -1534715680,1534715695,GB -1534715696,1534715711,FR +1534715664,1534715667,FR +1534715668,1534715675,PL +1534715676,1534715679,GB +1534715680,1534715711,FR 1534715712,1534715727,PT 1534715728,1534715731,FR 1534715732,1534715735,GB 1534715736,1534715759,PL -1534715760,1534715807,ES +1534715760,1534715775,ES +1534715776,1534715783,PL +1534715784,1534715791,BE +1534715792,1534715807,ES 1534715808,1534715871,FR 1534715872,1534715887,DE 1534715888,1534715919,FR @@ -39709,9 +41044,7 @@ 1534716432,1534716447,PL 1534716448,1534716479,FR 1534716480,1534716495,ES -1534716496,1534716511,FR -1534716512,1534716527,DE -1534716528,1534716575,FR +1534716496,1534716575,FR 1534716576,1534716607,PL 1534716608,1534716639,FR 1534716640,1534716647,BE @@ -39725,15 +41058,20 @@ 1534716752,1534716759,PL 1534716760,1534716763,FR 1534716764,1534716767,ES -1534716768,1534716879,FR +1534716768,1534716823,FR +1534716824,1534716831,GB +1534716832,1534716879,FR 1534716880,1534716895,BE -1534716896,1534716927,FR +1534716896,1534716903,ES +1534716904,1534716911,DE +1534716912,1534716927,FR 1534716928,1534716943,DE 1534716944,1534716991,FR 1534716992,1534717007,DE 1534717008,1534717023,FR 1534717024,1534717055,PL -1534717056,1534717103,FR +1534717056,1534717071,GB +1534717072,1534717103,FR 1534717104,1534717119,PL 1534717120,1534717135,IT 1534717136,1534717139,CH @@ -39741,16 +41079,15 @@ 1534717144,1534717147,FR 1534717148,1534717151,IT 1534717152,1534717263,FR -1534717264,1534717279,ES -1534717280,1534717315,FR +1534717264,1534717267,PL +1534717268,1534717315,FR 1534717316,1534717319,IE 1534717320,1534717323,GB 1534717324,1534717343,FR 1534717344,1534717359,GB 1534717360,1534717375,PL 1534717376,1534717503,FR -1534717504,1534717519,DE -1534717520,1534717535,FR +1534717504,1534717535,DE 1534717536,1534717551,PL 1534717552,1534717567,CZ 1534717568,1534717583,PL @@ -39775,7 +41112,10 @@ 1534717908,1534717911,GB 1534717912,1534717915,FR 1534717916,1534717919,DE -1534717920,1534717935,ES +1534717920,1534717923,PL +1534717924,1534717927,ES +1534717928,1534717931,DE +1534717932,1534717935,FR 1534717936,1534717951,IT 1534717952,1534717967,BE 1534717968,1534717983,IT @@ -39784,7 +41124,8 @@ 1534718032,1534718063,FR 1534718064,1534718079,IT 1534718080,1534718087,ES -1534718088,1534718095,CZ +1534718088,1534718091,DE +1534718092,1534718095,ES 1534718096,1534718111,PL 1534718112,1534718127,IT 1534718128,1534718143,ES @@ -39816,13 +41157,16 @@ 1534718832,1534718847,FR 1534718848,1534718911,BE 1534718912,1534718927,IT -1534718928,1534718943,FR -1534718944,1534718959,DE +1534718928,1534718959,FR 1534718960,1534718975,ES 1534718976,1534719039,FR 1534719040,1534719167,BE 1534719168,1534719215,PL -1534719216,1534719359,FR +1534719216,1534719295,FR +1534719296,1534719311,DE +1534719312,1534719335,FR +1534719336,1534719343,PL +1534719344,1534719359,FR 1534719360,1534719375,PL 1534719376,1534719391,DE 1534719392,1534719395,CH @@ -39832,7 +41176,7 @@ 1534719424,1534719439,DE 1534719440,1534719455,PL 1534719456,1534719471,FR -1534719472,1534719487,GB +1534719472,1534719487,IE 1534719488,1534719631,FR 1534719632,1534719639,ES 1534719640,1534719643,GB @@ -39845,14 +41189,18 @@ 1534719704,1534719711,GB 1534719712,1534719759,FR 1534719760,1534719775,IT -1534719776,1534719823,FR +1534719776,1534719799,FR +1534719800,1534719803,ES +1534719804,1534719807,GB +1534719808,1534719823,FR 1534719824,1534719839,CH 1534719840,1534719871,FR 1534719872,1534719887,PL 1534719888,1534719951,FR 1534719952,1534719967,DE 1534719968,1534719983,PL -1534719984,1534720007,FR +1534719984,1534720003,FR +1534720004,1534720007,ES 1534720008,1534720015,PL 1534720016,1534720031,GB 1534720032,1534720047,DE @@ -39866,7 +41214,8 @@ 1534720224,1534720239,DE 1534720240,1534720255,BE 1534720256,1534720287,PL -1534720288,1534720367,FR +1534720288,1534720351,FR +1534720352,1534720367,ES 1534720368,1534720383,IT 1534720384,1534720431,FR 1534720432,1534720435,DE @@ -39884,12 +41233,14 @@ 1534720512,1534720527,DE 1534720528,1534720535,FR 1534720536,1534720539,PL -1534720540,1534720575,FR -1534720576,1534720591,ES +1534720540,1534720543,FI +1534720544,1534720559,FR +1534720560,1534720583,IT +1534720584,1534720591,BE 1534720592,1534720607,FR 1534720608,1534720623,GB -1534720624,1534720655,FR -1534720656,1534720671,PL +1534720624,1534720639,FR +1534720640,1534720671,PL 1534720672,1534720739,FR 1534720740,1534720743,PL 1534720744,1534720747,NL @@ -39935,7 +41286,9 @@ 1534721232,1534721247,DE 1534721248,1534721263,FR 1534721264,1534721279,GB -1534721280,1534721311,FR +1534721280,1534721287,PL +1534721288,1534721295,NL +1534721296,1534721311,FR 1534721312,1534721319,PL 1534721320,1534721327,PT 1534721328,1534721343,NL @@ -39953,8 +41306,8 @@ 1534721532,1534721535,FR 1534721536,1534721583,GB 1534721584,1534721599,FR -1534721600,1534721623,ES -1534721624,1534721627,PL +1534721600,1534721619,ES +1534721620,1534721627,PL 1534721628,1534721631,NL 1534721632,1534721663,FR 1534721664,1534721679,ES @@ -39964,9 +41317,7 @@ 1534721744,1534721747,PL 1534721748,1534721751,IT 1534721752,1534721755,DE -1534721756,1534721775,FR -1534721776,1534721791,ES -1534721792,1534721823,FR +1534721756,1534721823,FR 1534721824,1534721827,PL 1534721828,1534721831,FR 1534721832,1534721835,PL @@ -39984,12 +41335,15 @@ 1534721968,1534721975,DE 1534721976,1534721979,ES 1534721980,1534721983,GB -1534721984,1534721999,PL -1534722000,1534722031,FR -1534722032,1534722047,BE +1534721984,1534722007,PL +1534722008,1534722011,PT +1534722012,1534722015,ES +1534722016,1534722039,FR +1534722040,1534722043,BE +1534722044,1534722047,FR 1534722048,1534787583,RU 1534787584,1534791679,RO -1534791680,1534795775,UA +1534791680,1534795775,RU 1534795776,1534803967,NO 1534803968,1534808063,LV 1534808064,1534812159,RU @@ -39997,7 +41351,7 @@ 1534816256,1534820351,FR 1534820352,1534824447,FI 1534824448,1534828543,UA -1534828544,1534832639,PL +1534828544,1534836735,PL 1534836736,1534840831,SE 1534840832,1534844927,PL 1534844928,1534849023,IE @@ -40059,7 +41413,7 @@ 1536045056,1536045439,DE 1536045440,1536045567,A2 1536045568,1536046079,IQ -1536046080,1536046591,A2 +1536046080,1536046591,DE 1536046592,1536046847,IQ 1536046848,1536046975,A2 1536046976,1536047039,SA @@ -40077,9 +41431,10 @@ 1536048672,1536048703,LU 1536048704,1536048719,IQ 1536048720,1536048735,NL -1536048736,1536049151,A2 +1536048736,1536048895,DE +1536048896,1536049151,A2 1536049152,1536051199,IT -1536053248,1536057343,RU +1536051200,1536057343,RU 1536057344,1536061439,IE 1536061440,1536065535,SE 1536065536,1536065791,GB @@ -40154,16 +41509,13 @@ 1536655360,1536659455,GE 1536659456,1536659759,DE 1536659760,1536659775,BI -1536659776,1536659791,LB +1536659776,1536659791,DE 1536659792,1536659823,SD -1536659824,1536659967,DE -1536659968,1536659975,EG -1536659976,1536659991,DE -1536659992,1536660003,EG +1536659824,1536659991,DE +1536659992,1536659999,EG +1536660000,1536660003,DE 1536660004,1536660007,SO -1536660008,1536660015,DE -1536660016,1536660019,KW -1536660020,1536660031,DE +1536660008,1536660031,DE 1536660032,1536660039,DJ 1536660040,1536660735,DE 1536660736,1536660991,SA @@ -40176,26 +41528,24 @@ 1536662320,1536662335,LB 1536662336,1536662351,DE 1536662352,1536662359,TD -1536662360,1536662367,IR -1536662368,1536662399,IQ -1536662400,1536662415,DE +1536662360,1536662415,DE 1536662416,1536662431,GN -1536662432,1536662527,IQ -1536662528,1536662783,DE +1536662432,1536662463,IQ +1536662464,1536662783,DE 1536662784,1536663039,SA 1536663040,1536663295,DE 1536663296,1536663311,LB 1536663312,1536663319,DE 1536663320,1536663327,LB -1536663328,1536663335,CV -1536663336,1536663359,DE -1536663360,1536663391,IQ +1536663328,1536663343,DE +1536663344,1536663391,IQ 1536663392,1536663423,DE 1536663424,1536663551,KW 1536663552,1536667647,SA 1536667648,1536675839,RU 1536675840,1536679935,GB 1536679936,1536684031,LB +1536684032,1536688127,GB 1536688128,1537212415,FI 1537212416,1538260991,FR 1538260992,1538785279,BE @@ -40214,8 +41564,8 @@ 1538859008,1538875391,RU 1538875392,1538883583,RS 1538883584,1538891775,BE -1538891776,1538898431,DE -1538898432,1538899967,FR +1538891776,1538898175,DE +1538898176,1538899967,FR 1538899968,1538904031,SI 1538904032,1538904039,BH 1538904040,1538908159,SI @@ -40276,10 +41626,7 @@ 1539049312,1539049327,LY 1539049328,1539049335,IT 1539049336,1539049343,LY -1539049344,1539050335,IT -1539050336,1539050351,TR -1539050352,1539050359,IT -1539050360,1539050367,TR +1539049344,1539050367,IT 1539050368,1539050375,FR 1539050376,1539050383,IT 1539050384,1539050399,FR @@ -40340,6 +41687,7 @@ 1539212544,1539213311,CZ 1539213312,1539215359,SE 1539215360,1539219455,DE +1539219456,1539221503,GG 1539221504,1539222287,FR 1539222288,1539222303,HK 1539222304,1539222527,FR @@ -40347,6 +41695,7 @@ 1539222784,1539223551,FR 1539223552,1539225599,DE 1539225600,1539227647,HU +1539227648,1539229695,FI 1539229696,1539231743,DE 1539231744,1539233791,BE 1539233792,1539235839,GR @@ -40971,7 +42320,8 @@ 1539744256,1539744511,RO 1539744512,1539744767,DE 1539744768,1539745023,SE -1539745024,1539745535,GB +1539745024,1539745279,GB +1539745280,1539745535,GI 1539745536,1539745791,CH 1539745792,1539746303,DK 1539746304,1539746815,RU @@ -41018,6 +42368,7 @@ 1539757568,1539757823,SI 1539757824,1539758079,UA 1539758080,1539758335,HR +1539758336,1539758591,EU 1539758592,1539758847,NL 1539758848,1539759103,BA 1539759104,1539759359,DK @@ -41332,7 +42683,7 @@ 1539878912,1539879935,EU 1539879936,1539880959,UA 1539880960,1539881983,PL -1539881984,1539884031,UA +1539881984,1539883007,UA 1539884032,1539885055,MT 1539885056,1539886079,UA 1539886080,1539887103,FR @@ -41738,6 +43089,7 @@ 1540303872,1540304895,UA 1540304896,1540305407,PL 1540305408,1540305919,GB +1540305920,1540306431,PL 1540306432,1540306943,UA 1540306944,1540307455,GB 1540307456,1540307967,RU @@ -42204,6 +43556,7 @@ 1540464384,1540464895,DE 1540464896,1540465407,GB 1540465408,1540465663,ES +1540465664,1540465919,NL 1540465920,1540466175,UA 1540466176,1540466431,DK 1540466432,1540466687,RU @@ -42730,8 +44083,7 @@ 1540716800,1540717055,UA 1540717056,1540717311,CZ 1540717312,1540717823,PL -1540717824,1540718079,UA -1540718080,1540718335,CR +1540717824,1540718335,UA 1540718336,1540718591,DE 1540718592,1540718847,CH 1540718848,1540719103,IT @@ -42821,7 +44173,6 @@ 1540742912,1540743167,RU 1540743168,1540743423,NO 1540743424,1540743679,RU -1540743680,1540743935,MD 1540743936,1540744191,CH 1540744192,1540744447,GR 1540744448,1540744703,UA @@ -42984,6 +44335,7 @@ 1540891136,1540891391,NL 1540891392,1540891647,DE 1540891648,1540891903,CH +1540891904,1540892159,GB 1540892160,1540892415,IT 1540892416,1540892671,UA 1540892672,1540892927,GB @@ -43010,6 +44362,7 @@ 1540898304,1540898559,SE 1540898560,1540898815,ES 1540898816,1540899071,PL +1540899072,1540899327,SE 1540899328,1540899583,RU 1540899584,1540899839,FR 1540899840,1540900351,RU @@ -43208,9 +44561,37 @@ 1540960256,1540960767,PL 1540960768,1540961279,RU 1540961280,1540961791,CZ -1540961792,1540962303,HU 1540962304,1540962815,NL -1540962816,1540963327,EU +1540962816,1540963839,UA +1540963840,1540964351,RU +1540964352,1540964863,IR +1540964864,1540965375,UA +1540965888,1540966399,RU +1540966400,1540966911,GB +1540966912,1540967935,RU +1540967936,1540968447,UA +1540968448,1540969471,RO +1540969472,1540969983,GB +1540969984,1540970495,DE +1540970496,1540971007,IE +1540971008,1540971519,UA +1540971520,1540972031,SI +1540972032,1540972543,FR +1540972544,1540973055,CZ +1540973056,1540973567,PL +1540973568,1540974079,UA +1540974080,1540974591,RU +1540974592,1540975103,PL +1540975104,1540975615,UA +1540975616,1540976639,RU +1540976640,1540977151,UA +1540977152,1540977663,PL +1540977664,1540978175,FI +1540978176,1540978687,AT +1540978688,1540979199,RU +1540979200,1540979711,SI +1540979712,1540980223,RU +1540980224,1540980735,SI 1540980736,1540980991,CH 1540980992,1540981247,RU 1540981248,1540981503,RO @@ -43254,6 +44635,79 @@ 1540991744,1540991999,PL 1540992000,1540992255,FR 1540992256,1540992511,AT +1540992512,1540993279,DE +1540993280,1540993535,LB +1540993536,1540993791,SC +1540993792,1540994047,UA +1540994048,1540994303,RU +1540994304,1540994559,SE +1540994560,1540994815,PL +1540994816,1540995071,UA +1540995072,1540995327,RU +1540995328,1540995583,IQ +1540995584,1540995839,SE +1540995840,1540996095,RO +1540996096,1540996351,DE +1540996352,1540996607,NL +1540996608,1540996863,RU +1540996864,1540997119,NL +1540997120,1540997375,RU +1540997376,1540997631,TR +1540997632,1540998399,RU +1540998400,1540998655,UA +1540998656,1540998911,PL +1540998912,1540999167,DE +1540999168,1540999423,RU +1540999424,1540999679,DK +1540999680,1540999935,RU +1540999936,1541000191,RO +1541000192,1541000447,PL +1541000448,1541000703,BG +1541000704,1541000959,DE +1541000960,1541001215,RU +1541001216,1541001471,PL +1541001472,1541001727,SE +1541001728,1541001983,NL +1541001984,1541002239,FI +1541002240,1541002495,RU +1541002496,1541002751,AT +1541002752,1541003007,DE +1541003008,1541003263,BG +1541003264,1541003519,GB +1541003520,1541004031,PL +1541004032,1541004287,IL +1541004288,1541004543,RU +1541004544,1541004799,PL +1541004800,1541005055,SI +1541005056,1541005311,NL +1541005312,1541005567,PL +1541005568,1541006079,AT +1541006080,1541006335,RU +1541006336,1541006591,PL +1541006592,1541006847,AT +1541006848,1541007103,DE +1541007104,1541007359,GB +1541007360,1541007615,RO +1541007616,1541007871,RU +1541007872,1541008127,FR +1541008128,1541008383,NL +1541008640,1541008895,GB +1541008896,1541009151,TR +1541009152,1541009407,RU +1541009408,1541009663,UA +1541009664,1541009919,CH +1541009920,1541010175,PL +1541010176,1541010431,GR +1541010432,1541010687,UA +1541010688,1541010943,GB +1541010944,1541011199,CY +1541011200,1541011455,CH +1541011456,1541011711,FI +1541011712,1541012223,RU +1541012224,1541012479,DE +1541012480,1541012735,FI +1541012736,1541013247,UA +1541013248,1541013503,SI 1541013504,1541014527,RO 1541014528,1541015551,AM 1541015552,1541016575,RU @@ -43310,6 +44764,171 @@ 1541079040,1541080063,PL 1541080064,1541081087,RU 1541081088,1541082111,DE +1541082112,1541083135,RU +1541083136,1541084159,RO +1541084160,1541086207,RU +1541086208,1541088255,UA +1541088256,1541089279,RU +1541089280,1541090303,GB +1541090304,1541091327,CZ +1541091328,1541092351,RU +1541092352,1541093375,UA +1541093376,1541094399,RU +1541094400,1541095423,UA +1541095424,1541096447,RU +1541096448,1541097471,AT +1541097472,1541098495,RU +1541098496,1541099519,NL +1541099520,1541100543,UA +1541100544,1541101567,HU +1541101568,1541102591,RU +1541102592,1541103615,RO +1541103616,1541105663,RU +1541105664,1541106687,PL +1541106688,1541107711,NL +1541107712,1541108735,PL +1541108736,1541109759,ES +1541109760,1541110783,PL +1541110784,1541111807,RU +1541111808,1541112831,PL +1541112832,1541113855,SK +1541113856,1541115903,RU +1541115904,1541116927,UA +1541116928,1541117951,RU +1541117952,1541118975,DK +1541118976,1541122047,RU +1541123072,1541124095,FI +1541124096,1541126143,RU +1541126144,1541127167,PL +1541127168,1541129215,RU +1541129216,1541130239,UA +1541130240,1541132287,RU +1541132288,1541133311,PL +1541133312,1541134335,RO +1541134336,1541135359,SE +1541135360,1541136383,UA +1541136384,1541138431,RU +1541138432,1541139455,UA +1541139456,1541140479,HU +1541140480,1541142527,CZ +1541142528,1541143551,RU +1541143552,1541144575,UA +1541144576,1541144831,LV +1541144832,1541145087,RU +1541145088,1541145343,AT +1541145344,1541145599,UA +1541145600,1541145855,IT +1541145856,1541146111,RU +1541146112,1541146367,UA +1541146368,1541146623,DK +1541146624,1541146879,AT +1541146880,1541147135,IL +1541147136,1541147391,PL +1541147392,1541147903,RU +1541147904,1541148159,EU +1541148160,1541148415,RO +1541148416,1541148671,GB +1541148672,1541148927,RU +1541148928,1541149439,PL +1541149440,1541149695,SE +1541149696,1541149951,LT +1541149952,1541150207,NL +1541150208,1541150463,IL +1541150464,1541150719,CH +1541150720,1541151231,GB +1541151232,1541151487,RO +1541151488,1541151743,FR +1541151744,1541151999,NL +1541152000,1541152255,HU +1541152256,1541152511,NL +1541152512,1541152767,RU +1541152768,1541153023,PL +1541153024,1541153279,RU +1541153280,1541153535,DE +1541153536,1541153791,UA +1541153792,1541154047,DE +1541154048,1541154303,NL +1541154304,1541154559,RU +1541154560,1541154815,PL +1541154816,1541155071,CH +1541155072,1541155327,CY +1541155328,1541155583,GB +1541155584,1541155839,RU +1541155840,1541156095,PL +1541156096,1541156351,IE +1541156352,1541156607,RU +1541156608,1541156863,SE +1541156864,1541157119,RO +1541157120,1541157375,DE +1541157376,1541157631,TR +1541157632,1541157887,KZ +1541157888,1541158143,GB +1541158144,1541158399,NL +1541158400,1541158655,PL +1541158656,1541158911,SI +1541158912,1541159167,DE +1541159168,1541159423,RU +1541159424,1541159679,SE +1541159680,1541159935,LT +1541159936,1541160447,UA +1541160448,1541160703,RU +1541160704,1541160959,MD +1541160960,1541161215,CH +1541161216,1541161471,TR +1541161472,1541161727,ES +1541161728,1541161983,DE +1541161984,1541162239,BE +1541162240,1541162495,RU +1541162496,1541162751,GB +1541162752,1541163007,DE +1541163008,1541163263,RO +1541163264,1541163519,PL +1541163520,1541163775,DE +1541163776,1541164031,RO +1541164032,1541164287,RU +1541164288,1541164543,HR +1541164544,1541164799,SI +1541164800,1541165055,IR +1541165056,1541165311,UA +1541165312,1541165567,RU +1541165568,1541165823,NL +1541165824,1541166079,GB +1541166080,1541166335,RU +1541166336,1541166591,FR +1541166592,1541166847,RO +1541166848,1541167103,RU +1541167104,1541167359,NL +1541167360,1541167615,AT +1541167616,1541167871,RU +1541167872,1541168127,UA +1541210112,1541210623,RU +1541210624,1541211135,CZ +1541211136,1541211647,SK +1541211648,1541212159,RU +1541212160,1541212671,DE +1541212672,1541213183,MT +1541213184,1541213695,DE +1541213696,1541214207,UA +1541214208,1541215743,RU +1541215744,1541216255,SA +1541216256,1541216767,RU +1541216768,1541217279,PL +1541217280,1541218303,RU +1541218304,1541218815,IT +1541218816,1541219839,RU +1541219840,1541220351,CZ +1541220352,1541221375,RU +1541221376,1541221887,PL +1541221888,1541222399,CZ +1541222400,1541222911,RU +1541222912,1541223423,DK +1541223424,1541223935,UA +1541223936,1541224447,GB +1541224448,1541224959,RU +1541224960,1541225471,DE +1541225472,1541225983,RU +1541225984,1541226495,LV +1541226496,1541227007,UA 1543503872,1545601023,GB 1545601024,1545863167,SE 1545863168,1545895935,RU @@ -43373,6 +44992,7 @@ 1546270720,1546272767,GB 1546272768,1546274815,NO 1546274816,1546276863,SE +1546276864,1546278911,IT 1546278912,1546280959,RU 1546280960,1546283007,IT 1546283008,1546285055,CH @@ -43471,6 +45091,7 @@ 1546895360,1546911743,IE 1546911744,1546928127,SK 1546928128,1546944511,GB +1546944512,1546960895,UA 1546960896,1546977279,HU 1546977280,1546993663,MK 1546993664,1547010047,RU @@ -43518,7 +45139,8 @@ 1547564288,1547564311,CH 1547564312,1547564315,BG 1547564316,1547564335,NL -1547564336,1547564415,US +1547564336,1547564351,US +1547564352,1547564415,CY 1547564416,1547564439,NZ 1547564440,1547564543,NL 1547564544,1547564799,US @@ -43679,8 +45301,8 @@ 1559314432,1559322623,GE 1559322624,1559330815,RU 1559330816,1559339007,BA -1559339008,1559339711,RU -1559339712,1559339775,A1 +1559339008,1559339743,RU +1559339744,1559339775,MK 1559339776,1559341695,RU 1559341696,1559341703,ES 1559341704,1559347199,RU @@ -43759,8 +45381,8 @@ 1566101504,1566105599,RU 1566105600,1566109695,DE 1566109696,1566111231,CH -1566111232,1566111295,FR -1566111296,1566113791,CH +1566111232,1566111487,FR +1566111488,1566113791,CH 1566113792,1566117887,DE 1566117888,1566121983,TR 1566121984,1566126079,NO @@ -43777,6 +45399,7 @@ 1566158848,1566162943,RU 1566162944,1566167039,PL 1566167040,1566171135,UA +1566171136,1566175231,TR 1566175232,1566179327,IE 1566179328,1566183423,DK 1566183424,1566187519,ES @@ -43788,7 +45411,9 @@ 1566212096,1566216191,DE 1566216192,1566220287,SE 1566220288,1566224383,CZ -1566224384,1566228479,DE +1566224384,1566226343,DE +1566226344,1566226351,NL +1566226352,1566228479,DE 1566228480,1566232575,GB 1566232576,1566248959,RU 1566248960,1566257151,GB @@ -43915,10 +45540,20 @@ 1566468896,1566469391,BE 1566469392,1566469407,HU 1566469408,1566470143,BE -1566470144,1566470320,IE -1566470321,1566470399,GB -1566470400,1566470719,IE -1566470720,1566470911,GB +1566470144,1566470159,IE +1566470160,1566470171,GB +1566470172,1566470239,IE +1566470240,1566470343,GB +1566470344,1566470351,IE +1566470352,1566470367,GB +1566470368,1566470719,IE +1566470720,1566470727,GB +1566470728,1566470739,IE +1566470740,1566470743,GB +1566470744,1566470747,IE +1566470748,1566470751,GB +1566470752,1566470847,IE +1566470848,1566470911,GB 1566470912,1566472191,IE 1566472192,1566474239,GB 1566474240,1566476287,DE @@ -44026,6 +45661,7 @@ 1568505856,1568538623,NL 1568538624,1568555007,IR 1568555008,1568571391,UA +1568571392,1568604159,LB 1568604160,1568636927,UA 1568636928,1568669439,DE 1568669440,1568669695,MD @@ -44055,6 +45691,7 @@ 1570596864,1570598911,UA 1570598912,1570600959,PL 1570600960,1570603007,RU +1570603008,1570605055,CZ 1570605056,1570607103,NL 1570607104,1570609151,RU 1570609152,1570611199,PL @@ -44162,7 +45799,9 @@ 1570667524,1570667527,IT 1570667528,1570667531,NO 1570667532,1570667535,GB -1570667536,1570667711,SE +1570667536,1570667587,SE +1570667588,1570667591,US +1570667592,1570667711,SE 1570667712,1570667727,FR 1570667728,1570667743,NL 1570667744,1570667775,SE @@ -44187,6 +45826,7 @@ 1570717696,1570725887,HR 1570725888,1570734079,DE 1570734080,1570750463,PL +1570750464,1570752511,AL 1570752512,1570754559,GB 1570754560,1570756607,ES 1570756608,1570764799,RU @@ -44194,7 +45834,9 @@ 1570766848,1571291135,DK 1571291136,1571422207,RO 1571422208,1571426303,RU -1571426304,1571553279,CZ +1571426304,1571446783,CZ +1571446784,1571448831,KZ +1571448832,1571553279,CZ 1571553280,1571684351,IL 1571684352,1571686399,ES 1571686400,1571688447,GB @@ -44331,7 +45973,10 @@ 1572504320,1572504575,DE 1572504576,1572504703,RO 1572504704,1572504831,TR -1572504832,1572507647,IT +1572504832,1572505087,SG +1572505088,1572507199,IT +1572507200,1572507207,GB +1572507208,1572507647,IT 1572507648,1572511743,GB 1572511744,1572515839,DE 1572515840,1572517759,NL @@ -44370,8 +46015,8 @@ 1572569088,1572571135,NL 1572571136,1572573183,RO 1572573184,1572574975,GG -1572574976,1572575103,GB -1572575104,1572575231,GG +1572574976,1572575167,GB +1572575168,1572575231,GG 1572575232,1572577279,RU 1572577280,1572579327,AM 1572579328,1572581375,GB @@ -44400,7 +46045,6 @@ 1572620568,1572622335,CH 1572622336,1572624383,RU 1572624384,1572626431,NO -1572626432,1572628479,RU 1572628480,1572630527,DE 1572630528,1572632575,IT 1572632576,1572634623,RU @@ -44497,7 +46141,6 @@ 1572814848,1572816895,KW 1572816896,1572818943,RU 1572818944,1572820991,FR -1572820992,1572823039,GB 1572823040,1572825087,BY 1572825088,1572827135,RU 1572827136,1572829183,NO @@ -44505,6 +46148,7 @@ 1572831232,1572833279,BH 1572833280,1572835327,ES 1572835328,1572837375,IE +1572837376,1572839423,DK 1572839424,1572841471,DE 1572841472,1572842239,EU 1572842240,1572842495,LV @@ -44590,8 +46234,7 @@ 1578591024,1578591039,PL 1578591040,1578591055,NL 1578591056,1578591087,FR -1578591088,1578591103,ES -1578591104,1578591119,GB +1578591088,1578591119,GB 1578591120,1578591127,FR 1578591128,1578591135,DE 1578591136,1578591143,FR @@ -44606,11 +46249,11 @@ 1578591292,1578591295,ES 1578591296,1578591327,FR 1578591328,1578591343,PL -1578591344,1578591359,ES -1578591360,1578591375,PL -1578591376,1578591391,FR +1578591344,1578591391,FR 1578591392,1578591407,CH -1578591408,1578591423,GB +1578591408,1578591411,ES +1578591412,1578591415,FR +1578591416,1578591423,ES 1578591424,1578591431,PL 1578591432,1578591435,DE 1578591436,1578591439,ES @@ -44622,7 +46265,9 @@ 1578591552,1578591555,BE 1578591556,1578591559,IT 1578591560,1578591563,PL -1578591564,1578591583,FR +1578591564,1578591575,FR +1578591576,1578591579,DE +1578591580,1578591583,ES 1578591584,1578591599,IT 1578591600,1578591663,FR 1578591664,1578591695,PL @@ -44639,12 +46284,12 @@ 1578591892,1578591903,FR 1578591904,1578591919,PL 1578591920,1578591939,ES -1578591940,1578591943,GB -1578591944,1578591951,FR +1578591940,1578591951,FR 1578591952,1578591967,PT 1578591968,1578591983,FR 1578591984,1578592031,PL -1578592032,1578592047,IT +1578592032,1578592039,PT +1578592040,1578592047,ES 1578592048,1578592079,FR 1578592080,1578592095,PL 1578592096,1578592111,FR @@ -44660,8 +46305,8 @@ 1578592200,1578592207,CH 1578592208,1578592223,FR 1578592224,1578592255,ES -1578592256,1578592271,FR -1578592272,1578592279,NL +1578592256,1578592275,FR +1578592276,1578592279,FI 1578592280,1578592283,BE 1578592284,1578592287,NL 1578592288,1578592303,DE @@ -44684,18 +46329,22 @@ 1578592536,1578592543,NL 1578592544,1578592559,FR 1578592560,1578592575,NL -1578592576,1578592687,FR -1578592688,1578592719,ES +1578592576,1578592591,GB +1578592592,1578592687,FR +1578592688,1578592695,DE +1578592696,1578592719,ES 1578592720,1578592735,CH 1578592736,1578592751,FR 1578592752,1578592783,DE -1578592784,1578592815,FR +1578592784,1578592799,FR +1578592800,1578592815,GB 1578592816,1578592823,PL -1578592824,1578592827,FR -1578592828,1578592831,IE +1578592824,1578592831,FR 1578592832,1578592847,PL -1578592848,1578592863,FR -1578592864,1578592879,PL +1578592848,1578592851,BE +1578592852,1578592855,DE +1578592856,1578592859,FR +1578592860,1578592879,PL 1578592880,1578592883,FR 1578592884,1578592891,GB 1578592892,1578592895,FR @@ -44703,7 +46352,10 @@ 1578592960,1578593007,FR 1578593008,1578593279,DE 1578593280,1578593295,PL -1578593296,1578593327,FR +1578593296,1578593299,ES +1578593300,1578593303,GB +1578593304,1578593307,ES +1578593308,1578593327,FR 1578593328,1578593343,IT 1578593344,1578593359,FR 1578593360,1578593407,GB @@ -44760,9 +46412,16 @@ 1578594240,1578594255,FR 1578594256,1578594271,GB 1578594272,1578594303,PL -1578594304,1578594319,FR +1578594304,1578594307,GB +1578594308,1578594311,FI +1578594312,1578594315,PL +1578594316,1578594319,FR 1578594320,1578594335,PL -1578594336,1578594375,FR +1578594336,1578594355,GB +1578594356,1578594359,FR +1578594360,1578594363,PT +1578594364,1578594367,IT +1578594368,1578594375,FR 1578594376,1578594383,PT 1578594384,1578594399,FR 1578594400,1578594431,PL @@ -44774,7 +46433,10 @@ 1578594512,1578594515,DE 1578594516,1578594519,FR 1578594520,1578594523,PL -1578594524,1578594559,FR +1578594524,1578594543,FR +1578594544,1578594551,ES +1578594552,1578594555,PL +1578594556,1578594559,LT 1578594560,1578594575,PL 1578594576,1578594607,ES 1578594608,1578594623,FR @@ -44806,7 +46468,7 @@ 1578595232,1578595263,BE 1578595264,1578595267,ES 1578595268,1578595271,FR -1578595272,1578595275,PL +1578595272,1578595275,DE 1578595276,1578595279,ES 1578595280,1578595287,FR 1578595288,1578595295,PL @@ -44814,14 +46476,16 @@ 1578595328,1578595343,IT 1578595344,1578595363,FR 1578595364,1578595367,DE -1578595368,1578595379,FR +1578595368,1578595371,FR +1578595372,1578595375,BE +1578595376,1578595379,FR 1578595380,1578595383,CH 1578595384,1578595387,ES 1578595388,1578595391,PL 1578595392,1578595423,CH 1578595424,1578595455,LT -1578595456,1578595463,DE -1578595464,1578595487,FR +1578595456,1578595459,DE +1578595460,1578595487,FR 1578595488,1578595503,DE 1578595504,1578595519,PL 1578595520,1578595607,FR @@ -44830,7 +46494,12 @@ 1578595616,1578595647,PL 1578595648,1578595679,FR 1578595680,1578595695,BE -1578595696,1578595763,FR +1578595696,1578595711,FR +1578595712,1578595743,GB +1578595744,1578595747,IT +1578595748,1578595751,FR +1578595752,1578595759,ES +1578595760,1578595763,FR 1578595764,1578595775,ES 1578595776,1578595807,CH 1578595808,1578595983,FR @@ -44840,7 +46509,9 @@ 1578596096,1578596099,DE 1578596100,1578596103,GB 1578596104,1578596111,FR -1578596112,1578596127,ES +1578596112,1578596115,DE +1578596116,1578596123,PT +1578596124,1578596127,ES 1578596128,1578596143,PL 1578596144,1578596147,DE 1578596148,1578596151,FR @@ -44868,14 +46539,18 @@ 1578610688,1578610943,FR 1578610944,1578610975,ES 1578610976,1578611039,PL -1578611040,1578611071,FR +1578611040,1578611043,ES +1578611044,1578611047,CZ +1578611048,1578611051,ES +1578611052,1578611055,PL +1578611056,1578611071,FR 1578611072,1578611075,DE 1578611076,1578611079,FR 1578611080,1578611087,NL 1578611088,1578611119,DE 1578611120,1578611135,FR 1578611136,1578611151,CH -1578611152,1578611167,FR +1578611152,1578611167,DE 1578611168,1578611183,ES 1578611184,1578611199,FR 1578611200,1578611215,NL @@ -44891,15 +46566,16 @@ 1578611328,1578611343,BE 1578611344,1578611359,FR 1578611360,1578611375,CH -1578611376,1578611391,FR -1578611392,1578611407,DE +1578611376,1578611399,FR +1578611400,1578611403,BE +1578611404,1578611407,ES 1578611408,1578611423,IT 1578611424,1578611439,FR 1578611440,1578611455,IT 1578611456,1578611711,FR 1578611712,1578611775,CH -1578611776,1578611791,ES -1578611792,1578611807,FR +1578611776,1578611783,DE +1578611784,1578611807,FR 1578611808,1578611839,CH 1578611840,1578611919,FR 1578611920,1578611935,BE @@ -44913,8 +46589,7 @@ 1578612240,1578612255,FR 1578612256,1578612259,PL 1578612260,1578612263,IT -1578612264,1578612271,FR -1578612272,1578612287,ES +1578612264,1578612287,FR 1578612288,1578612303,BE 1578612304,1578612319,DE 1578612320,1578612383,FR @@ -44978,7 +46653,9 @@ 1579091840,1579091855,US 1579091856,1579091967,GB 1579091968,1579092223,DE -1579092224,1579104511,GB +1579092224,1579093759,GB +1579093760,1579094015,NL +1579094016,1579104511,GB 1579104512,1579104767,NL 1579104768,1579105023,GB 1579105024,1579105151,NL @@ -45107,13 +46784,17 @@ 1583800320,1583804415,ME 1583804416,1583808511,GB 1583808512,1583812607,MD -1583812608,1583813679,NL +1583812608,1583813663,NL +1583813664,1583813671,US +1583813672,1583813679,NL 1583813680,1583813683,GB 1583813684,1583813711,NL 1583813712,1583813727,US 1583813728,1583813735,NL 1583813736,1583813743,DE -1583813744,1583816703,NL +1583813744,1583813808,NL +1583813809,1583813815,US +1583813816,1583816703,NL 1583816704,1583820799,TR 1583820800,1583824895,LV 1583824896,1583828991,SI @@ -45128,7 +46809,13 @@ 1583848704,1583848735,NL 1583848736,1583848799,BE 1583848800,1583849471,NL -1583849472,1583853567,DE +1583849472,1583850751,DE +1583850752,1583850943,AT +1583850944,1583850951,DE +1583850952,1583850959,AT +1583850960,1583850999,DE +1583851000,1583851007,AT +1583851008,1583853567,DE 1583853568,1583857663,RU 1583857664,1583861759,SE 1583861760,1583865855,LU @@ -45182,12 +46869,10 @@ 1585265696,1585265727,IM 1585265728,1585265767,FR 1585265768,1585265775,IM -1585265776,1585265943,FR -1585265944,1585265951,IM -1585265952,1585265967,FR -1585265968,1585265983,IM -1585265984,1585266047,FR -1585266048,1585266687,IM +1585265776,1585265919,FR +1585265920,1585265935,IM +1585265936,1585266111,FR +1585266112,1585266687,IM 1585266688,1585270783,DE 1585270784,1585272831,IT 1585272832,1585274879,RU @@ -45302,8 +46987,7 @@ 1586012160,1586020351,DE 1586020352,1586028543,RU 1586028544,1586036735,GB -1586036736,1586061311,RU -1586061312,1586069503,HR +1586036736,1586069503,RU 1586069504,1586077695,DE 1586077696,1586085887,GE 1586085888,1586110463,RU @@ -45370,6 +47054,7 @@ 1586438144,1586446335,RU 1586446336,1586448383,NO 1586448384,1586450431,ES +1586450432,1586452479,FR 1586452480,1586454527,CH 1586454528,1586456575,IT 1586456576,1586458623,GB @@ -45447,7 +47132,8 @@ 1590056960,1590059007,ES 1590059008,1590060223,IT 1590060224,1590060255,CH -1590060256,1590061055,IT +1590060256,1590060799,IT +1590060800,1590061055,US 1590061056,1590063103,RU 1590063104,1590065151,CZ 1590065152,1590067199,IE @@ -45532,9 +47218,12 @@ 1592061952,1592066047,RU 1592066048,1592067583,US 1592067584,1592067711,NO -1592067712,1592069631,CY +1592067712,1592069375,CY +1592069376,1592069407,US +1592069408,1592069631,CY 1592069632,1592069695,NL -1592069696,1592069887,CY +1592069696,1592069855,CY +1592069856,1592069887,NL 1592069888,1592074239,RU 1592074240,1592078335,SK 1592078336,1592082431,NL @@ -45636,7 +47325,9 @@ 1593180160,1593196543,NO 1593196544,1593196783,SE 1593196784,1593196799,GB -1593196800,1593203455,SE +1593196800,1593202687,SE +1593202688,1593202815,NO +1593202816,1593203455,SE 1593203456,1593203487,NO 1593203488,1593204159,SE 1593204160,1593204223,DK @@ -45646,9 +47337,7 @@ 1593206084,1593206095,DK 1593206096,1593206103,FI 1593206104,1593206111,GB -1593206112,1593206207,SE -1593206208,1593206271,FI -1593206272,1593209151,SE +1593206112,1593209151,SE 1593209152,1593209155,GR 1593209156,1593209159,HU 1593209160,1593209163,FI @@ -45705,9 +47394,7 @@ 1593606144,1593638911,SY 1593638912,1593671679,RU 1593671680,1593704447,HR -1593704448,1593704959,SE -1593704960,1593705471,NO -1593705472,1593737215,SE +1593704448,1593737215,SE 1593737216,1593769983,PL 1593769984,1593802751,RU 1593802752,1593835519,SE @@ -45751,8 +47438,11 @@ 1599094784,1599111167,RU 1599111168,1599127551,IR 1599127552,1599143935,CZ +1599143936,1599160319,UA 1599160320,1599176703,IR -1599176704,1599193087,FR +1599176704,1599188991,FR +1599188992,1599189263,DE +1599189264,1599193087,FR 1599193088,1599209471,RU 1599209472,1599242239,IR 1599242240,1599258623,CZ @@ -45866,8 +47556,10 @@ 1602314240,1602316287,CZ 1602316288,1602318335,GB 1602318336,1602320383,ES -1602320384,1602324479,NL -1602324480,1602326527,RU +1602320384,1602322687,NL +1602322688,1602322703,IE +1602322704,1602324479,NL +1602324480,1602328575,RU 1602328576,1602330623,ES 1602330624,1602336767,RU 1602336768,1602338815,GB @@ -45903,7 +47595,11 @@ 1602392064,1602394111,GB 1602394112,1602396159,FR 1602396160,1602398207,DE -1602398208,1602400255,TR +1602398208,1602398400,TR +1602398401,1602398406,US +1602398407,1602399231,TR +1602399232,1602399487,US +1602399488,1602400255,TR 1602400256,1602402303,RU 1602402304,1602404351,LU 1602404352,1602406399,GB @@ -45937,7 +47633,9 @@ 1602453504,1602455551,SK 1602455552,1602456015,FR 1602456016,1602456023,ES -1602456024,1602457599,FR +1602456024,1602456175,FR +1602456176,1602456183,ES +1602456184,1602457599,FR 1602457600,1602459647,RU 1602459648,1602461695,GB 1602461696,1602465791,ES @@ -46014,7 +47712,9 @@ 1603167168,1603167231,NL 1603167232,1603167743,BE 1603167744,1603167871,NO -1603167872,1603169919,NL +1603167872,1603169199,NL +1603169200,1603169207,US +1603169208,1603169919,NL 1603169920,1603169983,US 1603169984,1603170047,SE 1603170048,1603170303,NL @@ -46036,14 +47736,16 @@ 1603220504,1603223551,CH 1603223552,1603223615,FR 1603223616,1603223631,GB -1603223632,1603223703,FR -1603223704,1603223711,GB +1603223632,1603223704,FR +1603223705,1603223711,GB 1603223712,1603223936,FR -1603223937,1603223999,GB -1603224000,1603224319,FR -1603224320,1603226623,GB -1603226624,1603226879,FR -1603226880,1603227647,GB +1603223937,1603223951,GB +1603223952,1603224319,FR +1603224320,1603224575,GB +1603224576,1603224735,FR +1603224736,1603226623,GB +1603226624,1603227391,FR +1603227392,1603227647,GB 1603227648,1603231743,AT 1603231744,1603235839,IT 1603235840,1603239935,RU @@ -46131,9 +47833,11 @@ 1604893696,1604893951,DE 1604893952,1604894463,TR 1604894464,1604894719,DE -1604894720,1604899007,CZ -1604899008,1604899039,SK -1604899040,1604902911,CZ +1604894720,1604895487,CZ +1604895488,1604895491,SK +1604895492,1604900351,CZ +1604900352,1604900383,SC +1604900384,1604902911,CZ 1604902912,1604911103,BG 1604911104,1604919295,UA 1604919296,1604927487,NO @@ -46160,18 +47864,20 @@ 1605099520,1605107711,RU 1605107712,1605115903,GB 1605115904,1605124095,RU -1605124096,1605124351,US -1605124352,1605125263,GB -1605125264,1605125279,US -1605125280,1605125327,GB -1605125328,1605125335,US -1605125336,1605125375,GB -1605125376,1605125439,US -1605125440,1605125503,GB -1605125504,1605125631,US +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 +1605125344,1605125375,GB +1605125376,1605125631,US 1605125632,1605126143,DE -1605126144,1605127167,US -1605127168,1605132287,GB +1605126144,1605127679,US +1605127680,1605132287,GB 1605132288,1605148671,RU 1605148672,1605156863,PT 1605156864,1605165055,JO @@ -46221,19 +47927,17 @@ 1606156288,1606418431,RU 1606418432,1607467007,SE 1607467008,1607532543,DE -1607532544,1607570431,SE -1607570432,1607571455,DK +1607532544,1607569407,SE +1607569408,1607571455,DK 1607571456,1607585791,SE -1607585792,1607587839,DK -1607587840,1607588863,SE -1607588864,1607598079,DK +1607585792,1607598079,DK 1607598080,1607610367,IT 1607610368,1607612415,IE 1607612416,1607614463,A2 1607614464,1607616511,GR 1607616512,1607630847,A2 -1607630848,1607632895,IE -1607632896,1607663615,A2 +1607630848,1607633919,IE +1607633920,1607663615,A2 1607663616,1607729151,NL 1607729152,1607761919,EG 1607761920,1607766015,SY @@ -46258,7 +47962,9 @@ 1607947264,1607948287,RU 1607948288,1607949311,GB 1607949312,1607950335,UA +1607950336,1607952383,RU 1607952384,1607953407,UA +1607954432,1607956479,UA 1607956480,1607957503,ES 1607957504,1607958527,UA 1607958528,1607959551,PS @@ -46271,6 +47977,7 @@ 1607967744,1607968767,UA 1607968768,1607969791,SE 1607969792,1607971839,RU +1607972864,1607974911,NL 1607974912,1607975935,LV 1607976960,1607977983,KZ 1607977984,1607979007,NL @@ -46311,7 +48018,7 @@ 1613479936,1613488127,US 1613488128,1613492223,CA 1613496320,1613504511,US -1613512704,1613529087,CA +1613504512,1613529087,CA 1613529088,1613536191,US 1613536192,1613536223,TW 1613536224,1613536255,US @@ -46365,11 +48072,11 @@ 1613570048,1613574143,CA 1613574144,1613586431,US 1613586432,1613590527,CA -1613590528,1613606911,US +1613590528,1613602815,US 1613606912,1613615103,CA 1613615104,1613635583,US -1613635584,1613639679,CA -1613639680,1613676543,US +1613635584,1613643775,CA +1613643776,1613676543,US 1613676544,1613680639,CA 1613680640,1613737983,US 1613737984,1613742079,CA @@ -47003,7 +48710,9 @@ 1652681520,1653534719,US 1653534720,1653538815,CA 1653538816,1653555199,US -1653555200,1653567487,CA +1653555200,1653560319,CA +1653560320,1653560327,US +1653560328,1653567487,CA 1653567488,1653571583,US 1653571584,1653575679,CA 1653575680,1653592063,US @@ -47015,9 +48724,9 @@ 1654546432,1654550527,VG 1654550528,1654554623,US 1654554624,1654558719,CA -1654558720,1654597631,US -1654597632,1654597887,CA -1654597888,1654648831,US +1654558720,1654599455,US +1654599456,1654599471,CA +1654599472,1654648831,US 1654648832,1654652927,CA 1654652928,1665833175,US 1665833176,1665833183,A2 @@ -47134,15 +48843,20 @@ 1673986048,1674051583,CA 1674051584,1674575871,US 1674575872,1677721599,CA -1795162112,1795686399,US -1811939328,1828716543,US +1694498816,1694499071,AP +1694499072,1694499327,AU +1697775616,1697776639,AP +1700790272,1702887679,AU +1711210496,1711276031,AP +1795162112,1828716543,US 1828716544,1830813695,FR 1830813696,1831337983,NL 1831337984,1831862271,DE 1831862272,1832124415,PT 1832124416,1832386559,IT 1832386560,1832517631,DK -1832517632,1832648703,SE +1832517632,1832615935,SE +1832615936,1832648703,DK 1832648704,1832681471,HR 1832681472,1832714239,RU 1832714240,1832747007,HU @@ -47210,9 +48924,11 @@ 1833299968,1833302015,LU 1833302016,1833304063,AT 1833304064,1833308159,NL -1833308160,1833308755,FR -1833308756,1833308759,NL -1833308760,1833310207,FR +1833308160,1833308751,FR +1833308752,1833308759,NL +1833308760,1833308763,FR +1833308764,1833308767,NL +1833308768,1833310207,FR 1833310208,1833312255,RU 1833312256,1833314303,ES 1833314304,1833315903,IM @@ -47401,7 +49117,7 @@ 1834960896,1834964991,RU 1834964992,1834967039,PL 1834967040,1834971135,RU -1834971136,1834973183,KZ +1834971136,1834973183,UA 1834973184,1834975231,RU 1834975232,1834977279,IL 1834977280,1834983423,PL @@ -47493,9 +49209,9 @@ 1836048384,1836056575,RS 1836056576,1836580863,IT 1836580864,1836597247,RU -1836597248,1836597759,LU -1836597760,1836601599,DE -1836601600,1836613631,LU +1836597248,1836598015,LU +1836598016,1836604159,DE +1836604160,1836613631,LU 1836613632,1836630015,RU 1836630016,1836646399,BG 1836646400,1836679167,RS @@ -47565,13 +49281,15 @@ 1839801280,1839801311,VG 1839801312,1839801343,GB 1839801344,1839801471,CN -1839801472,1839801599,GB +1839801472,1839801551,GB +1839801552,1839801567,US +1839801568,1839801599,GB 1839801600,1839801855,US 1839801856,1839802111,GB 1839802112,1839802239,RO 1839802240,1839806463,GB -1839806464,1839808511,US -1839808512,1839816703,GB +1839806464,1839809535,US +1839809536,1839816703,GB 1839816704,1839824895,NO 1839824896,1839890431,RU 1839890432,1839923199,GB @@ -47622,6 +49340,7 @@ 1841651712,1841653759,PL 1841653760,1841655807,FR 1841655808,1841668095,RU +1841668096,1841670143,RO 1841670144,1841672191,PL 1841672192,1841674239,FR 1841674240,1841676287,PL @@ -47650,13 +49369,20 @@ 1841827088,1841827231,GB 1841827232,1841827263,BR 1841827264,1841827279,BD -1841827280,1841831935,GB +1841827280,1841827463,GB +1841827464,1841827471,BD +1841827472,1841827479,ES +1841827480,1841828879,GB +1841828880,1841828895,MT +1841828896,1841831935,GB 1841831936,1841840127,MT 1841840128,1841848319,PL 1841848320,1841856511,RU 1841856512,1841864703,UA 1841864704,1841872895,YE -1841872896,1841881087,NL +1841872896,1841879807,NL +1841879808,1841880063,GB +1841880064,1841881087,JP 1841881088,1841889279,UA 1841889280,1841897471,IR 1841897472,1841905663,RO @@ -47770,7 +49496,9 @@ 1843789824,1843806207,SK 1843806208,1843822591,IR 1843822592,1843838975,RU -1843838976,1843855359,DE +1843838976,1843849215,DE +1843849216,1843850239,GB +1843850240,1843855359,DE 1843855360,1843871743,PL 1843871744,1843888127,GB 1843888128,1843904511,CZ @@ -47926,6 +49654,7 @@ 1844256768,1844260863,BA 1844260864,1844264959,CH 1844264960,1844269055,NL +1844269056,1844273151,UA 1844273152,1844277247,RU 1844277248,1844281343,AZ 1844281344,1844285439,DE @@ -47939,7 +49668,7 @@ 1844318208,1844322303,IT 1844322304,1844326399,CZ 1844326400,1844330495,DK -1844330496,1844338687,GB +1844330496,1844334591,GB 1844338688,1844342783,RU 1844342784,1844346879,IT 1844346880,1844347007,US @@ -48083,7 +49812,7 @@ 1851555840,1851588607,KR 1851588608,1851590655,JP 1851590656,1851591679,AU -1851592704,1851593727,AU +1851592704,1851594751,AU 1851594752,1851596799,KR 1851596800,1851604991,IN 1851604992,1851613183,PH @@ -48522,7 +50251,7 @@ 1916272640,1916534783,ID 1916534784,1917124607,CN 1917124608,1917169663,JP -1917169664,1917177855,NC +1917169664,1917181951,NC 1917181952,1917190143,IN 1917190144,1917321215,KR 1917321216,1917779967,AU @@ -48582,11 +50311,14 @@ 1921867776,1921871871,AU 1921875968,1921892351,CN 1921892352,1921896447,AU +1921896448,1921898495,SG +1921898496,1921900543,PH 1921900544,1921908735,KR 1921908736,1921943551,JP 1921943552,1921945599,IN 1921945600,1921949695,HK 1921949696,1921953791,AU +1921953792,1921957887,JP 1921957888,1921974271,GU 1921974272,1922039807,IN 1922039808,1925447679,JP @@ -48688,7 +50420,7 @@ 1937637376,1937670143,HK 1937670144,1937672191,NZ 1937674240,1937678335,JP -1937678336,1937682431,NC +1937678336,1937686527,NC 1937686528,1937702911,KR 1937702912,1937768447,BD 1937768448,1938030591,AU @@ -49442,7 +51174,7 @@ 2022184960,2022187007,KH 2022187008,2022187071,US 2022187072,2022191103,HK -2022191104,2022193151,NZ +2022191104,2022195199,NZ 2022195200,2022211583,KR 2022211584,2022227967,CN 2022227968,2022244351,JP @@ -49566,7 +51298,9 @@ 2038423552,2038431743,HK 2038431744,2042626047,KR 2042626048,2043150335,CN -2043150336,2043166719,AU +2043150336,2043162623,AU +2043162624,2043165695,IN +2043165696,2043166719,BD 2043166720,2043183103,KR 2043183104,2043199487,JP 2043199488,2043201535,BD @@ -49631,6 +51365,8 @@ 2053519360,2053521407,BD 2053521408,2053529599,CN 2053529600,2053533695,AU +2053533696,2053534719,VN +2053534720,2053537791,IN 2053537792,2053636095,JP 2053636096,2054160383,AU 2054160384,2054422527,CN @@ -49875,7 +51611,7 @@ 2072510464,2072514559,HK 2072514560,2072516607,IN 2072516608,2072518655,BD -2072518656,2072522751,AU +2072518656,2072526847,AU 2072526848,2072528895,SG 2072528896,2072530943,PH 2072530944,2072535039,CN @@ -50749,7 +52485,9 @@ 2249457664,2249523199,US 2249523200,2249588735,CH 2249588736,2249654271,CA -2249654272,2249781247,US +2249654272,2249724671,US +2249724672,2249724927,CA +2249724928,2249781247,US 2249781248,2249781255,FR 2249781256,2249785343,US 2249785344,2249850879,SE @@ -51320,7 +53058,10 @@ 2329673728,2329739263,US 2329739264,2329804799,CH 2329804800,2329870335,DE -2329870336,2330132479,CH +2329870336,2329935871,CH +2329935872,2330001407,DE +2330001408,2330066943,CH +2330066944,2330132479,US 2330132480,2330198015,SE 2330198016,2330263551,CH 2330263552,2330394623,US @@ -51524,7 +53265,7 @@ 2365390848,2365456383,AU 2365456384,2365521919,US 2365587456,2366308351,DE -2366308352,2366373887,FR +2366308352,2366373887,GB 2366373888,2367487999,DE 2367488000,2367553535,SI 2367553536,2370895871,DE @@ -51618,15 +53359,17 @@ 2382102528,2382168063,NL 2382168064,2382233599,BE 2382233600,2382299135,US -2382364672,2385430319,CA -2385430320,2385430335,US -2385430336,2385430655,CA +2382364672,2385430655,CA 2385430656,2385430687,US -2385430688,2386067455,CA +2385430688,2385903615,CA +2385903616,2385969151,US +2385969152,2386067455,CA 2386067456,2386083839,US 2386083840,2386624511,CA 2386624512,2386690047,US -2386690048,2386989055,CA +2386690048,2386988287,CA +2386988288,2386988543,CH +2386988544,2386989055,CA 2386989056,2386989311,GB 2386989312,2387410943,CA 2387410944,2387476479,US @@ -52023,9 +53766,7 @@ 2467233792,2468020223,US 2468020224,2468085759,GR 2468085760,2468151295,JP -2468151296,2468174847,DK -2468174848,2468175359,NO -2468175360,2468189663,DK +2468151296,2468189663,DK 2468189664,2468189695,GB 2468189696,2468216831,DK 2468216832,2468282367,EU @@ -52485,7 +54226,9 @@ 2601451520,2601517055,CA 2601517056,2602565631,US 2602565632,2602631167,NZ -2602631168,2604007423,US +2602631168,2603417599,US +2603417600,2603483135,DE +2603483136,2604007423,US 2604007424,2604072959,ES 2604072960,2604138495,NO 2604138496,2604204031,DE @@ -52665,7 +54408,8 @@ 2642280448,2642411519,US 2642411520,2642477055,AU 2642477056,2642542591,FI -2642542592,2642935807,US +2642542592,2642608127,US +2642673664,2642935807,US 2642935808,2643001343,FR 2643001344,2643066879,US 2643066880,2643132415,IT @@ -53974,41 +55718,33 @@ 2899443712,2899574783,FR 2899574784,2899902463,GB 2902458368,2902462463,A1 -2902462464,2902507519,US +2902462464,2902470936,US +2902470937,2902470938,LK +2902470939,2902507519,US 2902507520,2902515711,CA 2902515712,2904555519,US 2904555520,2904817663,CA 2904817664,2905376767,US 2905376768,2905377535,CA -2905377536,2905377791,US -2905377792,2905378047,CA -2905378048,2905378303,US +2905377536,2905378303,US 2905378304,2905378815,CA 2905378816,2905379071,US 2905379072,2905379583,CA -2905379584,2905380863,US -2905380864,2905381119,CA -2905381120,2905381887,US +2905379584,2905381887,US 2905381888,2905382016,CA -2905382017,2905384191,US -2905384192,2905385471,CA -2905385472,2905386239,US -2905386240,2905386495,CA -2905386496,2905388031,US +2905382017,2905384959,US +2905384960,2905385471,CA +2905385472,2905388031,US 2905388032,2905388287,CA -2905388288,2905391871,US -2905391872,2905392127,CA -2905392128,2905392895,US -2905392896,2905394943,CA +2905388288,2905392895,US +2905392896,2905393151,CA +2905393152,2905394175,US +2905394176,2905394943,CA 2905394944,2905395455,US 2905395456,2905396991,CA -2905396992,2905397759,US -2905397760,2905398271,CA -2905398272,2905399039,US +2905396992,2905399039,US 2905399040,2905399295,CA -2905399296,2905404671,US -2905404672,2905405183,CA -2905405184,2905407743,US +2905399296,2905407743,US 2905407744,2905407999,TW 2905408000,2905428967,US 2905428968,2905428975,AE @@ -54024,7 +55760,9 @@ 2905473024,2905481215,CA 2905481216,2913992703,US 2913992704,2914516991,CA -2914516992,2915765279,US +2914516992,2915250175,US +2915250176,2915254271,CA +2915254272,2915765279,US 2915765280,2915765287,IN 2915765288,2915765343,US 2915765344,2915765351,NZ @@ -54308,13 +56046,7 @@ 2915811136,2915811199,IN 2915811200,2915958783,US 2915958784,2916024319,CA -2916024320,2916091903,US -2916091904,2916092159,IN -2916092160,2916092927,US -2916092928,2916093183,IN -2916093184,2916093695,US -2916093696,2916093951,IN -2916093952,2916110623,US +2916024320,2916110623,US 2916110624,2916110639,CA 2916110640,2916163583,US 2916163584,2916171775,CA @@ -54328,8 +56060,8 @@ 2916352000,2916368383,US 2916368384,2916401151,CA 2916401152,2916417535,US -2916417536,2916434495,CA -2916434496,2916434559,US +2916417536,2916434431,CA +2916434432,2916434559,US 2916434560,2916434591,CA 2916434592,2916437503,US 2916437504,2916437567,CA @@ -54337,7 +56069,9 @@ 2916440064,2916440095,CA 2916440096,2916440143,US 2916440144,2916440159,CA -2916440160,2916441343,US +2916440160,2916441119,US +2916441120,2916441151,CA +2916441152,2916441343,US 2916441344,2916442111,CA 2916442112,2916442623,US 2916442624,2916442879,CA @@ -54348,16 +56082,31 @@ 2916443904,2916444159,CA 2916444160,2916444927,US 2916444928,2916445951,CA -2916445952,2916447231,US -2916447232,2916448031,CA -2916448032,2916448063,US -2916448064,2916448255,CA -2916448256,2916449279,US +2916445952,2916449279,US 2916449280,2916450303,CA 2916450304,2916515839,US 2916548608,2916581375,US 2916581376,2916614143,PR -2916614144,2917195775,US +2916614144,2917167679,US +2917167680,2917167743,BR +2917167744,2917167775,US +2917167776,2917167807,IR +2917167808,2917167967,US +2917167968,2917167999,GB +2917168000,2917168095,US +2917168096,2917168127,NZ +2917168128,2917168223,US +2917168224,2917168255,BR +2917168256,2917168287,US +2917168288,2917168319,TR +2917168320,2917168351,AR +2917168352,2917168383,US +2917168384,2917168415,BR +2917168416,2917168607,US +2917168608,2917168639,BR +2917168640,2917169663,US +2917169664,2917169695,DE +2917169696,2917195775,US 2917195776,2917196031,CA 2917196032,2917199871,A2 2917199872,2917203967,CA @@ -54385,39 +56134,39 @@ 2917675264,2917675775,CA 2917675776,2917676031,US 2917676032,2917677055,CA -2917677056,2917677567,US -2917677568,2917678335,CA -2917678336,2917680895,US +2917677056,2917680895,US 2917680896,2917681407,CA 2917681408,2917681919,US 2917681920,2917682175,CA -2917682176,2917685247,US -2917685248,2917686015,CA +2917682176,2917682431,US +2917682432,2917683455,CA +2917683456,2917685503,US +2917685504,2917686015,CA 2917686016,2917690367,US 2917690368,2917690879,CA 2917690880,2917693183,US 2917693184,2917693951,CA 2917693952,2917695231,US 2917695232,2917695487,CA -2917695488,2917701119,US -2917701120,2917701375,CA -2917701376,2917702399,US -2917702400,2917707519,CA -2917707520,2917711871,US -2917711872,2917714431,CA +2917695488,2917695743,US +2917695744,2917696255,CA +2917696256,2917702399,US +2917702400,2917707007,CA +2917707008,2917714175,US +2917714176,2917714431,CA 2917714432,2917718527,US 2917718528,2917719039,CA -2917719040,2917719295,US -2917719296,2917719551,CA -2917719552,2917722367,US -2917722368,2917722879,CA -2917722880,2917842175,US +2917719040,2917722367,US +2917722368,2917722623,CA +2917722624,2917842175,US 2917842176,2917842431,CA 2917842432,2918055935,US 2918055936,2918121471,CA 2918121472,2918154239,US 2918154240,2918170623,CA -2918170624,2918232063,US +2918170624,2918199679,US +2918199680,2918199743,CA +2918199744,2918232063,US 2918232064,2918236159,CA 2918236160,2918260735,US 2918260736,2918264831,CA @@ -54436,20 +56185,27 @@ 2918404096,2918408191,PR 2918408192,2918432767,US 2918432768,2918436863,CA -2918436864,2918580223,US +2918436864,2918533119,US +2918533120,2918533127,CN +2918533128,2918533167,US +2918533168,2918533183,CN +2918533184,2918533247,US +2918533248,2918533375,CA +2918533376,2918534911,US +2918534912,2918534943,KR +2918534944,2918580223,US 2918580224,2918588415,CA 2918588416,2918596607,US 2918596608,2918604799,CA 2918604800,2918608895,US -2918612992,2918653951,US -2918653952,2918662143,CA -2918662144,2918760447,US +2918612992,2918760447,US 2918760448,2918776831,CA -2918776832,2918842367,US -2918842368,2918875135,CA +2918776832,2918813695,US +2918825984,2918838271,US +2918838272,2918875135,CA 2918875136,2918973439,US 2918973440,2918989823,CA -2919170048,2919174143,US +2919006208,2919174143,US 2919174144,2919178239,CA 2919178240,2919186431,US 2919186432,2919190527,CA @@ -54461,9 +56217,7 @@ 2921496896,2921496903,IN 2921496904,2921496967,US 2921496968,2921496975,IN -2921496976,2921497375,US -2921497376,2921497407,IN -2921497408,2921497415,US +2921496976,2921497415,US 2921497416,2921497423,IN 2921497424,2921497471,US 2921497472,2921497599,IN @@ -54471,20 +56225,9 @@ 2921503608,2921503615,GB 2921503616,2921503695,US 2921503696,2921503703,GB -2921503704,2921508095,US -2921508096,2921508103,IN -2921508104,2921508319,US -2921508320,2921508351,IN -2921508352,2921508639,US -2921508640,2921508671,IN -2921508672,2921508679,US -2921508680,2921508719,IN +2921503704,2921508719,US 2921508720,2921508727,SE -2921508728,2921511351,US -2921511352,2921511359,IN -2921511360,2921511743,US -2921511744,2921511759,BE -2921511760,2921512703,US +2921508728,2921512703,US 2921512704,2921512959,CA 2921512960,2921562111,US 2921562112,2921594879,CA @@ -54782,7 +56525,8 @@ 2928312320,2928316415,CA 2928316416,2928321311,US 2928321312,2928321327,GB -2928321328,2928323135,US +2928321328,2928321343,CN +2928321344,2928323135,US 2928323136,2928323143,RU 2928323144,2928323967,US 2928323968,2928323983,RU @@ -55420,6 +57164,7 @@ 2948135936,2948136959,IN 2948136960,2948595711,CN 2948595712,2952790015,KR +2969567232,2971664383,BR 2986344448,2987393023,DE 2987393024,2987397119,IM 2987397120,2987401215,LV @@ -55431,9 +57176,11 @@ 2987425792,2987429887,BG 2987429888,2987433215,RU 2987433216,2987433235,KZ -2987433236,2987433247,RU -2987433248,2987433279,KZ -2987433280,2987433983,RU +2987433236,2987433239,RU +2987433240,2987433287,KZ +2987433288,2987433295,RU +2987433296,2987433327,KZ +2987433328,2987433983,RU 2987433984,2987438079,FR 2987438080,2987442175,FI 2987442176,2987446271,IE @@ -55468,6 +57215,7 @@ 2987548672,2987552767,RU 2987552768,2987556863,GB 2987556864,2987560959,NL +2987560960,2987565055,DE 2987565056,2987569151,AT 2987569152,2987573247,FR 2987573248,2987577343,TR @@ -55483,8 +57231,8 @@ 2987585848,2987585855,SE 2987585856,2987585863,RU 2987585864,2987585871,GB -2987585872,2987585879,IT -2987585880,2987585887,FR +2987585872,2987585879,MX +2987585880,2987585887,BR 2987585888,2987585895,PL 2987585896,2987589631,DE 2987589632,2987593727,FR @@ -55568,7 +57316,8 @@ 2987784192,2987786239,DK 2987786240,2987788287,FR 2987788288,2987788543,GB -2987788544,2987790335,TR +2987788544,2987788799,DE +2987788800,2987790335,TR 2987790336,2987792383,GB 2987792384,2987794431,CH 2987794432,2987796479,IQ @@ -55642,9 +57391,9 @@ 2988441888,2988441895,FR 2988441896,2988441903,PL 2988441904,2988441911,IT -2988441912,2988441983,FR -2988441984,2988441999,NL -2988442000,2988442003,FR +2988441912,2988441991,FR +2988441992,2988441995,ES +2988441996,2988442003,FR 2988442004,2988442007,ES 2988442008,2988442047,FR 2988442048,2988442063,GB @@ -55662,7 +57411,8 @@ 2988442900,2988442903,FR 2988442904,2988442907,IT 2988442908,2988442911,FR -2988442912,2988442919,NL +2988442912,2988442915,NL +2988442916,2988442919,IT 2988442920,2988442923,LT 2988442924,2988442927,GB 2988442928,2988442975,FR @@ -55720,10 +57470,11 @@ 2988445984,2988446207,DE 2988446208,2988446271,PL 2988446272,2988446275,IT -2988446276,2988446279,GB -2988446280,2988446287,FR +2988446276,2988446287,FR 2988446288,2988446303,GB -2988446304,2988446323,FR +2988446304,2988446307,FR +2988446308,2988446319,PL +2988446320,2988446323,FR 2988446324,2988446327,LT 2988446328,2988446335,NL 2988446336,2988446399,PL @@ -55791,9 +57542,11 @@ 2988453888,2988457983,GB 2988457984,2988457987,FR 2988457988,2988457991,PL -2988457992,2988458031,FR +2988457992,2988457999,FR +2988458000,2988458015,GB +2988458016,2988458031,FR 2988458032,2988458047,IT -2988458048,2988458055,FR +2988458048,2988458055,PL 2988458056,2988458063,CH 2988458064,2988458067,ES 2988458068,2988458075,FR @@ -55849,7 +57602,12 @@ 2988459632,2988459639,FR 2988459640,2988459643,IT 2988459644,2988459647,CH -2988459648,2988459711,FR +2988459648,2988459679,GB +2988459680,2988459683,ES +2988459684,2988459687,DE +2988459688,2988459691,IT +2988459692,2988459695,PL +2988459696,2988459711,FR 2988459712,2988459715,ES 2988459716,2988459723,FR 2988459724,2988459727,DE @@ -55858,7 +57616,20 @@ 2988459736,2988459743,PL 2988459744,2988459747,ES 2988459748,2988459751,PL -2988459752,2988460031,FR +2988459752,2988459759,FR +2988459760,2988459767,GB +2988459768,2988459771,NL +2988459772,2988459775,GB +2988459776,2988459839,FR +2988459840,2988459855,GB +2988459856,2988459863,FR +2988459864,2988459867,ES +2988459868,2988459871,GB +2988459872,2988459887,FR +2988459888,2988459895,PL +2988459896,2988459967,FR +2988459968,2988459999,ES +2988460000,2988460031,FR 2988460032,2988460063,DE 2988460064,2988460095,FR 2988460096,2988460103,ES @@ -55890,7 +57661,7 @@ 2988460352,2988460375,GB 2988460376,2988460543,FR 2988460544,2988460547,GB -2988460548,2988460551,FR +2988460548,2988460551,DE 2988460552,2988460575,PL 2988460576,2988460591,PT 2988460592,2988460607,GB @@ -55903,14 +57674,15 @@ 2988460760,2988460763,PT 2988460764,2988460767,FR 2988460768,2988460799,PL -2988460800,2988460863,CH +2988460800,2988460863,DE 2988460864,2988460927,FR 2988460928,2988460931,DE 2988460932,2988460943,PL 2988460944,2988460959,DE 2988460960,2988460991,GB -2988460992,2988461055,FR -2988461056,2988461119,IE +2988460992,2988461087,FR +2988461088,2988461103,PL +2988461104,2988461119,FR 2988461120,2988461151,NL 2988461152,2988461247,GB 2988461248,2988461255,FR @@ -56000,10 +57772,11 @@ 2988462588,2988462591,DE 2988462592,2988462599,FR 2988462600,2988462603,IT -2988462604,2988462607,ES +2988462604,2988462607,BE 2988462608,2988462735,FR 2988462736,2988462743,IT -2988462744,2988462767,FR +2988462744,2988462751,FR +2988462752,2988462767,PL 2988462768,2988462775,GB 2988462776,2988462779,PL 2988462780,2988462783,FR @@ -56013,7 +57786,8 @@ 2988462824,2988462847,FR 2988462848,2988463103,BE 2988463104,2988463107,IT -2988463108,2988463119,FR +2988463108,2988463111,FR +2988463112,2988463119,ES 2988463120,2988463127,GB 2988463128,2988463131,FR 2988463132,2988463135,PL @@ -56077,11 +57851,13 @@ 2988464352,2988464355,DE 2988464356,2988464359,FR 2988464360,2988464363,PL -2988464364,2988464511,FR +2988464364,2988464367,GB +2988464368,2988464511,FR 2988464512,2988464519,PT 2988464520,2988464527,FR 2988464528,2988464543,DE -2988464544,2988464575,IT +2988464544,2988464551,FR +2988464552,2988464575,ES 2988464576,2988464607,FR 2988464608,2988464611,DE 2988464612,2988464615,PL @@ -56093,7 +57869,11 @@ 2988464640,2988464783,FR 2988464784,2988464787,IT 2988464788,2988464791,ES -2988464792,2988464831,FR +2988464792,2988464799,FR +2988464800,2988464815,DE +2988464816,2988464819,FR +2988464820,2988464823,NL +2988464824,2988464831,PL 2988464832,2988464895,ES 2988464896,2988464927,NL 2988464928,2988464947,FR @@ -56109,14 +57889,19 @@ 2988465296,2988465299,IT 2988465300,2988465343,FR 2988465344,2988465363,DE -2988465364,2988465371,PL -2988465372,2988465375,FR +2988465364,2988465367,PL +2988465368,2988465375,FR 2988465376,2988465391,IT -2988465392,2988465407,FR +2988465392,2988465395,ES +2988465396,2988465399,GB +2988465400,2988465403,PT +2988465404,2988465407,DE 2988465408,2988465423,CH -2988465424,2988465439,FR +2988465424,2988465439,PT 2988465440,2988465471,GB -2988465472,2988465503,FR +2988465472,2988465479,FR +2988465480,2988465483,NL +2988465484,2988465503,FR 2988465504,2988465507,DE 2988465508,2988465511,PL 2988465512,2988465515,PT @@ -56127,8 +57912,7 @@ 2988465532,2988465535,GB 2988465536,2988465539,FR 2988465540,2988465543,GB -2988465544,2988465551,FR -2988465552,2988465559,ES +2988465544,2988465559,ES 2988465560,2988465567,GB 2988465568,2988465571,ES 2988465572,2988465575,GB @@ -56244,7 +58028,8 @@ 2988508220,2988508223,DE 2988508224,2988508287,FR 2988508288,2988508303,PL -2988508304,2988508315,FR +2988508304,2988508307,CZ +2988508308,2988508315,FR 2988508316,2988508319,ES 2988508320,2988508343,FR 2988508344,2988508367,ES @@ -56303,7 +58088,8 @@ 2988509364,2988509367,IT 2988509368,2988509371,CH 2988509372,2988509375,PL -2988509376,2988509407,FR +2988509376,2988509403,FR +2988509404,2988509407,GB 2988509408,2988509411,PL 2988509412,2988509415,DE 2988509416,2988509419,ES @@ -56359,7 +58145,10 @@ 2988510016,2988510023,ES 2988510024,2988510031,FR 2988510032,2988510079,PL -2988510080,2988510111,NL +2988510080,2988510095,ES +2988510096,2988510099,FR +2988510100,2988510103,GB +2988510104,2988510111,BE 2988510112,2988510143,CZ 2988510144,2988510175,NL 2988510176,2988510207,ES @@ -56373,7 +58162,7 @@ 2988510288,2988510303,PL 2988510304,2988510307,ES 2988510308,2988510311,FR -2988510312,2988510319,BE +2988510312,2988510319,GB 2988510320,2988510323,FR 2988510324,2988510327,GB 2988510328,2988510399,FR @@ -56400,14 +58189,14 @@ 2988511084,2988511087,PL 2988511088,2988511103,FR 2988511104,2988511167,PL -2988511168,2988511183,FR -2988511184,2988511187,CZ -2988511188,2988511191,GB +2988511168,2988511175,IE +2988511176,2988511183,FR +2988511184,2988511191,GB 2988511192,2988511487,FR 2988511488,2988511551,PL -2988511552,2988511559,FR -2988511560,2988511567,GB -2988511568,2988511575,FR +2988511552,2988511555,FR +2988511556,2988511559,CZ +2988511560,2988511575,FR 2988511576,2988511583,GB 2988511584,2988511663,FR 2988511664,2988511671,DE @@ -56421,11 +58210,30 @@ 2988511700,2988511703,IT 2988511704,2988511711,PL 2988511712,2988511719,DE -2988511720,2988511723,FR -2988511724,2988511727,GB -2988511728,2988511735,FR +2988511720,2988511735,FR 2988511736,2988511739,DE -2988511740,2988511999,FR +2988511740,2988511743,FR +2988511744,2988511747,PL +2988511748,2988511751,GB +2988511752,2988511759,CZ +2988511760,2988511775,FR +2988511776,2988511807,GB +2988511808,2988511823,ES +2988511824,2988511831,DE +2988511832,2988511835,ES +2988511836,2988511855,FR +2988511856,2988511871,GB +2988511872,2988511887,PL +2988511888,2988511903,FR +2988511904,2988511911,IT +2988511912,2988511915,FR +2988511916,2988511919,PL +2988511920,2988511923,GB +2988511924,2988511927,ES +2988511928,2988511931,IT +2988511932,2988511935,PL +2988511936,2988511951,PT +2988511952,2988511999,GB 2988512000,2988512031,PL 2988512032,2988512055,FR 2988512056,2988512059,PL @@ -56494,9 +58302,7 @@ 2988512896,2988512899,PL 2988512900,2988512907,GB 2988512908,2988512911,LT -2988512912,2988512919,FR -2988512920,2988512927,CH -2988512928,2988512943,FR +2988512912,2988512943,FR 2988512944,2988512951,GB 2988512952,2988512955,FR 2988512956,2988512959,LT @@ -56515,8 +58321,8 @@ 2988513196,2988513199,ES 2988513200,2988513207,PT 2988513208,2988513219,FR -2988513220,2988513223,DE -2988513224,2988513227,PT +2988513220,2988513223,CZ +2988513224,2988513227,NL 2988513228,2988513271,FR 2988513272,2988513275,DE 2988513276,2988513279,CH @@ -56525,14 +58331,14 @@ 2988513288,2988513307,FR 2988513308,2988513311,PL 2988513312,2988513327,PT -2988513328,2988513331,ES +2988513328,2988513331,PL 2988513332,2988513335,FR 2988513336,2988513343,GB -2988513344,2988513351,ES +2988513344,2988513351,FR 2988513352,2988513359,IT 2988513360,2988513375,GB -2988513376,2988513391,IT -2988513392,2988513407,GB +2988513376,2988513383,FR +2988513384,2988513407,GB 2988513408,2988513471,PL 2988513472,2988513503,FR 2988513504,2988513507,CH @@ -56563,19 +58369,21 @@ 2988513884,2988513895,FR 2988513896,2988513899,IT 2988513900,2988513903,PL -2988513904,2988513951,FR +2988513904,2988513919,IT +2988513920,2988513951,FR 2988513952,2988513983,PT 2988513984,2988514015,GB -2988514016,2988514019,FR +2988514016,2988514019,PT 2988514020,2988514023,NL -2988514024,2988514031,IE -2988514032,2988514111,FR +2988514024,2988514027,PT +2988514028,2988514111,FR 2988514112,2988514115,DE 2988514116,2988514119,FR 2988514120,2988514127,PT 2988514128,2988514131,IE -2988514132,2988514135,IT -2988514136,2988514159,FR +2988514132,2988514139,IT +2988514140,2988514143,PL +2988514144,2988514159,FR 2988514160,2988514163,IT 2988514164,2988514167,DE 2988514168,2988514171,FR @@ -56603,7 +58411,7 @@ 2988514432,2988514447,FR 2988514448,2988514463,ES 2988514464,2988514527,FR -2988514528,2988514559,GB +2988514528,2988514559,DE 2988514560,2988514623,FR 2988514624,2988514655,DE 2988514656,2988514671,FR @@ -56617,7 +58425,9 @@ 2988514744,2988514747,BE 2988514748,2988514751,IT 2988514752,2988514815,FI -2988514816,2988514831,FR +2988514816,2988514823,FR +2988514824,2988514827,PL +2988514828,2988514831,DE 2988514832,2988514839,PL 2988514840,2988514879,ES 2988514880,2988514943,PL @@ -56634,7 +58444,9 @@ 2988515328,2988517375,DE 2988517376,2988519423,FR 2988519424,2988521471,PL -2988521472,2988539935,FR +2988521472,2988535807,FR +2988535808,2988537855,ES +2988537856,2988539935,FR 2988539936,2988539967,GB 2988539968,2988539971,ES 2988539972,2988539975,IT @@ -56726,13 +58538,15 @@ 2988541244,2988541247,GB 2988541248,2988541279,FR 2988541280,2988541311,NL -2988541312,2988541327,DE +2988541312,2988541315,DE +2988541316,2988541319,CH +2988541320,2988541327,DE 2988541328,2988541335,PL 2988541336,2988541375,FR 2988541376,2988541391,BE 2988541392,2988541407,FR 2988541408,2988541423,BE -2988541424,2988541439,PL +2988541424,2988541439,DE 2988541440,2988541443,IT 2988541444,2988541463,FR 2988541464,2988541467,ES @@ -56743,7 +58557,7 @@ 2988541552,2988541583,FR 2988541584,2988541587,ES 2988541588,2988541591,FR -2988541592,2988541599,PL +2988541592,2988541599,GB 2988541600,2988541603,FR 2988541604,2988541607,NL 2988541608,2988541611,GB @@ -56779,9 +58593,9 @@ 2988541824,2988541855,LT 2988541856,2988541887,IE 2988541888,2988541895,DE -2988541896,2988541899,FR +2988541896,2988541899,PL 2988541900,2988541903,BE -2988541904,2988541907,DE +2988541904,2988541907,CZ 2988541908,2988541911,GB 2988541912,2988541935,PL 2988541936,2988541939,FR @@ -56797,16 +58611,327 @@ 2988542020,2988542023,FR 2988542024,2988542027,NL 2988542028,2988542031,PL -2988542032,2988542055,FR -2988542056,2988542063,BE +2988542032,2988542047,FR +2988542048,2988542055,PL +2988542056,2988542063,FR 2988542064,2988542067,GB -2988542068,2988572671,FR +2988542068,2988542071,ES +2988542072,2988542367,FR +2988542368,2988542399,CZ +2988542400,2988542407,FR +2988542408,2988542415,PL +2988542416,2988542431,FR +2988542432,2988542439,PL +2988542440,2988542443,ES +2988542444,2988542447,FR +2988542448,2988542455,PL +2988542456,2988542459,FR +2988542460,2988542463,ES +2988542464,2988542495,NL +2988542496,2988542527,FR +2988542528,2988542535,DE +2988542536,2988542539,NL +2988542540,2988542543,LT +2988542544,2988542551,DE +2988542552,2988542559,ES +2988542560,2988542591,FR +2988542592,2988542595,PT +2988542596,2988542599,FI +2988542600,2988542603,GB +2988542604,2988542611,FR +2988542612,2988542623,DE +2988542624,2988542655,FR +2988542656,2988542719,BE +2988542720,2988542783,CH +2988542784,2988542847,CZ +2988542848,2988542919,DE +2988542920,2988542923,PL +2988542924,2988542943,GB +2988542944,2988542959,DE +2988542960,2988542963,FR +2988542964,2988542967,CH +2988542968,2988542971,NL +2988542972,2988542975,DE +2988542976,2988543007,FR +2988543008,2988543011,PL +2988543012,2988543015,GB +2988543016,2988543023,CH +2988543024,2988543039,DE +2988543040,2988543043,CZ +2988543044,2988543047,ES +2988543048,2988543051,IE +2988543052,2988543067,FR +2988543068,2988543071,GB +2988543072,2988543231,FR +2988543232,2988543235,IT +2988543236,2988543243,FR +2988543244,2988543247,IT +2988543248,2988543251,FR +2988543252,2988543255,ES +2988543256,2988543263,PL +2988543264,2988543279,ES +2988543280,2988543295,DE +2988543296,2988543299,ES +2988543300,2988543303,FR +2988543304,2988543307,ES +2988543308,2988543311,PL +2988543312,2988543315,DE +2988543316,2988543319,IE +2988543320,2988543323,FI +2988543324,2988543327,PL +2988543328,2988543383,FR +2988543384,2988543399,DE +2988543400,2988543403,GB +2988543404,2988543407,NL +2988543408,2988543423,GB +2988543424,2988543431,DE +2988543432,2988543439,GB +2988543440,2988543447,FR +2988543448,2988543451,BE +2988543452,2988543455,PL +2988543456,2988543463,FR +2988543464,2988543471,GB +2988543472,2988543487,FR +2988543488,2988543503,BE +2988543504,2988543527,FR +2988543528,2988543535,GB +2988543536,2988543551,PL +2988543552,2988543555,GB +2988543556,2988543559,NL +2988543560,2988543563,PT +2988543564,2988543567,FR +2988543568,2988543579,PL +2988543580,2988543583,FR +2988543584,2988543615,DE +2988543616,2988543743,ES +2988543744,2988543935,FR +2988543936,2988543939,FI +2988543940,2988543947,IT +2988543948,2988543959,BE +2988543960,2988543967,PL +2988543968,2988543999,FR +2988544000,2988544127,CZ +2988544128,2988544159,GB +2988544160,2988544163,FR +2988544164,2988544167,PL +2988544168,2988544175,GB +2988544176,2988544179,CH +2988544180,2988544183,IT +2988544184,2988544191,DE +2988544192,2988544227,ES +2988544228,2988544255,FR +2988544256,2988544383,LT +2988544384,2988544511,NL +2988544512,2988544527,FR +2988544528,2988544535,ES +2988544536,2988544539,PL +2988544540,2988544543,LT +2988544544,2988544639,ES +2988544640,2988544735,DE +2988544736,2988544751,PL +2988544752,2988544799,FR +2988544800,2988544831,FI +2988544832,2988544863,FR +2988544864,2988544895,PL +2988544896,2988544927,FR +2988544928,2988544931,DE +2988544932,2988544935,FR +2988544936,2988544943,IT +2988544944,2988544951,PL +2988544952,2988544959,GB +2988544960,2988544979,ES +2988544980,2988544983,FR +2988544984,2988544991,IE +2988544992,2988544995,PL +2988544996,2988544999,FR +2988545000,2988545003,DE +2988545004,2988545007,ES +2988545008,2988545011,FR +2988545012,2988545019,DE +2988545020,2988545031,FR +2988545032,2988545039,PL +2988545040,2988545047,ES +2988545048,2988545051,FR +2988545052,2988545055,PL +2988545056,2988545063,FR +2988545064,2988545067,GB +2988545068,2988545071,ES +2988545072,2988545151,FR +2988545152,2988545167,GB +2988545168,2988545171,DE +2988545172,2988545175,FR +2988545176,2988545179,GB +2988545180,2988545183,PL +2988545184,2988545215,FR +2988545216,2988545247,ES +2988545248,2988545287,PL +2988545288,2988545291,FR +2988545292,2988545295,DE +2988545296,2988545311,FR +2988545312,2988545327,CH +2988545328,2988545335,IT +2988545336,2988545343,DE +2988545344,2988545407,FR +2988545408,2988545439,IE +2988545440,2988545471,FR +2988545472,2988545503,ES +2988545504,2988545507,FR +2988545508,2988545511,DE +2988545512,2988545515,IT +2988545516,2988545531,PL +2988545532,2988545535,FR +2988545536,2988545599,BE +2988545600,2988545663,FR +2988545664,2988545695,ES +2988545696,2988545727,DE +2988545728,2988545815,FR +2988545816,2988545823,NL +2988545824,2988545831,FR +2988545832,2988545835,GB +2988545836,2988545839,DE +2988545840,2988545855,FR +2988545856,2988545859,ES +2988545860,2988545867,FR +2988545868,2988545871,PL +2988545872,2988545919,FR +2988545920,2988545923,GB +2988545924,2988545927,PL +2988545928,2988545931,BE +2988545932,2988545943,FR +2988545944,2988545967,NL +2988545968,2988545983,GB +2988545984,2988546239,IE +2988546240,2988546271,LT +2988546272,2988546279,IT +2988546280,2988546283,GB +2988546284,2988546287,BE +2988546288,2988546295,DE +2988546296,2988546303,PL +2988546304,2988546307,ES +2988546308,2988546311,NL +2988546312,2988546315,IT +2988546316,2988546319,FR +2988546320,2988546327,CH +2988546328,2988546335,ES +2988546336,2988546351,PT +2988546352,2988546367,ES +2988546368,2988546431,FR +2988546432,2988546463,DE +2988546464,2988546527,FR +2988546528,2988546535,BE +2988546536,2988546539,IE +2988546540,2988546547,ES +2988546548,2988546559,FR +2988546560,2988546567,NL +2988546568,2988546575,FR +2988546576,2988546579,ES +2988546580,2988546583,GB +2988546584,2988546591,FR +2988546592,2988546599,DE +2988546600,2988546603,PT +2988546604,2988546615,GB +2988546616,2988546619,FI +2988546620,2988546623,FR +2988546624,2988546687,FI +2988546688,2988546695,PL +2988546696,2988546699,FR +2988546700,2988546703,IT +2988546704,2988546727,FR +2988546728,2988546735,ES +2988546736,2988546751,FR +2988546752,2988546783,ES +2988546784,2988546831,FR +2988546832,2988546835,DE +2988546836,2988546839,ES +2988546840,2988546847,IE +2988546848,2988546879,FR +2988546880,2988546947,ES +2988546948,2988546951,DE +2988546952,2988546959,FR +2988546960,2988546967,DE +2988546968,2988546971,FR +2988546972,2988546975,BE +2988546976,2988546991,FI +2988546992,2988546995,DE +2988546996,2988546999,ES +2988547000,2988547003,IT +2988547004,2988547007,ES +2988547008,2988547011,GB +2988547012,2988547015,FR +2988547016,2988547019,NL +2988547020,2988547023,ES +2988547024,2988547039,FR +2988547040,2988547047,ES +2988547048,2988547055,FR +2988547056,2988547059,IT +2988547060,2988547063,FR +2988547064,2988547067,GB +2988547068,2988547071,PL +2988547072,2988547087,GB +2988547088,2988547095,NL +2988547096,2988547099,PL +2988547100,2988547103,IE +2988547104,2988547111,DE +2988547112,2988547115,GB +2988547116,2988547123,FR +2988547124,2988547127,IT +2988547128,2988547135,FR +2988547136,2988547167,IT +2988547168,2988547199,BE +2988547200,2988547207,IE +2988547208,2988547211,FR +2988547212,2988547215,DE +2988547216,2988547219,IT +2988547220,2988547223,FR +2988547224,2988547227,ES +2988547228,2988547231,PT +2988547232,2988547239,FR +2988547240,2988547247,PL +2988547248,2988547255,NL +2988547256,2988547263,FR +2988547264,2988547271,GB +2988547272,2988547279,ES +2988547280,2988547295,FR +2988547296,2988547303,DE +2988547304,2988547311,FR +2988547312,2988547327,PL +2988547328,2988547423,FR +2988547424,2988547431,GB +2988547432,2988547435,ES +2988547436,2988547443,PL +2988547444,2988547447,DE +2988547448,2988547455,FR +2988547456,2988547471,DE +2988547472,2988547475,NL +2988547476,2988547479,GB +2988547480,2988547487,FR +2988547488,2988547519,ES +2988547520,2988547523,PL +2988547524,2988547527,CZ +2988547528,2988547531,IT +2988547532,2988547535,ES +2988547536,2988547539,FR +2988547540,2988547543,DE +2988547544,2988547547,IT +2988547548,2988547551,PL +2988547552,2988547567,FR +2988547568,2988547583,DE +2988547584,2988547599,ES +2988547600,2988547615,FR +2988547616,2988547647,PL +2988547648,2988547655,FR +2988547656,2988547663,PL +2988547664,2988547679,IE +2988547680,2988547711,CH +2988547712,2988547727,PL +2988547728,2988572671,FR 2988572672,2988703743,RU 2988703744,2988834815,PL 2988834816,2988965887,CH 2988965888,2989096959,SK 2989096960,2989228031,PL 2989228032,2989490175,RU +2989490176,2989555711,HU 2989555712,2989621247,RU 2989621248,2989752319,BE 2989752320,2989817855,SY @@ -56843,51 +58968,143 @@ 2991182336,2991182591,GB 2991182592,2991185919,SE 2991185920,2991185951,GB -2991185952,2991186175,SE +2991185952,2991185967,NL +2991185968,2991185983,DE +2991185984,2991185999,DK +2991186000,2991186015,FI +2991186016,2991186175,SE 2991186176,2991186207,GB -2991186208,2991186431,SE +2991186208,2991186223,NL +2991186224,2991186239,DE +2991186240,2991186255,DK +2991186256,2991186271,FI +2991186272,2991186431,SE 2991186432,2991186463,GB -2991186464,2991186687,SE +2991186464,2991186479,NL +2991186480,2991186495,DE +2991186496,2991186511,DK +2991186512,2991186527,FI +2991186528,2991186687,SE 2991186688,2991186719,GB -2991186720,2991186943,SE +2991186720,2991186735,NL +2991186736,2991186751,DE +2991186752,2991186767,DK +2991186768,2991186783,FI +2991186784,2991186943,SE 2991186944,2991186975,GB -2991186976,2991187199,SE +2991186976,2991186991,NL +2991186992,2991187007,DE +2991187008,2991187023,DK +2991187024,2991187039,FI +2991187040,2991187199,SE 2991187200,2991187231,GB -2991187232,2991187455,SE +2991187232,2991187247,NL +2991187248,2991187263,DE +2991187264,2991187279,DK +2991187280,2991187295,FI +2991187296,2991187455,SE 2991187456,2991187487,GB -2991187488,2991187711,SE +2991187488,2991187503,NL +2991187504,2991187519,DE +2991187520,2991187535,DK +2991187536,2991187551,FI +2991187552,2991187711,SE 2991187712,2991187743,GB -2991187744,2991187967,SE +2991187744,2991187759,NL +2991187760,2991187775,DE +2991187776,2991187791,DK +2991187792,2991187807,FI +2991187808,2991187967,SE 2991187968,2991187999,GB -2991188000,2991188223,SE +2991188000,2991188015,NL +2991188016,2991188031,DE +2991188032,2991188047,DK +2991188048,2991188063,FI +2991188064,2991188223,SE 2991188224,2991188255,GB -2991188256,2991188479,SE +2991188256,2991188271,NL +2991188272,2991188287,DE +2991188288,2991188303,DK +2991188304,2991188319,FI +2991188320,2991188479,SE 2991188480,2991188511,GB -2991188512,2991188735,SE +2991188512,2991188527,NL +2991188528,2991188543,DE +2991188544,2991188559,DK +2991188560,2991188575,FI +2991188576,2991188735,SE 2991188736,2991188767,GB -2991188768,2991188991,SE +2991188768,2991188783,NL +2991188784,2991188799,DE +2991188800,2991188815,DK +2991188816,2991188831,FI +2991188832,2991188991,SE 2991188992,2991189023,GB -2991189024,2991189247,SE +2991189024,2991189039,NL +2991189040,2991189055,DE +2991189056,2991189071,DK +2991189072,2991189087,FI +2991189088,2991189247,SE 2991189248,2991189279,GB -2991189280,2991189503,SE +2991189280,2991189295,NL +2991189296,2991189311,DE +2991189312,2991189327,DK +2991189328,2991189343,FI +2991189344,2991189503,SE 2991189504,2991189535,GB -2991189536,2991189759,SE +2991189536,2991189551,NL +2991189552,2991189567,DE +2991189568,2991189583,DK +2991189584,2991189599,FI +2991189600,2991189759,SE 2991189760,2991189791,GB -2991189792,2991190015,SE +2991189792,2991189807,NL +2991189808,2991189823,DE +2991189824,2991189839,DK +2991189840,2991189855,FI +2991189856,2991190015,SE 2991190016,2991190047,GB -2991190048,2991190271,SE +2991190048,2991190063,NL +2991190064,2991190079,DE +2991190080,2991190095,DK +2991190096,2991190111,FI +2991190112,2991190271,SE 2991190272,2991190303,GB -2991190304,2991190527,SE +2991190304,2991190319,NL +2991190320,2991190335,DE +2991190336,2991190351,DK +2991190352,2991190367,FI +2991190368,2991190527,SE 2991190528,2991190559,GB -2991190560,2991190783,SE +2991190560,2991190575,NL +2991190576,2991190591,DE +2991190592,2991190607,DK +2991190608,2991190623,FI +2991190624,2991190783,SE 2991190784,2991190815,GB -2991190816,2991191039,SE +2991190816,2991190831,NL +2991190832,2991190847,DE +2991190848,2991190863,DK +2991190864,2991190879,FI +2991190880,2991191039,SE 2991191040,2991191071,GB -2991191072,2991191295,SE +2991191072,2991191087,NL +2991191088,2991191103,DE +2991191104,2991191119,DK +2991191120,2991191135,FI +2991191136,2991191295,SE 2991191296,2991191327,GB -2991191328,2991191551,SE +2991191328,2991191343,NL +2991191344,2991191359,DE +2991191360,2991191375,DK +2991191376,2991191391,FI +2991191392,2991191551,SE 2991191552,2991191583,GB -2991191584,2991191807,SE +2991191584,2991191599,NL +2991191600,2991191615,DE +2991191616,2991191631,DK +2991191632,2991191647,FI +2991191648,2991191807,SE 2991191808,2991192063,FI 2991192064,2991192319,DK 2991192320,2991194111,SE @@ -56920,9 +59137,7 @@ 2991980808,2991980815,NA 2991980816,2991981063,UA 2991981064,2991981071,DE -2991981072,2991981311,UA -2991981312,2991981315,RU -2991981316,2991981375,UA +2991981072,2991981375,UA 2991981376,2991981383,NA 2991981384,2991981415,UA 2991981416,2991981423,NA @@ -56932,11 +59147,7 @@ 2991981464,2991981471,NA 2991981472,2991981495,UA 2991981496,2991981503,NA -2991981504,2991981583,UA -2991981584,2991981591,NA -2991981592,2991981631,UA -2991981632,2991981639,NA -2991981640,2991981647,UA +2991981504,2991981647,UA 2991981648,2991981655,NA 2991981656,2991981687,UA 2991981688,2991981695,NA @@ -56946,12 +59157,13 @@ 2991981912,2991981919,RU 2991981920,2991981935,UA 2991981936,2991981943,RU -2991981944,2991981951,US -2991981952,2991982535,UA +2991981944,2991982535,UA 2991982536,2991982543,GL 2991982544,2991982592,UA 2991982593,2991982846,JP -2991982847,2992111615,UA +2991982847,2991983359,UA +2991983360,2991983615,JP +2991983616,2992111615,UA 2992111616,2992373759,KZ 2992373760,2992635903,UA 2992635904,2993684479,GB @@ -56977,9 +59189,7 @@ 2996174848,2996305919,UA 2996305920,2996436991,QA 2996436992,2996469759,BY -2996469760,2996479487,RU -2996479488,2996479491,US -2996479492,2996535295,RU +2996469760,2996535295,RU 2996535296,2996568063,DK 2996568064,2996600831,ES 2996600832,2996633599,RO @@ -56990,14 +59200,22 @@ 2996764672,2996768767,NL 2996768768,2996772863,RU 2996772864,2996776959,UA +2996776960,2996781055,RU +2996781056,2996785151,RO +2996785152,2996789247,RU +2996789248,2996797439,UA +2996797440,2996801535,PL +2996801536,2996805631,RO +2996805632,2996809727,PL +2996809728,2996813823,UA +2996813824,2996817919,PL +2996817920,2996826111,UA +2996826112,2996830207,RU 2996830208,2996862975,HR 2996862976,2996895743,AM 2996895744,2996928511,KW 2996928512,2996994047,RU -2996994048,2996994303,DE -2996994304,2996994815,BY -2996994816,2996994847,DE -2996994848,2996994879,SC +2996994048,2996994879,DE 2996994880,2996994943,UA 2996994944,2996995071,US 2996995072,2996995327,BZ @@ -57005,8 +59223,7 @@ 2996995648,2996995711,BZ 2996995712,2996995775,BY 2996995776,2996995839,RU -2996995840,2996996095,UA -2996996096,2996996127,DE +2996995840,2996996127,DE 2996996128,2996996159,CA 2996996160,2996996287,DE 2996996288,2996996351,RU @@ -57018,30 +59235,35 @@ 2996996768,2996996831,RU 2996996832,2996996863,DE 2996996864,2996997119,CN -2996997120,2996997375,MK -2996997376,2996997631,DE -2996997632,2996998143,BY +2996997120,2996998143,DE 2996998144,2996998271,UA -2996998272,2996998527,DE +2996998272,2996998463,DE +2996998464,2996998527,CA 2996998528,2996998655,UA 2996998656,2996998719,DE 2996998720,2996998911,RU -2996998912,2996999231,DE -2996999232,2996999359,IN -2996999360,2996999679,DE +2996998912,2996999199,DE +2996999200,2996999231,AU +2996999232,2996999359,DE +2996999360,2996999423,IL +2996999424,2996999551,IN +2996999552,2996999679,DE 2996999680,2996999935,GB -2996999936,2997000063,DE -2997000064,2997000447,CN +2996999936,2997000447,DE 2997000448,2997000703,RU -2997000704,2997000831,DE +2997000704,2997000767,DE +2997000768,2997000831,SC 2997000832,2997000959,CA -2997000960,2997001727,DE -2997001728,2997001983,UA -2997001984,2997003071,DE +2997000960,2997000991,DE +2997000992,2997001119,RO +2997001120,2997001471,DE +2997001472,2997001727,BZ +2997001728,2997003071,DE 2997003072,2997003135,RU -2997003136,2997003199,US +2997003136,2997003199,PK 2997003200,2997003263,RU -2997003264,2997003295,DE +2997003264,2997003287,DE +2997003288,2997003295,NL 2997003296,2997003327,CA 2997003328,2997003391,RU 2997003392,2997003583,DE @@ -57050,7 +59272,8 @@ 2997004032,2997004287,BZ 2997004288,2997004543,US 2997004544,2997004607,DE -2997004608,2997004799,RU +2997004608,2997004671,RU +2997004672,2997004799,DE 2997004800,2997005055,BZ 2997005056,2997005183,GB 2997005184,2997005375,DE @@ -57060,21 +59283,41 @@ 2997005824,2997006079,DE 2997006080,2997006335,GB 2997006336,2997006591,TR -2997006592,2997006719,DE +2997006592,2997006655,DE +2997006656,2997006719,TR 2997006720,2997006847,RU 2997006848,2997008191,DE -2997008192,2997008255,GR +2997008192,2997008255,TR 2997008256,2997008383,LT 2997008384,2997008447,DE 2997008448,2997008511,RU 2997008512,2997008639,LT -2997008640,2997008895,TR -2997008896,2997008959,DE +2997008640,2997008959,DE 2997008960,2997009023,RU 2997009024,2997010431,DE 2997010432,2997018623,US 2997018624,2997019135,GB -2997019136,2997026815,DE +2997019136,2997019391,TR +2997019392,2997019647,GB +2997019648,2997019679,DE +2997019680,2997019711,AU +2997019712,2997019903,US +2997019904,2997020415,DE +2997020416,2997020671,CA +2997020672,2997021183,DE +2997021184,2997021695,GB +2997021696,2997021951,NL +2997021952,2997022015,DE +2997022016,2997022143,GB +2997022144,2997022239,DE +2997022240,2997022303,NL +2997022304,2997022367,SG +2997022368,2997022783,DE +2997022784,2997022847,IN +2997022848,2997022975,BZ +2997022976,2997024255,DE +2997024256,2997024511,TR +2997024512,2997026815,DE 2997026816,2997059583,RU 2997059584,2997092351,BY 2997092352,2997125119,NO @@ -57088,7 +59331,9 @@ 2997387264,2997420031,BY 2997420032,2997452799,RU 2997452800,2997485567,BG -2997485568,2997518335,FR +2997485568,2997486847,FR +2997486848,2997486911,BH +2997486912,2997518335,FR 2997518336,2997528063,RU 2997528064,2997528319,UA 2997528320,2997583871,RU @@ -57109,8 +59354,13 @@ 2999451648,2999713791,DE 2999713792,2999975935,RU 2999975936,2999984127,FR -2999984128,2999985663,BE -2999985664,2999992319,NL +2999984128,2999985695,BE +2999985696,2999985711,GB +2999985712,2999985727,BE +2999985728,2999985743,CZ +2999985744,2999985759,NL +2999985760,2999986175,BE +2999986176,2999992319,NL 2999992320,3000000511,RU 3000000512,3000008703,DE 3000008704,3000016895,RU @@ -57156,10 +59406,42 @@ 3000285184,3000287231,RO 3000287232,3000289279,UA 3000289280,3000291327,RO +3000291328,3000293375,RU +3000293376,3000295423,PL +3000295424,3000297471,RU +3000297472,3000301567,UA +3000301568,3000303615,RO +3000303616,3000305663,UA +3000305664,3000313855,RU +3000313856,3000315903,CZ +3000315904,3000317951,LV +3000317952,3000319999,PL +3000320000,3000322047,FR +3000322048,3000326143,RU +3000326144,3000330239,PL +3000330240,3000332287,UA +3000332288,3000334335,RU +3000334336,3000336383,PL +3000336384,3000338431,AM +3000338432,3000340479,PL +3000340480,3000342527,RU +3000342528,3000344575,CZ +3000344576,3000346623,PL +3000346624,3000348671,UA +3000348672,3000350719,RO +3000350720,3000352767,UA +3000352768,3000358911,RU +3000358912,3000360959,PL +3000360960,3000363007,RU +3000363008,3000365055,FI +3000365056,3000369151,RU 3000369152,3000377343,PL 3000377344,3000385535,RU 3000385536,3000393727,PS 3000393728,3000401919,NL +3000401920,3000410111,PL +3000410112,3000426495,UA +3000426496,3000434687,RU 3000434688,3000451071,IR 3000451072,3000467455,RU 3000467456,3000471551,GB @@ -57186,6 +59468,7 @@ 3000543232,3000545279,UA 3000545280,3000547327,RU 3000547328,3000549375,UA +3000549376,3000551423,SE 3000551424,3000553471,RS 3000553472,3000555519,KG 3000555520,3000557567,RU @@ -57235,7 +59518,6 @@ 3000713216,3000717311,A2 3000717312,3000721407,UA 3000721408,3000729599,PL -3000729600,3000733695,NL 3000733696,3000737791,RU 3000737792,3000741887,UA 3000741888,3000745983,RU @@ -57260,20 +59542,27 @@ 3001843712,3001845759,RU 3001845760,3001851903,GB 3001851904,3001855999,IT -3001856000,3001858559,NL -3001858560,3001859071,RO -3001859072,3001859327,MD -3001859328,3001860095,NL +3001856000,3001859071,NL +3001859072,3001860095,MD 3001860096,3001864191,EE 3001864192,3001868287,RU -3001868288,3001872383,FR +3001868288,3001869312,FR +3001869313,3001869600,SA +3001869601,3001869696,IR +3001869697,3001869823,YE +3001869824,3001869952,IR +3001869953,3001872383,FR 3001872384,3001876479,RU 3001876480,3001880575,IT 3001880576,3001884671,RU 3001884672,3001884927,SE 3001884928,3001885055,NL 3001885056,3001885087,US -3001885088,3001888767,NL +3001885088,3001885439,NL +3001885440,3001886463,BE +3001886464,3001886511,NL +3001886512,3001886527,US +3001886528,3001888767,NL 3001888768,3001892863,BH 3001892864,3001896959,AZ 3001896960,3001901055,CH @@ -57293,7 +59582,47 @@ 3001962496,3001966591,GB 3001966592,3001970687,NL 3001970688,3001974783,RU -3001974784,3001982975,GB +3001974784,3001975567,GB +3001975568,3001975591,US +3001975592,3001975599,TW +3001975600,3001975607,CN +3001975608,3001975615,RU +3001975616,3001975623,US +3001975624,3001975631,RU +3001975632,3001976575,GB +3001976576,3001976607,TW +3001976608,3001976623,GB +3001976624,3001976639,CN +3001976640,3001976655,RU +3001976656,3001976679,GB +3001976680,3001976687,US +3001976688,3001976927,GB +3001976928,3001976959,RU +3001976960,3001977135,GB +3001977136,3001977151,AE +3001977152,3001977167,GB +3001977168,3001977183,LK +3001977184,3001977215,GB +3001977216,3001977247,RU +3001977248,3001977311,GB +3001977312,3001977343,CN +3001977344,3001977375,GB +3001977376,3001977407,CA +3001977408,3001977455,GB +3001977456,3001977463,US +3001977464,3001977487,GB +3001977488,3001977503,LK +3001977504,3001978367,GB +3001978368,3001978495,US +3001978496,3001978527,RU +3001978528,3001978559,US +3001978560,3001978623,GB +3001978624,3001978687,CA +3001978688,3001978751,US +3001978752,3001978783,RU +3001978784,3001978847,GB +3001978848,3001978879,US +3001978880,3001982975,GB 3001982976,3001987071,CH 3001987072,3001991167,JO 3001991168,3001995263,IR @@ -57304,11 +59633,24 @@ 3002015744,3002019839,IT 3002019840,3002020095,NL 3002020096,3002020159,SG -3002020160,3002023935,NL +3002020160,3002020223,NL +3002020224,3002020287,IL +3002020288,3002020303,US +3002020304,3002020319,BZ +3002020320,3002021695,NL +3002021696,3002021759,SG +3002021760,3002023935,NL 3002023936,3002028031,DE 3002028032,3002036223,GB 3002036224,3002040319,BG 3002040320,3002044415,PL +3002044416,3002048511,IR +3002048512,3002052607,GB +3002052608,3002056703,IT +3002056704,3002060799,FI +3002060800,3002064895,ES +3002064896,3002068991,BG +3002068992,3002073087,ES 3002073088,3002597375,TR 3002597376,3002599423,RU 3002599424,3002601471,CZ @@ -57326,11 +59668,18 @@ 3002619952,3002619967,GB 3002619968,3002619983,IT 3002619984,3002619991,GB -3002619992,3002620031,IT +3002619992,3002620015,IT +3002620016,3002620031,GB 3002620032,3002620039,DE -3002620040,3002621951,IT +3002620040,3002620047,IT +3002620048,3002620095,GB +3002620096,3002620103,IT +3002620104,3002620111,GB +3002620112,3002621951,IT 3002621952,3002623999,NO -3002624000,3002628095,GB +3002624000,3002626551,GB +3002626552,3002626559,US +3002626560,3002628095,GB 3002628096,3002630143,NO 3002630144,3002632191,GB 3002632192,3002634239,EE @@ -57455,7 +59804,10 @@ 3003060224,3003062271,DE 3003062272,3003064319,NL 3003064320,3003066367,RO -3003066368,3003068415,PL +3003066368,3003066887,PL +3003066888,3003066895,MX +3003066896,3003066911,UA +3003066912,3003068415,PL 3003068416,3003070463,NL 3003070464,3003074559,GB 3003074560,3003076607,IT @@ -57503,7 +59855,6 @@ 3025989632,3025993727,KR 3025993728,3026059263,VN 3026059264,3026067455,PH -3026067456,3026068479,BD 3026068480,3026069503,PH 3026069504,3026071551,JP 3026071552,3026073599,AP @@ -57649,7 +60000,7 @@ 3034251264,3034316799,HK 3034316800,3034447871,JP 3034447872,3034456063,AU -3034464256,3034465279,NZ +3034464256,3034466303,NZ 3034466304,3034472447,JP 3034472448,3034480639,IN 3034480640,3034482687,SG @@ -57680,9 +60031,8 @@ 3035316224,3035324415,CN 3035324416,3035326463,JP 3035326464,3035327487,AU -3035328512,3035332607,BD 3035332608,3035333631,AU -3035334656,3035335679,AU +3035333632,3035334655,HK 3035335680,3035337727,JP 3035337728,3035338751,ID 3035338752,3035339007,SG @@ -57934,7 +60284,9 @@ 3093955576,3093955647,US 3093955648,3093955663,GB 3093955664,3093955679,CA -3093955680,3093956895,US +3093955680,3093956479,US +3093956480,3093956495,IE +3093956496,3093956895,US 3093956896,3093956943,CA 3093956944,3093957103,US 3093957104,3093957119,CA @@ -57950,13 +60302,47 @@ 3093958112,3093958119,CA 3093958120,3093958175,US 3093958176,3093958183,GB -3093958184,3093958663,US +3093958184,3093958231,US +3093958232,3093958239,AU +3093958240,3093958503,US +3093958504,3093958511,CA +3093958512,3093958623,US +3093958624,3093958631,MX +3093958632,3093958663,US 3093958664,3093958667,MX 3093958668,3093958721,US 3093958722,3093958723,IL -3093958724,3093960191,US +3093958724,3093958745,US +3093958746,3093958747,FR +3093958748,3093959559,US +3093959560,3093959567,CA +3093959568,3093959751,US +3093959752,3093959759,GB +3093959760,3093959911,US +3093959912,3093959919,CA +3093959920,3093960063,US +3093960064,3093960095,CA +3093960096,3093960191,US 3093960192,3093960207,CA -3093960208,3093986367,US +3093960208,3093960351,US +3093960352,3093960383,CA +3093960384,3093960447,US +3093960448,3093960463,CA +3093960464,3093962259,US +3093962260,3093962263,CA +3093962264,3093962287,US +3093962288,3093962291,MX +3093962292,3093962375,US +3093962376,3093962379,CA +3093962380,3093962475,US +3093962476,3093962479,CA +3093962480,3093962807,US +3093962808,3093962815,AU +3093962816,3093963359,US +3093963360,3093963367,CA +3093963368,3093963487,US +3093963488,3093963495,IE +3093963496,3093986367,US 3093986368,3093986431,DE 3093986432,3093986463,US 3093986464,3093986495,GB @@ -57966,9 +60352,14 @@ 3096444928,3096969215,CA 3096969216,3097493503,US 3097493504,3097755647,CA -3097755648,3098017791,US -3098083328,3098087423,US -3098542080,3103784959,US +3097755648,3098148863,US +3098148864,3098165247,JM +3098214400,3098263551,US +3098263552,3098271743,CA +3098271744,3098275839,US +3098279936,3098443775,US +3098476544,3098492927,CA +3098492928,3103784959,US 3120562176,3120594943,CO 3120594944,3120599039,AR 3120599040,3120601087,EC @@ -57988,7 +60379,7 @@ 3120758784,3120824319,EC 3120824320,3120840703,CR 3120840704,3120857087,AR -3120857088,3120889855,EC +3120857088,3120922623,EC 3120955392,3121020927,DO 3121086464,3121151999,UY 3121152000,3121348607,CL @@ -58034,6 +60425,11 @@ 3131047936,3131310079,PE 3132096512,3132129279,CR 3132227584,3132293119,EC +3132358656,3132424191,CO +3132489728,3132555263,AR +3132620800,3132751871,VE +3132882944,3132915711,VE +3132948480,3133014015,AR 3133145088,3145727999,BR 3145728000,3154116607,MX 3154116608,3154182143,EU @@ -58176,12 +60572,15 @@ 3158889984,3158890239,HK 3158890240,3158891263,DE 3158891264,3158891519,CA -3158891520,3158891583,DE +3158891520,3158891551,DE +3158891552,3158891583,GB 3158891584,3158891647,RU 3158891648,3158891711,DE 3158891712,3158891775,RU 3158891776,3158892031,PL -3158892032,3158892671,DE +3158892032,3158892415,DE +3158892416,3158892543,GB +3158892544,3158892671,DE 3158892672,3158892799,RU 3158892800,3158893567,DE 3158893568,3158893823,GB @@ -58192,12 +60591,9 @@ 3158895424,3158895487,RU 3158895488,3158895551,MK 3158895552,3158895615,AE -3158895616,3158895871,IN -3158895872,3158896255,DE +3158895616,3158896255,DE 3158896256,3158896383,IN -3158896384,3158897151,DE -3158897152,3158897407,BY -3158897408,3158897503,DE +3158896384,3158897503,DE 3158897504,3158897567,RU 3158897568,3158897631,DE 3158897632,3158897663,BZ @@ -58205,8 +60601,7 @@ 3158897728,3158897791,RU 3158897792,3158897855,DE 3158897856,3158897919,UA -3158897920,3158898175,BY -3158898176,3158898207,DE +3158897920,3158898207,DE 3158898208,3158898271,CZ 3158898272,3158898335,RU 3158898336,3158898431,DE @@ -58234,7 +60629,6 @@ 3160150016,3160152063,LV 3160152064,3160154111,IT 3160154112,3160156159,DE -3160156160,3160158207,AM 3160160256,3160162303,NL 3160162304,3160164351,FR 3160164352,3160166399,LV @@ -58251,10 +60645,10 @@ 3160186880,3160188927,EE 3160188928,3160190975,SE 3160190976,3160193023,RU -3160193024,3160193279,IT +3160193024,3160193279,A2 3160193280,3160193535,DE -3160193536,3160193807,A2 -3160193808,3160193871,LY +3160193536,3160193791,A2 +3160193792,3160193871,LY 3160193872,3160194047,A2 3160194048,3160194175,LY 3160194176,3160194543,A2 @@ -58354,7 +60748,6 @@ 3160377344,3160379391,NL 3160379392,3160381439,TR 3160381440,3160383487,UA -3160383488,3160385535,GB 3160385536,3160387583,NL 3160387584,3160389631,RS 3160389632,3160391679,RU @@ -58411,10 +60804,14 @@ 3162087424,3162095615,SK 3162095616,3162103807,GE 3162103808,3162104319,FR -3162104320,3162111999,NL +3162104320,3162108415,NL +3162108416,3162108671,FR +3162108672,3162108927,NL +3162108928,3162109951,FR +3162109952,3162111999,NL 3162112000,3162120191,PL -3162120192,3162128895,GB -3162128896,3162129407,NL +3162120192,3162128383,GB +3162128384,3162129407,NL 3162129408,3162129919,DE 3162129920,3162136575,NL 3162144768,3162152959,SE @@ -58439,9 +60836,11 @@ 3162300416,3162308607,RU 3162308608,3162316799,HR 3162316800,3162324991,PL -3162324992,3162327039,GB -3162327040,3162327296,CH -3162327297,3162333183,GB +3162324992,3162327039,IR +3162327040,3162329087,CH +3162329088,3162332671,GB +3162332672,3162332927,NL +3162332928,3162333183,DE 3162333184,3162341375,IT 3162341376,3162349567,PL 3162349568,3162357759,TR @@ -58496,18 +60895,14 @@ 3163162112,3163162143,TR 3163162144,3163162175,DE 3163162176,3163162207,US -3163162208,3163162239,IT +3163162208,3163162239,TR 3163162240,3163162271,CH 3163162272,3163162303,NL -3163162304,3163162335,DE -3163162336,3163162367,TR -3163162368,3163162495,DE -3163162496,3163162527,RU -3163162528,3163163743,DE -3163163744,3163163775,GB -3163163776,3163163871,DE +3163162304,3163162431,DE +3163162432,3163162463,CY +3163162464,3163163871,DE 3163163872,3163163903,RU -3163163904,3163163935,DE +3163163904,3163163935,GR 3163163936,3163163967,VG 3163163968,3163164543,DE 3163164544,3163164575,RU @@ -58517,26 +60912,29 @@ 3163165760,3163165791,PL 3163165792,3163166175,DE 3163166176,3163166207,US -3163166208,3163166495,DE +3163166208,3163166335,DE +3163166336,3163166399,NL +3163166400,3163166431,DE +3163166432,3163166463,NL +3163166464,3163166495,DE 3163166496,3163166527,RO 3163166528,3163166559,DE 3163166560,3163166591,HU 3163166592,3163167775,DE 3163167776,3163167807,GR -3163167808,3163167839,TR +3163167808,3163167839,NL 3163167840,3163167967,DE 3163167968,3163167999,TR 3163168000,3163168031,DE -3163168032,3163168063,RU -3163168064,3163168095,DE +3163168032,3163168095,RU 3163168096,3163168127,TR -3163168128,3163168159,IL +3163168128,3163168159,SA 3163168160,3163168319,DE 3163168320,3163168351,DK 3163168352,3163168415,DE 3163168416,3163168447,CA 3163168448,3163168575,DE -3163168576,3163168607,TR +3163168576,3163168607,NL 3163168608,3163168671,DE 3163168672,3163168703,US 3163168704,3163169823,DE @@ -58553,21 +60951,19 @@ 3163170304,3163170335,IT 3163170336,3163170367,DE 3163170368,3163170399,IR -3163170400,3163170431,CY -3163170432,3163170495,DE +3163170400,3163170495,DE 3163170496,3163170527,BR 3163170528,3163170591,DE 3163170592,3163170623,BR -3163170624,3163172031,DE -3163172032,3163172063,PL -3163172064,3163172127,DE -3163172128,3163172159,TR +3163170624,3163171871,DE +3163171872,3163171903,RO +3163171904,3163172127,DE +3163172128,3163172159,NL 3163172160,3163172191,RU 3163172192,3163172223,DE -3163172224,3163172255,TR +3163172224,3163172255,NL 3163172256,3163172287,PL -3163172288,3163172319,TR -3163172320,3163172351,NL +3163172288,3163172351,NL 3163172352,3163172383,GB 3163172384,3163172607,DE 3163172608,3163172639,DK @@ -58575,11 +60971,10 @@ 3163172736,3163172767,GR 3163172768,3163174047,DE 3163174048,3163174079,DK -3163174080,3163174335,DE +3163174080,3163174303,DE +3163174304,3163174335,IL 3163174336,3163174367,RU -3163174368,3163174399,DE -3163174400,3163174431,DK -3163174432,3163174591,DE +3163174368,3163174591,DE 3163174592,3163174623,SE 3163174624,3163174655,GB 3163174656,3163174687,DE @@ -58587,16 +60982,16 @@ 3163174720,3163174751,NL 3163174752,3163174783,US 3163174784,3163176127,DE -3163176128,3163176159,TR +3163176128,3163176159,NL 3163176160,3163176255,DE 3163176256,3163176287,UG -3163176288,3163176479,DE +3163176288,3163176319,DE +3163176320,3163176351,US +3163176352,3163176479,DE 3163176480,3163176543,GB 3163176544,3163176575,DE 3163176576,3163176607,GR -3163176608,3163176671,DE -3163176672,3163176703,PL -3163176704,3163176767,DE +3163176608,3163176767,DE 3163176768,3163176799,PL 3163176800,3163176895,DE 3163176896,3163176927,SE @@ -58636,7 +61031,7 @@ 3164946496,3164946499,IT 3164946500,3164946503,GB 3164946504,3164946507,BE -3164946508,3164946511,FR +3164946508,3164946511,CZ 3164946512,3164946527,ES 3164946528,3164946559,GB 3164946560,3164946783,FR @@ -58646,10 +61041,22 @@ 3164947044,3164947047,GB 3164947048,3164947063,FR 3164947064,3164947067,NL -3164947068,3164947199,DE +3164947068,3164947071,PL +3164947072,3164947199,DE 3164947200,3164947455,FR -3164947456,3164947711,DE -3164947712,3164947743,FR +3164947456,3164947519,PL +3164947520,3164947551,ES +3164947552,3164947583,DE +3164947584,3164947599,FR +3164947600,3164947615,GB +3164947616,3164947627,FR +3164947628,3164947635,ES +3164947636,3164947639,DE +3164947640,3164947643,IT +3164947644,3164947647,FR +3164947648,3164947651,BE +3164947652,3164947655,PL +3164947656,3164947743,FR 3164947744,3164947747,ES 3164947748,3164947751,BE 3164947752,3164947839,FR @@ -58667,11 +61074,17 @@ 3164949160,3164949163,PL 3164949164,3164949183,FR 3164949184,3164949215,DE -3164949216,3164949231,NL +3164949216,3164949219,PL +3164949220,3164949223,FR +3164949224,3164949231,PL 3164949232,3164949247,BE 3164949248,3164949279,FR 3164949280,3164949295,ES -3164949296,3164949359,FR +3164949296,3164949327,FR +3164949328,3164949331,PL +3164949332,3164949335,ES +3164949336,3164949343,IE +3164949344,3164949359,FR 3164949360,3164949363,BE 3164949364,3164949391,FR 3164949392,3164949395,ES @@ -58680,7 +61093,7 @@ 3164949472,3164949503,FR 3164949504,3164950015,BE 3164950016,3164950271,GB -3164950272,3164950399,FR +3164950272,3164950399,DE 3164950400,3164950407,ES 3164950408,3164950411,FR 3164950412,3164950415,CZ @@ -58727,7 +61140,7 @@ 3164951572,3164951575,CZ 3164951576,3164951583,NL 3164951584,3164951591,GB -3164951592,3164951595,IE +3164951592,3164951595,DE 3164951596,3164951615,FR 3164951616,3164951663,GB 3164951664,3164951671,PL @@ -58820,21 +61233,21 @@ 3164954512,3164954515,PL 3164954516,3164954519,IT 3164954520,3164954543,GB -3164954544,3164954591,FR +3164954544,3164954559,LT +3164954560,3164954591,FR 3164954592,3164954623,PL 3164954624,3164956479,FR 3164956480,3164956543,GB 3164956544,3164958847,FR 3164958848,3164958911,IT 3164958912,3164958927,CH -3164958928,3164958943,ES -3164958944,3164958955,FR +3164958928,3164958955,FR 3164958956,3164958959,GB 3164958960,3164959039,FR 3164959040,3164959135,DE 3164959136,3164959231,ES 3164959232,3164959247,FR -3164959248,3164959255,BE +3164959248,3164959255,ES 3164959256,3164959263,PL 3164959264,3164959295,GB 3164959296,3164959303,IT @@ -58885,7 +61298,12 @@ 3164961696,3164961727,GB 3164961728,3164961743,ES 3164961744,3164961759,PL -3164961760,3164961855,FR +3164961760,3164961763,ES +3164961764,3164961767,IT +3164961768,3164961775,BE +3164961776,3164961783,FR +3164961784,3164961791,ES +3164961792,3164961855,FR 3164961856,3164961871,PL 3164961872,3164961887,IE 3164961888,3164961903,ES @@ -58902,8 +61320,11 @@ 3164962080,3164962095,ES 3164962096,3164962111,BE 3164962112,3164962143,GB -3164962144,3164962175,FR -3164962176,3164962239,NL +3164962144,3164962203,FR +3164962204,3164962207,PT +3164962208,3164962211,GB +3164962212,3164962215,PL +3164962216,3164962239,FR 3164962240,3164962247,PL 3164962248,3164962251,FR 3164962252,3164962255,DE @@ -58913,7 +61334,8 @@ 3164962280,3164962283,DE 3164962284,3164962295,ES 3164962296,3164962303,PL -3164962304,3164962335,NL +3164962304,3164962319,NL +3164962320,3164962335,FR 3164962336,3164962367,DE 3164962368,3164962431,PL 3164962432,3164962439,GB @@ -58927,10 +61349,14 @@ 3164962540,3164962543,CZ 3164962544,3164962623,FR 3164962624,3164962627,BE -3164962628,3164962631,CH +3164962628,3164962631,PL 3164962632,3164962655,FR 3164962656,3164962687,ES -3164962688,3164962751,GB +3164962688,3164962715,FR +3164962716,3164962719,NL +3164962720,3164962723,IT +3164962724,3164962727,ES +3164962728,3164962751,FR 3164962752,3164964863,ES 3164964864,3164966911,FI 3164966912,3164967039,FR @@ -58979,7 +61405,8 @@ 3164969144,3164969147,PT 3164969148,3164969183,GB 3164969184,3164969199,DE -3164969200,3164969207,GB +3164969200,3164969203,LT +3164969204,3164969207,ES 3164969208,3164969211,IT 3164969212,3164969471,FR 3164969472,3164969727,PL @@ -58991,7 +61418,13 @@ 3164970212,3164970215,GB 3164970216,3164970219,PL 3164970220,3164970223,FR -3164970224,3164970303,GB +3164970224,3164970239,GB +3164970240,3164970271,IE +3164970272,3164970287,DE +3164970288,3164970291,PL +3164970292,3164970295,DE +3164970296,3164970299,ES +3164970300,3164970303,DE 3164970304,3164970335,ES 3164970336,3164970339,NL 3164970340,3164970343,BE @@ -59091,16 +61524,32 @@ 3164973884,3164973887,DE 3164973888,3164973919,ES 3164973920,3164973935,FR -3164973936,3164973939,IT +3164973936,3164973939,IE 3164973940,3164973943,FR 3164973944,3164973951,PL -3164973952,3164974591,FR -3164974592,3164975103,GB +3164973952,3164974623,FR +3164974624,3164974639,DE +3164974640,3164974651,FR +3164974652,3164974655,DE +3164974656,3164974663,FR +3164974664,3164974667,GB +3164974668,3164974671,DE +3164974672,3164974675,FR +3164974676,3164974679,PT +3164974680,3164974719,PL +3164974720,3164974727,FR +3164974728,3164974731,PL +3164974732,3164974735,IT +3164974736,3164974751,PL +3164974752,3164974783,FR +3164974784,3164974815,GB +3164974816,3164974847,FR +3164974848,3164975103,GB 3164975104,3164975167,CH 3164975168,3164975231,GB 3164975232,3164975299,IT -3164975300,3164975307,ES -3164975308,3164975311,GB +3164975300,3164975303,ES +3164975304,3164975311,IT 3164975312,3164975343,ES 3164975344,3164975351,GB 3164975352,3164975355,NL @@ -59196,7 +61645,9 @@ 3166306304,3166437375,RU 3166437376,3166568447,BE 3166699520,3166961663,DE -3167223808,3167748095,NL +3167223808,3167594831,NL +3167594832,3167594839,A2 +3167594840,3167748095,NL 3167748096,3167940095,RO 3167940096,3167940351,CY 3167940352,3168092159,RO @@ -59209,18 +61660,18 @@ 3168116736,3168120831,RO 3168120832,3168124927,GB 3168124928,3168129023,RO -3168129024,3168141311,GB -3168141312,3168157695,RO +3168129024,3168137215,GB +3168137216,3168157695,RO 3168157696,3168178175,GB 3168178176,3168182271,RO 3168182272,3168194559,GB -3168194560,3168198655,RO -3168198656,3168202751,GB -3168202752,3168207103,RO +3168194560,3168207103,RO 3168207104,3168207359,CY 3168207360,3168214527,RO 3168214528,3168214783,CY -3168214784,3168272383,RO +3168214784,3168223743,RO +3168223744,3168224255,MD +3168224256,3168272383,RO 3168272384,3168534527,IT 3168534528,3168796671,GB 3168796672,3168829439,FR @@ -59261,7 +61712,9 @@ 3169281024,3169281279,US 3169281280,3169288191,KW 3169288192,3169320959,UA -3169845248,3169965823,RO +3169845248,3169958911,RO +3169958912,3169959423,MD +3169959424,3169965823,RO 3169965824,3169966079,GB 3169966080,3169976319,RO 3169976320,3170111487,RU @@ -59499,6 +61952,7 @@ 3194601472,3194602495,AN 3194602496,3194605567,AR 3194609664,3194613759,AR +3194613760,3194617855,PE 3194617856,3194626047,NI 3194634240,3194638335,CR 3194642432,3194646527,AR @@ -59531,25 +61985,27 @@ 3194863616,3194871807,HN 3194880000,3194896383,DO 3194896384,3194904575,CO -3194912768,3194920959,CL +3194912768,3194929151,CL 3194929152,3194937343,EC 3194945536,3194953727,GT 3194961920,3194966015,EC 3194970112,3194974207,PA 3194974208,3194976255,AR +3194976256,3194977279,VE +3194977280,3194978303,AR 3194978304,3194994687,PA 3194994688,3195002879,AR -3195011072,3195021311,AR +3195011072,3195023359,AR 3195023360,3195024383,CL 3195024384,3195025407,UY 3195025408,3195035647,AR -3195043840,3195052031,CO +3195043840,3195060223,CO 3195060224,3195064319,UY 3195068416,3195072511,AN 3195076608,3195084799,CL 3195092992,3195097087,AR 3195101184,3195105279,CR -3195109376,3195117567,AR +3195109376,3195125759,AR 3195125760,3195133951,PE 3195142144,3195150335,VE 3195158528,3195183103,AR @@ -59559,12 +62015,14 @@ 3195207680,3195211775,GT 3195215872,3195224063,AR 3195224064,3195232255,PA +3195256832,3195265023,AR 3195273216,3195535359,PE 3195535360,3195539455,SV 3195543552,3195547647,PE -3195551744,3195555839,EC +3195551744,3195559935,EC 3195559936,3195564031,AR 3195568128,3195572223,CO +3195572224,3195576319,AR 3195576320,3195580415,CL 3195584512,3195592703,HT 3195592704,3195596799,PA @@ -59630,7 +62088,7 @@ 3198910464,3198926847,CL 3198943232,3199500799,AR 3199500800,3199501311,US -3199501312,3199533055,AR +3199501312,3199516671,AR 3199533056,3199549439,BO 3199565824,3199582207,NI 3199598592,3199631359,CO @@ -59650,6 +62108,11 @@ 3201302528,3201433599,CL 3201433600,3201499135,AR 3201499136,3201515519,CL +3201531904,3201540095,AR +3201540096,3201544191,CL +3201556480,3201560575,BO +3201562624,3201563647,CL +3201563648,3201564671,PA 3201564672,3201630207,NI 3201630208,3201695743,TT 3201695744,3201761279,EC @@ -61177,7 +63640,7 @@ 3228106752,3228109311,US 3228109312,3228109567,NZ 3228109568,3228125951,US -3228125952,3228126207,DE +3228125952,3228126207,RU 3228126208,3228133375,US 3228133376,3228134655,CA 3228134656,3228150271,US @@ -61390,9 +63853,9 @@ 3229120768,3229151487,US 3229151488,3229151743,SE 3229151744,3229155327,US -3229155328,3229177407,SE -3229177408,3229177423,JP -3229177424,3229219583,SE +3229155328,3229171455,SE +3229171456,3229171711,MT +3229171712,3229219583,SE 3229219584,3229219839,EE 3229219840,3229220863,SE 3229220864,3229245439,GB @@ -63572,6 +66035,7 @@ 3239446016,3239446271,RU 3239446272,3239446527,FR 3239446528,3239451647,DE +3239451648,3239451903,PL 3239451904,3239452159,DE 3239452160,3239452415,CY 3239452416,3239452671,HR @@ -63615,6 +66079,7 @@ 3239488256,3239488511,CH 3239488512,3239488767,KW 3239488768,3239489023,RO +3239489024,3239489279,DE 3239489280,3239489535,PL 3239489536,3239501823,DE 3239501824,3239505919,BE @@ -63764,6 +66229,7 @@ 3239691776,3239692031,EU 3239692032,3239692287,AT 3239692288,3239697407,DE +3239697408,3239697663,HR 3239697664,3239697919,RU 3239697920,3239698431,PL 3239698432,3239706367,DE @@ -63820,9 +66286,9 @@ 3239761408,3239761663,RU 3239761664,3239761919,PL 3239761920,3239762175,BG +3239762176,3239762431,RU 3239762432,3239762687,DK 3239762688,3239762943,RO -3239762944,3239763199,PL 3239763200,3239763455,SE 3239763456,3239763967,GB 3239763968,3239772159,DE @@ -63849,7 +66315,7 @@ 3239788544,3239789055,EU 3239789056,3239789567,RU 3239789568,3239790079,FR -3239790080,3239791103,RO +3239790080,3239790591,RO 3239791104,3239792127,CH 3239792128,3239792639,FR 3239792640,3239793151,UA @@ -64133,7 +66599,7 @@ 3240199168,3240199679,HU 3240199680,3240200191,NL 3240200192,3240200703,RO -3240200704,3240201215,GB +3240200704,3240201215,SE 3240201216,3240201727,RO 3240201728,3240202239,CH 3240202240,3240202751,RU @@ -64565,11 +67031,13 @@ 3240859648,3240861183,CH 3240861184,3240861695,AT 3240861696,3240866815,IT +3240866816,3240867071,RU 3240867072,3240867327,PL 3240867328,3240867583,RU 3240867584,3240867839,CH 3240867840,3240873983,IT 3240873984,3240874495,RU +3240874496,3240875007,UA 3240875008,3240875519,AT 3240875520,3240876031,FR 3240876032,3240876543,DK @@ -64804,6 +67272,7 @@ 3241865728,3241865983,CH 3241865984,3241866239,RO 3241866240,3241866751,DE +3241866752,3241867007,UA 3241867008,3241867263,FR 3241867264,3241867519,UA 3241867520,3241867775,PL @@ -65048,12 +67517,13 @@ 3244823296,3244823551,FR 3244823552,3244823807,GE 3244823808,3244824063,RO -3244824064,3244824319,MT +3244824064,3244824319,UA 3244824320,3244824575,SI 3244824576,3244824831,RU 3244824832,3244825087,GB 3244825088,3244825343,DE -3244825344,3244826111,RU +3244825344,3244825599,UA +3244825600,3244826111,RU 3244826112,3244826367,RO 3244826368,3244826623,CH 3244826624,3244826879,DE @@ -65137,7 +67607,7 @@ 3244847872,3244848127,IL 3244848128,3244848383,CH 3244848384,3244848639,IL -3244848640,3244848895,HU +3244848640,3244848895,DE 3244848896,3244849151,IL 3244849152,3244849407,AT 3244849408,3244849663,RO @@ -65261,7 +67731,7 @@ 3244883200,3244883455,UA 3244883456,3244883711,CZ 3244883712,3244883967,NL -3244883968,3244884223,MD +3244883968,3244884223,UA 3244884224,3244884479,FR 3244884480,3244884735,IR 3244884736,3244884991,NL @@ -65480,6 +67950,7 @@ 3244942848,3244943103,DE 3244943104,3244943359,GB 3244943360,3244943615,FR +3244943616,3244943871,NL 3244943872,3244944127,TR 3244944128,3244944639,RU 3244944640,3244944895,GE @@ -65746,7 +68217,6 @@ 3245168896,3245169151,RU 3245169152,3245169407,IT 3245169408,3245169919,PL -3245169920,3245170175,UA 3245170176,3245170431,GB 3245170432,3245170687,CH 3245170688,3245171711,DE @@ -65810,7 +68280,6 @@ 3245207552,3245208063,UA 3245208064,3245208575,DE 3245208576,3245209087,PL -3245209088,3245209599,RU 3245209600,3245210111,UA 3245210112,3245210623,FR 3245210624,3245211135,HU @@ -65994,7 +68463,7 @@ 3245319680,3245319935,PL 3245319936,3245320191,DE 3245320192,3245320447,GB -3245320704,3245320959,DE +3245320448,3245320959,DE 3245320960,3245321215,IE 3245321216,3245321471,NL 3245321472,3245321727,UA @@ -66063,7 +68532,9 @@ 3245904200,3245904207,GB 3245904208,3245906367,IE 3245906368,3245906431,GB -3245906432,3245910831,IE +3245906432,3245909567,IE +3245909568,3245909631,US +3245909632,3245910831,IE 3245910832,3245910847,GB 3245910848,3245921279,IE 3245921280,3245921535,BE @@ -66501,7 +68972,6 @@ 3247347968,3247348223,HU 3247348224,3247348991,FI 3247348992,3247349247,DE -3247349248,3247349759,FI 3247349760,3247353855,SE 3247353856,3247362047,FI 3247362048,3247362303,RO @@ -66644,7 +69114,7 @@ 3248488704,3248491519,NO 3248491520,3248492031,RU 3248492032,3248496895,NO -3248496896,3248497151,IL +3248496896,3248497151,US 3248497152,3248498431,NO 3248498432,3248498687,DE 3248498688,3248513279,NO @@ -66851,7 +69321,7 @@ 3249136128,3249137151,RU 3249137152,3249137663,FR 3249137664,3249138175,PL -3249138176,3249138687,JM +3249138176,3249138687,UA 3249139200,3249139711,RU 3249139712,3249140223,UA 3249140224,3249140735,IT @@ -66900,7 +69370,8 @@ 3249698560,3249698815,HU 3249698816,3249699839,GB 3249699840,3249700863,UA -3249700864,3249701887,SE +3249700864,3249701631,SE +3249701632,3249701887,RU 3249701888,3249702143,PL 3249702144,3249702399,FI 3249702400,3249702655,FR @@ -67096,7 +69567,6 @@ 3250416128,3250417663,DE 3250417664,3250418175,IT 3250418176,3250418687,DE -3250418688,3250419199,PL 3250419200,3250419711,NO 3250419712,3250420223,RU 3250420224,3250420735,IR @@ -67115,7 +69585,7 @@ 3250425856,3250426111,LT 3250426112,3250426367,NO 3250426368,3250426623,AT -3250426624,3250426879,BE +3250426624,3250426879,FR 3250426880,3250427135,JO 3250427136,3250427391,NL 3250427392,3250429951,DE @@ -67260,7 +69730,6 @@ 3251122176,3251122687,CH 3251122688,3251123199,PL 3251123200,3251123711,FR -3251123712,3251124223,RO 3251124224,3251124735,NL 3251124736,3251125247,FR 3251125248,3251125759,BE @@ -67590,6 +70059,7 @@ 3251265536,3251267839,NL 3251267840,3251268351,GB 3251268352,3251268607,NL +3251268608,3251268863,BG 3251268864,3251269119,NL 3251269120,3251269375,DK 3251269376,3251269631,FR @@ -67656,6 +70126,7 @@ 3251355648,3251356159,GB 3251356160,3251356671,AT 3251356672,3251357183,EE +3251357184,3251357695,BG 3251357696,3251358207,ES 3251358208,3251358719,RU 3251358720,3251359231,RO @@ -67804,9 +70275,8 @@ 3252407584,3252407599,NG 3252407600,3252407615,BJ 3252407616,3252407711,NO -3252407712,3252407743,NG -3252407744,3252407751,NO -3252407752,3252407759,AO +3252407712,3252407727,NG +3252407728,3252407759,NO 3252407760,3252407767,NE 3252407768,3252407775,CD 3252407776,3252407791,GH @@ -67815,21 +70285,16 @@ 3252408000,3252408159,NO 3252408160,3252408191,GQ 3252408192,3252408319,NO -3252408320,3252408335,TR -3252408336,3252408343,GN -3252408344,3252408351,LT -3252408352,3252408367,GN +3252408320,3252408335,LT +3252408336,3252408367,GN 3252408368,3252408375,NG 3252408376,3252408383,LT 3252408384,3252408391,BI 3252408392,3252408415,LT 3252408416,3252408479,NO -3252408480,3252408495,FI -3252408496,3252408511,LT +3252408480,3252408511,LT 3252408512,3252408519,AF -3252408520,3252408543,LT -3252408544,3252408551,AF -3252408552,3252408639,LT +3252408520,3252408639,LT 3252408640,3252408671,CF 3252408672,3252408703,SO 3252408704,3252408735,NG @@ -67853,7 +70318,11 @@ 3252409184,3252409191,UG 3252409192,3252409199,ZW 3252409200,3252409207,TZ -3252409208,3252409263,LT +3252409208,3252409215,LT +3252409216,3252409223,BW +3252409224,3252409231,LT +3252409232,3252409247,UG +3252409248,3252409263,LT 3252409264,3252409343,SO 3252409344,3252409375,TD 3252409376,3252409407,LT @@ -67866,13 +70335,12 @@ 3252409600,3252409615,MA 3252409616,3252409631,LT 3252409632,3252409647,AO -3252409648,3252409855,LT -3252409856,3252410111,BW -3252410112,3252410367,LT -3252410368,3252410391,BW +3252409648,3252410375,LT +3252410376,3252410391,BW 3252410392,3252410431,LT 3252410432,3252410463,BI -3252410464,3252410623,LT +3252410464,3252410495,LT +3252410496,3252410623,BI 3252410624,3252410751,ZW 3252410752,3252411135,LT 3252411136,3252411167,IQ @@ -67898,16 +70366,21 @@ 3252414512,3252414527,MR 3252414528,3252414591,LT 3252414592,3252414599,GH -3252414600,3252414623,LT +3252414600,3252414607,LT +3252414608,3252414623,ER 3252414624,3252414639,TZ 3252414640,3252414647,GH 3252414648,3252414655,NE 3252414656,3252414719,ER -3252414720,3252414975,LT -3252414976,3252415007,IQ +3252414720,3252414983,LT +3252414984,3252415007,IQ 3252415008,3252415015,LT -3252415016,3252415119,IQ -3252415120,3252415551,LT +3252415016,3252415127,IQ +3252415128,3252415135,LT +3252415136,3252415151,IQ +3252415152,3252415199,LT +3252415200,3252415231,IQ +3252415232,3252415551,LT 3252415552,3252415567,NG 3252415568,3252415743,LT 3252415744,3252415775,GB @@ -67919,9 +70392,9 @@ 3252416960,3252417023,GN 3252417024,3252417279,LT 3252417280,3252417287,IQ -3252417288,3252417359,AF -3252417360,3252417535,LT -3252417536,3252417855,NG +3252417288,3252417375,AF +3252417376,3252417791,LT +3252417792,3252417855,NG 3252417856,3252417919,LT 3252417920,3252417935,MW 3252417936,3252417951,ZM @@ -67942,10 +70415,9 @@ 3252419168,3252419199,CD 3252419200,3252419215,LT 3252419216,3252419247,GN -3252419248,3252419263,SN +3252419248,3252419263,LT 3252419264,3252419279,TZ -3252419280,3252419295,LT -3252419296,3252419311,SN +3252419280,3252419311,LT 3252419312,3252419327,ZM 3252419328,3252419343,GH 3252419344,3252419359,LT @@ -67953,7 +70425,9 @@ 3252419424,3252419839,LT 3252419840,3252419911,IQ 3252419912,3252419919,LT -3252419920,3252419951,IQ +3252419920,3252419927,IQ +3252419928,3252419935,LT +3252419936,3252419951,IQ 3252419952,3252419991,LT 3252419992,3252420007,IQ 3252420008,3252420031,LT @@ -67976,12 +70450,10 @@ 3252420336,3252420367,LT 3252420368,3252420415,IQ 3252420416,3252420431,GB -3252420432,3252420447,IQ -3252420448,3252420455,LT -3252420456,3252420463,IQ +3252420432,3252420463,IQ 3252420464,3252420471,AF -3252420472,3252420575,LT -3252420576,3252420591,IQ +3252420472,3252420583,LT +3252420584,3252420591,IQ 3252420592,3252421119,LT 3252421120,3252421631,NO 3252421632,3252424703,LT @@ -67999,13 +70471,15 @@ 3252425472,3252425543,AO 3252425544,3252425551,LT 3252425552,3252425575,AO -3252425576,3252426239,LT +3252425576,3252425727,LT +3252425728,3252425983,A2 +3252425984,3252426239,LT 3252426240,3252426751,BW 3252426752,3252427263,MZ 3252427264,3252427519,NG 3252427520,3252427775,LT 3252427776,3252428287,MW -3252428288,3252428351,NG +3252428288,3252428351,LT 3252428352,3252428383,AO 3252428384,3252428415,LT 3252428416,3252428447,KE @@ -68035,15 +70509,15 @@ 3252434688,3252434703,GH 3252434704,3252434711,TZ 3252434712,3252434719,LT -3252434720,3252434735,GH -3252434736,3252435199,LT +3252434720,3252434743,GH +3252434744,3252435199,LT 3252435200,3252435247,TZ 3252435248,3252435295,LT 3252435296,3252435311,TZ 3252435312,3252435319,LT 3252435320,3252435327,MZ 3252435328,3252435343,CD -3252435344,3252435359,LT +3252435344,3252435359,BF 3252435360,3252435375,CD 3252435376,3252435415,GN 3252435416,3252435423,CD @@ -68066,14 +70540,14 @@ 3252436320,3252436335,LT 3252436336,3252436351,ZM 3252436352,3252436383,GN -3252436384,3252436399,SN +3252436384,3252436399,LR 3252436400,3252436447,LT 3252436448,3252436479,ER 3252436480,3252436991,LT 3252436992,3252437503,NG 3252437504,3252438015,LT 3252438016,3252438271,TR -3252438272,3252438527,MD +3252438272,3252438527,LT 3252438528,3252438783,CM 3252438784,3252439039,LT 3252439040,3252439055,BJ @@ -68113,7 +70587,9 @@ 3252450880,3252450911,NO 3252450912,3252451071,LT 3252451072,3252451327,CH -3252451328,3252451839,LT +3252451328,3252451583,LT +3252451584,3252451599,GM +3252451600,3252451839,LT 3252451840,3252451855,NO 3252451856,3252451967,LT 3252451968,3252451999,NO @@ -68137,9 +70613,7 @@ 3252452504,3252452511,SD 3252452512,3252452607,LT 3252452608,3252452735,TD -3252452736,3252452863,LT -3252452864,3252452879,TZ -3252452880,3252453119,LT +3252452736,3252453119,LT 3252453120,3252453151,NG 3252453152,3252453247,LT 3252453248,3252453271,NG @@ -68185,7 +70659,11 @@ 3252505344,3252505855,US 3252505856,3252507135,SE 3252507136,3252507647,EU -3252507648,3252509951,GB +3252507648,3252508415,GB +3252508416,3252508671,BE +3252508672,3252508927,GB +3252508928,3252509183,BE +3252509184,3252509951,GB 3252509952,3252510719,CH 3252510720,3252514815,FR 3252514816,3252515071,SI @@ -68588,7 +71066,9 @@ 3253985280,3253993471,GB 3253993472,3254067199,BE 3254067200,3254069247,CZ -3254069248,3254124543,BE +3254069248,3254077439,BE +3254077440,3254083583,HU +3254083584,3254124543,BE 3254124544,3254156799,CH 3254156800,3254157055,LI 3254157056,3254177279,CH @@ -68764,7 +71244,7 @@ 3254703616,3254704127,NL 3254704128,3254705663,UA 3254705664,3254706175,GR -3254706176,3254706687,RU +3254706176,3254707199,RU 3254707200,3254707711,TR 3254707712,3254708223,RO 3254708224,3254708735,UA @@ -68794,6 +71274,7 @@ 3254784000,3254784255,IT 3254784256,3254784511,CH 3254784512,3254785279,LT +3254785280,3254785535,KZ 3254796288,3254797311,SE 3254797312,3254798335,RU 3254798336,3254799359,AT @@ -69122,9 +71603,13 @@ 3255243680,3255243711,LU 3255243712,3255245599,BE 3255245600,3255245631,LU -3255245632,3255245687,BE +3255245632,3255245655,BE +3255245656,3255245663,LU +3255245664,3255245687,BE 3255245688,3255245695,LU -3255245696,3255247455,BE +3255245696,3255246591,BE +3255246592,3255246623,LU +3255246624,3255247455,BE 3255247456,3255247487,LU 3255247488,3255247615,BE 3255247616,3255247631,LU @@ -69198,9 +71683,7 @@ 3255278048,3255278063,LU 3255278064,3255278607,BE 3255278608,3255278623,LU -3255278624,3255278719,BE -3255278720,3255278751,LU -3255278752,3255279007,BE +3255278624,3255279007,BE 3255279008,3255279039,LU 3255279040,3255279087,BE 3255279088,3255279103,LU @@ -69212,7 +71695,9 @@ 3255280048,3255280055,LU 3255280056,3255281407,BE 3255281408,3255281439,LU -3255281440,3255283415,BE +3255281440,3255281759,BE +3255281760,3255281791,LU +3255281792,3255283415,BE 3255283416,3255283423,LU 3255283424,3255283927,BE 3255283928,3255283931,LU @@ -69308,7 +71793,7 @@ 3255366144,3255367167,DK 3255367168,3255367679,RU 3255367680,3255368191,UA -3255368192,3255368703,MD +3255368192,3255368703,LV 3255368704,3255369215,CZ 3255369216,3255369727,GB 3255369728,3255370239,LU @@ -69475,7 +71960,7 @@ 3255566336,3255574527,SE 3255574528,3255578623,CZ 3255578624,3255582719,SE -3255590912,3255599103,UA +3255582720,3255599103,UA 3255599104,3255615487,CH 3255615488,3255623679,DE 3255623680,3255631871,BG @@ -69557,6 +72042,7 @@ 3256414720,3256415231,DE 3256415232,3256415743,PL 3256415744,3256416255,UA +3256416256,3256416767,RS 3256416768,3256417279,GB 3256417280,3256417791,NO 3256417792,3256418303,GB @@ -69653,8 +72139,8 @@ 3256698624,3256698879,GB 3256698880,3256699135,DE 3256699136,3256699391,NL -3256699392,3256699903,GB -3256699904,3256701183,EU +3256699392,3256700415,GB +3256700416,3256701183,EU 3256701184,3256701439,BE 3256701440,3256701695,GB 3256701696,3256705279,EU @@ -69741,7 +72227,9 @@ 3257011200,3257011455,BG 3257011456,3257058815,GB 3257058816,3257059071,PL -3257059072,3257144831,GB +3257059072,3257139199,GB +3257139200,3257139455,DK +3257139456,3257144831,GB 3257144832,3257145087,FR 3257145088,3257180159,GB 3257180160,3257180415,TR @@ -69906,6 +72394,7 @@ 3257561088,3257561599,UA 3257561600,3257562111,DE 3257562112,3257563647,PL +3257563648,3257564159,NL 3257564160,3257564671,GB 3257564672,3257565183,RO 3257565184,3257570303,CY @@ -71008,6 +73497,7 @@ 3258903040,3258903295,FR 3258903296,3258903551,GB 3258903552,3258903807,DE +3258903808,3258904063,AT 3258904064,3258941439,GB 3258941440,3258943487,PL 3258943488,3258944511,BG @@ -71029,9 +73519,7 @@ 3259032440,3259032443,ES 3259032444,3259032551,DE 3259032552,3259032559,IT -3259032560,3259032831,DE -3259032832,3259032879,GB -3259032880,3259034319,DE +3259032560,3259034319,DE 3259034320,3259034327,GB 3259034328,3259035447,DE 3259035448,3259035455,IT @@ -71327,6 +73815,7 @@ 3260481536,3260547071,RU 3260547072,3260547327,DE 3260547328,3260547583,UA +3260547584,3260547839,NL 3260547840,3260548095,PL 3260548096,3260548351,IE 3260548352,3260548607,DK @@ -71375,6 +73864,7 @@ 3260600320,3260601343,RU 3260601344,3260601855,CH 3260601856,3260602367,PL +3260602368,3260602879,DK 3260602880,3260603903,UA 3260603904,3260604415,FR 3260604416,3260604927,PL @@ -71587,47 +74077,41 @@ 3262027776,3262029823,FI 3262029824,3262030847,US 3262030848,3262031871,FR -3262031872,3262033919,FI -3262033920,3262033935,AX -3262033936,3262033951,FI -3262033952,3262033983,AX -3262033984,3262033991,FI -3262033992,3262033999,AX -3262034000,3262034015,FI -3262034016,3262034039,AX -3262034040,3262034111,FI -3262034112,3262034127,AX -3262034128,3262034143,FI -3262034144,3262034295,AX -3262034296,3262034303,FI -3262034304,3262034447,AX -3262034448,3262034451,FI -3262034452,3262034463,AX -3262034464,3262034495,FI -3262034496,3262034511,AX -3262034512,3262034519,FI -3262034520,3262034655,AX -3262034656,3262034687,FI -3262034688,3262034735,AX -3262034736,3262034767,FI -3262034768,3262034879,AX -3262034880,3262034943,FI -3262034944,3262035967,AX -3262035968,3262036111,FI -3262036112,3262036119,AX -3262036120,3262036127,FI -3262036128,3262036159,AX -3262036160,3262036223,FI -3262036224,3262036335,AX -3262036336,3262036351,FI -3262036352,3262036439,AX -3262036440,3262036447,FI -3262036448,3262036623,AX -3262036624,3262036643,FI -3262036644,3262036671,AX -3262036672,3262036687,FI -3262036688,3262036703,AX -3262036704,3262036719,FI +3262031872,3262034047,FI +3262034048,3262034119,AX +3262034120,3262034123,FI +3262034124,3262034127,AX +3262034128,3262034431,FI +3262034432,3262034447,AX +3262034448,3262034455,FI +3262034456,3262034463,AX +3262034464,3262034527,FI +3262034528,3262034559,AX +3262034560,3262034687,FI +3262034688,3262034719,AX +3262034720,3262034783,FI +3262034784,3262034791,AX +3262034792,3262034839,FI +3262034840,3262034847,AX +3262034848,3262034943,FI +3262034944,3262035455,AX +3262035456,3262035487,FI +3262035488,3262035551,AX +3262035552,3262036143,FI +3262036144,3262036151,AX +3262036152,3262036287,FI +3262036288,3262036303,AX +3262036304,3262036311,FI +3262036312,3262036335,AX +3262036336,3262036367,FI +3262036368,3262036383,AX +3262036384,3262036415,FI +3262036416,3262036431,AX +3262036432,3262036463,FI +3262036464,3262036479,AX +3262036480,3262036607,FI +3262036608,3262036615,AX +3262036616,3262036719,FI 3262036720,3262038015,AX 3262038016,3262038271,FR 3262038272,3262038527,RU @@ -71640,8 +74124,7 @@ 3262040064,3262040319,PL 3262040320,3262040575,ES 3262040576,3262040831,RU -3262040832,3262041087,GB -3262041088,3262041343,HU +3262040832,3262041343,GB 3262041344,3262041599,BG 3262041600,3262041855,DK 3262041856,3262042367,FR @@ -71681,23 +74164,35 @@ 3262096128,3262096383,AX 3262096384,3262099199,FI 3262099200,3262099455,NL -3262099456,3262106111,FI -3262106112,3262106623,AX -3262106624,3262108671,FI +3262099456,3262108671,FI 3262108672,3262108927,RU 3262108928,3262114047,FI 3262114048,3262114303,SE 3262114304,3262115071,FI 3262115072,3262115327,RU 3262115328,3262119935,FI -3262119936,3262122367,AX -3262122368,3262122383,FI -3262122384,3262122399,AX -3262122400,3262122431,FI -3262122432,3262123519,AX -3262123520,3262123527,FI -3262123528,3262123775,AX -3262123776,3262124031,FI +3262119936,3262120447,AX +3262120448,3262120703,FI +3262120704,3262121599,AX +3262121600,3262121663,FI +3262121664,3262121727,AX +3262121728,3262121983,FI +3262121984,3262122007,AX +3262122008,3262122015,FI +3262122016,3262122039,AX +3262122040,3262122143,FI +3262122144,3262122159,AX +3262122160,3262122239,FI +3262122240,3262122367,AX +3262122368,3262122431,FI +3262122432,3262122455,AX +3262122456,3262122463,FI +3262122464,3262122591,AX +3262122592,3262122631,FI +3262122632,3262122639,AX +3262122640,3262122751,FI +3262122752,3262122815,AX +3262122816,3262124031,FI 3262124032,3262128127,DE 3262128128,3262136319,GB 3262136320,3262137599,EU @@ -71827,9 +74322,8 @@ 3262447616,3262460415,PT 3262460416,3262460543,UA 3262460544,3262460671,RU -3262460672,3262460799,AE +3262460672,3262460927,AE 3262460928,3262461055,HU -3262461056,3262461183,LV 3262461184,3262461311,SN 3262461312,3262461439,NO 3262461440,3262461567,DE @@ -71860,7 +74354,9 @@ 3262472336,3262472339,US 3262472340,3262472351,DE 3262472352,3262472355,NL -3262472356,3262472359,ES +3262472356,3262472356,ES +3262472357,3262472358,CH +3262472359,3262472359,ES 3262472360,3262472363,NL 3262472364,3262472367,GB 3262472368,3262472371,NL @@ -72038,9 +74534,7 @@ 3262473484,3262473484,VE 3262473485,3262473485,US 3262473486,3262473486,CA -3262473487,3262473513,US -3262473514,3262473514,PR -3262473515,3262473516,US +3262473487,3262473516,US 3262473517,3262473517,CN 3262473518,3262473526,US 3262473527,3262473527,CN @@ -73133,8 +75627,7 @@ 3262478510,3262478513,DE 3262478514,3262478514,SE 3262478515,3262478515,PT -3262478516,3262478516,ES -3262478517,3262478519,DE +3262478516,3262478519,DE 3262478520,3262478520,CH 3262478521,3262478521,NL 3262478522,3262478522,QA @@ -73406,8 +75899,7 @@ 3262478913,3262478913,FR 3262478914,3262478914,DE 3262478915,3262478915,NL -3262478916,3262478919,DE -3262478920,3262478920,ZA +3262478916,3262478920,DE 3262478921,3262478921,AT 3262478922,3262478924,DE 3262478925,3262478925,NL @@ -73775,8 +76267,7 @@ 3262479427,3262479427,IT 3262479428,3262479429,FR 3262479430,3262479430,GB -3262479431,3262479432,DE -3262479433,3262479433,ZA +3262479431,3262479433,DE 3262479434,3262479434,IT 3262479435,3262479437,DE 3262479438,3262479438,IT @@ -74669,8 +77160,8 @@ 3263499008,3263499775,EU 3263499776,3263500031,FR 3263500032,3263500287,GB -3263500288,3263500799,EU -3263500800,3263501341,GB +3263500288,3263501311,EU +3263501312,3263501341,GB 3263501342,3263501343,EU 3263501344,3263501439,GB 3263501440,3263501503,US @@ -74679,27 +77170,22 @@ 3263501528,3263501535,GB 3263501536,3263501551,DE 3263501552,3263501823,GB -3263501824,3263502079,EG -3263502080,3263503103,EU -3263503104,3263503167,DE +3263501824,3263503135,EU +3263503136,3263503167,DE 3263503168,3263503199,EU 3263503200,3263503267,DE 3263503268,3263503271,EU 3263503272,3263503279,DE 3263503280,3263503295,EU 3263503296,3263503359,DE -3263503360,3263503871,EU -3263503872,3263504127,GB +3263503360,3263504127,EU 3263504128,3263504255,EG 3263504256,3263506687,EU 3263506688,3263506815,DE 3263506816,3263506943,US 3263506944,3263507199,EU 3263507200,3263507455,US -3263507456,3263508223,EU -3263508224,3263508479,GB -3263508480,3263509503,EU -3263509504,3263509759,SE +3263507456,3263509759,EU 3263509760,3263509791,GB 3263509792,3263509807,IE 3263509808,3263509831,GB @@ -74717,9 +77203,7 @@ 3263512064,3263512311,GB 3263512312,3263513343,EU 3263513344,3263513599,US -3263513600,3263513855,EU -3263513856,3263514111,RU -3263514112,3263516671,EU +3263513600,3263516671,EU 3263516672,3263516927,US 3263516928,3263517183,GB 3263517184,3263517695,EU @@ -74727,16 +77211,12 @@ 3263517952,3263518463,GB 3263518464,3263518719,FR 3263518720,3263518751,IR -3263518752,3263518975,EU -3263518976,3263519231,GB -3263519232,3263519743,EU +3263518752,3263519743,EU 3263519744,3263519759,GB 3263519760,3263520255,EU 3263520256,3263520511,FR 3263520512,3263520767,US -3263520768,3263521791,EU -3263521792,3263522047,GB -3263522048,3263523071,EU +3263520768,3263523071,EU 3263523072,3263523583,DE 3263523584,3263525759,EU 3263525760,3263525887,DE @@ -74745,18 +77225,14 @@ 3263527680,3263527935,DE 3263527936,3263528191,EU 3263528192,3263528447,FR -3263528448,3263528703,EU -3263528704,3263528959,GB -3263528960,3263530495,EU +3263528448,3263530495,EU 3263530496,3263530751,GB 3263530752,3263531519,EU 3263531520,3263531535,DE 3263531536,3263531551,EU 3263531552,3263531775,DE -3263531776,3263532543,EU -3263532544,3263532799,GB -3263532800,3263537663,EU -3263537664,3263538431,TR +3263531776,3263538175,EU +3263538176,3263538431,TR 3263538432,3263540223,EU 3263540224,3263540479,TR 3263540480,3263540735,GB @@ -74767,13 +77243,11 @@ 3263557888,3263558655,EU 3263558656,3263558911,TR 3263558912,3263559679,GB -3263559680,3263560191,TR -3263560192,3263560447,EU +3263559680,3263560447,EU 3263560448,3263560703,TR -3263560704,3263560959,EU -3263560960,3263561231,TR -3263561232,3263561471,EU -3263561472,3263561727,TR +3263560704,3263561215,EU +3263561216,3263561231,TR +3263561232,3263561727,EU 3263561728,3263627263,NL 3263627264,3263657471,RU 3263657472,3263657727,KZ @@ -74801,9 +77275,7 @@ 3263774464,3263774719,BE 3263774720,3263792351,FI 3263792352,3263792367,SE -3263792368,3263792383,FI -3263792384,3263792639,AX -3263792640,3263793151,FI +3263792368,3263793151,FI 3263793152,3263793407,BE 3263793408,3263815123,FI 3263815124,3263815127,AX @@ -74831,7 +77303,6 @@ 3264015360,3264015615,DK 3264015616,3264015871,UA 3264015872,3264016127,PT -3264016128,3264016383,DE 3264016384,3264016639,SE 3264016640,3264016895,PL 3264016896,3264017151,GB @@ -75133,7 +77604,6 @@ 3264665600,3264666111,RO 3264666112,3264666623,IL 3264666624,3264667135,UA -3264667136,3264667647,SE 3264667648,3264668159,BE 3264668160,3264669183,DE 3264669184,3264669695,PL @@ -75223,14 +77693,13 @@ 3264845312,3264845951,DE 3264845952,3264846079,GB 3264846080,3264846207,UG -3264846208,3264846335,PL 3264846336,3264846463,GB 3264846464,3264846591,NO 3264846592,3264846719,US 3264846720,3264846847,RU 3264846848,3264846911,DK 3264846912,3264846975,SK -3264847040,3264847103,GB +3264846976,3264847103,GB 3264847104,3264847135,FR 3264847136,3264847167,ES 3264847168,3264847199,IE @@ -75239,7 +77708,6 @@ 3264847360,3264847487,FR 3264847488,3264847615,RU 3264847616,3264847679,PL -3264847680,3264847743,LV 3264847744,3264847807,BE 3264847808,3264847871,SE 3264847872,3264849919,DE @@ -75292,8 +77760,8 @@ 3264906912,3264906919,GR 3264906920,3264906983,CY 3264906984,3264906995,GR -3264906996,3264907135,CY -3264907136,3264907143,GR +3264906996,3264907139,CY +3264907140,3264907143,GR 3264907144,3264907151,CY 3264907152,3264907155,GR 3264907156,3264907639,CY @@ -75322,8 +77790,8 @@ 3264907964,3264907971,GR 3264907972,3264907987,CY 3264907988,3264907991,GR -3264907992,3264908011,CY -3264908012,3264908019,GR +3264907992,3264908007,CY +3264908008,3264908019,GR 3264908020,3264908023,CY 3264908024,3264908031,GR 3264908032,3264908063,CY @@ -75535,7 +78003,6 @@ 3265604096,3265604351,SA 3265604352,3265604607,FR 3265604608,3265604863,CH -3265604864,3265605119,FR 3265605120,3265605375,UA 3265605376,3265605631,CZ 3265605632,3265605887,PL @@ -75749,9 +78216,7 @@ 3266804736,3266804991,NL 3266804992,3266805503,GB 3266805504,3266805759,NL -3266805760,3266809343,AT -3266809344,3266809599,LI -3266809600,3266813951,AT +3266805760,3266813951,AT 3266813952,3266822143,UA 3266822144,3266830335,FR 3266830336,3266835151,BE @@ -76132,9 +78597,7 @@ 3267666272,3267666431,GR 3267666432,3267666447,GB 3267666448,3267666463,EU -3267666464,3267666479,GB -3267666480,3267666495,EU -3267666496,3267666543,GB +3267666464,3267666543,GB 3267666544,3267666575,EU 3267666576,3267666951,GB 3267666952,3267666959,EU @@ -76396,10 +78859,10 @@ 3268238360,3268238367,DE 3268238368,3268238463,GB 3268238464,3268238471,DE -3268238472,3268238535,GB -3268238536,3268238559,EU -3268238560,3268238591,GB -3268238592,3268239103,EU +3268238472,3268238759,GB +3268238760,3268238767,EU +3268238768,3268238815,GB +3268238816,3268239103,EU 3268239104,3268239359,GB 3268239360,3268239583,EU 3268239584,3268240127,GB @@ -76594,8 +79057,7 @@ 3268345856,3268411391,GB 3268411392,3268424959,AT 3268424960,3268425727,CH -3268425728,3268425983,LI -3268425984,3268426495,AT +3268425728,3268426495,AT 3268426496,3268428031,CH 3268428032,3268428287,AT 3268428288,3268428543,CH @@ -76603,9 +79065,7 @@ 3268429056,3268429311,CH 3268429312,3268429567,AT 3268429568,3268430079,CH -3268430080,3268430847,AT -3268430848,3268431103,LI -3268431104,3268476927,AT +3268430080,3268476927,AT 3268476928,3268542463,CH 3268542464,3268607999,PT 3268608000,3268673535,FI @@ -77166,9 +79626,7 @@ 3271280688,3271280703,SE 3271280704,3271280719,FI 3271280720,3271280735,SE -3271280736,3271282687,FI -3271282688,3271284735,AX -3271284736,3271290623,FI +3271280736,3271290623,FI 3271290624,3271290879,BE 3271290880,3271299071,FI 3271299072,3271299199,AX @@ -77378,7 +79836,7 @@ 3271803904,3271804927,UA 3271804928,3271805951,PL 3271805952,3271806975,UA -3271806976,3271807999,GB +3271806976,3271807999,EU 3271808000,3271810047,DE 3271810048,3271811071,PL 3271811072,3271812095,UA @@ -77626,18 +80084,18 @@ 3272178560,3272178623,UA 3272178624,3272212479,RU 3272212480,3272212991,GB -3272212992,3272213375,EU +3272212992,3272213375,ES 3272213376,3272213391,IT 3272213392,3272213399,GB -3272213400,3272213407,EU +3272213400,3272213407,ES 3272213408,3272213415,NL -3272213416,3272213423,EU +3272213416,3272213423,ES 3272213424,3272213431,NL 3272213432,3272213455,GB -3272213456,3272213471,EU +3272213456,3272213471,ES 3272213472,3272213487,CY 3272213488,3272213495,GB -3272213496,3272213503,EU +3272213496,3272213503,ES 3272213504,3272213567,IT 3272213568,3272213575,GB 3272213576,3272213583,IE @@ -78057,9 +80515,7 @@ 3272715016,3272715023,GB 3272715024,3272715135,SE 3272715136,3272715263,GB -3272715264,3272733119,SE -3272733120,3272733135,DE -3272733136,3272733983,SE +3272715264,3272733983,SE 3272733984,3272733991,RU 3272733992,3272736767,SE 3272736768,3272737791,IT @@ -78397,7 +80853,7 @@ 3273192448,3273192959,DK 3273192960,3273193471,FR 3273193472,3273193983,PL -3273193984,3273194495,GB +3273193984,3273194495,EU 3273194496,3273195007,UA 3273195008,3273195519,RU 3273195520,3273230983,FR @@ -78444,8 +80900,8 @@ 3273327280,3273327287,DE 3273327288,3273327359,EU 3273327360,3273327423,IE -3273327424,3273327495,GB -3273327496,3273327519,EU +3273327424,3273327503,GB +3273327504,3273327519,EU 3273327520,3273327551,IE 3273327552,3273328511,EU 3273328512,3273328639,DE @@ -78486,8 +80942,8 @@ 3273336000,3273336847,EU 3273336848,3273336863,DE 3273336864,3273336871,GB -3273336872,3273336879,DE -3273336880,3273336959,EU +3273336872,3273336895,DE +3273336896,3273336959,EU 3273336960,3273337087,DE 3273337088,3273337855,EU 3273337856,3273338111,DE @@ -78561,8 +81017,8 @@ 3273364992,3273365247,DE 3273365248,3273365503,EU 3273365504,3273365519,NL -3273365520,3273365527,GB -3273365528,3273365759,NL +3273365520,3273365543,GB +3273365544,3273365759,NL 3273365760,3273365767,GB 3273365768,3273365887,EU 3273365888,3273366015,FR @@ -78648,7 +81104,7 @@ 3273388928,3273389055,DE 3273389056,3273390079,EU 3273390080,3273390111,DE -3273390112,3273390143,EU +3273390112,3273390143,US 3273390144,3273390207,DE 3273390208,3273390335,EU 3273390336,3273390463,DE @@ -78688,7 +81144,6 @@ 3273438208,3273438719,IL 3273438720,3273439231,PL 3273439232,3273439743,RO -3273439744,3273440255,UA 3273440256,3273440767,RO 3273440768,3273441279,AT 3273441280,3273441463,FR @@ -78752,11 +81207,11 @@ 3273803776,3273804287,CH 3273804288,3273804799,UA 3273804800,3273805311,RO -3273805312,3273805823,GB +3273805312,3273805823,GI 3273805824,3273806335,PL 3273806336,3273806847,DE 3273806848,3273807359,SE -3273807360,3273807871,A2 +3273807360,3273807871,LU 3273807872,3273808383,CH 3273808384,3273808895,UA 3273808896,3273809407,GB @@ -79156,9 +81611,7 @@ 3274604544,3274612735,TR 3274612736,3274620927,RU 3274620928,3274629119,FR -3274629120,3274629151,LU -3274629152,3274629159,A2 -3274629160,3274637175,LU +3274629120,3274637175,LU 3274637176,3274637183,A2 3274637184,3274637311,LU 3274637312,3274670079,CZ @@ -79214,6 +81667,7 @@ 3274698752,3274699007,GB 3274699008,3274699263,FR 3274699264,3274699519,RO +3274699520,3274699775,SI 3274699776,3274700031,GB 3274700032,3274700287,CH 3274700288,3274700543,PL @@ -79487,46 +81941,52 @@ 3275424256,3275425791,EU 3275425792,3275426599,GB 3275426600,3275426607,EU -3275426608,3275426655,GB -3275426656,3275426815,EU -3275426816,3275427199,GB -3275427200,3275427327,EU +3275426608,3275426687,GB +3275426688,3275426815,EU +3275426816,3275427215,GB +3275427216,3275427231,EU +3275427232,3275427263,GB +3275427264,3275427327,EU 3275427328,3275427583,GB 3275427584,3275427839,EU 3275427840,3275428375,GB -3275428376,3275429887,EU +3275428376,3275428383,EU +3275428384,3275428399,GB +3275428400,3275429887,EU 3275429888,3275430143,GB 3275430144,3275430271,EU 3275430272,3275430399,GB 3275430400,3275430591,EU 3275430592,3275430623,GB 3275430624,3275431935,EU -3275431936,3275432447,GB -3275432448,3275433983,EU +3275431936,3275432703,GB +3275432704,3275433983,EU 3275433984,3275437567,GB 3275437568,3275438079,EU -3275438080,3275438607,GB -3275438608,3275440127,EU +3275438080,3275438615,GB +3275438616,3275440127,EU 3275440128,3275440639,GB 3275440640,3275442175,EU 3275442176,3275442719,GB 3275442720,3275444223,EU 3275444224,3275444735,GB 3275444736,3275446271,EU -3275446272,3275446831,GB -3275446832,3275446847,EU -3275446848,3275446943,GB -3275446944,3275448319,EU +3275446272,3275446959,GB +3275446960,3275448319,EU 3275448320,3275449519,GB 3275449520,3275449527,FR 3275449528,3275450879,GB 3275450880,3275451231,EU 3275451232,3275451263,GB 3275451264,3275452415,EU -3275452416,3275454111,GB -3275454112,3275454463,EU -3275454464,3275456383,GB -3275456384,3275456511,EU +3275452416,3275454127,GB +3275454128,3275454143,EU +3275454144,3275454263,GB +3275454264,3275454271,EU +3275454272,3275454335,GB +3275454336,3275454463,EU +3275454464,3275456407,GB +3275456408,3275456511,EU 3275456512,3275457023,GB 3275457024,3275457791,FK 3275457792,3275458559,GB @@ -79535,8 +81995,8 @@ 3275460608,3275460863,HK 3275460864,3275463471,GB 3275463472,3275463487,EU -3275463488,3275463503,GB -3275463504,3275463679,EU +3275463488,3275463519,GB +3275463520,3275463679,EU 3275463680,3275464031,GB 3275464032,3275464047,IE 3275464048,3275468655,GB @@ -79641,9 +82101,7 @@ 3275555744,3275555759,ES 3275555760,3275555767,EU 3275555768,3275555776,ES -3275555777,3275556607,EU -3275556608,3275556863,ES -3275556864,3275560959,EU +3275555777,3275560959,EU 3275560960,3275561215,ES 3275561216,3275561471,EU 3275561472,3275561727,ES @@ -79654,15 +82112,17 @@ 3275563520,3275563583,EU 3275563584,3275563647,CH 3275563648,3275563775,DE -3275563776,3275564287,CH -3275564288,3275564415,EU +3275563776,3275564031,CH +3275564032,3275564415,EU 3275564416,3275564495,CH 3275564496,3275564799,EU 3275564800,3275565055,CH 3275565056,3275565311,EU 3275565312,3275565567,CH 3275565568,3275565823,EU -3275565824,3275567359,CH +3275565824,3275566079,CH +3275566080,3275566847,EU +3275566848,3275567359,CH 3275567360,3275567615,EU 3275567616,3275568127,CH 3275568128,3275568383,EU @@ -79688,13 +82148,17 @@ 3275574160,3275574175,EU 3275574176,3275574191,PT 3275574192,3275574783,EU -3275574784,3275575231,PT +3275574784,3275575103,PT +3275575104,3275575167,EU +3275575168,3275575231,PT 3275575232,3275575423,EU 3275575424,3275575727,PT -3275575728,3275575807,EU -3275575808,3275575935,PT +3275575728,3275575871,EU +3275575872,3275575935,PT 3275575936,3275576063,EU -3275576064,3275577407,PT +3275576064,3275576319,PT +3275576320,3275577343,EU +3275577344,3275577407,PT 3275577408,3275577471,EU 3275577472,3275577495,PT 3275577496,3275577519,EU @@ -79705,9 +82169,7 @@ 3275577792,3275577807,PT 3275577808,3275577839,EU 3275577840,3275578623,PT -3275578624,3275578879,EU -3275578880,3275579007,PT -3275579008,3275579135,EU +3275578624,3275579135,EU 3275579136,3275579391,PT 3275579392,3275579519,FR 3275579520,3275579583,NL @@ -79725,8 +82187,8 @@ 3275581680,3275581695,NL 3275581696,3275582223,EU 3275582224,3275582247,NL -3275582248,3275582255,EU -3275582256,3275582287,NL +3275582248,3275582279,EU +3275582280,3275582287,NL 3275582288,3275582655,EU 3275582656,3275582719,NL 3275582720,3275582975,EU @@ -79737,9 +82199,7 @@ 3275584512,3275584527,NL 3275584528,3275585023,EU 3275585024,3275585279,NL -3275585280,3275587071,EU -3275587072,3275587136,NL -3275587137,3275587583,EU +3275585280,3275587583,EU 3275587584,3275587855,BE 3275587856,3275588095,EU 3275588096,3275588287,BE @@ -79765,10 +82225,9 @@ 3275591168,3275591423,EU 3275591424,3275591679,BE 3275591680,3275592063,RO -3275592064,3275592191,EU -3275592192,3275592959,RO -3275592960,3275593215,MD -3275593216,3275593343,EU +3275592064,3275592447,EU +3275592448,3275592959,RO +3275592960,3275593343,EU 3275593344,3275593855,RO 3275593856,3275593983,EU 3275593984,3275595007,RO @@ -79785,7 +82244,9 @@ 3275603968,3275604735,IT 3275604736,3275604767,IL 3275604768,3275604991,EU -3275604992,3275606271,IT +3275604992,3275605759,IT +3275605760,3275606015,EU +3275606016,3275606271,IT 3275606272,3275606527,EU 3275606528,3275606783,IT 3275606784,3275608831,EU @@ -79794,9 +82255,7 @@ 3275610112,3275610623,IT 3275610624,3275612159,EU 3275612160,3275612287,LU -3275612288,3275612415,EU -3275612416,3275612671,LU -3275612672,3275612927,BE +3275612288,3275612927,EU 3275612928,3275613951,LU 3275613952,3275620351,EU 3275620352,3275622399,RU @@ -79945,7 +82404,6 @@ 3275914496,3275914751,BG 3275914752,3275915007,RU 3275915008,3275915263,PT -3275915264,3275915775,FR 3275915776,3275916287,SE 3275916288,3275916799,US 3275916800,3275917311,NL @@ -80072,8 +82530,8 @@ 3276018208,3276018375,FR 3276018376,3276018383,GB 3276018384,3276018423,FR -3276018424,3276018431,GB -3276018432,3276018495,FR +3276018424,3276018447,GB +3276018448,3276018495,FR 3276018496,3276018527,GB 3276018528,3276018543,FR 3276018544,3276018623,GB @@ -80109,13 +82567,17 @@ 3276019920,3276019927,GB 3276019928,3276020103,FR 3276020104,3276020111,GB -3276020112,3276020399,FR +3276020112,3276020367,FR +3276020368,3276020383,GB +3276020384,3276020399,FR 3276020400,3276020423,GB 3276020424,3276020431,FR 3276020432,3276020439,GB 3276020440,3276020495,FR -3276020496,3276020503,GB -3276020504,3276020623,FR +3276020496,3276020511,GB +3276020512,3276020559,FR +3276020560,3276020567,GB +3276020568,3276020623,FR 3276020624,3276020631,GB 3276020632,3276020679,FR 3276020680,3276020687,GB @@ -80127,9 +82589,13 @@ 3276020944,3276020991,GB 3276020992,3276021103,FR 3276021104,3276021111,GB -3276021112,3276021591,FR +3276021112,3276021527,FR +3276021528,3276021535,GB +3276021536,3276021591,FR 3276021592,3276021599,GB -3276021600,3276022039,FR +3276021600,3276021855,FR +3276021856,3276021871,GB +3276021872,3276022039,FR 3276022040,3276022047,GB 3276022048,3276022087,FR 3276022088,3276022095,GB @@ -80165,7 +82631,9 @@ 3276023104,3276023279,GB 3276023280,3276023687,FR 3276023688,3276023695,GB -3276023696,3276023759,FR +3276023696,3276023727,FR +3276023728,3276023743,GB +3276023744,3276023759,FR 3276023760,3276023767,GB 3276023768,3276023871,FR 3276023872,3276023887,GB @@ -80203,7 +82671,9 @@ 3276026320,3276026351,GB 3276026352,3276026423,FR 3276026424,3276026431,GB -3276026432,3276026527,FR +3276026432,3276026439,FR +3276026440,3276026447,GB +3276026448,3276026527,FR 3276026528,3276026535,GB 3276026536,3276026543,FR 3276026544,3276026575,GB @@ -80300,9 +82770,7 @@ 3276031440,3276031519,FR 3276031520,3276031551,GB 3276031552,3276031559,FR -3276031560,3276031575,GB -3276031576,3276031583,FR -3276031584,3276031591,GB +3276031560,3276031591,GB 3276031592,3276031631,FR 3276031632,3276031679,GB 3276031680,3276031719,FR @@ -80409,16 +82877,14 @@ 3276040064,3276040095,GB 3276040096,3276040159,FR 3276040160,3276040175,GB -3276040176,3276040207,FR -3276040208,3276040215,GB +3276040176,3276040191,FR +3276040192,3276040215,GB 3276040216,3276040231,FR 3276040232,3276040239,GB 3276040240,3276040319,FR 3276040320,3276040327,GB 3276040328,3276040335,FR -3276040336,3276040343,GB -3276040344,3276040351,FR -3276040352,3276040367,GB +3276040336,3276040367,GB 3276040368,3276040439,FR 3276040440,3276040495,GB 3276040496,3276040543,FR @@ -80513,7 +82979,9 @@ 3276045288,3276045311,GB 3276045312,3276045351,FR 3276045352,3276045359,GB -3276045360,3276045455,FR +3276045360,3276045391,FR +3276045392,3276045407,GB +3276045408,3276045455,FR 3276045456,3276045463,GB 3276045464,3276045479,FR 3276045480,3276045487,GB @@ -80526,8 +82994,8 @@ 3276045648,3276045767,FR 3276045768,3276045783,GB 3276045784,3276045815,FR -3276045816,3276045823,GB -3276045824,3276045919,FR +3276045816,3276045855,GB +3276045856,3276045919,FR 3276045920,3276045951,GB 3276045952,3276046335,FR 3276046336,3276062719,RU @@ -80600,7 +83068,7 @@ 3276133376,3276134399,GB 3276134400,3276135423,RU 3276135424,3276136447,UA -3276136448,3276138495,PL +3276137472,3276138495,PL 3276138496,3276139519,NL 3276139520,3276140543,IL 3276140544,3276141567,DE @@ -82750,7 +85218,7 @@ 3276475984,3276476039,IT 3276476040,3276476047,EU 3276476048,3276476111,IT -3276476112,3276476119,EU +3276476112,3276476119,GB 3276476120,3276476159,IT 3276476160,3276476415,EU 3276476416,3276476671,CH @@ -82829,7 +85297,9 @@ 3276493216,3276493247,EU 3276493248,3276494383,GB 3276494384,3276494415,EU -3276494416,3276495503,GB +3276494416,3276494591,GB +3276494592,3276494847,EU +3276494848,3276495503,GB 3276495504,3276495519,EU 3276495520,3276495679,GB 3276495680,3276495775,EU @@ -82863,8 +85333,8 @@ 3276499760,3276499775,EU 3276499776,3276499791,DE 3276499792,3276499799,EU -3276499800,3276499815,DE -3276499816,3276499935,EU +3276499800,3276499823,DE +3276499824,3276499935,EU 3276499936,3276499999,DE 3276500000,3276500031,CH 3276500032,3276500095,DE @@ -83050,9 +85520,7 @@ 3276528800,3276528815,GB 3276528816,3276528831,EU 3276528832,3276528895,BE -3276528896,3276528903,IE -3276528904,3276528911,EU -3276528912,3276528927,IE +3276528896,3276528927,IE 3276528928,3276528935,EU 3276528936,3276528943,IE 3276528944,3276528959,EU @@ -83135,8 +85603,8 @@ 3276536688,3276536711,HU 3276536712,3276536735,EU 3276536736,3276536743,HU -3276536744,3276536863,EU -3276536864,3276536895,ES +3276536744,3276536831,EU +3276536832,3276536895,ES 3276536896,3276536967,EU 3276536968,3276536991,ES 3276536992,3276537151,EU @@ -83186,7 +85654,7 @@ 3276697088,3276697599,GB 3276697600,3276698111,UA 3276698112,3276699647,RU -3276700160,3276700671,KZ +3276700160,3276700671,UA 3276700672,3276701183,RO 3276701184,3276701695,RU 3276701696,3276709887,SE @@ -83596,12 +86064,15 @@ 3276861440,3276865535,DK 3276865536,3276866559,NL 3276866560,3276866815,IT -3276866816,3276866863,DE +3276866816,3276866831,DE +3276866832,3276866839,GB +3276866840,3276866863,DE 3276866864,3276866879,GB 3276866880,3276866959,DE 3276866960,3276866967,GB -3276866968,3276866975,DE -3276866976,3276867071,GB +3276866968,3276866983,DE +3276866984,3276867007,GB +3276867008,3276867071,DE 3276867072,3276868606,IT 3276868607,3276868607,GB 3276868608,3276868863,NL @@ -83615,12 +86086,10 @@ 3276872480,3276872511,GB 3276872512,3276872703,DE 3276872704,3276873727,GB -3276873728,3276874303,ES -3276874304,3276874367,GB +3276873728,3276874335,ES +3276874336,3276874367,GB 3276874368,3276874751,ES -3276874752,3276875007,NL -3276875008,3276875263,GB -3276875264,3276875775,NL +3276874752,3276875775,NL 3276875776,3276876031,GB 3276876032,3276876287,DK 3276876288,3276876799,GB @@ -83649,8 +86118,8 @@ 3276883968,3276884487,PL 3276884488,3276886015,GB 3276886016,3276886271,RO -3276886272,3276887807,GB -3276887808,3276888063,DE +3276886272,3276887295,GB +3276887296,3276888063,DE 3276888064,3276888575,GB 3276888576,3276888831,AT 3276888832,3276889087,GB @@ -83678,24 +86147,28 @@ 3276897280,3276898303,GB 3276898304,3276898775,CH 3276898776,3276898783,GB -3276898784,3276899135,CH -3276899136,3276899167,GB -3276899168,3276900039,CH -3276900040,3276900095,GB +3276898784,3276900039,CH +3276900040,3276900047,GB +3276900048,3276900079,CH +3276900080,3276900095,GB 3276900096,3276900351,CH 3276900352,3276900607,GB -3276900608,3276900671,CH -3276900672,3276902143,GB +3276900608,3276900799,CH +3276900800,3276900863,GB +3276900864,3276901119,CH +3276901120,3276902143,GB 3276902144,3276902151,CH 3276902152,3276902159,GB 3276902160,3276902175,CH -3276902176,3276902399,GB +3276902176,3276902207,GB +3276902208,3276902271,CH +3276902272,3276902399,GB 3276902400,3276902575,SE 3276902576,3276902655,GB 3276902656,3276903422,SE 3276903423,3276903423,GB -3276903424,3276903679,SE -3276903680,3276905311,GB +3276903424,3276903935,SE +3276903936,3276905311,GB 3276905312,3276905319,ES 3276905320,3276905471,GB 3276905472,3276905727,SE @@ -83705,13 +86178,17 @@ 3276906496,3276906863,NL 3276906864,3276906879,GB 3276906880,3276907551,NL -3276907552,3276910079,GB +3276907552,3276907775,GB +3276907776,3276908159,NL +3276908160,3276910079,GB 3276910080,3276910591,NL 3276910592,3276910967,IT 3276910968,3276910975,GB 3276910976,3276912615,IT 3276912616,3276912623,GB -3276912624,3276913919,IT +3276912624,3276913183,IT +3276913184,3276913215,GB +3276913216,3276913919,IT 3276913920,3276913983,US 3276913984,3276914687,IT 3276914688,3276915455,ES @@ -83724,15 +86201,17 @@ 3276917280,3276917287,GB 3276917288,3276917311,ES 3276917312,3276917343,GB -3276917344,3276917759,ES -3276917760,3276918271,GB -3276918272,3276918783,ES +3276917344,3276917887,ES +3276917888,3276918015,GB +3276918016,3276918783,ES 3276918784,3276920551,DE 3276920552,3276920559,GB 3276920560,3276921183,DE 3276921184,3276921191,GB 3276921192,3276921239,DE -3276921240,3276921343,GB +3276921240,3276921247,GB +3276921248,3276921279,DE +3276921280,3276921343,GB 3276921344,3276921399,DE 3276921400,3276921403,DK 3276921404,3276921607,DE @@ -83742,13 +86221,15 @@ 3276923432,3276923455,GB 3276923456,3276923615,FR 3276923616,3276923647,GB -3276923648,3276924039,FR +3276923648,3276923743,FR +3276923744,3276923751,GB +3276923752,3276924039,FR 3276924040,3276924095,GB -3276924096,3276924287,FR -3276924288,3276924415,GB +3276924096,3276924351,FR +3276924352,3276924415,GB 3276924416,3276925951,FR -3276925952,3276926463,GB -3276926464,3276926735,FR +3276925952,3276926207,GB +3276926208,3276926735,FR 3276926736,3276931071,GB 3276931072,3276939263,KZ 3276939264,3276955647,DE @@ -83960,18 +86441,13 @@ 3277464832,3277467471,US 3277467472,3277467551,CA 3277467552,3277471743,US -3277471744,3277472511,NL -3277472512,3277472607,EU +3277471744,3277472607,NL 3277472608,3277472623,IL -3277472624,3277474815,EU +3277472624,3277474815,NL 3277474816,3277475711,BE -3277475712,3277475839,EU -3277475840,3277476095,NL -3277476096,3277476607,EU +3277475712,3277476607,NL 3277476608,3277477631,BE -3277477632,3277478143,EU -3277478144,3277478399,NL -3277478400,3277479935,EU +3277477632,3277479935,NL 3277479936,3277480959,GB 3277480960,3277481471,DK 3277481472,3277481983,PL @@ -84003,6 +86479,7 @@ 3277687296,3277687807,UA 3277687808,3277688319,RO 3277688320,3277688831,PL +3277688832,3277689343,RU 3277689344,3277689855,AT 3277689856,3277690879,RU 3277690880,3277691391,KZ @@ -84026,7 +86503,7 @@ 3277700608,3277701119,UA 3277701120,3277701631,DK 3277701632,3277702143,AT -3277702144,3277702655,GB +3277702144,3277702655,EU 3277702656,3277703167,RO 3277703168,3277703679,DE 3277703680,3277704191,PL @@ -84135,6 +86612,7 @@ 3277840384,3277840895,FR 3277840896,3277841407,GR 3277841408,3277841919,RO +3277841920,3277842431,IT 3277842432,3277842943,UA 3277842944,3277843455,PL 3277843456,3277843967,PT @@ -84173,18 +86651,14 @@ 3278054912,3278055423,NL 3278055424,3278061567,GB 3278061568,3278065663,NL -3278065664,3278067967,GB -3278067968,3278068223,BE -3278068224,3278103039,GB +3278065664,3278103039,GB 3278103040,3278103295,FR 3278103296,3278110719,GB 3278110720,3278110751,SE 3278110752,3278110767,ES 3278110768,3278111239,SE 3278111240,3278111247,ES -3278111248,3278114815,SE -3278114816,3278115071,ES -3278115072,3278115327,SE +3278111248,3278115327,SE 3278115328,3278116607,ES 3278116608,3278116863,SE 3278116864,3278118303,ES @@ -84230,6 +86704,7 @@ 3278773248,3278773759,NO 3278773760,3278774271,GB 3278774272,3278774783,RU +3278774784,3278775295,FR 3278775296,3278775807,GB 3278775808,3278776319,IR 3278776320,3278776831,IL @@ -84246,7 +86721,7 @@ 3278782464,3278782975,GB 3278782976,3278783231,DE 3278783232,3278784703,GB -3278784704,3278784735,US +3278784704,3278784735,NL 3278784736,3278786911,GB 3278786912,3278786943,LU 3278786944,3278787567,GB @@ -84323,8 +86798,7 @@ 3278938368,3278938375,FR 3278938376,3278938379,DE 3278938380,3278938383,FR -3278938384,3278938387,ZA -3278938388,3278938399,DE +3278938384,3278938399,DE 3278938400,3278938403,AT 3278938404,3278938407,GB 3278938408,3278938411,CH @@ -84595,7 +87069,9 @@ 3278939780,3278939783,FR 3278939784,3278939787,BE 3278939788,3278939791,DE -3278939792,3278939803,ES +3278939792,3278939795,ES +3278939796,3278939799,DE +3278939800,3278939803,ES 3278939804,3278939807,GB 3278939808,3278939815,DE 3278939816,3278939819,NL @@ -85170,7 +87646,8 @@ 3278942838,3278942838,ES 3278942839,3278942839,FR 3278942840,3278942841,DE -3278942842,3278942843,IT +3278942842,3278942842,IT +3278942843,3278942843,DE 3278942844,3278942844,ES 3278942845,3278942850,DE 3278942851,3278942851,HU @@ -86073,8 +88550,7 @@ 3278943999,3278944001,DE 3278944002,3278944002,GB 3278944003,3278944003,LU -3278944004,3278944004,PT -3278944005,3278944006,DE +3278944004,3278944006,DE 3278944007,3278944007,NL 3278944008,3278944008,IT 3278944009,3278944009,CH @@ -86301,9 +88777,7 @@ 3278944366,3278944366,MX 3278944367,3278944367,US 3278944368,3278944368,CA -3278944369,3278944373,US -3278944374,3278944374,PR -3278944375,3278944379,US +3278944369,3278944379,US 3278944380,3278944380,DE 3278944381,3278944385,US 3278944386,3278944386,DE @@ -86370,9 +88844,7 @@ 3278944580,3278944580,AR 3278944581,3278944581,US 3278944582,3278944583,DE -3278944584,3278944586,US -3278944587,3278944587,PR -3278944588,3278944588,US +3278944584,3278944588,US 3278944589,3278944589,DE 3278944590,3278944599,US 3278944600,3278944600,SA @@ -86581,7 +89053,7 @@ 3278945797,3278945797,BE 3278945798,3278945798,NL 3278945799,3278945799,LU -3278945800,3278945800,SE +3278945800,3278945800,DE 3278945801,3278945801,NL 3278945802,3278945802,PT 3278945803,3278945803,GB @@ -86640,8 +89112,8 @@ 3278945875,3278945875,ES 3278945876,3278945876,NL 3278945877,3278945877,SE -3278945878,3278945879,FR -3278945880,3278945880,DE +3278945878,3278945878,FR +3278945879,3278945880,DE 3278945881,3278945881,BE 3278945882,3278945886,DE 3278945887,3278945888,IT @@ -86986,7 +89458,7 @@ 3279972352,3279974399,AT 3279974400,3279976447,PL 3279976448,3279986687,RU -3279986688,3279987199,NL +3279986688,3279987199,MT 3279987200,3279987711,RU 3279987712,3279988223,RO 3279988224,3279988735,AM @@ -87029,8 +89501,7 @@ 3280011784,3280011791,BE 3280011792,3280011903,EU 3280011904,3280011951,BE -3280011952,3280014847,EU -3280014848,3280015103,FR +3280011952,3280015103,EU 3280015104,3280015359,GB 3280015360,3280015871,EU 3280015872,3280016383,GB @@ -87066,9 +89537,7 @@ 3280023040,3280023551,EU 3280023552,3280024575,IT 3280024576,3280024831,SE -3280024832,3280027135,EU -3280027136,3280027391,IE -3280027392,3280027647,EU +3280024832,3280027647,EU 3280027648,3280027903,CH 3280027904,3280028159,EU 3280028160,3280028415,IT @@ -88811,7 +91280,6 @@ 3281343232,3281343487,FI 3281343488,3281343743,GB 3281343744,3281343999,TR -3281344000,3281344255,PL 3281344256,3281344511,RU 3281344512,3281344767,UA 3281344768,3281345023,RU @@ -88972,6 +91440,14 @@ 3282181120,3282181631,GB 3282181632,3282182143,DE 3282182144,3282190335,RU +3282190336,3282190847,UA +3282190848,3282191359,IL +3282191360,3282191871,RU +3282191872,3282192383,UA +3282192384,3282192895,BG +3282192896,3282193407,UA +3282193408,3282193919,PL +3282193920,3282194431,RU 3282194432,3282195455,UA 3282195456,3282196479,IE 3282196480,3282197503,UA @@ -89095,9 +91571,7 @@ 3283091456,3283156991,CH 3283156992,3283158215,DE 3283158216,3283158219,EE -3283158220,3283160171,DE -3283160172,3283160175,BE -3283160176,3283173375,DE +3283158220,3283173375,DE 3283173376,3283174399,PL 3283174400,3283176447,UA 3283176448,3283177471,GB @@ -89185,7 +91659,9 @@ 3283291488,3283291491,ES 3283291492,3283304919,DE 3283304920,3283304923,ES -3283304924,3283305087,DE +3283304924,3283304959,DE +3283304960,3283305023,GB +3283305024,3283305087,DE 3283305088,3283305127,FR 3283305128,3283305711,DE 3283305712,3283305715,ES @@ -89685,26 +92161,25 @@ 3283650960,3283650975,CH 3283650976,3283651071,GB 3283651072,3283651135,IT -3283651136,3283651167,EU +3283651136,3283651167,BE 3283651168,3283651183,ES -3283651184,3283651199,EU +3283651184,3283651199,BE 3283651200,3283651263,HU 3283651264,3283651327,ZA -3283651328,3283651423,EU +3283651328,3283651423,BE 3283651424,3283651439,DE -3283651440,3283651463,EU +3283651440,3283651463,BE 3283651464,3283651471,DE -3283651472,3283651487,EU +3283651472,3283651487,BE 3283651488,3283651519,FR 3283651520,3283651583,IL 3283651584,3283651591,GB -3283651592,3283651599,EU +3283651592,3283651599,BE 3283651600,3283651615,DE -3283651616,3283651647,EU +3283651616,3283651647,BE 3283651648,3283651663,SE 3283651664,3283651671,RO -3283651672,3283651679,BE -3283651680,3283651687,EU +3283651672,3283651687,BE 3283651688,3283651695,IT 3283651696,3283651711,GB 3283651712,3283651727,CH @@ -89715,21 +92190,20 @@ 3283651840,3283651967,NL 3283651968,3283652031,DK 3283652032,3283652063,DE -3283652064,3283652071,EU +3283652064,3283652071,BE 3283652072,3283652079,GB -3283652080,3283652095,EU +3283652080,3283652095,BE 3283652096,3283652351,GB 3283652352,3283652479,IT -3283652480,3283652519,EU +3283652480,3283652519,BE 3283652520,3283652527,SE -3283652528,3283652543,EU +3283652528,3283652543,BE 3283652544,3283652575,FR 3283652576,3283652607,DE 3283652608,3283652863,NO -3283652864,3283653055,BE -3283653056,3283653247,EU +3283652864,3283653247,BE 3283653248,3283653311,NO -3283653312,3283653503,EU +3283653312,3283653503,BE 3283653504,3283653631,GB 3283653632,3283653887,FR 3283653888,3283654015,SE @@ -89737,7 +92211,7 @@ 3283654144,3283654399,DE 3283654400,3283654655,CH 3283654656,3283654911,DK -3283654912,3283655039,EU +3283654912,3283655039,BE 3283655040,3283655167,DK 3283655168,3283655295,DE 3283655296,3283655423,BE @@ -89745,16 +92219,16 @@ 3283655680,3283655935,ES 3283655936,3283656191,ZA 3283656192,3283656223,GB -3283656224,3283656255,EU +3283656224,3283656255,BE 3283656256,3283656271,GB -3283656272,3283656303,EU +3283656272,3283656303,BE 3283656304,3283656311,GB -3283656312,3283656447,EU +3283656312,3283656447,BE 3283656448,3283656559,ES 3283656560,3283656575,FR -3283656576,3283656591,EU +3283656576,3283656591,BE 3283656592,3283656599,FR -3283656600,3283656703,EU +3283656600,3283656703,BE 3283656704,3283664895,HU 3283664896,3283673087,UA 3283673088,3283681279,GB @@ -90184,20 +92658,17 @@ 3285057536,3285065727,IT 3285065728,3285073919,RU 3285073920,3285074687,GB -3285074688,3285075199,NL -3285075200,3285076607,EU +3285074688,3285076607,NL 3285076608,3285076767,BE -3285076768,3285078111,EU +3285076768,3285078111,NL 3285078112,3285078143,GB -3285078144,3285078175,EU +3285078144,3285078175,NL 3285078176,3285078191,GB -3285078192,3285079423,EU +3285078192,3285079423,NL 3285079424,3285079551,DE -3285079552,3285079807,EU -3285079808,3285079935,NL -3285079936,3285079967,EU +3285079552,3285079967,NL 3285079968,3285079999,DE -3285080000,3285082111,EU +3285080000,3285082111,NL 3285082112,3285084159,AT 3285084160,3285085183,LU 3285085184,3285086207,GB @@ -90256,6 +92727,7 @@ 3285333504,3285334015,GB 3285334016,3285334527,NL 3285334528,3285335039,DE +3285335040,3285335551,PL 3285335552,3285336063,SE 3285336064,3285352447,IT 3285352448,3285368831,RU @@ -90313,11 +92785,7 @@ 3285453056,3285453119,EU 3285453120,3285453415,GB 3285453416,3285453423,EU -3285453424,3285453439,GB -3285453440,3285453567,EU -3285453568,3285453623,GB -3285453624,3285453631,EU -3285453632,3285454047,GB +3285453424,3285454047,GB 3285454048,3285454079,EU 3285454080,3285454175,GB 3285454176,3285454207,EU @@ -90594,8 +93062,8 @@ 3285479424,3285479807,CH 3285479808,3285480447,EU 3285480448,3285480575,CH -3285480576,3285480735,EU -3285480736,3285480767,CH +3285480576,3285480719,EU +3285480720,3285480767,CH 3285480768,3285480775,EU 3285480776,3285480895,CH 3285480896,3285480959,EU @@ -90693,7 +93161,9 @@ 3285496832,3285497855,DE 3285497856,3285497887,EU 3285497888,3285498031,DE -3285498032,3285498095,EU +3285498032,3285498047,EU +3285498048,3285498079,DE +3285498080,3285498095,EU 3285498096,3285498111,DE 3285498112,3285498367,IT 3285498368,3285498623,DE @@ -90796,7 +93266,7 @@ 3285516224,3285516287,GR 3285516288,3285516543,DK 3285516544,3285516671,NO -3285516672,3285516687,EU +3285516672,3285516687,BE 3285516688,3285516691,NL 3285516692,3285516695,IT 3285516696,3285516703,NL @@ -90805,17 +93275,17 @@ 3285516736,3285516799,DE 3285516800,3285516927,GB 3285516928,3285516991,PL -3285516992,3285517023,EU +3285516992,3285517023,BE 3285517024,3285517055,SE 3285517056,3285517215,GB 3285517216,3285517247,AT 3285517248,3285518335,GB 3285518336,3285518351,NL 3285518352,3285518367,ES -3285518368,3285518463,EU +3285518368,3285518463,BE 3285518464,3285518591,ES 3285518592,3285518847,CH -3285518848,3285519103,EU +3285518848,3285519103,BE 3285519104,3285519359,FR 3285519360,3285519615,DE 3285519616,3285520127,GB @@ -90826,20 +93296,19 @@ 3285520576,3285520639,DE 3285520640,3285520767,NL 3285520768,3285520895,GB -3285520896,3285521167,EU +3285520896,3285521167,BE 3285521168,3285521407,GB -3285521408,3285521535,BE -3285521536,3285521695,EU +3285521408,3285521695,BE 3285521696,3285521791,GB -3285521792,3285522175,EU +3285521792,3285522175,BE 3285522176,3285523071,GB -3285523072,3285523079,EU +3285523072,3285523079,BE 3285523080,3285523087,ES 3285523088,3285523199,CH 3285523200,3285523231,ZA -3285523232,3285523327,EU +3285523232,3285523327,BE 3285523328,3285523335,FI -3285523336,3285523359,EU +3285523336,3285523359,BE 3285523360,3285523391,GB 3285523392,3285523711,FR 3285523712,3285523967,CH @@ -90850,106 +93319,89 @@ 3285524176,3285524191,CH 3285524192,3285524223,BE 3285524224,3285524351,GB -3285524352,3285524479,EU +3285524352,3285524479,BE 3285524480,3285524735,DK 3285524736,3285524863,GB -3285524864,3285524879,EU -3285524880,3285524895,BE +3285524864,3285524895,BE 3285524896,3285524927,ES 3285524928,3285524991,GB -3285524992,3285525247,EU +3285524992,3285525247,BE 3285525248,3285525503,CH -3285525504,3285525759,EU -3285525760,3285526015,BE +3285525504,3285526015,BE 3285526016,3285526023,IL -3285526024,3285526035,EU +3285526024,3285526035,BE 3285526036,3285526039,FR -3285526040,3285526047,EU +3285526040,3285526047,BE 3285526048,3285526079,CZ -3285526080,3285526143,EU +3285526080,3285526143,BE 3285526144,3285526175,HU -3285526176,3285526271,EU -3285526272,3285526335,BE -3285526336,3285526383,EU +3285526176,3285526383,BE 3285526384,3285526399,PT 3285526400,3285526527,CH 3285526528,3285526783,ES 3285526784,3285526815,CH -3285526816,3285526823,EU -3285526824,3285526847,BE +3285526816,3285526847,BE 3285526848,3285526911,CH 3285526912,3285527295,GB -3285527296,3285527423,EU +3285527296,3285527423,BE 3285527424,3285527427,GB -3285527428,3285527431,EU +3285527428,3285527431,BE 3285527432,3285527439,FR 3285527440,3285527455,LU 3285527456,3285527487,IL -3285527488,3285527495,EU +3285527488,3285527495,BE 3285527496,3285527503,DE 3285527504,3285527519,JP -3285527520,3285527551,EU +3285527520,3285527551,BE 3285527552,3285527615,IL 3285527616,3285527679,GB -3285527680,3285527807,EU +3285527680,3285527807,BE 3285527808,3285527811,GB 3285527812,3285527815,PL -3285527816,3285527855,EU +3285527816,3285527855,BE 3285527856,3285527871,FR -3285527872,3285527967,EU +3285527872,3285527967,BE 3285527968,3285527999,DE -3285528000,3285528319,EU +3285528000,3285528319,BE 3285528320,3285528447,DE 3285528448,3285528575,FR -3285528576,3285528703,BE -3285528704,3285528735,EU -3285528736,3285528799,BE +3285528576,3285528799,BE 3285528800,3285528831,GB -3285528832,3285528839,BE -3285528840,3285528847,EU +3285528832,3285528847,BE 3285528848,3285528863,ZA -3285528864,3285528883,EU +3285528864,3285528883,BE 3285528884,3285528887,FR -3285528888,3285528895,EU +3285528888,3285528895,BE 3285528896,3285528911,GB -3285528912,3285528927,BE -3285528928,3285528931,EU +3285528912,3285528931,BE 3285528932,3285528935,FR -3285528936,3285528943,EU +3285528936,3285528943,BE 3285528944,3285529071,GB -3285529072,3285529087,EU -3285529088,3285529151,BE +3285529072,3285529151,BE 3285529152,3285529183,DE 3285529184,3285529199,NL 3285529200,3285529215,IL 3285529216,3285529247,CH 3285529248,3285529263,GB -3285529264,3285529279,EU -3285529280,3285529311,BE -3285529312,3285529343,EU +3285529264,3285529343,BE 3285529344,3285529599,IT 3285529600,3285529631,NO 3285529632,3285529663,IE 3285529664,3285529679,LI 3285529680,3285529687,FI 3285529688,3285529695,IT -3285529696,3285529711,BE -3285529712,3285529727,EU +3285529696,3285529727,BE 3285529728,3285529855,GB 3285529856,3285529951,LU 3285529952,3285529983,GR 3285529984,3285529999,CZ -3285530000,3285530143,EU +3285530000,3285530143,BE 3285530144,3285530175,GB 3285530176,3285530183,NL -3285530184,3285530211,EU -3285530212,3285530215,BE +3285530184,3285530215,BE 3285530216,3285530223,GB 3285530224,3285530271,FR -3285530272,3285530303,EU -3285530304,3285530335,BE -3285530336,3285530367,EU -3285530368,3285530399,BE +3285530272,3285530399,BE 3285530400,3285530431,NL 3285530432,3285530463,IT 3285530464,3285530495,DE @@ -90958,24 +93410,23 @@ 3285530576,3285530583,GB 3285530584,3285530591,BE 3285530592,3285530607,GB -3285530608,3285530623,BE -3285530624,3285530655,EU +3285530608,3285530655,BE 3285530656,3285530687,ZA 3285530688,3285530719,GB -3285530720,3285530723,EU +3285530720,3285530723,BE 3285530724,3285530727,GB 3285530728,3285530735,DE 3285530736,3285530739,GB -3285530740,3285530743,EU +3285530740,3285530743,BE 3285530744,3285530751,GB 3285530752,3285530767,IT 3285530768,3285530783,DE -3285530784,3285530815,EU +3285530784,3285530815,BE 3285530816,3285530831,GB -3285530832,3285530879,EU +3285530832,3285530879,BE 3285530880,3285530911,CH 3285530912,3285530975,GB -3285530976,3285530983,EU +3285530976,3285530983,BE 3285530984,3285530991,IE 3285530992,3285531007,GB 3285531008,3285531023,FR @@ -90983,60 +93434,57 @@ 3285531040,3285531071,ES 3285531072,3285531103,NL 3285531104,3285531119,FR -3285531120,3285531127,BE -3285531128,3285531263,EU +3285531120,3285531263,BE 3285531264,3285531311,GB 3285531312,3285531327,DK -3285531328,3285531343,EU +3285531328,3285531343,BE 3285531344,3285531351,GB 3285531352,3285531355,FR 3285531356,3285531359,ES -3285531360,3285531367,EU +3285531360,3285531367,BE 3285531368,3285531375,DE -3285531376,3285531379,EU -3285531380,3285531383,BE +3285531376,3285531383,BE 3285531384,3285531391,DE 3285531392,3285531423,BE 3285531424,3285531455,DE -3285531456,3285531495,EU +3285531456,3285531495,BE 3285531496,3285531503,NL 3285531504,3285531519,FR -3285531520,3285531535,EU +3285531520,3285531535,BE 3285531536,3285531551,DE 3285531552,3285531567,IL -3285531568,3285531615,EU +3285531568,3285531615,BE 3285531616,3285531647,NL 3285531648,3285531903,BE 3285531904,3285532159,GB 3285532160,3285532223,BE 3285532224,3285532231,ES -3285532232,3285532287,EU -3285532288,3285532415,BE +3285532232,3285532415,BE 3285532416,3285532687,IT 3285532688,3285532703,DE -3285532704,3285532711,EU +3285532704,3285532711,BE 3285532712,3285532719,RU 3285532720,3285532735,IT 3285532736,3285532799,CH 3285532800,3285532831,DE 3285532832,3285532847,FI 3285532848,3285532863,IT -3285532864,3285532895,EU +3285532864,3285532895,BE 3285532896,3285532959,IT -3285532960,3285532975,BE -3285532976,3285533047,EU +3285532960,3285533039,BE +3285533040,3285533047,NL 3285533048,3285533055,BE 3285533056,3285533059,NL -3285533060,3285533087,EU +3285533060,3285533087,BE 3285533088,3285533103,IT 3285533104,3285533119,LU -3285533120,3285533127,EU +3285533120,3285533127,BE 3285533128,3285533135,SE 3285533136,3285533151,GB 3285533152,3285533183,FR 3285533184,3285533311,IT 3285533312,3285533343,SE -3285533344,3285533367,EU +3285533344,3285533367,BE 3285533368,3285533375,CH 3285533376,3285533471,GB 3285533472,3285533503,BE @@ -91049,17 +93497,15 @@ 3285533952,3285534079,IL 3285534080,3285534095,IT 3285534096,3285534111,TR -3285534112,3285534143,EU +3285534112,3285534143,BE 3285534144,3285534207,IT 3285534208,3285534463,PT 3285534464,3285534479,NL -3285534480,3285534495,BE -3285534496,3285534527,EU +3285534480,3285534527,BE 3285534528,3285534559,FR 3285534560,3285534591,IT 3285534592,3285534627,GB -3285534628,3285534631,EU -3285534632,3285534639,BE +3285534628,3285534639,BE 3285534640,3285534655,GB 3285534656,3285534719,IT 3285534720,3285534751,GB @@ -91070,61 +93516,60 @@ 3285534816,3285534831,HU 3285534832,3285534927,IE 3285534928,3285534943,GB -3285534944,3285534975,EU +3285534944,3285534975,BE 3285534976,3285535103,IT -3285535104,3285535119,BE -3285535120,3285535123,EU +3285535104,3285535123,BE 3285535124,3285535127,ES -3285535128,3285535131,EU +3285535128,3285535131,BE 3285535132,3285535135,NL 3285535136,3285535139,FR -3285535140,3285535143,EU +3285535140,3285535143,BE 3285535144,3285535147,GR 3285535148,3285535151,CZ 3285535152,3285535155,SE -3285535156,3285535231,EU +3285535156,3285535231,BE 3285535232,3285535743,NO 3285535744,3285535871,IT 3285535872,3285535903,FR 3285535904,3285535907,DK 3285535908,3285535911,NO -3285535912,3285535919,EU +3285535912,3285535919,BE 3285535920,3285535927,NL -3285535928,3285535951,EU +3285535928,3285535951,BE 3285535952,3285535967,GB -3285535968,3285535999,EU +3285535968,3285535999,BE 3285536000,3285536063,GB -3285536064,3285536079,EU +3285536064,3285536079,BE 3285536080,3285536095,IT 3285536096,3285536111,GB -3285536112,3285536255,EU +3285536112,3285536255,BE 3285536256,3285536511,GB 3285536512,3285536543,LU 3285536544,3285536575,DE 3285536576,3285536607,IL -3285536608,3285536703,EU +3285536608,3285536703,BE 3285536704,3285536735,GB 3285536736,3285536739,IT 3285536740,3285536743,GB 3285536744,3285536747,DE 3285536748,3285536751,AT -3285536752,3285536755,EU +3285536752,3285536755,BE 3285536756,3285536759,IL -3285536760,3285536767,EU +3285536760,3285536767,BE 3285536768,3285536959,DK 3285536960,3285536991,ES 3285536992,3285537023,GB 3285537024,3285537087,IL 3285537088,3285537127,GB -3285537128,3285537135,EU +3285537128,3285537135,BE 3285537136,3285537143,DK 3285537144,3285537151,GB 3285537152,3285537167,DK 3285537168,3285537175,CH -3285537176,3285537183,EU +3285537176,3285537183,BE 3285537184,3285537215,DE 3285537216,3285537231,GB -3285537232,3285537535,EU +3285537232,3285537535,BE 3285537536,3285537599,RU 3285537600,3285537615,FR 3285537616,3285537631,BE @@ -91137,7 +93582,7 @@ 3285538048,3285538175,NL 3285538176,3285538183,DE 3285538184,3285538187,LU -3285538188,3285538207,EU +3285538188,3285538207,BE 3285538208,3285538239,LU 3285538240,3285538271,NO 3285538272,3285538287,FI @@ -91148,14 +93593,13 @@ 3285538328,3285538335,BE 3285538336,3285538351,GB 3285538352,3285538367,LU -3285538368,3285538375,EU +3285538368,3285538375,BE 3285538376,3285538383,AT -3285538384,3285538399,EU +3285538384,3285538399,BE 3285538400,3285538431,DK -3285538432,3285538559,EU -3285538560,3285538623,BE +3285538432,3285538623,BE 3285538624,3285538687,LU -3285538688,3285538719,EU +3285538688,3285538719,BE 3285538720,3285538751,DE 3285538752,3285538755,IT 3285538756,3285538759,FR @@ -91164,10 +93608,10 @@ 3285538768,3285538783,CZ 3285538784,3285538815,BE 3285538816,3285538847,CH -3285538848,3285538879,EU +3285538848,3285538879,BE 3285538880,3285539071,ES 3285539072,3285539327,NL -3285539328,3285539583,EU +3285539328,3285539583,BE 3285539584,3285539711,IE 3285539712,3285539839,GB 3285539840,3285539967,IT @@ -91175,38 +93619,38 @@ 3285540032,3285540095,ZA 3285540096,3285540103,GB 3285540104,3285540107,IT -3285540108,3285540111,EU +3285540108,3285540111,BE 3285540112,3285540127,IL 3285540128,3285540159,ZA 3285540160,3285540191,FI 3285540192,3285540207,CH 3285540208,3285540215,IE -3285540216,3285540219,EU +3285540216,3285540219,BE 3285540220,3285540223,ZA 3285540224,3285540351,CZ 3285540352,3285540415,PT 3285540416,3285540423,ZA -3285540424,3285540447,EU +3285540424,3285540447,BE 3285540448,3285540479,DE 3285540480,3285540607,NL -3285540608,3285540671,EU +3285540608,3285540671,BE 3285540672,3285540735,DE -3285540736,3285540863,EU +3285540736,3285540863,BE 3285540864,3285540871,FR -3285540872,3285540879,EU +3285540872,3285540879,BE 3285540880,3285541375,FR 3285541376,3285541391,GB 3285541392,3285541439,FR 3285541440,3285541519,GB 3285541520,3285541527,BG -3285541528,3285541535,EU +3285541528,3285541535,BE 3285541536,3285541551,FR -3285541552,3285541567,EU +3285541552,3285541567,BE 3285541568,3285541599,GB -3285541600,3285541631,EU +3285541600,3285541631,BE 3285541632,3285541663,ES 3285541664,3285541695,FR -3285541696,3285541759,EU +3285541696,3285541759,BE 3285541760,3285541887,FR 3285541888,3285541919,GB 3285541920,3285541951,FR @@ -91220,32 +93664,32 @@ 3285543424,3285543679,SE 3285543680,3285543743,AT 3285543744,3285543759,FR -3285543760,3285543775,EU +3285543760,3285543775,BE 3285543776,3285543791,IT 3285543792,3285543795,ES -3285543796,3285543799,EU +3285543796,3285543799,BE 3285543800,3285543807,FR 3285543808,3285543871,NL 3285543872,3285543935,FR -3285543936,3285544191,EU +3285543936,3285544191,BE 3285544192,3285544255,IL 3285544256,3285544319,DE 3285544320,3285544335,ES 3285544336,3285544351,NL -3285544352,3285544383,EU +3285544352,3285544383,BE 3285544384,3285544479,FR 3285544480,3285544511,ES 3285544512,3285544639,FR 3285544640,3285544703,BE 3285544704,3285544959,FR 3285544960,3285545215,GB -3285545216,3285545343,EU +3285545216,3285545343,BE 3285545344,3285545379,GB -3285545380,3285545471,EU +3285545380,3285545471,BE 3285545472,3285545727,SE 3285545728,3285545983,FI 3285545984,3285545999,IT -3285546000,3285546007,EU +3285546000,3285546007,BE 3285546008,3285546015,IT 3285546016,3285546063,ES 3285546064,3285546071,IT @@ -91254,7 +93698,7 @@ 3285546240,3285546367,ZA 3285546368,3285546495,FR 3285546496,3285546559,NL -3285546560,3285546623,EU +3285546560,3285546623,BE 3285546624,3285546671,FR 3285546672,3285546687,SE 3285546688,3285546751,GB @@ -91269,15 +93713,15 @@ 3285547264,3285547519,LU 3285547520,3285547775,NL 3285547776,3285547903,ES -3285547904,3285548031,EU +3285547904,3285548031,BE 3285548032,3285548287,FR 3285548288,3285548543,DE 3285548544,3285548607,FR 3285548608,3285548639,LI -3285548640,3285548647,EU +3285548640,3285548647,BE 3285548648,3285548655,LI 3285548656,3285548735,GB -3285548736,3285548767,EU +3285548736,3285548767,BE 3285548768,3285548799,LU 3285548800,3285548831,IT 3285548832,3285548839,GB @@ -91287,46 +93731,43 @@ 3285549024,3285549039,PT 3285549040,3285549055,FR 3285549056,3285549183,DE -3285549184,3285549215,EU +3285549184,3285549215,BE 3285549216,3285549247,CH 3285549248,3285549279,DE 3285549280,3285549311,GB 3285549312,3285549695,DE -3285549696,3285549719,EU +3285549696,3285549719,BE 3285549720,3285549727,GB 3285549728,3285549735,SE -3285549736,3285549767,EU +3285549736,3285549767,BE 3285549768,3285549775,FI 3285549776,3285549791,DE 3285549792,3285549823,LU 3285549824,3285549871,DE 3285549872,3285549887,DK 3285549888,3285549951,DE -3285549952,3285550335,EU +3285549952,3285550335,BE 3285550336,3285550463,GB 3285550464,3285550527,DE 3285550528,3285550591,IT 3285550592,3285550847,FR 3285550848,3285550943,IT 3285550944,3285550975,NL -3285550976,3285551007,EU +3285550976,3285551007,BE 3285551008,3285551039,CH 3285551040,3285551071,DE -3285551072,3285551103,EU +3285551072,3285551103,BE 3285551104,3285551359,DE -3285551360,3285551375,BE -3285551376,3285551391,EU +3285551360,3285551391,BE 3285551392,3285551423,DE 3285551424,3285551487,DK -3285551488,3285551519,BE -3285551520,3285551551,EU +3285551488,3285551551,BE 3285551552,3285551615,DE 3285551616,3285551647,GB 3285551648,3285551679,FR 3285551680,3285551807,GB 3285551808,3285551839,RU -3285551840,3285551871,EU -3285551872,3285552127,BE +3285551840,3285552127,BE 3285552128,3285552191,DE 3285552192,3285552255,ZA 3285552256,3285552287,CZ @@ -91335,61 +93776,60 @@ 3285552384,3285552511,DE 3285552512,3285552639,GB 3285552640,3285552927,DE -3285552928,3285552959,EU +3285552928,3285552959,BE 3285552960,3285553023,FR -3285553024,3285553039,EU +3285553024,3285553039,BE 3285553040,3285553055,EG -3285553056,3285553087,EU +3285553056,3285553087,BE 3285553088,3285553151,IT 3285553152,3285553215,DE -3285553216,3285553247,EU +3285553216,3285553247,BE 3285553248,3285553263,PL 3285553264,3285553727,DE 3285553728,3285553759,CH 3285553760,3285553767,GB 3285553768,3285553775,ZA 3285553776,3285553791,FR -3285553792,3285553855,EU +3285553792,3285553855,BE 3285553856,3285553887,ZA 3285553888,3285553919,DE 3285553920,3285554047,CH 3285554048,3285554127,DE -3285554128,3285554143,EU +3285554128,3285554143,BE 3285554144,3285554175,GB 3285554176,3285554431,AT -3285554432,3285554687,EU +3285554432,3285554687,BE 3285554688,3285554703,DE -3285554704,3285554719,EU +3285554704,3285554719,BE 3285554720,3285554751,FR -3285554752,3285554815,EU +3285554752,3285554815,BE 3285554816,3285554943,CH 3285554944,3285555199,LU 3285555200,3285555231,AT 3285555232,3285555263,NL 3285555264,3285555327,FR 3285555328,3285555455,IL -3285555456,3285555711,EU +3285555456,3285555711,BE 3285555712,3285555967,LU 3285555968,3285556223,IT -3285556224,3285556479,EU +3285556224,3285556479,BE 3285556480,3285556735,DE 3285556736,3285556767,CH -3285556768,3285556771,EU -3285556772,3285556775,BE +3285556768,3285556775,BE 3285556776,3285556779,NL -3285556780,3285556799,EU +3285556780,3285556799,BE 3285556800,3285556863,DE -3285556864,3285556991,EU +3285556864,3285556991,BE 3285556992,3285557055,GB 3285557056,3285557119,NL 3285557120,3285557247,DE 3285557248,3285557363,NL -3285557364,3285557375,EU +3285557364,3285557375,BE 3285557376,3285557519,NL 3285557520,3285557535,FI 3285557536,3285557575,NL 3285557576,3285557579,SE -3285557580,3285557583,EU +3285557580,3285557583,BE 3285557584,3285557599,NL 3285557600,3285557631,BE 3285557632,3285557791,NL @@ -91400,19 +93840,18 @@ 3285557920,3285557951,FR 3285557952,3285558015,DE 3285558016,3285558271,NL -3285558272,3285558399,BE -3285558400,3285558463,EU +3285558272,3285558463,BE 3285558464,3285558591,NL -3285558592,3285558655,EU +3285558592,3285558655,BE 3285558656,3285558783,IT 3285558784,3285559039,GB -3285559040,3285559167,EU +3285559040,3285559167,BE 3285559168,3285559231,NL -3285559232,3285559295,EU +3285559232,3285559295,BE 3285559296,3285559807,SE 3285559808,3285559839,IE 3285559840,3285559871,CH -3285559872,3285559887,EU +3285559872,3285559887,BE 3285559888,3285559903,SE 3285559904,3285559919,NL 3285559920,3285559935,SE @@ -91422,7 +93861,7 @@ 3285560384,3285560447,SE 3285560448,3285560479,LI 3285560480,3285560511,CH -3285560512,3285560575,EU +3285560512,3285560575,BE 3285560576,3285560831,DE 3285560832,3285561215,SE 3285561216,3285561343,NO @@ -91431,31 +93870,31 @@ 3285561472,3285561599,DK 3285561600,3285561619,NO 3285561620,3285561623,DE -3285561624,3285561647,EU +3285561624,3285561647,BE 3285561648,3285561663,NO -3285561664,3285561727,EU +3285561664,3285561727,BE 3285561728,3285561791,NO -3285561792,3285561919,EU +3285561792,3285561919,BE 3285561920,3285561951,CH 3285561952,3285561967,NO -3285561968,3285561983,EU +3285561968,3285561983,BE 3285561984,3285562111,FI 3285562112,3285562367,NO 3285562368,3285562751,FI 3285562752,3285562783,NL -3285562784,3285562815,EU +3285562784,3285562815,BE 3285562816,3285562879,IT 3285562880,3285562911,FI -3285562912,3285562943,EU +3285562912,3285562943,BE 3285562944,3285562975,DE 3285562976,3285562991,FI -3285562992,3285562999,EU +3285562992,3285562999,BE 3285563000,3285563007,GB 3285563008,3285563135,SE 3285563136,3285563391,FI -3285563392,3285563455,EU +3285563392,3285563455,BE 3285563456,3285563471,NL -3285563472,3285563487,EU +3285563472,3285563487,BE 3285563488,3285563519,SE 3285563520,3285563647,PL 3285563648,3285563903,CH @@ -91464,118 +93903,114 @@ 3285564160,3285564415,GB 3285564416,3285564511,CH 3285564512,3285564543,NO -3285564544,3285564671,EU +3285564544,3285564671,BE 3285564672,3285564735,CH 3285564736,3285564751,FR -3285564752,3285564767,EU +3285564752,3285564767,BE 3285564768,3285564799,SE -3285564800,3285564927,EU +3285564800,3285564927,BE 3285564928,3285565183,FR 3285565184,3285565439,NL 3285565440,3285565951,GB 3285565952,3285566015,FR 3285566016,3285566031,IT -3285566032,3285566047,EU +3285566032,3285566047,BE 3285566048,3285566079,CH 3285566080,3285566143,FR -3285566144,3285566207,EU +3285566144,3285566207,BE 3285566208,3285566495,RU 3285566496,3285566511,SE 3285566512,3285566527,FI 3285566528,3285566559,CH -3285566560,3285566575,EU +3285566560,3285566575,BE 3285566576,3285566591,CH 3285566592,3285566655,NL -3285566656,3285566847,EU +3285566656,3285566847,BE 3285566848,3285566975,FR 3285566976,3285567231,GB 3285567232,3285567487,PT 3285567488,3285568511,NL 3285568512,3285568671,DE 3285568672,3285568703,CH -3285568704,3285568751,EU +3285568704,3285568751,BE 3285568752,3285569023,DE -3285569024,3285569407,EU +3285569024,3285569407,BE 3285569408,3285569535,GB 3285569536,3285569791,DE 3285569792,3285570047,FI 3285570048,3285570175,FR -3285570176,3285570207,EU +3285570176,3285570207,BE 3285570208,3285570223,PL 3285570224,3285570239,NL -3285570240,3285570303,EU -3285570304,3285570559,BE +3285570240,3285570559,BE 3285570560,3285570815,SE 3285570816,3285571071,IT 3285571072,3285571327,DE 3285571328,3285571583,FI 3285571584,3285571711,FR 3285571712,3285571775,SE -3285571776,3285571791,BE -3285571792,3285571807,EU +3285571776,3285571807,BE 3285571808,3285571839,DE -3285571840,3285571903,EU +3285571840,3285571903,BE 3285571904,3285571967,SE -3285571968,3285572095,EU +3285571968,3285572095,BE 3285572096,3285572223,DE 3285572224,3285572351,FI 3285572352,3285572367,IR 3285572368,3285572383,ES -3285572384,3285572447,EU +3285572384,3285572447,BE 3285572448,3285572479,CH 3285572480,3285572607,FR 3285572608,3285572863,DK 3285572864,3285573119,IT 3285573120,3285573375,SE -3285573376,3285573535,EU +3285573376,3285573535,BE 3285573536,3285573567,CH 3285573568,3285573631,FR 3285573632,3285573887,NL 3285573888,3285573951,IL -3285573952,3285574143,EU +3285573952,3285574143,BE 3285574144,3285574399,RU 3285574400,3285574655,IL 3285574656,3285574911,GB 3285574912,3285575167,EU 3285575168,3285575423,ES 3285575424,3285575679,IL -3285575680,3285575935,EU +3285575680,3285575935,BE 3285575936,3285575999,DK -3285576000,3285576063,EU +3285576000,3285576063,BE 3285576064,3285576127,FR -3285576128,3285576159,EU +3285576128,3285576159,BE 3285576160,3285576191,DK -3285576192,3285576447,EU +3285576192,3285576447,BE 3285576448,3285576703,CZ 3285576704,3285576959,HU -3285576960,3285577215,EU +3285576960,3285577215,BE 3285577216,3285577471,ZA 3285577472,3285577599,IT -3285577600,3285577983,EU +3285577600,3285577983,BE 3285577984,3285578111,IT 3285578112,3285578239,DE -3285578240,3285578367,EU +3285578240,3285578367,BE 3285578368,3285578431,FR -3285578432,3285578495,EU +3285578432,3285578495,BE 3285578496,3285578751,DE -3285578752,3285579007,EU +3285578752,3285579007,BE 3285579008,3285579519,ES 3285579520,3285579775,FR 3285579776,3285580031,US 3285580032,3285580287,HU 3285580288,3285580415,DE -3285580416,3285580543,EU +3285580416,3285580543,BE 3285580544,3285580547,NL -3285580548,3285580651,EU +3285580548,3285580651,BE 3285580652,3285580655,SE -3285580656,3285580799,EU +3285580656,3285580799,BE 3285580800,3285580831,SE 3285580832,3285580847,PL -3285580848,3285580927,EU +3285580848,3285580927,BE 3285580928,3285581055,ZA -3285581056,3285581183,EU -3285581184,3285581311,BE -3285581312,3285581503,EU +3285581056,3285581503,BE 3285581504,3285581567,AT 3285581568,3285581599,FR 3285581600,3285581615,GB @@ -91752,11 +94187,11 @@ 3285930496,3285930559,EU 3285930560,3285930575,ES 3285930576,3285930623,GB -3285930624,3285930631,EU +3285930624,3285930631,BE 3285930632,3285930639,GB 3285930640,3285930655,ES 3285930656,3285930671,NL -3285930672,3285930679,EU +3285930672,3285930679,BE 3285930680,3285930687,DE 3285930688,3285930751,EU 3285930752,3285931007,GB @@ -91778,7 +94213,7 @@ 3285938624,3285938631,EU 3285938632,3285938639,ES 3285938640,3285938655,GB -3285938656,3285938687,EU +3285938656,3285938687,DE 3285938688,3285938943,ES 3285938944,3285938951,EU 3285938952,3285938959,NL @@ -91817,7 +94252,7 @@ 3285947904,3285948159,NL 3285948160,3285948671,GB 3285948672,3285948927,SA -3285948928,3285949183,GB +3285948928,3285949183,NG 3285949184,3285949439,ES 3285949440,3285949695,DE 3285949696,3285949823,ES @@ -92055,8 +94490,7 @@ 3286671360,3286679551,AT 3286679552,3286681631,IT 3286681632,3286681647,DE -3286681648,3286681655,GB -3286681656,3286681659,BE +3286681648,3286681659,IT 3286681660,3286681663,ES 3286681664,3286681695,FR 3286681696,3286681699,ES @@ -92068,8 +94502,7 @@ 3286681768,3286681775,DE 3286681776,3286681815,IT 3286681816,3286681823,FR -3286681824,3286682431,IT -3286682432,3286682463,FR +3286681824,3286682463,IT 3286682464,3286682495,RO 3286682496,3286682623,IT 3286682624,3286682879,SM @@ -92111,6 +94544,7 @@ 3286892544,3286893055,LI 3286893056,3286893567,RU 3286893568,3286894591,UA +3286894592,3286895103,PL 3286895104,3286895615,GB 3286895616,3286896127,DE 3286896128,3286896639,SE @@ -92120,7 +94554,7 @@ 3286898176,3286898687,HR 3286898688,3286899199,EU 3286899200,3286899711,IL -3286899712,3286900223,HU +3286899712,3286900223,DE 3286900224,3286900735,RO 3286900736,3286900991,BE 3286900992,3286901503,DE @@ -92298,6 +94732,7 @@ 3287218176,3287218431,DE 3287218432,3287218687,GB 3287218688,3287218943,RU +3287218944,3287219199,FR 3287219200,3287219455,DE 3287219456,3287219711,CH 3287219712,3287220223,SE @@ -92313,6 +94748,7 @@ 3287425024,3287427759,SE 3287427760,3287427775,GB 3287427776,3287433215,SE +3287433216,3287433727,PL 3287433728,3287434239,DE 3287434240,3287434751,PL 3287434752,3287435263,GB @@ -92379,7 +94815,7 @@ 3287464448,3287464703,PL 3287464704,3287464959,NL 3287464960,3287465215,SA -3287465216,3287465471,NO +3287465216,3287465471,SE 3287465472,3287465727,DE 3287465728,3287465983,FR 3287465984,3287467007,DK @@ -92437,9 +94873,7 @@ 3287555072,3287555583,GB 3287555584,3287556095,FR 3287556096,3287564287,TR -3287564288,3287564623,FI -3287564624,3287564655,AX -3287564656,3287572479,FI +3287564288,3287572479,FI 3287572480,3287578863,DE 3287578864,3287578879,LI 3287578880,3287580671,DE @@ -92488,7 +94922,6 @@ 3287664896,3287665151,GB 3287665152,3287665407,NO 3287665408,3287665919,PL -3287665920,3287666175,AT 3287666176,3287666431,RU 3287666432,3287666687,DK 3287666688,3287666943,SI @@ -92984,9 +95417,7 @@ 3290447872,3290456063,AR 3290456064,3290460159,MZ 3290460160,3290464255,ML -3290464256,3290468351,PR -3290468352,3290468607,DO -3290468608,3290471487,PR +3290464256,3290471487,PR 3290471488,3290471551,DO 3290471552,3290472447,PR 3290472448,3290480639,ZA @@ -92997,6 +95428,7 @@ 3290488832,3290489343,NG 3290489344,3290489855,KE 3290489856,3290490367,EG +3290490880,3290492927,ZA 3290497024,3290955775,ZA 3290955776,3290980351,CR 3290980352,3290984447,ZA @@ -93011,6 +95443,14 @@ 3291168768,3291176959,TZ 3291176960,3291185151,ZW 3291185152,3291201535,UG +3291201536,3291201791,KE +3291201792,3291202047,ZM +3291202048,3291202303,GH +3291202304,3291202559,ZA +3291202560,3291202815,GH +3291202816,3291203071,AO +3291203072,3291203327,EG +3291203328,3291203583,ZW 3291217920,3291230207,ZA 3291230208,3291234303,GH 3291234304,3291242495,ZA @@ -93182,6 +95622,8 @@ 3302753608,3302753615,GH 3302753616,3302760447,NG 3302760448,3302768639,ZA +3302768640,3302776831,NG +3302809600,3302817791,NG 3302817792,3302883327,EG 3302883328,3302948863,MA 3302948864,3302949119,MU @@ -93200,8 +95642,13 @@ 3302952960,3302953471,EG 3302953472,3302953727,NA 3302953728,3302953983,AO +3302953984,3302954239,SD +3302954240,3302954495,KE +3302987264,3302987775,MU 3305111552,3307208703,TN 3315597312,3316121599,EG +3316121600,3316645887,ZA +3316645888,3317170175,KE 3317694464,3318218751,EG 3318218752,3318743039,DZ 3319791616,3320053759,MU @@ -93627,32 +96074,7 @@ 3330778880,3330779135,GB 3330779136,3330791423,US 3330791424,3330791679,CA -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 +3330791680,3331102463,US 3331102464,3331102719,CA 3331102720,3331194879,US 3331194880,3331260415,AU @@ -93934,7 +96356,9 @@ 3339165696,3339167743,US 3339167744,3339168767,PR 3339168768,3339177983,US -3339177984,3339179007,PR +3339177984,3339178495,PR +3339178496,3339178751,DO +3339178752,3339179007,PR 3339179008,3339180031,US 3339180032,3339181055,CA 3339181056,3339184127,US @@ -93953,8 +96377,10 @@ 3339943936,3339952127,US 3339952128,3339956223,CA 3339956224,3339965439,US -3339965440,3339969535,CA -3339969536,3340058623,US +3339965440,3339969311,CA +3339969312,3339969327,AU +3339969328,3339969375,CA +3339969376,3340058623,US 3340075008,3340080127,US 3340080128,3340081151,CA 3340081152,3340084223,US @@ -93973,17 +96399,19 @@ 3340430080,3340451839,US 3340468224,3340481535,US 3340481536,3340482559,CA -3340482560,3340488703,US -3340500992,3340584703,US +3340482560,3340490751,US +3340490752,3340492799,CA +3340492800,3340584703,US 3340584704,3340584959,KW -3340584960,3340898047,US +3340584960,3340648447,US +3340664832,3340665855,CA +3340665856,3340677119,US +3340677120,3340679167,CA +3340679168,3340898047,US 3340898048,3340898303,CA 3340898304,3340925071,US 3340925072,3340925079,CA -3340925080,3340925199,US -3340925200,3340925207,RU -3340925208,3340925239,US -3340925240,3340925247,MX +3340925080,3340925247,US 3340925248,3340925255,AR 3340925256,3340925279,US 3340925280,3340925287,CA @@ -94073,7 +96501,10 @@ 3340926928,3340926935,ES 3340926936,3340926951,US 3340926952,3340926959,BR -3340926960,3341444863,US +3340926960,3341041663,US +3341058048,3341082623,US +3341082624,3341084671,CA +3341084672,3341444863,US 3341444864,3341445631,DE 3341445632,3341479935,US 3341479936,3341480447,DE @@ -94105,7 +96536,10 @@ 3341645056,3341645567,CA 3341645568,3341646079,US 3341646080,3341646591,CA -3341646592,3342139391,US +3341646592,3341762559,US +3341778944,3341807615,US +3341807616,3341808639,CA +3341808640,3342139391,US 3342139392,3342204927,CH 3342204928,3342598143,US 3342598144,3342603263,CA @@ -94231,7 +96665,10 @@ 3350470656,3350475775,US 3350475776,3350476799,CA 3350476800,3350478847,US -3350528000,3350790143,US +3350528000,3350593535,US +3350593536,3350609919,CA +3350614016,3350618111,US +3350626304,3350790143,US 3350790144,3350825727,CA 3350825728,3350825983,GB 3350825984,3350855679,CA @@ -94413,8 +96850,8 @@ 3355052288,3355053311,CA 3355053312,3355053567,US 3355054080,3355260927,US -3355260928,3355262975,CA -3355262976,3355310591,US +3355260928,3355262719,CA +3355262720,3355310591,US 3355310592,3355311103,CA 3355312128,3355319295,US 3355319296,3355320319,CA @@ -94820,6 +97257,7 @@ 3356273408,3356273663,CL 3356273664,3356274431,SV 3356274432,3356278783,CO +3356278784,3356279039,AR 3356279040,3356279295,VE 3356279296,3356279807,CL 3356279808,3356280831,EC @@ -94859,8 +97297,10 @@ 3356295168,3356297215,CL 3356297216,3356299263,BR 3356299264,3356305663,MX -3356305664,3356306431,AR -3356307456,3356328959,MX +3356305664,3356307455,AR +3356307456,3356316671,MX +3356316672,3356317695,AR +3356317696,3356328959,MX 3356329984,3356332031,GF 3356332032,3356334079,CU 3356334080,3356336127,BO @@ -95207,7 +97647,8 @@ 3359249760,3359249791,BR 3359249792,3359249887,AR 3359249888,3359250175,US -3359250176,3359252039,AR +3359250176,3359252031,AR +3359252032,3359252039,US 3359252040,3359252047,IT 3359252048,3359252063,US 3359252064,3359252095,AR @@ -95219,7 +97660,7 @@ 3359257088,3359257103,BR 3359257104,3359257127,AR 3359257128,3359257135,BR -3359257136,3359257151,AR +3359257136,3359257151,US 3359257152,3359257183,BR 3359257184,3359257215,US 3359257216,3359257247,AR @@ -95604,6 +98045,7 @@ 3362529280,3362533375,PA 3362537472,3362545663,AR 3362545664,3362549759,PE +3362549760,3362551807,AR 3362553856,3362557951,PY 3362562048,3362563071,BZ 3362563072,3362563199,PA @@ -96465,7 +98907,6 @@ 3392407552,3392409599,ID 3392409600,3392413695,JP 3392413696,3392413951,PK -3392413952,3392414207,HK 3392414208,3392414463,PH 3392414464,3392414719,HK 3392414720,3392415231,AU @@ -96631,6 +99072,19 @@ 3392923136,3392923391,BN 3392923392,3392923647,AP 3392923648,3392924159,CN +3392924160,3392924671,JP +3392924672,3392924927,PH +3392924928,3392925183,AU +3392925184,3392925695,VN +3392925696,3392926719,AU +3392926720,3392927231,IN +3392927232,3392927743,AU +3392927744,3392927999,IN +3392928000,3392928255,HK +3392928256,3392928767,TW +3392928768,3392929279,VN +3392929280,3392929535,PK +3392929536,3392929791,ID 3392929792,3392931839,MU 3392931840,3392933887,PH 3392933888,3392942079,JP @@ -96654,6 +99108,27 @@ 3392999424,3393003519,JP 3393003520,3393011711,PK 3393011712,3393019903,PH +3393019904,3393020159,ID +3393020160,3393020415,MN +3393020416,3393021439,ID +3393021440,3393021695,IN +3393021696,3393021951,HK +3393021952,3393022463,ID +3393022464,3393022975,AP +3393022976,3393023231,PH +3393023232,3393023487,AU +3393023488,3393023743,SG +3393023744,3393023999,IN +3393024000,3393024511,ID +3393024512,3393025023,NZ +3393025024,3393025279,AU +3393025280,3393025535,IN +3393025536,3393025791,PH +3393025792,3393026047,AU +3393026048,3393026559,HK +3393026560,3393026815,AU +3393026816,3393027071,PK +3393027072,3393027583,ID 3393028096,3393060863,AU 3393060864,3393062911,FJ 3393062912,3393069055,ID @@ -97025,6 +99500,8 @@ 3394896896,3394897919,TH 3394897920,3394899967,JP 3394899968,3394904063,SG +3394904064,3394904319,AU +3394904320,3394904575,IN 3394904576,3394905087,AU 3394905088,3394905343,BN 3394905344,3394906111,AU @@ -99015,7 +101492,6 @@ 3412296192,3412296703,ID 3412296704,3412297727,NZ 3412297728,3412298751,MY -3412298752,3412299263,SG 3412299264,3412299519,AU 3412299520,3412299775,HK 3412299776,3412302847,AU @@ -99150,12 +101626,14 @@ 3413593856,3413594111,KH 3413594112,3413595135,CN 3413595136,3413595391,NZ -3413595392,3413595647,AP +3413595392,3413595647,CN 3413595648,3413595903,AU 3413595904,3413596159,HK 3413596160,3413596671,AP 3413596672,3413597183,NP 3413597184,3413597695,AP +3413597696,3413597951,TW +3413597952,3413598207,AU 3413639168,3413704703,SG 3413704704,3413737471,MY 3413737472,3413753855,TH @@ -100476,9 +102954,7 @@ 3423161480,3423161487,HK 3423161488,3423161613,US 3423161614,3423161621,CA -3423161622,3423177471,US -3423177472,3423177727,CA -3423177728,3423182847,US +3423161622,3423182847,US 3423182848,3423183199,CA 3423183200,3423183231,BM 3423183232,3423183263,CA @@ -100500,9 +102976,7 @@ 3423208194,3423208383,AN 3423208384,3423221759,US 3423221760,3423222783,CA -3423222784,3423234751,US -3423234752,3423234783,CA -3423234784,3423235543,US +3423222784,3423235543,US 3423235544,3423235551,TR 3423235552,3423235559,US 3423235560,3423235563,TR @@ -100523,7 +102997,6 @@ 3423264864,3423265247,US 3423265248,3423265263,EC 3423265264,3423266815,US -3423266872,3423266879,US 3423268864,3423269135,CA 3423269136,3423269151,US 3423269152,3423269887,CA @@ -100788,54 +103261,12 @@ 3423401192,3423402943,US 3423402944,3423402951,RU 3423402952,3423412223,US -3423412240,3423412255,GR -3423412256,3423412287,TK -3423412288,3423412319,RU -3423412320,3423412335,CA -3423412416,3423412479,SA -3423412480,3423412495,CA -3423412496,3423412511,US -3423412544,3423412623,FR -3423412624,3423412639,NO -3423412656,3423412671,RU -3423412688,3423412703,CA -3423412704,3423412719,RU -3423412720,3423412727,US -3423412736,3423412751,CA -3423412752,3423412767,US -3423412768,3423412783,FI -3423412800,3423412815,US -3423412816,3423412831,GR -3423412848,3423412863,US -3423412928,3423412991,NL -3423413056,3423413071,US -3423413072,3423413135,CA -3423413152,3423413167,US -3423413184,3423413247,RS -3423413248,3423413279,US -3423413280,3423413295,SE -3423413312,3423413327,PT -3423413328,3423413343,US -3423413376,3423413759,US -3423414016,3423414143,CA -3423414144,3423414159,FR -3423414192,3423414207,US 3423414272,3423416319,US 3423417344,3423417470,US 3423417471,3423417480,AU -3423417481,3423417636,US -3423417637,3423417646,CA -3423417647,3423417715,US -3423417716,3423417725,BR -3423417726,3423417769,US -3423417770,3423417777,CA -3423417778,3423417954,US -3423417955,3423417964,GB -3423417965,3423417975,US +3423417481,3423417975,US 3423417976,3423417995,RO -3423417996,3423418172,US -3423418173,3423418180,JP -3423418181,3423462655,US +3423417996,3423462655,US 3423462656,3423462671,CA 3423462672,3423473663,US 3423473664,3423474655,CA @@ -100846,9 +103277,7 @@ 3423480320,3423480447,NG 3423480448,3423480527,A2 3423480528,3423480543,US -3423480544,3423480575,A2 -3423480576,3423480831,DM -3423480832,3423480927,A2 +3423480544,3423480927,A2 3423480928,3423480935,US 3423480936,3423480943,AO 3423480944,3423481007,A2 @@ -100861,9 +103290,9 @@ 3423481856,3423493631,US 3423493632,3423493887,RU 3423493888,3423493903,ID -3423493904,3423493911,ES -3423493912,3423493927,TT -3423493928,3423493967,US +3423493904,3423493911,US +3423493912,3423493919,TT +3423493920,3423493967,US 3423493968,3423493975,AT 3423493976,3423498079,US 3423498080,3423498087,CA @@ -100910,11 +103339,7 @@ 3423585536,3423585551,IR 3423585552,3423585631,CA 3423585632,3423585647,US -3423585648,3423585807,CA -3423585808,3423585823,US -3423585824,3423585839,CA -3423585840,3423585847,US -3423585848,3423585879,CA +3423585648,3423585879,CA 3423585880,3423585887,US 3423585888,3423585895,CA 3423585896,3423585903,NL @@ -100924,7 +103349,7 @@ 3423585928,3423585935,NZ 3423585936,3423585999,CA 3423586000,3423586007,US -3423586008,3423586015,PA +3423586008,3423586015,NZ 3423586016,3423586031,US 3423586032,3423586039,NZ 3423586040,3423586159,CA @@ -100972,42 +103397,7 @@ 3423858688,3423862783,CA 3423862784,3424334847,US 3424334848,3424335871,CA -3424335872,3424335903,US -3424335904,3424335911,CN -3424335912,3424335943,US -3424335944,3424335951,BY -3424335952,3424335983,US -3424335984,3424335991,GB -3424335992,3424336015,US -3424336016,3424336023,BY -3424336024,3424336087,US -3424336088,3424336111,CA -3424336112,3424336367,US -3424336368,3424336375,SE -3424336376,3424336495,US -3424336496,3424336511,CN -3424336512,3424336647,US -3424336648,3424336655,BY -3424336656,3424336703,US -3424336704,3424336711,SG -3424336712,3424336743,US -3424336744,3424336751,GB -3424336752,3424336775,US -3424336776,3424336783,BE -3424336784,3424336847,US -3424336848,3424336855,BR -3424336856,3424336871,US -3424336872,3424336879,IN -3424336880,3424337151,US -3424337152,3424337159,BY -3424337160,3424337175,US -3424337176,3424337183,SG -3424337184,3424337191,US -3424337192,3424337199,BY -3424337200,3424337255,US -3424337256,3424337263,IL -3424337264,3424337271,MX -3424337272,3424378879,US +3424335872,3424378879,US 3424378880,3424379135,PR 3424379136,3424493823,US 3424493824,3424494079,CA @@ -101660,15 +104050,21 @@ 3434917376,3434917887,AG 3434917888,3435069439,US 3435069440,3435134975,CA -3435134976,3436249087,US -3436249088,3436282367,CA +3435134976,3435507711,US +3435507712,3435511807,CA +3435511808,3436249087,US +3436249088,3436255743,CA +3436255744,3436256255,US +3436256256,3436282367,CA 3436282368,3436282623,US 3436282624,3436289791,CA 3436289792,3436290047,US 3436290048,3436314623,CA 3436314624,3436476415,US 3436476416,3436478463,AW -3436478464,3436697087,US +3436478464,3436492799,US +3436492800,3436493055,NL +3436493056,3436697087,US 3436697088,3436697343,VE 3436697344,3437232383,US 3437232384,3437232639,CA @@ -101692,16 +104088,26 @@ 3437292800,3437293055,CA 3437293056,3437296639,US 3437296640,3437296895,CA -3437296896,3437297663,US -3437297664,3437310975,CA +3437296896,3437297919,US +3437297920,3437307391,CA +3437307392,3437307903,US +3437307904,3437310975,CA 3437310976,3437311487,US 3437311488,3437331711,CA 3437331712,3437331967,US -3437331968,3437334015,CA +3437331968,3437332479,CA +3437332480,3437332735,US +3437332736,3437334015,CA 3437334016,3437334271,US -3437334272,3437341695,CA +3437334272,3437336063,CA +3437336064,3437336319,US +3437336320,3437341695,CA 3437341696,3437341951,US -3437341952,3437358847,CA +3437341952,3437343231,CA +3437343232,3437343487,US +3437343488,3437350911,CA +3437350912,3437351423,US +3437351424,3437358847,CA 3437358848,3437359103,US 3437359104,3437428735,CA 3437428736,3437691391,US @@ -101962,11 +104368,22 @@ 3438034944,3438051327,BS 3438051328,3438084095,US 3438084096,3438116863,CA -3438116864,3438215167,US -3438215168,3438217983,CA +3438116864,3438215423,US +3438215424,3438215935,CA +3438215936,3438216191,US +3438216192,3438217983,CA 3438217984,3438218239,US 3438218240,3438218751,CA -3438219264,3438280703,CA +3438218752,3438219263,US +3438219264,3438219519,CA +3438219520,3438219775,US +3438219776,3438246911,CA +3438246912,3438247167,US +3438247168,3438252543,CA +3438252544,3438252799,US +3438252800,3438261759,CA +3438261760,3438262015,US +3438262016,3438280703,CA 3438280704,3438542847,US 3438542848,3438544943,CA 3438544944,3438544959,TC @@ -101991,9 +104408,7 @@ 3438592264,3438600319,CA 3438600320,3438600351,US 3438600352,3438608383,CA -3438608384,3438689535,US -3438689536,3438689791,CA -3438689792,3438813183,US +3438608384,3438813183,US 3438813184,3438814207,GH 3438814208,3438895103,US 3438895104,3438896895,HN @@ -102092,7 +104507,11 @@ 3448399360,3448399871,CA 3448399872,3448411391,US 3448411392,3448411455,CA -3448411456,3448461311,US +3448411456,3448414271,US +3448414272,3448414295,JP +3448414296,3448414303,US +3448414304,3448414335,JP +3448414336,3448461311,US 3448461312,3448461391,GB 3448461392,3448461415,US 3448461416,3448461423,SG @@ -102129,7 +104548,12 @@ 3448545952,3448545967,SG 3448545968,3448545975,MY 3448545976,3448546007,AU -3448546008,3448556671,US +3448546008,3448546047,US +3448546048,3448546079,MY +3448546080,3448546119,SG +3448546120,3448546175,US +3448546176,3448546207,SG +3448546208,3448556671,US 3448556672,3448556735,GB 3448556736,3448556799,US 3448556800,3448556815,GB @@ -102139,7 +104563,9 @@ 3448559104,3448559359,GB 3448559360,3448563015,US 3448563016,3448563031,GB -3448563032,3449001245,US +3448563032,3448569055,US +3448569056,3448569087,MX +3448569088,3449001245,US 3449001246,3449001246,MC 3449001247,3449159679,US 3449159680,3449160703,CA @@ -102350,7 +104776,9 @@ 3450936320,3450936351,HK 3450936352,3450974255,US 3450974256,3450974271,GB -3450974272,3451170303,US +3450974272,3450986495,US +3450986496,3450986751,HK +3450986752,3451170303,US 3451170304,3451170559,VE 3451170560,3451187967,US 3451187968,3451188223,AU @@ -102360,7 +104788,9 @@ 3451236352,3451236607,HU 3451236608,3451371519,US 3451371520,3451371775,GB -3451371776,3451506687,US +3451371776,3451482111,US +3451482112,3451486207,CA +3451486208,3451506687,US 3451506688,3451507199,BR 3451507200,3451715583,US 3451715584,3451737343,CA @@ -102420,7 +104850,7 @@ 3452436480,3452502015,CA 3452502016,3452678143,US 3452678144,3452682239,BE -3452682240,3452706815,US +3452682240,3452715007,US 3452715008,3452723199,CA 3452731392,3452764159,US 3452764160,3452764439,CA @@ -102474,9 +104904,7 @@ 3452936192,3452960767,CA 3452960768,3453026303,US 3453026304,3453028607,CA -3453029376,3453032447,US -3453032448,3453032703,CA -3453032704,3453039167,US +3453029376,3453039167,US 3453039168,3453039183,AU 3453039184,3453039199,US 3453039200,3453039215,CA @@ -102718,8 +105146,8 @@ 3453554880,3453555711,US 3453555712,3453555767,GB 3453555768,3453599999,US -3453600000,3453600511,GB -3453600512,3453607935,US +3453600000,3453600767,GB +3453600768,3453607935,US 3453607936,3453608959,KN 3453608960,3453609983,LC 3453609984,3453610495,AG @@ -102942,7 +105370,9 @@ 3455647488,3455647743,IT 3455647744,3455713279,US 3455713280,3455778815,CA -3455778816,3456303103,US +3455778816,3455871999,US +3455872000,3455872255,ZM +3455872256,3456303103,US 3456303104,3456311295,JP 3456311296,3456892927,US 3456892928,3456958463,CA @@ -102998,7 +105428,11 @@ 3458144000,3458144015,DE 3458144016,3458144031,US 3458144032,3458144047,DE -3458144048,3458195455,US +3458144048,3458144111,US +3458144112,3458144119,CA +3458144120,3458144415,US +3458144416,3458144423,DE +3458144424,3458195455,US 3458195456,3458196479,SG 3458196480,3458765631,US 3458765632,3458765695,CA @@ -103199,30 +105633,31 @@ 3460161536,3460163583,PR 3460163584,3460374527,US 3460374528,3460375551,MX -3460375552,3460408359,US -3460408360,3460408367,DE -3460408368,3460409951,US -3460409952,3460409967,DE -3460409968,3460413535,US -3460413536,3460413543,DE -3460413544,3460453631,US +3460375552,3460453631,US 3460453632,3460453887,BS 3460453888,3460507647,US 3460507648,3460507903,MX -3460507904,3460854911,US +3460507904,3460854439,US +3460854440,3460854447,CA +3460854448,3460854831,US +3460854832,3460854847,VE +3460854848,3460854911,US 3460854912,3460854943,GB 3460854944,3460855023,US 3460855024,3460855031,BR 3460855032,3460855247,US 3460855248,3460855255,AU -3460855256,3460855271,US +3460855256,3460855263,VE +3460855264,3460855271,US 3460855272,3460855279,GB 3460855280,3460855287,CA 3460855288,3460855311,US 3460855312,3460855319,CA 3460855320,3460855463,US 3460855464,3460855471,SA -3460855472,3460855535,US +3460855472,3460855495,US +3460855496,3460855503,CA +3460855504,3460855535,US 3460855536,3460855543,MX 3460855544,3460855551,AU 3460855552,3460855631,US @@ -103239,11 +105674,10 @@ 3460855864,3460855871,US 3460855872,3460855879,GB 3460855880,3460855887,GU -3460855888,3460855927,US -3460855928,3460855935,GB -3460855936,3460856007,US +3460855888,3460856007,US 3460856008,3460856015,CA -3460856016,3460856127,US +3460856016,3460856119,US +3460856120,3460856127,GB 3460856128,3460856135,JP 3460856136,3460856191,US 3460856192,3460856199,ZA @@ -103732,35 +106166,13 @@ 3462340608,3462340863,CA 3462340864,3462350847,US 3462350848,3462351103,CA -3462351104,3462478559,US -3462478560,3462478591,IL -3462478592,3462478623,US -3462478624,3462478655,IL -3462478656,3462478943,US -3462478944,3462478975,IL -3462478976,3462571095,US +3462351104,3462571095,US 3462571096,3462571103,CA 3462571104,3462571663,US 3462571664,3462571671,CA 3462571672,3462593791,US 3462593792,3462594559,GN -3462594560,3462605823,US -3462605824,3462606847,UY -3462606848,3462606863,US -3462606864,3462606927,UY -3462606928,3462606943,US -3462606944,3462606991,UY -3462606992,3462607007,US -3462607008,3462607087,UY -3462607088,3462607135,US -3462607136,3462607167,UY -3462607168,3462607199,US -3462607200,3462607231,UY -3462607232,3462607263,US -3462607264,3462608799,UY -3462608800,3462608815,US -3462608816,3462608895,UY -3462608896,3462633727,US +3462594560,3462633727,US 3462633728,3462633799,BV 3462633800,3462633823,US 3462633824,3462633855,SG @@ -103842,9 +106254,7 @@ 3464196160,3464196175,US 3464196176,3464196183,AU 3464196184,3464196191,IT -3464196192,3464196287,US -3464196288,3464196295,SG -3464196296,3464208383,US +3464196192,3464208383,US 3464208384,3464216575,CA 3464216576,3464309903,US 3464309904,3464309911,CA @@ -103862,7 +106272,8 @@ 3464342544,3464342559,SE 3464342560,3464342703,US 3464342704,3464342711,JP -3464342712,3464342879,US +3464342712,3464342871,US +3464342872,3464342879,ZA 3464342880,3464342887,GB 3464342888,3464343111,US 3464343112,3464343119,CN @@ -103944,7 +106355,9 @@ 3465413120,3465413127,HK 3465413128,3465413375,US 3465413376,3465413383,HK -3465413384,3465510911,US +3465413384,3465462783,US +3465462784,3465463039,GB +3465463040,3465510911,US 3465510912,3465543679,JP 3465543680,3465982991,US 3465982992,3465983007,GB @@ -104209,8 +106622,7 @@ 3468082432,3468082687,NO 3468082688,3468083311,US 3468083312,3468083327,IN -3468083328,3468083391,BR -3468083392,3468083663,US +3468083328,3468083663,US 3468083664,3468083679,ID 3468083680,3468083967,US 3468083968,3468084223,AU @@ -104321,9 +106733,7 @@ 3468128256,3468296191,US 3468296192,3468309503,CA 3468309504,3468309759,US -3468309760,3468313471,CA -3468313472,3468313599,US -3468313600,3468319999,CA +3468309760,3468319999,CA 3468320000,3468320255,US 3468320256,3468320351,CA 3468320352,3468320383,US @@ -104365,7 +106775,9 @@ 3468460032,3468468223,BM 3468468224,3468545791,US 3468545792,3468546047,SG -3468546048,3468623871,US +3468546048,3468619007,US +3468619008,3468619263,CA +3468619264,3468623871,US 3468623872,3468624527,CA 3468624528,3468624543,US 3468624544,3468624551,CA @@ -104388,7 +106800,9 @@ 3468628512,3468628607,US 3468628608,3468628927,CA 3468628928,3468628991,US -3468628992,3468631583,CA +3468628992,3468629311,CA +3468629312,3468629319,US +3468629320,3468631583,CA 3468631584,3468631615,US 3468631616,3468631679,CA 3468631680,3468631695,US @@ -104426,22 +106840,18 @@ 3469901824,3470131199,US 3470131200,3470137343,AG 3470137344,3470139391,VG +3470139392,3470143487,US 3470147584,3470148095,US 3470148096,3470148351,CA -3470148352,3470148607,US -3470148608,3470148863,CR +3470148352,3470148863,US 3470148864,3470149119,CA 3470149120,3470150655,US 3470150656,3470150911,CA 3470150912,3470151935,US -3470151936,3470152703,CA -3470152704,3470153215,US -3470153216,3470153471,CA -3470153472,3470154495,US -3470154496,3470154751,CA -3470154752,3470155007,US -3470155008,3470155775,CA -3470155776,3470184454,US +3470151936,3470152447,CA +3470152448,3470153983,US +3470153984,3470154239,CA +3470154240,3470184454,US 3470184455,3470184458,LK 3470184459,3470184460,RU 3470184461,3470184476,US @@ -104914,6 +107324,7 @@ 3470188511,3470188521,US 3470188522,3470188541,HK 3470188542,3470192639,US +3470192640,3470196735,CA 3470196736,3470360631,US 3470360632,3470360639,CA 3470360640,3470360687,US @@ -104922,30 +107333,25 @@ 3470360800,3470360807,CA 3470360808,3470361039,US 3470361040,3470361055,CA -3470361056,3470361615,US -3470361616,3470361623,AF -3470361624,3470361655,US +3470361056,3470361655,US 3470361656,3470361671,CA 3470361672,3470361703,US 3470361704,3470361711,AF 3470361712,3470361935,US 3470361936,3470361951,CA -3470361952,3470361959,CL -3470361960,3470361983,US +3470361952,3470361983,US 3470361984,3470361991,CA 3470361992,3470362111,US 3470362112,3470362119,CA 3470362120,3470362127,AU 3470362128,3470362159,US 3470362160,3470362167,AF -3470362168,3470362175,US -3470362176,3470362191,CA -3470362192,3470362263,US +3470362168,3470362263,US 3470362264,3470362271,NZ 3470362272,3470362319,US 3470362320,3470362335,AF -3470362336,3470362447,US -3470362448,3470362479,CA +3470362336,3470362455,US +3470362456,3470362479,CA 3470362480,3470362495,US 3470362496,3470362503,CA 3470362504,3470362559,US @@ -104974,9 +107380,7 @@ 3470364416,3470364479,CA 3470364480,3470364495,HN 3470364496,3470364503,CA -3470364504,3470364527,US -3470364528,3470364535,CA -3470364536,3470458879,US +3470364504,3470458879,US 3470458880,3470475263,KR 3470475264,3470558207,US 3470558208,3470559231,HK @@ -105232,9 +107636,7 @@ 3470794752,3470802943,PA 3470802944,3470873288,US 3470873289,3470873296,MX -3470873297,3470873584,US -3470873585,3470873592,NA -3470873593,3470875817,US +3470873297,3470875817,US 3470875818,3470875827,JP 3470875828,3470876402,US 3470876403,3470876410,IN @@ -105270,57 +107672,11 @@ 3473040896,3473041407,BM 3473041408,3473096192,US 3473096193,3473096447,PH -3473096448,3473109007,US -3473109008,3473109023,UY -3473109024,3473109039,US -3473109040,3473109071,UY -3473109072,3473109087,US -3473109088,3473109151,UY -3473109152,3473109167,US -3473109168,3473109183,UY -3473109184,3473109215,US -3473109216,3473109247,UY -3473109248,3473109279,US -3473109280,3473109311,UY -3473109312,3473109407,US -3473109408,3473109471,UY -3473109472,3473109487,US -3473109488,3473109495,UY -3473109496,3473109535,US -3473109536,3473109543,UY -3473109544,3473109567,US -3473109568,3473109695,UY -3473109696,3473109791,US -3473109792,3473110271,UY -3473110272,3473110303,US -3473110304,3473110383,UY -3473110384,3473110399,US -3473110400,3473110431,UY -3473110432,3473110495,US -3473110496,3473110783,UY -3473110784,3473110791,US -3473110792,3473110815,UY -3473110816,3473110831,US -3473110832,3473111007,UY -3473111008,3473111167,US -3473111168,3473112575,UY -3473112576,3473112639,US -3473112640,3473112703,UY -3473112704,3473112831,US -3473112832,3473112863,UY -3473112864,3473112895,US -3473112896,3473112959,UY -3473112960,3473276927,US +3473096448,3473276927,US 3473276928,3473342463,CA 3473342464,3473375495,US 3473375496,3473375503,NZ -3473375504,3473375671,US -3473375672,3473375679,GB -3473375680,3473377279,US -3473377280,3473377535,GB -3473377536,3473378559,US -3473378560,3473378575,DE -3473378576,3473381311,US +3473375504,3473381311,US 3473381312,3473381343,DE 3473381344,3473703551,US 3473703552,3473703679,CA @@ -105401,7 +107757,9 @@ 3475745536,3475752703,US 3475752704,3475752959,AN 3475752960,3475881983,US -3475881984,3475884031,CA +3475881984,3475883487,CA +3475883488,3475883519,US +3475883520,3475884031,CA 3475884032,3475884287,US 3475884288,3475884319,CA 3475884320,3475884327,US @@ -105416,9 +107774,7 @@ 3476076320,3476076351,JO 3476076352,3476111359,US 3476111360,3476111871,CA -3476111872,3476221951,US -3476221952,3476223999,UY -3476224000,3476265855,US +3476111872,3476265855,US 3476265856,3476265919,EG 3476265920,3476348927,US 3476348928,3476349183,CA @@ -105448,9 +107804,7 @@ 3476721320,3476721327,GB 3476721328,3476721679,US 3476721680,3476721687,IT -3476721688,3476721703,US -3476721704,3476721711,SI -3476721712,3476721743,US +3476721688,3476721743,US 3476721744,3476721759,CA 3476721760,3476721799,US 3476721800,3476721807,GB @@ -105469,11 +107823,7 @@ 3476722528,3476722543,AU 3476722544,3476722591,US 3476722592,3476722607,GB -3476722608,3476722695,US -3476722696,3476722703,CA -3476722704,3476722727,US -3476722728,3476722735,BR -3476722736,3476722759,US +3476722608,3476722759,US 3476722760,3476722767,IN 3476722768,3476722775,US 3476722776,3476722783,GB @@ -105483,22 +107833,17 @@ 3476725184,3476725215,ZA 3476725216,3476725247,US 3476725248,3476725255,CA -3476725256,3476725263,NL -3476725264,3476725287,US -3476725288,3476725295,NL +3476725256,3476725295,US 3476725296,3476725303,CA -3476725304,3476725359,NL +3476725304,3476725351,US +3476725352,3476725359,NL 3476725360,3476725367,US 3476725368,3476725375,CA -3476725376,3476725383,VE -3476725384,3476725399,US +3476725376,3476725399,US 3476725400,3476725415,CA 3476725416,3476725423,US 3476725424,3476725431,GB -3476725432,3476725439,NL -3476725440,3476725455,US -3476725456,3476725463,NL -3476725464,3476732373,US +3476725432,3476732373,US 3476732374,3476732377,MX 3476732378,3476881407,US 3476881408,3476946943,CA @@ -105526,9 +107871,7 @@ 3478323392,3478323399,CA 3478323400,3478331519,US 3478331520,3478331647,GB -3478331648,3478331839,US -3478331840,3478331847,DK -3478331848,3478332991,US +3478331648,3478332991,US 3478332992,3478332999,CA 3478333000,3478347903,US 3478347904,3478348031,MX @@ -105545,9 +107888,7 @@ 3478364272,3478372351,US 3478372352,3478380543,MX 3478380544,3479207935,US -3479207936,3479214079,CA -3479214080,3479214335,US -3479214336,3479240703,CA +3479207936,3479240703,CA 3479240704,3479289919,US 3479289920,3479289951,BD 3479289952,3479290063,US @@ -105732,9 +108073,7 @@ 3480251072,3480256511,CA 3480256512,3480284159,US 3480284160,3480284671,CA -3480284672,3480416063,US -3480416064,3480416095,PA -3480416096,3480444927,US +3480284672,3480444927,US 3480444928,3480446335,CA 3480446336,3480446463,US 3480446464,3480446575,CA @@ -105888,8 +108227,8 @@ 3480612096,3480612351,LU 3480612352,3480613631,DE 3480613632,3480839423,US -3480839424,3480840191,GB -3480840192,3480907263,US +3480839424,3480839935,GB +3480839936,3480907263,US 3480907264,3480907775,FR 3480907776,3480968191,US 3480968192,3480968447,AU @@ -105968,11 +108307,7 @@ 3483877376,3483893759,CA 3483893760,3484013055,US 3484013056,3484013567,DE -3484013568,3484319743,US -3484320256,3484320815,US -3484320816,3484320823,DE -3484320832,3484321279,US -3484321792,3484450815,US +3484013568,3484450815,US 3484450816,3484451839,CA 3484451840,3484451871,US 3484451872,3484455263,CA @@ -106156,7 +108491,7 @@ 3486269440,3486285823,JM 3486285824,3486302207,PR 3486302208,3486310399,CA -3486318592,3486501951,US +3486310400,3486501951,US 3486501952,3486501967,DE 3486501968,3486580735,US 3486580736,3486580991,GB @@ -106430,11 +108765,7 @@ 3487858688,3487859199,KY 3487859200,3487861759,BM 3487861760,3487862015,KY -3487862016,3487862271,BM -3487862272,3487862783,KY -3487862784,3487863039,BM -3487863040,3487863807,KY -3487863808,3487875071,BM +3487862016,3487875071,BM 3487875072,3487891455,US 3487891456,3487907839,CA 3487907840,3487969791,US @@ -106526,13 +108857,7 @@ 3489969152,3489969663,PR 3489969664,3490041503,US 3490041504,3490041535,CA -3490041536,3490072831,US -3490072832,3490073279,CA -3490073280,3490073311,US -3490073312,3490073375,CA -3490073376,3490073599,US -3490073600,3490074622,CA -3490074623,3490228735,US +3490041536,3490228735,US 3490228736,3490229247,CO 3490229248,3490263039,US 3490263040,3490267135,CO @@ -106658,25 +108983,12 @@ 3493081600,3493082623,PY 3493082624,3493089023,US 3493089024,3493089279,A2 -3493089280,3493089311,BO -3493089312,3493089343,US -3493089344,3493090815,BO -3493090816,3493091327,US +3493089280,3493091327,US 3493091328,3493092351,BO 3493092352,3493092607,NA -3493092608,3493135167,US -3493135168,3493135199,CY -3493135200,3493135871,US -3493135872,3493136127,CA -3493136128,3493138207,US +3493092608,3493138207,US 3493138208,3493138239,DE -3493138240,3493139711,US -3493139712,3493139775,CA -3493139776,3493139839,US -3493139840,3493139935,CA -3493139936,3493140127,US -3493140128,3493140159,CA -3493140160,3493141279,US +3493138240,3493141279,US 3493141280,3493141311,CY 3493141312,3493244927,US 3493244928,3493249023,PR @@ -106701,9 +109013,11 @@ 3493902216,3493902223,CA 3493902224,3493903551,US 3493903552,3493903567,KW -3493903568,3493907199,US +3493903568,3493906431,US +3493906944,3493907199,US 3493907200,3493907231,GB -3493907232,3493914111,US +3493907232,3493907263,US +3493907328,3493914111,US 3493914112,3493914367,CA 3493914368,3493936127,US 3493936128,3493937151,CA @@ -106718,47 +109032,14 @@ 3493991424,3493998591,US 3493998592,3494000639,AI 3494000640,3494003711,US -3494003712,3494003967,CA -3494003968,3494003983,US -3494003984,3494003991,SA -3494003992,3494003999,US -3494004000,3494004047,CA -3494004048,3494004055,US -3494004056,3494004095,CA -3494004096,3494004111,US -3494004112,3494004127,CA -3494004128,3494004159,BR -3494004160,3494004183,US -3494004184,3494004290,CA -3494004291,3494004312,US -3494004313,3494004319,CA -3494004320,3494004351,FR -3494004352,3494004383,US -3494004384,3494004735,CA +3494003712,3494004735,CA 3494004736,3494009855,US 3494009856,3494010879,CA 3494010880,3494011231,US 3494011232,3494011247,HK 3494011248,3494014975,US 3494014976,3494017023,CA -3494017024,3494035455,US -3494035712,3494035791,US -3494035792,3494035807,BY -3494035808,3494035823,CY -3494035824,3494035887,US -3494035888,3494035904,RU -3494035905,3494035967,ES -3494035968,3494036031,US -3494036032,3494036047,CA -3494036048,3494036063,RU -3494036064,3494036255,US -3494036256,3494036287,CA -3494036288,3494036319,US -3494036320,3494036351,RU -3494036352,3494036417,EE -3494036418,3494036431,US -3494036432,3494036439,RU -3494036480,3494044671,US +3494017024,3494044671,US 3494044672,3494045695,CA 3494045696,3494049791,US 3494049792,3494051839,CA @@ -106787,16 +109068,7 @@ 3494110092,3494110109,CA 3494110110,3494110145,US 3494110146,3494110161,CA -3494110162,3494114303,US -3494115328,3494115471,US -3494115472,3494115487,AU -3494115488,3494116407,US -3494116408,3494116415,CA -3494116416,3494116431,US -3494116432,3494116439,GB -3494116440,3494116511,US -3494116512,3494116519,NL -3494116520,3494121471,US +3494110162,3494121471,US 3494121472,3494122495,CA 3494122496,3494135807,US 3494135808,3494136831,CA @@ -106894,8 +109166,8 @@ 3494299688,3494299695,SC 3494299696,3494299727,US 3494299728,3494299735,SC -3494299736,3494300359,US -3494300360,3494300383,TW +3494299736,3494300367,US +3494300368,3494300383,TW 3494300384,3494300927,US 3494300928,3494301055,TW 3494301056,3494301247,US @@ -107040,96 +109312,8 @@ 3494605824,3494606847,CA 3494606848,3494610943,US 3494610944,3494611967,CA -3494611968,3494624263,US -3494624264,3494624271,DE -3494624272,3494624279,US -3494624280,3494624287,GB -3494624288,3494624295,ES -3494624296,3494624319,US -3494624320,3494624327,CR -3494624328,3494624335,SA -3494624336,3494624343,MY -3494624344,3494624351,CA -3494624352,3494624367,US -3494624368,3494624375,CA -3494624376,3494624383,LT -3494624384,3494624391,UA -3494624392,3494624399,GB -3494624400,3494624407,US -3494624408,3494624415,CA -3494624416,3494624423,RU -3494624424,3494624439,US -3494624440,3494624447,NL -3494624448,3494624455,CA -3494624456,3494624463,ES -3494624464,3494624471,US -3494624472,3494624479,ZA -3494624480,3494624527,US -3494624528,3494624535,CA -3494624536,3494624543,US -3494624544,3494624551,CA -3494624552,3494624591,US -3494624592,3494624599,RU -3494624600,3494624607,IL -3494624608,3494624631,US -3494624632,3494624639,ZA -3494624640,3494624647,GB -3494624648,3494624655,MK -3494624656,3494624671,US -3494624672,3494624679,BY -3494624680,3494624687,US -3494624688,3494624695,JP -3494624696,3494624703,NL -3494624704,3494624711,DE -3494624712,3494624719,US -3494624720,3494624727,ZA -3494624728,3494624735,SG -3494624736,3494624751,US -3494624752,3494624759,DE -3494624760,3494624767,RU -3494624768,3494624775,US -3494624776,3494624791,CA -3494624792,3494624799,US -3494624800,3494624807,RU -3494624808,3494624815,CA -3494624816,3494624823,US -3494624824,3494624831,CA -3494624832,3494624855,US -3494624856,3494624863,CA -3494624864,3494624871,US -3494624872,3494624879,CA -3494624880,3494624887,US -3494624888,3494624903,CA -3494624904,3494624911,JP -3494624912,3494624919,DE -3494624920,3494624935,US -3494624936,3494624943,CA -3494624944,3494624951,US -3494624952,3494624959,CA -3494624960,3494624975,AU -3494624976,3494624983,RU -3494624984,3494624991,CA -3494624992,3494625047,US -3494625048,3494625055,CA -3494625056,3494625063,UA -3494625064,3494625071,NL -3494625072,3494625111,US -3494625112,3494625119,VG -3494625120,3494625127,IT -3494625128,3494625143,US -3494625144,3494625151,AU -3494625152,3494625159,US -3494625160,3494625167,UA -3494625168,3494625183,US -3494625184,3494625199,CA -3494625200,3494625207,UA -3494625208,3494625223,US -3494625224,3494625231,CA -3494625232,3494625247,US -3494625248,3494625255,RO -3494625256,3494625263,US -3494625264,3494625271,AE -3494625272,3494625279,AU +3494611968,3494624255,US +3494624256,3494625279,CA 3494625280,3494627327,US 3494627328,3494628351,BM 3494628352,3494651903,US @@ -107167,7 +109351,8 @@ 3494698792,3494698799,CA 3494698800,3494698843,US 3494698844,3494698847,EG -3494698848,3494698887,US +3494698848,3494698879,US +3494698880,3494698887,IN 3494698888,3494698895,EG 3494698896,3494700031,US 3494700032,3494701055,CA @@ -107179,33 +109364,44 @@ 3494730752,3494731775,CA 3494731776,3494743039,US 3494743040,3494744063,CA -3494744064,3494744703,US +3494744064,3494744399,US +3494744400,3494744407,AU +3494744408,3494744703,US 3494744704,3494744711,DK 3494744712,3494745151,US 3494745152,3494745159,AU 3494745160,3494745303,US 3494745304,3494745311,AU -3494745312,3494745919,US +3494745312,3494745879,US +3494745880,3494745887,GB +3494745888,3494745919,US 3494745920,3494745927,CN -3494745928,3494757375,US +3494745928,3494745951,US +3494745952,3494745959,GB +3494745960,3494746019,US +3494746020,3494746023,AU +3494746024,3494757375,US 3494757376,3494758399,CA 3494758400,3494763007,US 3494763008,3494763015,ES 3494763016,3494763047,US 3494763048,3494763055,JP -3494763056,3494763063,US +3494763056,3494763063,AU 3494763064,3494763071,MX 3494763072,3494763119,US 3494763120,3494763127,DE 3494763128,3494763143,US 3494763144,3494763151,ES -3494763152,3494763903,US +3494763152,3494763199,US +3494763200,3494763207,KY +3494763208,3494763903,US 3494763904,3494763919,AU 3494763920,3494764295,US 3494764296,3494764303,CA 3494764304,3494764343,US 3494764344,3494764351,GB -3494764352,3494764383,US +3494764352,3494764375,US +3494764376,3494764383,AU 3494764384,3494764391,GB 3494764392,3494764447,US 3494764448,3494764463,GB @@ -107235,9 +109431,11 @@ 3494866944,3494867967,CA 3494867968,3494893567,US 3494893568,3494894591,CA -3494894592,3494917119,US -3494917120,3494917631,CA -3494917632,3494928383,US +3494894592,3494906367,US +3494906368,3494906431,IL +3494906432,3494917119,US +3494917120,3494918143,CA +3494918144,3494928383,US 3494928384,3494930431,CA 3494930432,3494938623,US 3494938624,3494939647,CA @@ -107261,7 +109459,9 @@ 3495023616,3495024639,CA 3495024640,3495065599,US 3495065600,3495066623,CA -3495066624,3495068223,US +3495066624,3495068031,US +3495068032,3495068047,PL +3495068048,3495068223,US 3495068224,3495068239,PL 3495068240,3495068655,US 3495068656,3495068671,PL @@ -107282,20 +109482,12 @@ 3495136504,3495136847,US 3495136848,3495136855,PR 3495136856,3495153663,US -3495153664,3495154303,CA -3495154304,3495154431,US -3495154432,3495154751,CA -3495154752,3495154759,US -3495154760,3495154823,CA -3495154824,3495154831,US -3495154832,3495154839,CA -3495154840,3495154847,US -3495154848,3495155711,CA +3495153664,3495155711,CA 3495155712,3495157039,US 3495157040,3495157047,SE 3495157048,3495164239,US 3495164240,3495164247,CA -3495164248,3495192575,US +3495164248,3495190527,US 3495192576,3495193599,CA 3495193600,3495215103,US 3495215104,3495217151,VI @@ -107306,9 +109498,7 @@ 3495260160,3495261183,CA 3495261184,3495286783,US 3495286784,3495288831,CA -3495288832,3495292927,US -3495292928,3495292943,GB -3495292944,3495331839,US +3495288832,3495331839,US 3495331840,3495332863,A2 3495332864,3495333887,CA 3495333888,3495349247,US @@ -107364,13 +109554,11 @@ 3495526400,3495527423,CA 3495527424,3495542783,US 3495542784,3495544831,A2 -3495544832,3495549183,US -3495549184,3495549302,CA -3495549303,3495549334,US -3495549335,3495549439,CA -3495549440,3495549727,US -3495549728,3495549760,CA -3495549761,3495549809,US +3495544832,3495549238,US +3495549239,3495549302,CA +3495549303,3495549366,US +3495549367,3495549430,CA +3495549431,3495549809,US 3495549810,3495549813,IN 3495549814,3495549917,US 3495549918,3495549923,CA @@ -107396,9 +109584,7 @@ 3495657552,3495657567,GB 3495657568,3495658015,US 3495658016,3495658023,IN -3495658024,3495658039,US -3495658040,3495658047,CO -3495658048,3495658319,US +3495658024,3495658319,US 3495658320,3495658327,IN 3495658328,3495673855,US 3495673856,3495674623,GP @@ -107434,62 +109620,7 @@ 3495866368,3495868415,VC 3495868416,3495871487,US 3495871488,3495872511,CA -3495872512,3495882799,US -3495882800,3495882807,AM -3495882808,3495882815,US -3495882816,3495882823,RU -3495882824,3495882863,US -3495882864,3495882871,AU -3495882872,3495882895,US -3495882896,3495882911,CN -3495882912,3495882927,JP -3495882928,3495882983,US -3495882984,3495882991,AU -3495882992,3495882999,CA -3495883000,3495883215,US -3495883216,3495883223,AU -3495883224,3495883287,US -3495883288,3495883295,GB -3495883296,3495883311,US -3495883312,3495883319,TR -3495883320,3495883327,SA -3495883328,3495883367,US -3495883368,3495883375,AU -3495883376,3495883391,US -3495883392,3495883399,IN -3495883400,3495883407,US -3495883408,3495883415,EG -3495883416,3495883439,US -3495883440,3495883447,GB -3495883448,3495883479,US -3495883480,3495883487,BR -3495883488,3495883503,CN -3495883504,3495883615,US -3495883616,3495883623,AU -3495883624,3495883631,US -3495883632,3495883647,GM -3495883648,3495883759,US -3495883760,3495883775,CN -3495883776,3495884119,US -3495884120,3495884127,CA -3495884128,3495884239,US -3495884240,3495884247,AU -3495884248,3495884263,US -3495884264,3495884271,IN -3495884272,3495884287,CN -3495884288,3495884447,US -3495884448,3495884463,AU -3495884464,3495884479,US -3495884480,3495884487,BY -3495884488,3495884519,US -3495884520,3495884527,IN -3495884528,3495884543,US -3495884544,3495884551,RO -3495884552,3495884679,US -3495884680,3495884687,AU -3495884688,3495884719,US -3495884720,3495884735,CA -3495884736,3495896063,US +3495872512,3495896063,US 3495896064,3495897087,PR 3495897088,3495930879,US 3495930880,3495931903,CA @@ -107732,47 +109863,13 @@ 3497164288,3497164295,GB 3497164296,3497164799,US 3497164800,3497181183,CA -3497181184,3497222407,US -3497222408,3497222415,IN -3497222416,3497222463,US -3497222464,3497222479,IN -3497222480,3497223791,US -3497223792,3497223807,CH -3497223808,3497223839,US -3497223840,3497223871,CH -3497223872,3497223879,US -3497223880,3497223887,ID -3497223888,3497224255,US -3497224256,3497224319,IN -3497224320,3497224831,US -3497224832,3497224863,CH -3497224864,3497225375,US -3497225376,3497225383,CN -3497225384,3497225471,US -3497225472,3497225535,IN -3497225536,3497226295,US +3497181184,3497226295,US 3497226296,3497226303,SG 3497226304,3497226391,US 3497226392,3497226399,IR -3497226400,3497226783,US -3497226784,3497226815,CH -3497226816,3497226831,US -3497226832,3497226847,CH -3497226848,3497226943,US -3497226944,3497226959,CH -3497226960,3497227023,US -3497227024,3497227039,GB -3497227040,3497227231,US -3497227232,3497227247,CH -3497227248,3497227255,CN -3497227256,3497227263,CH -3497227264,3497227391,US -3497227392,3497227407,CN -3497227408,3497227527,US -3497227528,3497227535,CN -3497227536,3497228079,US -3497228080,3497228087,CN -3497228088,3497233407,US +3497226400,3497226687,US +3497226688,3497226719,GB +3497226720,3497233407,US 3497233408,3497233663,CN 3497233664,3497263815,US 3497263816,3497263823,GB @@ -108107,16 +110204,18 @@ 3507025408,3507025663,IQ 3507025664,3507101919,US 3507101920,3507101935,IL -3507101936,3507134591,US -3507134592,3507134607,GB -3507134608,3507290111,US +3507101936,3507290111,US 3507290112,3507355647,AR -3507355648,3507540015,US +3507355648,3507479079,US +3507479080,3507479080,CA +3507479081,3507479108,US +3507479109,3507479109,CA +3507479110,3507482153,US +3507482154,3507482155,CA +3507482156,3507540015,US 3507540016,3507540031,IN 3507540032,3507585023,US -3507585024,3507586623,CA -3507586624,3507586655,US -3507586656,3507598911,CA +3507585024,3507598911,CA 3507598912,3507598943,US 3507598944,3507601407,CA 3507601408,3507634335,US @@ -108872,27 +110971,19 @@ 3509775904,3509775919,AU 3509775920,3509775943,US 3509775944,3509775951,IT -3509775952,3509775975,US -3509775976,3509775983,GB -3509775984,3509776023,US +3509775952,3509776023,US 3509776024,3509776031,CA 3509776032,3509776047,US 3509776048,3509776055,SA 3509776056,3509776095,US 3509776096,3509776103,AU 3509776104,3509776111,US -3509776112,3509776127,IT -3509776128,3509776224,US -3509776225,3509776256,CA -3509776257,3509776288,TC -3509776289,3509776352,US -3509776353,3509776382,GB -3509776383,3509777159,US +3509776112,3509776119,IT +3509776120,3509777159,US 3509777160,3509777167,CN 3509777168,3509777175,RU -3509777176,3509777199,US -3509777200,3509777207,GB -3509777208,3509777215,CA +3509777176,3509777207,US +3509777208,3509777215,IN 3509777216,3509777223,TH 3509777224,3509777271,US 3509777272,3509777279,IT @@ -108906,9 +110997,7 @@ 3509778400,3509778431,NL 3509778432,3509778703,US 3509778704,3509778711,CA -3509778712,3509778847,US -3509778848,3509778855,CA -3509778856,3509778903,US +3509778712,3509778903,US 3509778904,3509778911,RU 3509778912,3509778919,US 3509778920,3509778927,GB @@ -108926,55 +111015,31 @@ 3509830408,3509830415,GB 3509830416,3509830943,US 3509830944,3509830951,BE -3509830952,3509831039,US -3509831040,3509831047,DE -3509831048,3509831135,US +3509830952,3509831135,US 3509831136,3509831143,IN -3509831144,3509831287,US -3509831288,3509831295,GB -3509831296,3509831303,US -3509831304,3509831311,CO -3509831312,3509831319,CN -3509831320,3509831535,US +3509831144,3509831535,US 3509831536,3509831551,LB 3509831552,3509831615,US 3509831616,3509831647,IL 3509831648,3509831735,US 3509831736,3509831743,AT -3509831744,3509831799,US -3509831800,3509831807,DO +3509831744,3509831807,US 3509831808,3509831815,IN 3509831816,3509831823,CA 3509831824,3509831831,US 3509831832,3509831839,GB -3509831840,3509831959,US -3509831960,3509831967,CA -3509831968,3509832079,US -3509832080,3509832087,CN -3509832088,3509833103,US +3509831840,3509833103,US 3509833104,3509833111,IN 3509833112,3509833535,US 3509833536,3509833543,CA 3509833544,3509833551,IN 3509833552,3509833567,US 3509833568,3509833599,PH -3509833600,3509833623,US -3509833624,3509833631,GR -3509833632,3509833703,US +3509833600,3509833703,US 3509833704,3509833711,ZA -3509833712,3509834095,US -3509834096,3509834103,IL -3509834104,3509834111,US +3509833712,3509834111,US 3509834112,3509834143,IL -3509834144,3509834167,US -3509834168,3509834175,BR -3509834176,3509834287,US -3509834288,3509834303,IN -3509834304,3509834399,US -3509834400,3509834407,BD -3509834408,3509834431,US -3509834432,3509834463,JP -3509834464,3509834495,US +3509834144,3509834495,US 3509834496,3509834503,NO 3509834504,3509834519,US 3509834520,3509834527,BD @@ -108984,9 +111049,7 @@ 3509834832,3509834847,CO 3509834848,3509835103,US 3509835104,3509835111,GB -3509835112,3509836375,US -3509836376,3509836383,GR -3509836384,3509837167,US +3509835112,3509837167,US 3509837168,3509837175,GB 3509837176,3509837623,US 3509837624,3509837639,GB @@ -109449,7 +111512,11 @@ 3510897443,3510897443,IE 3510897444,3510935551,US 3510935552,3510943743,CA -3510943744,3511140351,US +3510943744,3511129087,US +3511129088,3511129183,CA +3511129184,3511129199,US +3511129200,3511131135,CA +3511131136,3511132159,US 3511140352,3511156735,CA 3511156736,3511331199,US 3511331200,3511331231,CA @@ -109475,9 +111542,7 @@ 3512011904,3512012095,US 3512012096,3512012159,GB 3512012160,3512012175,MX -3512012176,3512012191,US -3512012192,3512012223,BR -3512012224,3512012255,US +3512012176,3512012255,US 3512012256,3512012287,GB 3512012288,3512013583,US 3512013584,3512013599,CA @@ -110082,8 +112147,8 @@ 3512695840,3512695871,GB 3512695872,3512696831,US 3512696832,3512699647,SE -3512699648,3512701951,US -3512701952,3512705023,SE +3512699648,3512699903,US +3512699904,3512705023,SE 3512705024,3512844287,US 3512844288,3512844543,CA 3512844544,3512844607,A1 @@ -110127,7 +112192,19 @@ 3513368576,3513376767,CA 3513376768,3513475071,US 3513475072,3513483263,CA -3513483264,3513670911,US +3513483264,3513501183,US +3513501184,3513501439,PH +3513501440,3513501567,US +3513501568,3513501631,AZ +3513501632,3513502719,US +3513502720,3513502975,A1 +3513502976,3513503743,US +3513503744,3513503999,SC +3513504000,3513506047,US +3513506048,3513506303,A1 +3513506304,3513506559,US +3513506560,3513506815,CA +3513506816,3513670911,US 3513670912,3513671167,A2 3513671168,3513778175,US 3513778176,3513794559,CA @@ -110146,66 +112223,16 @@ 3514590720,3514591103,SV 3514591104,3514591487,US 3514591488,3514592255,NI -3514592256,3514597375,SV -3514597376,3514763423,US -3514763424,3514763439,PA -3514763440,3514763711,US -3514763712,3514763727,VE -3514763728,3514763775,US -3514763776,3514763791,PA -3514763792,3514764047,US -3514764048,3514764063,PA -3514764064,3514765823,US -3514765824,3514765855,PA -3514765856,3514765919,US -3514765920,3514765951,VE -3514765952,3514766111,US -3514766112,3514766143,VE -3514766144,3514766207,US -3514766208,3514766271,PA -3514766272,3514766303,US -3514766304,3514766335,PA -3514766336,3514766463,US -3514766464,3514766495,PA -3514766496,3514766879,US -3514766880,3514766911,PA -3514766912,3514767199,US -3514767200,3514767231,VE -3514767232,3514767455,US -3514767456,3514767487,VE -3514767488,3514768127,US -3514768128,3514768191,VE -3514768192,3514769023,US -3514769024,3514769151,PA -3514769152,3514769215,US -3514769216,3514769279,PA -3514769280,3514775295,US -3514775296,3514775551,PA -3514775552,3514776063,US -3514776064,3514776319,VE -3514776320,3514776343,US -3514776344,3514776351,VE -3514776352,3514776407,US -3514776408,3514776415,VE -3514776416,3514781695,US -3514781696,3514782719,VE -3514782720,3514787583,US -3514787584,3514787839,PA -3514787840,3514791679,US -3514791680,3514793983,PA -3514793984,3514826751,US +3514592256,3514593279,SV +3514593280,3514596863,US +3514596864,3514597375,SV +3514597376,3514826751,US 3514826752,3514843135,CA 3514843136,3515114247,US 3515114248,3515114255,AU 3515114256,3515149567,US 3515149568,3515149583,AU -3515149584,3515154943,US -3515154944,3515155199,CA -3515155200,3515155455,US -3515155456,3515155711,CA -3515155712,3515166719,US -3515166720,3515166975,CA -3515166976,3515170991,US +3515149584,3515170991,US 3515170992,3515170999,KR 3515171000,3515185151,US 3515185152,3515185407,CA @@ -110215,9 +112242,7 @@ 3515358976,3515359231,MX 3515359232,3515452639,US 3515452640,3515452655,KR -3515452656,3515452775,US -3515452776,3515452783,JP -3515452784,3515453055,US +3515452656,3515453055,US 3515453056,3515453071,JP 3515453072,3515453679,US 3515453680,3515453687,JP @@ -110226,9 +112251,7 @@ 3515454080,3515454095,US 3515454096,3515454111,JP 3515454112,3515454143,US -3515454144,3515454159,JP -3515454160,3515454167,US -3515454168,3515454207,JP +3515454144,3515454207,JP 3515454208,3515454399,US 3515454400,3515454463,JP 3515454464,3515455311,US @@ -110336,9 +112359,7 @@ 3517116416,3517120511,CA 3517120512,3517233151,US 3517233152,3517235199,GU -3517235200,3517308927,US -3517308928,3517313023,CA -3517313024,3517382655,US +3517235200,3517382655,US 3517382656,3517383679,CA 3517383680,3517383935,US 3517383936,3517384447,CA @@ -110639,19 +112660,21 @@ 3517598208,3517598463,IE 3517598464,3517598591,SE 3517598592,3517599231,US -3517599232,3517600767,SE +3517599232,3517599263,BG +3517599264,3517600767,SE 3517600768,3517601279,US 3517601280,3517602047,SE 3517602048,3517602303,DE 3517602304,3517602559,US 3517602560,3517602623,SE 3517602624,3517602815,US -3517602816,3517603071,SE -3517603072,3517603615,US +3517602816,3517603327,SE +3517603328,3517603615,US 3517603616,3517603647,DE -3517603648,3517603839,US -3517603840,3517603903,SE -3517603904,3517603967,MA +3517603648,3517603711,US +3517603712,3517603775,SE +3517603776,3517603839,US +3517603840,3517603967,SE 3517603968,3517604031,DE 3517604032,3517604095,SE 3517604096,3517604351,US @@ -110673,8 +112696,8 @@ 3517609856,3517610047,US 3517610048,3517610191,SE 3517610192,3517610199,US -3517610200,3517610207,SE -3517610208,3517610495,US +3517610200,3517610239,SE +3517610240,3517610495,US 3517610496,3517611263,IE 3517611264,3517611295,SE 3517611296,3517611303,US @@ -110713,7 +112736,8 @@ 3518076672,3518076927,PA 3518076928,3518077103,US 3518077104,3518077111,GB -3518077112,3518374719,US +3518077112,3518078975,US +3518083072,3518374719,US 3518374720,3518374783,IN 3518374784,3518380223,US 3518380224,3518380287,DE @@ -110734,95 +112758,51 @@ 3518759408,3518759423,CY 3518759424,3518760511,US 3518760512,3518760575,AU -3518760576,3518760703,HU +3518760576,3518760647,HU +3518760648,3518760655,US +3518760656,3518760703,HU 3518760704,3518762495,US 3518762496,3518762751,GB -3518762752,3518764031,US -3518764032,3518764287,GB -3518764288,3518764671,US +3518762752,3518764671,US 3518764672,3518764703,NL 3518764704,3518765311,US 3518765312,3518765567,CA 3518765568,3518766879,US 3518766880,3518766911,TH -3518766912,3518890831,US -3518890832,3518890839,IT -3518890840,3518891175,US -3518891176,3518891183,GB -3518891184,3518891767,US -3518891768,3518891775,BG -3518891776,3518892039,US -3518892040,3518892047,GT -3518892048,3518892223,US +3518766912,3518892223,US 3518892224,3518892231,CL 3518892232,3518892415,US 3518892416,3518892423,GB -3518892424,3518894095,US -3518894096,3518894103,KW -3518894104,3518894343,US -3518894344,3518894351,MY -3518894352,3518894439,US +3518892424,3518894439,US 3518894440,3518894447,TR -3518894448,3518895719,US -3518895720,3518895727,PH -3518895728,3518895775,US +3518894448,3518895775,US 3518895776,3518895783,CA 3518895784,3518895791,TH -3518895792,3518895799,US -3518895800,3518895807,AR -3518895808,3518896215,US +3518895792,3518896215,US 3518896216,3518896223,CA 3518896224,3518896231,US 3518896232,3518896239,CN -3518896240,3518896519,US -3518896520,3518896527,AE -3518896528,3518896543,US -3518896544,3518896551,BD -3518896552,3518896895,US +3518896240,3518896895,US 3518896896,3518896903,GB -3518896904,3518897071,US -3518897072,3518897079,IT -3518897080,3518897119,US +3518896904,3518897119,US 3518897120,3518897127,IT -3518897128,3518897423,US -3518897424,3518897431,IN -3518897432,3518897879,US -3518897880,3518897887,AM -3518897888,3518898015,US -3518898016,3518898023,IN -3518898024,3518898143,US +3518897128,3518898143,US 3518898144,3518898151,BR -3518898152,3518898167,US -3518898168,3518898175,RO -3518898176,3518903175,US -3518903176,3518903183,BR -3518903184,3518903191,US +3518898152,3518903191,US 3518903192,3518903199,JP -3518903200,3518903399,US -3518903400,3518903407,PK -3518903408,3518903871,US +3518903200,3518903871,US 3518903872,3518903879,PK 3518903880,3518903927,US 3518903928,3518903935,RU -3518903936,3518903959,US -3518903960,3518903967,GB -3518903968,3518903999,US -3518904000,3518904007,ES -3518904008,3518904015,US +3518903936,3518904015,US 3518904016,3518904031,EG 3518904032,3518911743,US 3518911744,3518911999,GB 3518912000,3518912511,US 3518912512,3518912767,IN -3518912768,3518919031,US -3518919032,3518919039,GT -3518919040,3518919095,US -3518919096,3518919103,BD -3518919104,3518921447,US +3518912768,3518921447,US 3518921448,3518921455,CN -3518921456,3518921479,US -3518921480,3518921487,BD -3518921488,3518929535,US +3518921456,3518929535,US 3518929536,3518929599,CA 3518929600,3518995695,US 3518995696,3518995703,GB @@ -110841,9 +112821,7 @@ 3519352904,3519381503,US 3519381504,3519397887,CA 3519397888,3519406079,US -3519406080,3519406111,IT -3519406112,3519406127,US -3519406128,3519406143,DE +3519406080,3519406143,IT 3519406144,3519406207,US 3519406208,3519406215,SA 3519406216,3519406255,US @@ -110906,9 +112884,7 @@ 3519411392,3519411711,US 3519411712,3519411967,AR 3519411968,3519412223,DE -3519412224,3519412463,US -3519412464,3519412479,GB -3519412480,3519412519,US +3519412224,3519412519,US 3519412520,3519412527,RU 3519412528,3519412735,US 3519412736,3519412751,RU @@ -110926,34 +112902,7 @@ 3519422528,3519475711,US 3519475712,3519476223,BH 3519476224,3519477759,A2 -3519477760,3519566871,US -3519566872,3519566879,IE -3519566880,3519566943,US -3519566944,3519566951,GB -3519566952,3519567087,US -3519567088,3519567096,IE -3519567097,3519567679,US -3519567680,3519567687,GB -3519567688,3519567727,US -3519567728,3519567735,LB -3519567736,3519567759,US -3519567760,3519567767,JP -3519567768,3519567831,US -3519567832,3519567863,LB -3519567864,3519568911,US -3519568912,3519568919,FR -3519568920,3519568927,LB -3519568928,3519568991,US -3519568992,3519568999,GB -3519569000,3519569071,US -3519569072,3519569079,LB -3519569080,3519569103,US -3519569104,3519569111,GB -3519569112,3519569127,US -3519569128,3519569135,GB -3519569136,3519569727,US -3519569728,3519569735,JP -3519569736,3519578367,US +3519477760,3519578367,US 3519578368,3519578623,NA 3519578624,3519578879,US 3519578880,3519579135,CA @@ -110987,8 +112936,7 @@ 3519590912,3519590927,GB 3519590928,3519590943,EE 3519590944,3519590959,AG -3519590960,3519591055,US -3519591056,3519591071,MT +3519590960,3519591071,US 3519591072,3519591087,IM 3519591088,3519591167,US 3519591168,3519591423,GB @@ -111016,7 +112964,9 @@ 3519715296,3519715327,GB 3519715328,3519716863,US 3519716864,3519716991,CA -3519716992,3519741951,US +3519716992,3519723519,US +3519723520,3519724031,CA +3519724032,3519741951,US 3519741952,3519758335,ZA 3519758336,3519791103,US 3519799296,3519799871,US @@ -111186,7 +113136,9 @@ 3520028688,3520028711,US 3520028712,3520029167,CA 3520029168,3520029175,IL -3520029176,3520030799,CA +3520029176,3520030719,CA +3520030720,3520030727,US +3520030728,3520030799,CA 3520030800,3520030807,US 3520030808,3520030951,CA 3520030952,3520030959,US @@ -111373,15 +113325,13 @@ 3520937984,3520954367,CA 3520954368,3520956155,US 3520956156,3520956159,CH -3520956160,3520958783,US -3520958784,3520958847,CA -3520958848,3520966111,US -3520966112,3520966119,CA -3520966120,3520978943,US +3520956160,3520978943,US 3520978944,3520979711,BZ 3520979712,3520999423,US 3520999424,3521003519,CA -3521003520,3521007103,US +3521003520,3521003583,US +3521003584,3521003647,IL +3521003648,3521007103,US 3521007104,3521007111,IN 3521007112,3521011743,US 3521011744,3521011751,PK @@ -111394,9 +113344,7 @@ 3521013560,3521013567,GB 3521013568,3521013951,US 3521013952,3521013959,AU -3521013960,3521014103,US -3521014104,3521014111,NL -3521014112,3521014127,US +3521013960,3521014127,US 3521014128,3521014135,GR 3521014136,3521014143,CA 3521014144,3521028095,US @@ -111458,13 +113406,55 @@ 3521835904,3521835967,CA 3521835968,3521836351,US 3521836352,3521836415,IL -3521836416,3521836503,US -3521836504,3521836511,IL -3521836512,3521836687,US -3521836688,3521836703,CA -3521836704,3521904639,US +3521836416,3521904639,US 3521904640,3521921023,JM -3521921024,3521965055,US +3521921024,3521933321,US +3521933322,3521933329,PK +3521933330,3521933345,MA +3521933346,3521933413,US +3521933414,3521933421,IN +3521933422,3521933429,MA +3521933430,3521933437,CA +3521933438,3521933497,US +3521933498,3521933505,EG +3521933506,3521933537,GB +3521933538,3521933577,US +3521933578,3521933585,EG +3521933586,3521933589,US +3521933590,3521933597,IN +3521933598,3521933605,US +3521933606,3521933613,AE +3521933614,3521933621,US +3521933622,3521933629,IN +3521933630,3521933645,US +3521933646,3521933653,GB +3521933654,3521933725,US +3521933726,3521933733,GB +3521933734,3521933741,US +3521933742,3521933785,GB +3521933786,3521933833,US +3521933834,3521933841,EG +3521933842,3521933929,US +3521933930,3521933937,IN +3521933938,3521933981,US +3521933982,3521933989,IN +3521933990,3521934089,US +3521934090,3521934097,EG +3521934098,3521934169,US +3521934170,3521934177,EG +3521934178,3521934421,US +3521934422,3521934429,EG +3521934430,3521934477,US +3521934478,3521934485,ID +3521934486,3521934509,US +3521934510,3521934517,IN +3521934518,3521934735,US +3521934736,3521934743,EG +3521934744,3521934768,US +3521934769,3521934776,MA +3521934777,3521935237,US +3521935238,3521935245,EG +3521935246,3521965055,US 3521965056,3521966079,DE 3521966080,3522029439,US 3522029440,3522029503,FI @@ -111477,30 +113467,26 @@ 3522034448,3522034463,GB 3522034464,3522101247,US 3522101248,3522109439,CA -3522109440,3522117631,US -3522117632,3522121983,A2 +3522109440,3522119935,US +3522119936,3522120191,LY +3522120192,3522120447,US +3522120448,3522121215,LY +3522121216,3522121471,US +3522121472,3522121983,LY 3522121984,3522122239,AW -3522122240,3522125823,A2 -3522125824,3522131455,US -3522131456,3522131487,PE -3522131488,3522131519,RS -3522131520,3522131711,US +3522122240,3522131711,US 3522131712,3522131743,GB 3522131744,3522131775,DE 3522131776,3522131807,BR 3522131808,3522132479,US 3522132480,3522132543,CO -3522132544,3522132575,US +3522132544,3522132575,TR 3522132576,3522132607,UA 3522132608,3522132639,CA -3522132640,3522132671,PE +3522132640,3522132671,BO 3522132672,3522132703,BR 3522132704,3522132735,LK -3522132736,3522132767,US -3522132768,3522132799,RO -3522132800,3522133567,US -3522133568,3522133568,PT -3522133569,3522133599,US +3522132736,3522133599,US 3522133600,3522133631,JP 3522133632,3522133639,US 3522133640,3522133647,DE @@ -111517,15 +113503,7 @@ 3522759592,3522759599,CA 3522759600,3522763263,US 3522763264,3522763519,CA -3522763520,3522768895,US -3522768896,3522769151,CA -3522769152,3522769919,US -3522769920,3522770175,CA -3522770176,3522807807,US -3522807808,3522807815,JP -3522807816,3522820863,US -3522820864,3522821119,CA -3522821120,3522854911,US +3522763520,3522854911,US 3522854912,3522859999,CA 3522860000,3522860031,IN 3522860032,3522871295,CA @@ -111942,9 +113920,7 @@ 3556769792,3556774399,DE 3556774400,3556786175,EU 3556786176,3556794367,RU -3556794368,3556795647,ES -3556795648,3556795679,IT -3556795680,3556797767,ES +3556794368,3556797767,ES 3556797768,3556797775,GB 3556797776,3556797839,ES 3556797840,3556797847,PT @@ -112042,7 +114018,8 @@ 3557138432,3557146623,RU 3557146624,3557154815,SK 3557154816,3557171199,RU -3557171200,3557172991,IR +3557171200,3557172479,IT +3557172480,3557172991,IR 3557172992,3557173503,IQ 3557173504,3557173631,IR 3557173632,3557173695,IQ @@ -112070,7 +114047,9 @@ 3557244928,3557253119,IT 3557253120,3557261311,RU 3557261312,3557277695,DE -3557277696,3557285887,PL +3557277696,3557280334,NL +3557280335,3557280336,IN +3557280337,3557285887,NL 3557285888,3557294079,RU 3557294080,3557302271,DE 3557302272,3557310463,UA @@ -112103,8 +114082,8 @@ 3557340192,3557340927,BE 3557340928,3557341183,EU 3557341184,3557341439,BE -3557341440,3557341487,EU -3557341488,3557341527,BE +3557341440,3557341471,EU +3557341472,3557341527,BE 3557341528,3557341535,EU 3557341536,3557341551,BE 3557341552,3557341559,EU @@ -112132,14 +114111,14 @@ 3557360408,3557360415,GB 3557360416,3557360431,JE 3557360432,3557360471,GB -3557360472,3557360479,JE -3557360480,3557360495,GB +3557360472,3557360487,JE +3557360488,3557360495,GB 3557360496,3557360527,JE 3557360528,3557360535,GB 3557360536,3557360543,JE 3557360544,3557360559,GB -3557360560,3557360567,JE -3557360568,3557360623,GB +3557360560,3557360575,JE +3557360576,3557360623,GB 3557360624,3557360639,JE 3557360640,3557360680,GB 3557360681,3557360687,JE @@ -112163,8 +114142,8 @@ 3557361416,3557361423,JE 3557361424,3557361607,GB 3557361608,3557361615,JE -3557361616,3557361919,GB -3557361920,3557361983,JE +3557361616,3557361663,GB +3557361664,3557361983,JE 3557361984,3557362047,GB 3557362048,3557362431,JE 3557362432,3557362687,GB @@ -112172,15 +114151,17 @@ 3557363456,3557363471,GB 3557363472,3557363479,JE 3557363480,3557363655,GB -3557363656,3557363783,JE +3557363656,3557363663,JE +3557363664,3557363671,GB +3557363672,3557363783,JE 3557363784,3557363791,GB 3557363792,3557364223,JE 3557364224,3557364479,GB 3557364480,3557364495,JE 3557364496,3557364527,GB 3557364528,3557364559,JE -3557364560,3557364587,GB -3557364588,3557364607,JE +3557364560,3557364575,GB +3557364576,3557364607,JE 3557364608,3557364631,GB 3557364632,3557364639,JE 3557364640,3557364703,GB @@ -112195,8 +114176,8 @@ 3557364896,3557364927,JE 3557364928,3557364959,GB 3557364960,3557364991,JE -3557364992,3557365055,GB -3557365056,3557365103,JE +3557364992,3557365087,GB +3557365088,3557365103,JE 3557365104,3557365111,GB 3557365112,3557365119,JE 3557365120,3557365183,GB @@ -112293,14 +114274,17 @@ 3557834752,3557842943,IR 3557842944,3557851135,FI 3557851136,3557859327,HU -3557859328,3557867519,SE +3557859328,3557860831,SE +3557860832,3557860847,FI +3557860848,3557860863,NL +3557860864,3557867519,SE 3557867520,3557875711,RU 3557875712,3557883903,DE 3557883904,3557892095,RU 3557892096,3557900287,IE 3557900288,3557916671,AT 3557916672,3557924863,NO -3557924864,3557933055,AX +3557924864,3557933055,FI 3557933056,3557941247,IT 3557941248,3557945183,DE 3557945184,3557945199,GB @@ -112318,7 +114302,13 @@ 3558006784,3558014975,GB 3558014976,3558023167,RU 3558023168,3558023199,GB -3558023200,3558030655,DE +3558023200,3558023343,DE +3558023344,3558023359,GB +3558023360,3558024383,DE +3558024384,3558024415,GB +3558024416,3558028063,DE +3558028064,3558028071,CH +3558028072,3558030655,DE 3558030656,3558030659,CH 3558030660,3558031359,DE 3558031360,3558039551,GB @@ -112342,14 +114332,14 @@ 3558154624,3558154751,CI 3558154752,3558154879,CM 3558154880,3558155007,SD -3558155008,3558155135,GB +3558155008,3558155135,A2 3558155136,3558155263,SD 3558155264,3558155391,ET -3558155392,3558155519,GB +3558155392,3558155519,A2 3558155520,3558156031,SD -3558156032,3558156032,GB +3558156032,3558156032,A2 3558156033,3558156287,KG -3558156288,3558162431,GB +3558156288,3558162431,A2 3558162432,3558170623,DE 3558170624,3558178815,GB 3558178816,3558187007,BG @@ -112416,8 +114406,7 @@ 3558288424,3558288447,GB 3558288448,3558288483,US 3558288484,3558288487,GB -3558288488,3558288495,GU -3558288496,3558288639,US +3558288488,3558288639,US 3558288640,3558288671,BE 3558288672,3558288687,DE 3558288688,3558288703,BE @@ -112439,9 +114428,7 @@ 3558290576,3558290591,GB 3558290592,3558290599,BE 3558290600,3558290615,GB -3558290616,3558290623,BE -3558290624,3558290655,GB -3558290656,3558290663,BE +3558290616,3558290663,BE 3558290664,3558290671,GB 3558290672,3558290687,BE 3558290688,3558290871,ES @@ -112468,11 +114455,9 @@ 3558292288,3558292543,NL 3558292544,3558292607,GB 3558292608,3558292735,NL -3558292736,3558292871,GB -3558292872,3558292879,NL -3558292880,3558292895,GB -3558292896,3558293087,NL -3558293088,3558293247,GB +3558292736,3558292863,GB +3558292864,3558293143,NL +3558293144,3558293247,GB 3558293248,3558293503,NL 3558293504,3558301695,RU 3558301696,3558310319,DE @@ -112530,7 +114515,8 @@ 3558368448,3558368479,DE 3558368480,3558368495,ES 3558368496,3558368511,US -3558368512,3558369503,AT +3558368512,3558369487,AT +3558369488,3558369503,CH 3558369504,3558369519,FR 3558369520,3558372351,AT 3558372352,3558372607,BG @@ -112589,21 +114575,17 @@ 3558719488,3558735871,IL 3558735872,3558736127,GB 3558736128,3558736639,GG -3558736640,3558737023,GB -3558737024,3558737151,GG +3558736640,3558737055,GB +3558737056,3558737151,GG 3558737152,3558737279,GB 3558737280,3558737919,GG -3558737920,3558738431,GB -3558738432,3558738687,GG -3558738688,3558738751,GB +3558737920,3558738751,GB 3558738752,3558738943,GG 3558738944,3558738991,GB 3558738992,3558739007,GG 3558739008,3558739039,GB 3558739040,3558739055,GG -3558739056,3558739071,GB -3558739072,3558739087,GG -3558739088,3558739199,GB +3558739056,3558739199,GB 3558739200,3558739231,GG 3558739232,3558739295,GB 3558739296,3558739711,GG @@ -112807,7 +114789,8 @@ 3559006208,3559014399,RU 3559014400,3559016191,DE 3559016192,3559016207,GB -3559016208,3559022591,DE +3559016208,3559016215,JP +3559016216,3559022591,DE 3559022592,3559030783,RU 3559030784,3559038720,ES 3559038721,3559038975,US @@ -112828,9 +114811,9 @@ 3559088376,3559088379,GB 3559088380,3559089023,BE 3559089024,3559089027,GB -3559089028,3559089055,BE -3559089056,3559089063,DE -3559089064,3559089407,BE +3559089028,3559089343,BE +3559089344,3559089375,GB +3559089376,3559089407,BE 3559089408,3559089411,GB 3559089412,3559089423,BE 3559089424,3559089427,GB @@ -112867,7 +114850,9 @@ 3559090776,3559090779,GB 3559090780,3559090803,BE 3559090804,3559090807,GB -3559090808,3559090863,BE +3559090808,3559090831,BE +3559090832,3559090839,GB +3559090840,3559090863,BE 3559090864,3559090871,GB 3559090872,3559090895,BE 3559090896,3559090899,GB @@ -112879,13 +114864,19 @@ 3559091012,3559091015,GB 3559091016,3559091087,BE 3559091088,3559091091,GB -3559091092,3559091203,BE +3559091092,3559091159,BE +3559091160,3559091167,GB +3559091168,3559091203,BE 3559091204,3559091207,GB 3559091208,3559091211,BE 3559091212,3559091215,GB -3559091216,3559091423,BE +3559091216,3559091223,BE +3559091224,3559091231,GB +3559091232,3559091423,BE 3559091424,3559091427,GB -3559091428,3559091507,BE +3559091428,3559091439,BE +3559091440,3559091447,ES +3559091448,3559091507,BE 3559091508,3559091511,GB 3559091512,3559091535,BE 3559091536,3559091543,GB @@ -112899,7 +114890,9 @@ 3559092160,3559092160,GB 3559092161,3559092222,BE 3559092223,3559092223,GB -3559092224,3559092735,BE +3559092224,3559092295,BE +3559092296,3559092303,GB +3559092304,3559092735,BE 3559092736,3559092739,GB 3559092740,3559092799,BE 3559092800,3559092803,GB @@ -112916,7 +114909,9 @@ 3559093000,3559093007,BE 3559093008,3559093015,GB 3559093016,3559093023,FR -3559093024,3559093063,BE +3559093024,3559093047,BE +3559093048,3559093055,GB +3559093056,3559093063,BE 3559093064,3559093071,FR 3559093072,3559093075,BE 3559093076,3559093079,GB @@ -112973,7 +114968,8 @@ 3559094320,3559094335,GB 3559094336,3559094423,BE 3559094424,3559094447,GB -3559094448,3559094527,BE +3559094448,3559094455,ES +3559094456,3559094527,BE 3559094528,3559095039,GB 3559095040,3559095055,BE 3559095056,3559095063,GB @@ -113007,7 +115003,6 @@ 3559096320,3559103231,RO 3559103232,3559103487,GB 3559103488,3559104511,RO -3559104512,3559112703,UA 3559112704,3559120895,IT 3559120896,3559129087,GB 3559129088,3559137279,BG @@ -113060,7 +115055,6 @@ 3559186432,3559194623,RU 3559194624,3559202815,SE 3559202816,3559211007,DE -3559211008,3559219199,GR 3559219200,3559227391,SE 3559227392,3559235583,DK 3559235584,3559243775,DE @@ -113116,7 +115110,9 @@ 3559491440,3559491455,ES 3559491456,3559491647,NL 3559491648,3559491711,ES -3559491712,3559491839,NL +3559491712,3559491727,NL +3559491728,3559491735,ES +3559491736,3559491839,NL 3559491840,3559491871,ES 3559491872,3559491903,GB 3559491904,3559491967,ES @@ -113147,7 +115143,11 @@ 3559586304,3559587839,DE 3559587840,3559596031,KW 3559596032,3559604223,BG -3559604224,3559612415,DE +3559604224,3559611135,DE +3559611136,3559611391,GB +3559611392,3559611731,DE +3559611732,3559611735,NL +3559611736,3559612415,DE 3559612416,3559620607,IT 3559620608,3559628799,CH 3559628800,3559636991,GB @@ -113240,15 +115240,13 @@ 3559902176,3559902187,EE 3559902188,3559902191,UA 3559902192,3559902207,EE -3559902208,3559902623,UA -3559902624,3559902631,EE -3559902632,3559902975,UA +3559902208,3559902975,UA 3559902976,3559903231,EE 3559903232,3559903743,UA 3559903744,3559904023,EE 3559904024,3559904255,UA -3559904256,3559904319,EE -3559904320,3559904607,UA +3559904256,3559904383,EE +3559904384,3559904607,UA 3559904608,3559904639,EE 3559904640,3559905019,UA 3559905020,3559905031,EE @@ -113258,16 +115256,20 @@ 3559905144,3559905151,UA 3559905152,3559905155,EE 3559905156,3559905159,UA -3559905160,3559905247,EE +3559905160,3559905225,EE +3559905226,3559905231,UA +3559905232,3559905247,EE 3559905248,3559905255,UA 3559905256,3559905297,EE 3559905298,3559905299,UA -3559905300,3559905307,EE -3559905308,3559905535,UA +3559905300,3559905317,EE +3559905318,3559905319,UA +3559905320,3559905323,EE +3559905324,3559905535,UA 3559905536,3559905623,EE 3559905624,3559905631,UA -3559905632,3559905951,EE -3559905952,3559905983,UA +3559905632,3559905975,EE +3559905976,3559905983,UA 3559905984,3559906257,EE 3559906258,3559906263,UA 3559906264,3559906783,EE @@ -113331,7 +115333,7 @@ 3560316928,3560325119,NL 3560325120,3560333311,DK 3560333312,3560341503,RO -3560349696,3560357887,GB +3560341504,3560357887,GB 3560357888,3560366079,GR 3560366080,3560366687,CH 3560366688,3560366695,IT @@ -113899,8 +115901,7 @@ 3560941964,3560941967,FR 3560941968,3560941971,DE 3560941972,3560941975,DK -3560941976,3560941979,IT -3560941980,3560941983,DE +3560941976,3560941983,DE 3560941984,3560941987,NL 3560941988,3560941991,DE 3560941992,3560941995,GB @@ -114165,7 +116166,7 @@ 3560943160,3560943160,NO 3560943161,3560943161,BE 3560943162,3560943162,GR -3560943163,3560943163,CH +3560943163,3560943163,DE 3560943164,3560943164,PL 3560943165,3560943165,FR 3560943166,3560943166,GB @@ -114451,8 +116452,7 @@ 3560943520,3560943520,DK 3560943521,3560943521,DE 3560943522,3560943522,GB -3560943523,3560943523,IT -3560943524,3560943524,DE +3560943523,3560943524,DE 3560943525,3560943525,NL 3560943526,3560943526,IT 3560943527,3560943527,DE @@ -115322,9 +117322,7 @@ 3560947044,3560947067,US 3560947068,3560947071,AR 3560947072,3560947075,BR -3560947076,3560947087,US -3560947088,3560947091,PR -3560947092,3560947095,US +3560947076,3560947095,US 3560947096,3560947099,MX 3560947100,3560947107,US 3560947108,3560947111,DE @@ -115332,8 +117330,7 @@ 3560947124,3560947127,CO 3560947128,3560947143,US 3560947144,3560947147,DE -3560947148,3560947151,PR -3560947152,3560947159,US +3560947148,3560947159,US 3560947160,3560947163,PR 3560947164,3560947191,US 3560947192,3560947195,VE @@ -115381,7 +117378,10 @@ 3560947500,3560947686,JP 3560947687,3560947687,DE 3560947688,3560947711,JP -3560947712,3560950863,SE +3560947712,3560950839,SE +3560950840,3560950843,CZ +3560950844,3560950847,FI +3560950848,3560950863,SE 3560950864,3560950867,DK 3560950868,3560950871,ES 3560950872,3560950956,SE @@ -115390,7 +117390,9 @@ 3560951028,3560951031,DK 3560951032,3560951039,SE 3560951040,3560951043,NO -3560951044,3560951088,SE +3560951044,3560951083,SE +3560951084,3560951087,DK +3560951088,3560951088,SE 3560951089,3560951090,PL 3560951091,3560951091,SE 3560951092,3560951095,IT @@ -115398,11 +117400,15 @@ 3560951104,3560951107,DE 3560951108,3560951111,DK 3560951112,3560951115,FR -3560951116,3560951195,SE +3560951116,3560951119,SE +3560951120,3560951123,CZ +3560951124,3560951195,SE 3560951196,3560951199,DK -3560951200,3560951207,SE +3560951200,3560951203,SE +3560951204,3560951207,AE 3560951208,3560951211,DK -3560951212,3560951307,SE +3560951212,3560951215,IT +3560951216,3560951307,SE 3560951308,3560951311,IT 3560951312,3560951376,SE 3560951377,3560951378,PL @@ -115433,9 +117439,13 @@ 3560951584,3560951587,FI 3560951588,3560951591,SE 3560951592,3560951595,NO -3560951596,3560951679,SE +3560951596,3560951599,CZ +3560951600,3560951679,SE 3560951680,3560951683,DE -3560951684,3560951807,SE +3560951684,3560951759,SE +3560951760,3560951763,DK +3560951764,3560951767,HU +3560951768,3560951807,SE 3560951808,3560951811,US 3560951812,3560951816,SE 3560951817,3560951818,ES @@ -115447,12 +117457,16 @@ 3560951916,3560951919,PL 3560951920,3560951935,SE 3560951936,3560951940,NL -3560951941,3560952223,SE +3560951941,3560951943,SE +3560951944,3560951947,NO +3560951948,3560952223,SE 3560952224,3560952227,CZ 3560952228,3560952231,SE 3560952232,3560952235,US 3560952236,3560952239,PT -3560952240,3560953103,SE +3560952240,3560952255,SE +3560952256,3560952259,PL +3560952260,3560953103,SE 3560953104,3560953119,JP 3560953120,3560954239,SE 3560954240,3560954367,AX @@ -115541,7 +117555,9 @@ 3561496960,3561497087,GB 3561497088,3561497119,NL 3561497120,3561497215,GB -3561497216,3561497423,NL +3561497216,3561497311,NL +3561497312,3561497327,GB +3561497328,3561497423,NL 3561497424,3561497471,GB 3561497472,3561497535,NL 3561497536,3561497599,GB @@ -115622,8 +117638,8 @@ 3561610240,3561610495,US 3561610496,3561610527,FR 3561610528,3561610719,GB -3561610720,3561611295,FR -3561611296,3561611559,GB +3561610720,3561611311,FR +3561611312,3561611559,GB 3561611560,3561611567,FR 3561611568,3561614175,GB 3561614176,3561614199,FR @@ -115746,8 +117762,8 @@ 3561929856,3561929879,GB 3561929880,3561929919,NL 3561929920,3561929967,GB -3561929968,3561930335,NL -3561930336,3561930495,GB +3561929968,3561930239,NL +3561930240,3561930495,GB 3561930496,3561930511,NL 3561930512,3561930519,BE 3561930520,3561930527,FR @@ -115770,6 +117786,7 @@ 3561963144,3561963151,AU 3561963152,3561963519,DE 3561963520,3561971711,BE +3561971712,3561975807,CZ 3561975808,3561979903,UA 3561979904,3561988095,ES 3561988096,3562004479,DE @@ -116337,36 +118354,23 @@ 3563848576,3563848583,ES 3563848584,3563848655,NL 3563848656,3563848959,ES -3563848960,3563848967,NL -3563848968,3563848975,ES -3563848976,3563848979,NL +3563848960,3563848979,NL 3563848980,3563848983,ES 3563848984,3563848987,NL 3563848988,3563848999,ES 3563849000,3563849151,NL 3563849152,3563849183,ES -3563849184,3563849197,NL -3563849198,3563849215,ES +3563849184,3563849191,NL +3563849192,3563849215,ES 3563849216,3563849727,GB -3563849728,3563849991,NL -3563849992,3563849999,ES +3563849728,3563849999,NL 3563850000,3563850007,FI -3563850008,3563850015,NL -3563850016,3563850047,ES -3563850048,3563850239,NL -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,3563851199,ES -3563851200,3563851839,NL +3563850008,3563851023,NL +3563851024,3563851135,ES +3563851136,3563851839,NL 3563851840,3563851903,ES -3563851904,3563851967,NL -3563851968,3563852095,ES +3563851904,3563852031,NL +3563852032,3563852095,ES 3563852096,3563852191,NL 3563852192,3563852207,GB 3563852208,3563852216,NL @@ -116423,8 +118427,8 @@ 3564024144,3564024447,GB 3564024448,3564024463,IT 3564024464,3564024671,GB -3564024672,3564024831,IT -3564024832,3564027903,GB +3564024672,3564024783,IT +3564024784,3564027903,GB 3564027904,3564041215,DE 3564041216,3564041727,RU 3564041728,3564044287,DE @@ -116466,7 +118470,9 @@ 3564185344,3564191743,UA 3564191744,3564199935,BE 3564199936,3564208127,RU -3564208128,3564216319,GB +3564208128,3564212735,GB +3564212736,3564213007,IE +3564213008,3564216319,GB 3564216320,3564224511,PT 3564224512,3564232703,GB 3564232704,3564240895,RU @@ -116707,7 +118713,9 @@ 3564560392,3564560399,CA 3564560400,3564560415,US 3564560416,3564560511,GB -3564560512,3564560607,US +3564560512,3564560527,US +3564560528,3564560543,GB +3564560544,3564560607,US 3564560608,3564560927,GB 3564560928,3564560959,US 3564560960,3564561039,GB @@ -116742,11 +118750,13 @@ 3564566048,3564566079,US 3564566080,3564566143,GB 3564566144,3564566175,US -3564566176,3564566271,GB -3564566272,3564566527,US +3564566176,3564566239,GB +3564566240,3564566527,US 3564566528,3564567047,GB 3564567048,3564567055,US -3564567056,3564567143,GB +3564567056,3564567079,GB +3564567080,3564567087,US +3564567088,3564567143,GB 3564567144,3564567151,US 3564567152,3564567183,GB 3564567184,3564567199,US @@ -116812,13 +118822,15 @@ 3564699648,3564716031,GB 3564716032,3564724223,IT 3564724224,3564732415,NL -3564732416,3564734287,DE +3564732416,3564733183,DE +3564733184,3564733439,GB +3564733440,3564734287,DE 3564734288,3564734303,GB 3564734304,3564734399,DE 3564734400,3564734431,GB 3564734432,3564734815,DE -3564734816,3564734819,GB -3564734820,3564734847,DE +3564734816,3564734823,GB +3564734824,3564734847,DE 3564734848,3564734975,GB 3564734976,3564736511,DE 3564736512,3564736527,GB @@ -116888,8 +118900,8 @@ 3564881160,3564881199,GB 3564881200,3564881203,FR 3564881204,3564881231,GB -3564881232,3564881263,NL -3564881264,3564881343,GB +3564881232,3564881247,NL +3564881248,3564881343,GB 3564881344,3564881359,NL 3564881360,3564881375,GB 3564881376,3564881439,NL @@ -116915,8 +118927,8 @@ 3564882144,3564882239,NL 3564882240,3564882255,GB 3564882256,3564882271,NL -3564882272,3564882399,GB -3564882400,3564882943,NL +3564882272,3564882431,GB +3564882432,3564882943,NL 3564882944,3564883007,GB 3564883008,3564883039,NL 3564883040,3564883071,GB @@ -116937,9 +118949,7 @@ 3564884408,3564884415,NL 3564884416,3564884431,GB 3564884432,3564884439,NL -3564884440,3564884455,GB -3564884456,3564884463,NL -3564884464,3564884487,GB +3564884440,3564884487,GB 3564884488,3564884519,NL 3564884520,3564884527,FR 3564884528,3564884552,NL @@ -116972,7 +118982,9 @@ 3564885776,3564885791,GB 3564885792,3564885799,NL 3564885800,3564885839,GB -3564885840,3564885887,NL +3564885840,3564885855,NL +3564885856,3564885871,GB +3564885872,3564885887,NL 3564885888,3564885919,GB 3564885920,3564885935,NL 3564885936,3564885951,GB @@ -117096,8 +119108,7 @@ 3564904448,3564912639,DE 3564912640,3564920831,BG 3564920832,3564922879,ES -3564922880,3564927999,US -3564928000,3564929023,RU +3564922880,3564929023,US 3564929024,3564937215,AT 3564937216,3564945407,RS 3564945408,3564947175,GB @@ -117309,16 +119320,14 @@ 3565036288,3565036543,GB 3565036544,3565037119,IE 3565037120,3565037135,GB -3565037136,3565037199,IE -3565037200,3565037215,GB -3565037216,3565037279,IE -3565037280,3565037567,GB +3565037136,3565037311,IE +3565037312,3565037567,GB 3565037568,3565037823,IE 3565037824,3565038591,GB 3565038592,3565038663,IE 3565038664,3565039615,GB -3565039616,3565041663,IE -3565041664,3565043711,GB +3565039616,3565042175,IE +3565042176,3565043711,GB 3565043712,3565047807,AT 3565047808,3565048063,LI 3565048064,3565051903,AT @@ -117876,7 +119885,9 @@ 3567388608,3567388671,GB 3567388672,3567388927,CZ 3567388928,3567389183,DE -3567389184,3567389695,GB +3567389184,3567389311,GB +3567389312,3567389375,DE +3567389376,3567389695,GB 3567389696,3567390975,DE 3567390976,3567391107,GB 3567391108,3567391111,DE @@ -117885,8 +119896,8 @@ 3567391152,3567391231,GB 3567391232,3567391615,DE 3567391616,3567391759,GB -3567391760,3567391791,DE -3567391792,3567391807,GB +3567391760,3567391775,DE +3567391776,3567391807,GB 3567391808,3567391839,DE 3567391840,3567392767,GB 3567392768,3567393023,DE @@ -117914,18 +119925,12 @@ 3567399048,3567399071,GB 3567399072,3567399103,DE 3567399104,3567399167,GB -3567399168,3567399263,DE -3567399264,3567399295,GB -3567399296,3567399391,DE +3567399168,3567399391,DE 3567399392,3567399423,GB 3567399424,3567399439,DE 3567399440,3567399487,GB -3567399488,3567399679,DE -3567399680,3567399687,GB -3567399688,3567399695,DE -3567399696,3567399743,GB -3567399744,3567399871,DE -3567399872,3567399935,GB +3567399488,3567399807,DE +3567399808,3567399935,GB 3567399936,3567400703,DE 3567400704,3567400735,GB 3567400736,3567400751,DE @@ -118124,7 +120129,9 @@ 3568595080,3568595087,A2 3568595088,3568599039,FR 3568599040,3568631807,PL -3568631808,3568697343,SE +3568631808,3568650695,SE +3568650696,3568650699,US +3568650700,3568697343,SE 3568697344,3568730111,PL 3568730112,3568746495,NL 3568746496,3568752895,FI @@ -118168,9 +120175,7 @@ 3569238400,3569238527,AT 3569238528,3569239071,BE 3569239072,3569239103,LU -3569239104,3569239231,BE -3569239232,3569239263,LU -3569239264,3569239519,BE +3569239104,3569239519,BE 3569239520,3569239551,LU 3569239552,3569239983,BE 3569239984,3569239999,BN @@ -118203,9 +120208,7 @@ 3569255072,3569255103,LU 3569255104,3569258975,BE 3569258976,3569259007,LU -3569259008,3569271815,BE -3569271816,3569271823,LU -3569271824,3569271871,BE +3569259008,3569271871,BE 3569271872,3569271903,NL 3569271904,3569271911,BE 3569271912,3569271919,DE @@ -118572,7 +120575,9 @@ 3570756192,3570756223,RU 3570756224,3570760543,FI 3570760544,3570760575,RU -3570760576,3570794495,FI +3570760576,3570783007,FI +3570783008,3570783023,AX +3570783024,3570794495,FI 3570794496,3570860031,SE 3570860032,3570892799,CH 3570892800,3570925567,SA @@ -118610,8 +120615,8 @@ 3571286016,3571318911,DE 3571318912,3571319167,GB 3571319168,3571319295,DE -3571319296,3571319679,GB -3571319680,3571319935,DE +3571319296,3571319711,GB +3571319712,3571319935,DE 3571319936,3571320063,GB 3571320064,3571320575,DE 3571320576,3571320855,GB @@ -119197,9 +121202,7 @@ 3574155728,3574155731,AT 3574155732,3574155739,DE 3574155740,3574155743,AT -3574155744,3574155851,DE -3574155852,3574155855,NO -3574155856,3574155883,DE +3574155744,3574155883,DE 3574155884,3574155887,NL 3574155888,3574159919,DE 3574159920,3574159927,NL @@ -119282,8 +121285,8 @@ 3574833408,3574833439,NL 3574833440,3574834431,GB 3574834432,3574834559,NL -3574834560,3574834687,GB -3574834688,3574835199,NL +3574834560,3574834943,GB +3574834944,3574835199,NL 3574835200,3574836351,GB 3574836352,3574838015,NL 3574838016,3574838271,GB @@ -119334,161 +121337,156 @@ 3575513088,3575545855,PT 3575545856,3575562239,FR 3575562240,3575578623,DE -3575578624,3575578879,EU +3575578624,3575578879,BE 3575578880,3575579135,AU -3575579136,3575579647,EU +3575579136,3575579647,BE 3575579648,3575579903,AU -3575579904,3575581439,EU +3575579904,3575581439,BE 3575581440,3575581567,GB 3575581568,3575581695,IT -3575581696,3575582207,EU +3575581696,3575582207,BE 3575582208,3575582463,CH 3575582464,3575582719,FR -3575582720,3575583103,EU +3575582720,3575583103,BE 3575583104,3575583111,HU 3575583112,3575583115,GB 3575583116,3575583119,FR -3575583120,3575583231,EU +3575583120,3575583231,BE 3575583232,3575583487,IT -3575583488,3575585791,EU +3575583488,3575585791,BE 3575585792,3575586047,EG 3575586048,3575586303,IT 3575586304,3575586815,BE 3575586816,3575587071,GB -3575587072,3575587199,EU -3575587200,3575587215,BE -3575587216,3575587231,EU +3575587072,3575587231,BE 3575587232,3575587247,NL 3575587248,3575587255,FR -3575587256,3575587263,EU +3575587256,3575587263,BE 3575587264,3575587271,CH -3575587272,3575587287,EU +3575587272,3575587287,BE 3575587288,3575587295,PL -3575587296,3575587319,EU +3575587296,3575587319,BE 3575587320,3575587323,PL -3575587324,3575587839,EU +3575587324,3575587839,BE 3575587840,3575588351,GB -3575588352,3575588863,EU +3575588352,3575588863,BE 3575588864,3575589887,A2 -3575589888,3575590399,EU +3575589888,3575590399,BE 3575590400,3575590911,A2 -3575590912,3575592447,EU -3575592448,3575592959,BE -3575592960,3575595007,EU +3575590912,3575595007,BE 3575595008,3575595519,GB -3575595520,3575596287,EU +3575595520,3575596287,BE 3575596288,3575596415,GB -3575596416,3575596543,EU +3575596416,3575596543,BE 3575596544,3575596799,FR -3575596800,3575622607,EU +3575596800,3575622607,BE 3575622608,3575622611,GB -3575622612,3575622655,EU +3575622612,3575622655,BE 3575622656,3575622815,GB -3575622816,3575622847,EU +3575622816,3575622847,BE 3575622848,3575622879,IT 3575622880,3575622911,FI 3575622912,3575623167,GB -3575623168,3575624703,EU +3575623168,3575624703,BE 3575624704,3575624831,FR 3575624832,3575624839,PT 3575624840,3575624863,GB 3575624864,3575624895,IL 3575624896,3575624911,GB -3575624912,3575624959,EU +3575624912,3575624959,BE 3575624960,3575624991,GB 3575624992,3575624999,IT 3575625000,3575625007,GB 3575625008,3575625023,NL 3575625024,3575625027,EG -3575625028,3575625035,EU +3575625028,3575625035,BE 3575625036,3575625039,GB -3575625040,3575625047,EU +3575625040,3575625047,BE 3575625048,3575625055,FI -3575625056,3575625071,EU +3575625056,3575625071,BE 3575625072,3575625087,PL -3575625088,3575625095,BE -3575625096,3575625103,EU +3575625088,3575625103,BE 3575625104,3575625151,GB -3575625152,3575625351,EU +3575625152,3575625351,BE 3575625352,3575625359,GB -3575625360,3575625375,EU +3575625360,3575625375,BE 3575625376,3575625407,IT -3575625408,3575625439,EU +3575625408,3575625439,BE 3575625440,3575625455,ES -3575625456,3575625471,EU +3575625456,3575625471,BE 3575625472,3575625503,NO -3575625504,3575625983,EU +3575625504,3575625983,BE 3575625984,3575625991,SE -3575625992,3575626047,EU +3575625992,3575626047,BE 3575626048,3575626111,FR -3575626112,3575626319,EU +3575626112,3575626319,BE 3575626320,3575626335,GB 3575626336,3575626351,ES 3575626352,3575626367,DE -3575626368,3575626503,EU +3575626368,3575626503,BE 3575626504,3575626511,CH -3575626512,3575626519,EU +3575626512,3575626519,BE 3575626520,3575626527,FR -3575626528,3575626567,EU +3575626528,3575626567,BE 3575626568,3575626575,RO -3575626576,3575626599,EU +3575626576,3575626599,BE 3575626600,3575626607,IE -3575626608,3575626631,EU +3575626608,3575626631,BE 3575626632,3575626639,GB 3575626640,3575626647,DE 3575626648,3575626655,IT -3575626656,3575627311,EU +3575626656,3575627311,BE 3575627312,3575627327,ES 3575627328,3575627335,SE -3575627336,3575627359,EU +3575627336,3575627359,BE 3575627360,3575627367,ES -3575627368,3575627423,EU +3575627368,3575627423,BE 3575627424,3575627431,DE -3575627432,3575627487,EU +3575627432,3575627487,BE 3575627488,3575627503,GB -3575627504,3575627711,EU +3575627504,3575627711,BE 3575627712,3575627775,GB 3575627776,3575628543,NL -3575628544,3575628631,EU +3575628544,3575628631,BE 3575628632,3575628639,GB -3575628640,3575628815,EU +3575628640,3575628815,BE 3575628816,3575628823,ES 3575628824,3575628831,FR -3575628832,3575629183,EU +3575628832,3575629183,BE 3575629184,3575629247,NL -3575629248,3575629279,EU +3575629248,3575629279,BE 3575629280,3575629287,GB -3575629288,3575629295,EU +3575629288,3575629295,BE 3575629296,3575629303,NL -3575629304,3575629823,EU +3575629304,3575629823,BE 3575629824,3575629855,GR 3575629856,3575629871,DE -3575629872,3575629935,EU +3575629872,3575629935,BE 3575629936,3575629951,FR -3575629952,3575630015,EU +3575629952,3575630015,BE 3575630016,3575630023,GR -3575630024,3575630063,EU +3575630024,3575630063,BE 3575630064,3575630079,ZA 3575630080,3575630335,BE 3575630336,3575630463,IT 3575630464,3575630591,CH 3575630592,3575630847,IL -3575630848,3575630975,EU +3575630848,3575630975,BE 3575630976,3575630991,FR -3575630992,3575631103,EU +3575630992,3575631103,BE 3575631104,3575631111,AT 3575631112,3575631119,CH 3575631120,3575631127,DE -3575631128,3575631135,EU +3575631128,3575631135,BE 3575631136,3575631143,HU -3575631144,3575631159,EU +3575631144,3575631159,BE 3575631160,3575631167,GB 3575631168,3575631199,NL 3575631200,3575631207,IE -3575631208,3575631223,EU +3575631208,3575631223,BE 3575631224,3575631231,IL 3575631232,3575631295,CH -3575631296,3575631615,EU +3575631296,3575631615,BE 3575631616,3575631631,SE 3575631632,3575631639,BE 3575631640,3575631647,CH @@ -119496,177 +121494,173 @@ 3575631664,3575631679,DE 3575631680,3575631695,SE 3575631696,3575631711,IT -3575631712,3575631759,EU +3575631712,3575631759,BE 3575631760,3575631775,ZA -3575631776,3575631791,EU +3575631776,3575631791,BE 3575631792,3575631799,ES 3575631800,3575631807,CZ -3575631808,3575631855,EU +3575631808,3575631855,BE 3575631856,3575631863,ZA -3575631864,3575631871,EU -3575631872,3575632639,IL +3575631864,3575631871,BE +3575631872,3575632127,IL +3575632128,3575632639,BE 3575632640,3575632655,NO -3575632656,3575632703,EU +3575632656,3575632703,BE 3575632704,3575632711,GB -3575632712,3575632783,EU +3575632712,3575632783,BE 3575632784,3575632791,GB -3575632792,3575632831,EU -3575632832,3575632847,BE +3575632792,3575632847,BE 3575632848,3575632863,CH -3575632864,3575632871,BE -3575632872,3575632879,EU +3575632864,3575632879,BE 3575632880,3575632895,DE -3575632896,3575632967,EU +3575632896,3575632967,BE 3575632968,3575632975,GB -3575632976,3575632991,EU +3575632976,3575632991,BE 3575632992,3575632999,IT -3575633000,3575633039,EU +3575633000,3575633039,BE 3575633040,3575633055,DE 3575633056,3575633063,SE 3575633064,3575633071,NL -3575633072,3575633087,EU +3575633072,3575633087,BE 3575633088,3575633119,GB -3575633120,3575633135,EU +3575633120,3575633135,BE 3575633136,3575633143,GB -3575633144,3575633599,EU +3575633144,3575633599,BE 3575633600,3575633663,NL -3575633664,3575633727,EU +3575633664,3575633727,BE 3575633728,3575633735,AT 3575633736,3575633743,IT -3575633744,3575633783,EU +3575633744,3575633783,BE 3575633784,3575633791,DE -3575633792,3575633887,EU +3575633792,3575633887,BE 3575633888,3575633895,SE -3575633896,3575633919,EU +3575633896,3575633919,BE 3575633920,3575633983,CH 3575633984,3575633991,DE -3575633992,3575633999,EU +3575633992,3575633999,BE 3575634000,3575634007,PT 3575634008,3575634015,DK 3575634016,3575634047,GB -3575634048,3575634175,BE -3575634176,3575634183,EU +3575634048,3575634183,BE 3575634184,3575634191,AT -3575634192,3575634255,EU +3575634192,3575634255,BE 3575634256,3575634271,IT -3575634272,3575634367,EU +3575634272,3575634367,BE 3575634368,3575634399,NO 3575634400,3575634431,GB -3575634432,3575634455,EU +3575634432,3575634455,BE 3575634456,3575634463,DE -3575634464,3575634495,EU +3575634464,3575634495,BE 3575634496,3575634511,FI 3575634512,3575634519,CH -3575634520,3575634591,EU +3575634520,3575634591,BE 3575634592,3575634599,ES -3575634600,3575634607,EU +3575634600,3575634607,BE 3575634608,3575634615,GB 3575634616,3575634623,DE -3575634624,3575634695,EU +3575634624,3575634695,BE 3575634696,3575634703,FI -3575634704,3575634711,EU +3575634704,3575634711,BE 3575634712,3575634719,DE -3575634720,3575634767,EU +3575634720,3575634767,BE 3575634768,3575634775,NO -3575634776,3575634783,EU +3575634776,3575634783,BE 3575634784,3575634791,FR 3575634792,3575634799,ES 3575634800,3575634807,BE 3575634808,3575634815,SE -3575634816,3575634879,EU +3575634816,3575634879,BE 3575634880,3575634911,GB 3575634912,3575634919,SE 3575634920,3575634927,GB 3575634928,3575634935,IT -3575634936,3575635015,EU +3575634936,3575635015,BE 3575635016,3575635023,CH 3575635024,3575635039,ES -3575635040,3575635055,EU +3575635040,3575635055,BE 3575635056,3575635063,CH -3575635064,3575635071,EU +3575635064,3575635071,BE 3575635072,3575635087,SE -3575635088,3575635103,EU +3575635088,3575635103,BE 3575635104,3575635119,PT 3575635120,3575635135,PL 3575635136,3575635151,DE 3575635152,3575635159,PT 3575635160,3575635167,DE 3575635168,3575635175,GB -3575635176,3575635199,EU +3575635176,3575635199,BE 3575635200,3575635455,NO 3575635456,3575635463,RU 3575635464,3575635471,GB -3575635472,3575635583,EU +3575635472,3575635583,BE 3575635584,3575635615,EG 3575635616,3575635631,FI -3575635632,3575635647,EU +3575635632,3575635647,BE 3575635648,3575635679,GB -3575635680,3575635695,EU +3575635680,3575635695,BE 3575635696,3575635703,GB -3575635704,3575635775,EU +3575635704,3575635775,BE 3575635776,3575635839,CH 3575635840,3575635847,GB 3575635848,3575635855,FR 3575635856,3575635871,TR -3575635872,3575635983,EU +3575635872,3575635983,BE 3575635984,3575635999,DE -3575636000,3575636143,EU +3575636000,3575636143,BE 3575636144,3575636151,HU -3575636152,3575636607,EU +3575636152,3575636607,BE 3575636608,3575636735,FR -3575636736,3575636807,EU +3575636736,3575636807,BE 3575636808,3575636815,GB -3575636816,3575636823,EU +3575636816,3575636823,BE 3575636824,3575636831,RU -3575636832,3575636855,EU +3575636832,3575636855,BE 3575636856,3575636863,DE -3575636864,3575636871,EU +3575636864,3575636871,BE 3575636872,3575636879,CZ -3575636880,3575636895,EU +3575636880,3575636895,BE 3575636896,3575636903,PL 3575636904,3575636911,CZ -3575636912,3575636927,EU +3575636912,3575636927,BE 3575636928,3575636959,DE -3575636960,3575636983,EU +3575636960,3575636983,BE 3575636984,3575636991,FR -3575636992,3575637039,EU +3575636992,3575637039,BE 3575637040,3575637055,DE -3575637056,3575637151,EU +3575637056,3575637151,BE 3575637152,3575637183,GB -3575637184,3575637367,EU -3575637368,3575637375,BE -3575637376,3575637407,EU +3575637184,3575637407,BE 3575637408,3575637439,LU 3575637440,3575637471,GB -3575637472,3575638103,EU +3575637472,3575638103,BE 3575638104,3575638111,GB -3575638112,3575638175,EU +3575638112,3575638175,BE 3575638176,3575638239,GB -3575638240,3575638263,EU +3575638240,3575638263,BE 3575638264,3575638271,PL -3575638272,3575638279,EU +3575638272,3575638279,BE 3575638280,3575638287,RU -3575638288,3575638303,EU +3575638288,3575638303,BE 3575638304,3575638335,NO -3575638336,3575638527,EU +3575638336,3575638527,BE 3575638528,3575638543,DE -3575638544,3575638559,EU +3575638544,3575638559,BE 3575638560,3575638591,GB -3575638592,3575638623,EU +3575638592,3575638623,BE 3575638624,3575638639,PL -3575638640,3575638719,EU +3575638640,3575638719,BE 3575638720,3575638735,NL 3575638736,3575638751,GR -3575638752,3575638767,EU +3575638752,3575638767,BE 3575638768,3575638783,SE -3575638784,3575638911,EU +3575638784,3575638911,BE 3575638912,3575638943,FR 3575638944,3575638975,GB -3575638976,3575639007,EU +3575638976,3575639007,BE 3575639008,3575639011,GB 3575639012,3575639023,IE 3575639024,3575639039,PL -3575639040,3575640063,EU +3575639040,3575640063,BE 3575640064,3575644159,TR 3575644160,3575709695,DK 3575709696,3575730175,AT @@ -120260,7 +122254,10 @@ 3576239040,3576239071,GB 3576239072,3576239087,FR 3576239088,3576239103,GB -3576239104,3576239663,FR +3576239104,3576239615,FR +3576239616,3576239623,GB +3576239624,3576239631,IT +3576239632,3576239663,FR 3576239664,3576239671,GB 3576239672,3576240039,FR 3576240040,3576240047,GB @@ -120292,7 +122289,9 @@ 3576242184,3576242199,GB 3576242200,3576242319,FR 3576242320,3576242327,GB -3576242328,3576243967,FR +3576242328,3576242335,FR +3576242336,3576242343,GB +3576242344,3576243967,FR 3576243968,3576243999,GB 3576244000,3576244031,FR 3576244032,3576244047,GB @@ -120317,8 +122316,10 @@ 3576249824,3576249831,FR 3576249832,3576249839,GB 3576249840,3576250623,FR -3576250624,3576250879,GB -3576250880,3576251407,FR +3576250624,3576251007,GB +3576251008,3576251039,FR +3576251040,3576251135,GB +3576251136,3576251407,FR 3576251408,3576251519,GB 3576251520,3576251583,FR 3576251584,3576251599,GB @@ -120516,9 +122517,7 @@ 3576261104,3576261111,GB 3576261112,3576261375,FR 3576261376,3576261631,GB -3576261632,3576261823,FR -3576261824,3576261887,GB -3576261888,3576261927,FR +3576261632,3576261927,FR 3576261928,3576261935,GB 3576261936,3576263439,FR 3576263440,3576263487,GB @@ -120550,9 +122549,9 @@ 3576264576,3576264623,GB 3576264624,3576264639,FR 3576264640,3576264687,GB -3576264688,3576265279,FR -3576265280,3576265287,GB -3576265288,3576265303,FR +3576264688,3576265287,FR +3576265288,3576265295,GB +3576265296,3576265303,FR 3576265304,3576265311,GB 3576265312,3576265327,FR 3576265328,3576265335,GB @@ -120615,7 +122614,9 @@ 3576954880,3576987647,NO 3576987648,3577001983,GB 3577001984,3577003583,NL -3577003584,3577003771,GB +3577003584,3577003743,GB +3577003744,3577003767,NL +3577003768,3577003771,GB 3577003772,3577003775,NL 3577003776,3577020415,GB 3577020416,3577085951,NL @@ -120647,7 +122648,9 @@ 3577559776,3577559783,FR 3577559784,3577562391,DE 3577562392,3577562399,GB -3577562400,3577577231,DE +3577562400,3577567711,DE +3577567712,3577567719,IT +3577567720,3577577231,DE 3577577232,3577577247,US 3577577248,3577592431,DE 3577592432,3577592447,FR @@ -120901,7 +122904,9 @@ 3578920960,3578986495,IT 3578986496,3578988095,DE 3578988096,3578988099,CH -3578988100,3578996999,DE +3578988100,3578992959,DE +3578992960,3578992975,GB +3578992976,3578996999,DE 3578997000,3578997007,CH 3578997008,3578997935,DE 3578997936,3578997943,FR @@ -120931,7 +122936,9 @@ 3579193728,3579193815,NL 3579193816,3579193823,ES 3579193824,3579193855,NL -3579193856,3579194103,GB +3579193856,3579194039,GB +3579194040,3579194047,SE +3579194048,3579194103,GB 3579194104,3579194111,US 3579194112,3579197055,GB 3579197056,3579197183,US @@ -120943,7 +122950,11 @@ 3579205632,3579205887,IE 3579205888,3579210079,GB 3579210080,3579210087,BE -3579210088,3579221071,GB +3579210088,3579213247,GB +3579213248,3579213311,IT +3579213312,3579221023,GB +3579221024,3579221039,FR +3579221040,3579221071,GB 3579221072,3579221087,DE 3579221088,3579221103,GB 3579221104,3579221119,IT @@ -121267,7 +123278,7 @@ 3580686336,3580688383,BG 3580688384,3580698623,RU 3580698624,3580702719,PL -3580702720,3580710911,RU +3580706816,3580710911,RU 3580710912,3580715007,UA 3580715008,3580719103,RU 3580719104,3580723199,NL @@ -121349,9 +123360,11 @@ 3582091264,3582099455,QA 3582099456,3582107647,GB 3582107648,3582115839,NL -3582115840,3582120959,SE +3582115840,3582117887,SE +3582117888,3582119423,LT +3582119424,3582120959,SE 3582120960,3582121983,EE -3582121984,3582124031,SE +3582121984,3582124031,LT 3582124032,3582125383,FI 3582125384,3582125391,AX 3582125392,3582132223,FI @@ -121584,8 +123597,7 @@ 3582571136,3582571199,FR 3582571200,3582571303,EU 3582571304,3582571307,CH -3582571308,3582571311,FR -3582571312,3582571375,EU +3582571308,3582571375,EU 3582571376,3582571391,FR 3582571392,3582571407,EU 3582571408,3582571423,FR @@ -121594,16 +123606,14 @@ 3582571488,3582571647,EU 3582571648,3582571687,IE 3582571688,3582571691,EU -3582571692,3582571707,IE -3582571708,3582571727,EU -3582571728,3582571743,IE +3582571692,3582571719,IE +3582571720,3582571735,EU +3582571736,3582571743,IE 3582571744,3582571751,EU 3582571752,3582571839,IE 3582571840,3582571999,EU 3582572000,3582572015,IE -3582572016,3582572023,EU -3582572024,3582572031,IE -3582572032,3582572415,EU +3582572016,3582572415,EU 3582572416,3582572431,CH 3582572432,3582572447,EU 3582572448,3582572451,CH @@ -121641,9 +123651,7 @@ 3582573600,3582573615,CH 3582573616,3582573631,EU 3582573632,3582573695,CH -3582573696,3582573727,EU -3582573728,3582573759,CH -3582573760,3582573823,EU +3582573696,3582573823,EU 3582573824,3582573887,CH 3582573888,3582573895,EU 3582573896,3582573903,CH @@ -121690,7 +123698,9 @@ 3582746624,3582754815,RU 3582754816,3582763007,GR 3582763008,3582771199,FI -3582771200,3582779391,CY +3582771200,3582772479,CY +3582772480,3582772735,GB +3582772736,3582779391,CY 3582779392,3582787583,RU 3582787584,3582795775,PT 3582795776,3582803967,ES @@ -121700,6 +123710,7 @@ 3582828544,3582836735,KZ 3582836736,3582853119,RU 3582853120,3582861311,SE +3582861312,3582869503,RU 3582869504,3582877695,NO 3582877696,3582885887,AT 3582885888,3582894079,TR @@ -121723,7 +123734,8 @@ 3583019376,3583023215,CH 3583023216,3583023223,DE 3583023224,3583025151,CH -3583025152,3583028991,IT +3583025152,3583025279,BR +3583025280,3583028991,IT 3583028992,3583029119,DJ 3583029120,3583029247,US 3583029248,3583029375,SG @@ -121745,7 +123757,9 @@ 3583032160,3583032191,FR 3583032192,3583032319,IT 3583032320,3583032575,FR -3583032576,3583033343,IT +3583032576,3583032831,IT +3583032832,3583033087,SG +3583033088,3583033343,IT 3583033344,3583041535,FR 3583041536,3583049727,NL 3583049728,3583066111,RU @@ -121902,17 +123916,13 @@ 3583706104,3583706107,NA 3583706108,3583706151,UA 3583706152,3583706159,NA -3583706160,3583706175,UA -3583706176,3583706183,NA -3583706184,3583706191,UA +3583706160,3583706191,UA 3583706192,3583706199,NA 3583706200,3583706223,UA 3583706224,3583706231,NA 3583706232,3583706295,UA 3583706296,3583706319,NA -3583706320,3583706375,UA -3583706376,3583706383,NA -3583706384,3583706463,UA +3583706320,3583706463,UA 3583706464,3583706471,NA 3583706472,3583706495,UA 3583706496,3583706511,NA @@ -121963,8 +123973,8 @@ 3583707224,3583707519,UA 3583707520,3583707535,NA 3583707536,3583707663,UA -3583707664,3583707679,NA -3583707680,3583707751,UA +3583707664,3583707671,NA +3583707672,3583707751,UA 3583707752,3583707767,NA 3583707768,3583707775,UA 3583707776,3583707791,NA @@ -121980,13 +123990,11 @@ 3583708168,3583708175,NA 3583708176,3583708183,UA 3583708184,3583708191,RU -3583708192,3583708223,UA -3583708224,3583708239,NA +3583708192,3583708231,UA +3583708232,3583708239,NA 3583708240,3583708423,UA 3583708424,3583708431,NA -3583708432,3583708455,UA -3583708456,3583708463,NA -3583708464,3583708479,UA +3583708432,3583708479,UA 3583708480,3583708543,NA 3583708544,3583708575,UA 3583708576,3583708583,NA @@ -121995,11 +124003,9 @@ 3583708624,3583709447,UA 3583709448,3583709455,NA 3583709456,3583709463,DE -3583709464,3583709479,UA -3583709480,3583709487,NA -3583709488,3583709503,UA -3583709504,3583709511,NA -3583709512,3583709527,UA +3583709464,3583709503,UA +3583709504,3583709519,RU +3583709520,3583709527,UA 3583709528,3583709543,NA 3583709544,3583709551,UA 3583709552,3583709559,NA @@ -122008,8 +124014,8 @@ 3583709584,3583709599,UA 3583709600,3583709607,NA 3583709608,3583709615,RU -3583709616,3583709623,UA -3583709624,3583709639,NA +3583709616,3583709631,UA +3583709632,3583709639,NA 3583709640,3583709663,UA 3583709664,3583709671,NA 3583709672,3583709699,UA @@ -122025,23 +124031,23 @@ 3583709824,3583709831,NA 3583709832,3583709839,UA 3583709840,3583709863,NA -3583709864,3583709871,UA +3583709864,3583709871,RU 3583709872,3583709879,NA 3583709880,3583709887,UA 3583709888,3583709911,NA 3583709912,3583709927,UA 3583709928,3583709943,NA 3583709944,3583710055,UA -3583710056,3583710063,NA -3583710064,3583710079,DE +3583710056,3583710072,NA +3583710073,3583710079,UA 3583710080,3583710087,NA 3583710088,3583710103,UA 3583710104,3583710111,NA 3583710112,3583710119,UA 3583710120,3583710135,NA 3583710136,3583710211,UA -3583710212,3583710223,NA -3583710224,3583710239,UA +3583710212,3583710215,NA +3583710216,3583710239,UA 3583710240,3583710247,NA 3583710248,3583710319,UA 3583710320,3583710335,NA @@ -122063,24 +124069,23 @@ 3583710704,3583710711,NA 3583710712,3583710743,UA 3583710744,3583710751,BE -3583710752,3583710759,US -3583710760,3583710823,UA +3583710752,3583710823,UA 3583710824,3583710831,NA -3583710832,3583710847,UA -3583710848,3583710855,IL +3583710832,3583710855,UA 3583710856,3583710863,NA 3583710864,3583710871,UA 3583710872,3583710879,NA 3583710880,3583710887,UA -3583710888,3583710911,NA -3583710912,3583710935,UA +3583710888,3583710903,NA +3583710904,3583710935,UA 3583710936,3583710943,NA 3583710944,3583710959,UA 3583710960,3583710967,NA 3583710968,3583710991,UA 3583710992,3583710999,NA 3583711000,3583711007,UA -3583711008,3583711023,NA +3583711008,3583711015,RU +3583711016,3583711023,NA 3583711024,3583711079,UA 3583711080,3583711087,GB 3583711088,3583711095,NA @@ -122102,25 +124107,21 @@ 3583711568,3583711591,NA 3583711592,3583711607,UA 3583711608,3583711615,NA -3583711616,3583711695,UA +3583711616,3583711631,UA +3583711632,3583711639,RU +3583711640,3583711695,UA 3583711696,3583711703,NA 3583711704,3583711711,UA -3583711712,3583711727,NA -3583711728,3583711759,UA -3583711760,3583711767,NA -3583711768,3583711783,UA +3583711712,3583711719,NA +3583711720,3583711783,UA 3583711784,3583711799,NA -3583711800,3583711807,UA -3583711808,3583711823,NA -3583711824,3583711831,UA -3583711832,3583711839,NA -3583711840,3583711863,UA -3583711864,3583711879,NA +3583711800,3583711815,UA +3583711816,3583711823,NA +3583711824,3583711871,UA +3583711872,3583711879,NA 3583711880,3583712015,UA 3583712016,3583712031,NA -3583712032,3583712095,UA -3583712096,3583712111,NA -3583712112,3583712119,UA +3583712032,3583712119,UA 3583712120,3583712127,NA 3583712128,3583712159,UA 3583712160,3583712199,NA @@ -122130,16 +124131,11 @@ 3583712312,3583712319,NA 3583712320,3583712415,UA 3583712416,3583712423,NA -3583712424,3583712431,SG -3583712432,3583712439,UA +3583712424,3583712439,UA 3583712440,3583712479,NA -3583712480,3583712591,UA -3583712592,3583712599,NA -3583712600,3583712623,UA +3583712480,3583712623,UA 3583712624,3583712631,NA -3583712632,3583712639,UA -3583712640,3583712647,NA -3583712648,3583712655,UA +3583712632,3583712655,UA 3583712656,3583712663,NA 3583712664,3583712703,UA 3583712704,3583712719,NA @@ -122152,30 +124148,28 @@ 3583712776,3583712783,NA 3583712784,3583712839,UA 3583712840,3583712847,NA -3583712848,3583712911,UA -3583712912,3583712943,NA -3583712944,3583712959,UA -3583712960,3583712983,NA -3583712984,3583713007,UA +3583712848,3583712919,UA +3583712920,3583712943,NA +3583712944,3583713007,UA 3583713008,3583713015,RU 3583713016,3583713031,UA 3583713032,3583713039,NA -3583713040,3583713071,UA +3583713040,3583713063,UA +3583713064,3583713071,KP 3583713072,3583713079,NA 3583713080,3583713103,UA -3583713104,3583713111,NA -3583713112,3583713127,UA -3583713128,3583713135,IT -3583713136,3583713143,UA +3583713104,3583713111,AZ +3583713112,3583713143,UA 3583713144,3583713151,NA -3583713152,3583713159,UA -3583713160,3583713167,NA +3583713152,3583713167,UA 3583713168,3583713175,EG 3583713176,3583713183,UA 3583713184,3583713191,NA 3583713192,3583713223,UA 3583713224,3583713231,NA -3583713232,3583713279,UA +3583713232,3583713271,UA +3583713272,3583713275,RU +3583713276,3583713279,UA 3583713280,3583721471,CZ 3583721472,3583729663,DE 3583729664,3583737855,TR @@ -122336,9 +124330,7 @@ 3584295760,3584295767,PT 3584295768,3584295807,AT 3584295808,3584295815,PT -3584295816,3584295935,AT -3584295936,3584295943,AS -3584295944,3584303103,AT +3584295816,3584303103,AT 3584303104,3584311295,ES 3584311296,3584319487,DE 3584319488,3584327679,LT @@ -122376,9 +124368,7 @@ 3584508944,3584508951,KY 3584508952,3584509231,GB 3584509232,3584509239,AW -3584509240,3584509359,GB -3584509360,3584509367,KY -3584509368,3584510999,GB +3584509240,3584510999,GB 3584511000,3584511007,KY 3584511008,3584511023,GB 3584511024,3584511039,KY @@ -122470,18 +124460,13 @@ 3584958464,3584966655,DE 3584966656,3584974847,DK 3584974848,3584983039,FR -3584983040,3584983807,US -3584983808,3584984063,UA -3584984064,3584984319,US -3584984320,3584984575,UA -3584984576,3584988607,US -3584988608,3584988623,UA -3584988624,3584988655,US +3584983040,3584988655,US 3584988656,3584988671,UA 3584988672,3584990303,US 3584990304,3584990463,UA 3584990464,3584990495,NL -3584990496,3584990527,UA +3584990496,3584990511,US +3584990512,3584990527,UA 3584990528,3584990591,US 3584990592,3584990719,GB 3584990720,3584991231,US @@ -122498,7 +124483,9 @@ 3585055072,3585055087,NG 3585055088,3585056767,GB 3585056768,3585064959,LB -3585064960,3585081343,GB +3585064960,3585071405,GB +3585071406,3585071409,IN +3585071410,3585081343,GB 3585081344,3585114111,IR 3585114112,3585122303,IS 3585122304,3585130495,ES @@ -122509,8 +124496,8 @@ 3585163264,3585171455,BE 3585171456,3585179647,RU 3585179648,3585189887,BE -3585189888,3585190399,DZ -3585190400,3585190527,BE +3585189888,3585190143,DZ +3585190144,3585190527,BE 3585190528,3585190655,DZ 3585190656,3585196031,BE 3585196032,3585204223,ES @@ -122556,7 +124543,9 @@ 3585515520,3585523711,RU 3585523712,3585531903,LV 3585531904,3585540095,AT -3585540096,3585548287,DE +3585540096,3585542335,DE +3585542336,3585542351,TR +3585542352,3585548287,DE 3585548288,3585556479,RU 3585556480,3585564671,DE 3585564672,3585572863,RU @@ -122646,6 +124635,7 @@ 3585716424,3585720319,AT 3585720320,3585728511,GB 3585728512,3585736703,SE +3585736704,3585744895,HR 3585744896,3585750335,FR 3585750336,3585750351,GB 3585750352,3585750367,DE @@ -122681,9 +124671,7 @@ 3585835952,3585835959,SO 3585835960,3585835967,TD 3585835968,3585835983,ER -3585835984,3585836007,NL -3585836008,3585836023,IQ -3585836024,3585836287,NL +3585835984,3585836287,NL 3585836288,3585836543,CH 3585836544,3585837055,DZ 3585837056,3585837567,IQ @@ -122744,7 +124732,9 @@ 3585937408,3585940479,NL 3585940480,3585940735,BE 3585940736,3585941503,NL -3585941504,3585949695,PL +3585941504,3585943135,PL +3585943136,3585943167,US +3585943168,3585949695,PL 3585949696,3585957887,KW 3585957888,3585966079,SE 3585966080,3585974271,CH @@ -122815,8 +124805,8 @@ 3586270080,3586270207,NL 3586270208,3586271231,ES 3586271232,3586271487,NL -3586271488,3586271831,ES -3586271832,3586271839,IT +3586271488,3586271823,ES +3586271824,3586271839,IT 3586271840,3586271999,ES 3586272000,3586272255,IT 3586272256,3586272383,NL @@ -122896,18 +124886,19 @@ 3586678272,3586678335,FR 3586678336,3586678399,US 3586678400,3586678415,GB -3586678416,3586678439,IE +3586678416,3586678431,FR +3586678432,3586678439,IE 3586678440,3586678447,FR 3586678448,3586678527,IE -3586678528,3586678671,FR +3586678528,3586678655,FR +3586678656,3586678671,CY 3586678672,3586678679,GB 3586678680,3586678687,MU 3586678688,3586678783,GB 3586678784,3586679039,IT -3586679040,3586679103,US +3586679040,3586679103,FR 3586679104,3586679167,DE -3586679168,3586679231,US -3586679232,3586679327,FR +3586679168,3586679327,FR 3586679328,3586679343,DK 3586679344,3586679359,FR 3586679360,3586679423,DE @@ -122931,7 +124922,9 @@ 3586680832,3586681087,FR 3586681088,3586681343,IT 3586681344,3586682111,FR -3586682112,3586682367,US +3586682112,3586682175,US +3586682176,3586682239,FR +3586682240,3586682367,US 3586682368,3586682399,AT 3586682400,3586682879,FR 3586682880,3586686975,US @@ -123011,23 +125004,57 @@ 3586916352,3586924031,IT 3586924032,3586924047,US 3586924048,3586924543,IT -3586924544,3586924831,AX -3586924832,3586924839,FI -3586924840,3586924879,AX -3586924880,3586924887,FI -3586924888,3586924967,AX -3586924968,3586924983,FI -3586924984,3586925439,AX -3586925440,3586925471,FI -3586925472,3586925567,AX +3586924544,3586924743,FI +3586924744,3586924751,AX +3586924752,3586924767,FI +3586924768,3586924799,AX +3586924800,3586924871,FI +3586924872,3586924879,AX +3586924880,3586924919,FI +3586924920,3586924927,AX +3586924928,3586924943,FI +3586924944,3586924959,AX +3586924960,3586924983,FI +3586924984,3586925055,AX +3586925056,3586925103,FI +3586925104,3586925135,AX +3586925136,3586925247,FI +3586925248,3586925263,AX +3586925264,3586925311,FI +3586925312,3586925375,AX +3586925376,3586925439,FI +3586925440,3586925503,AX +3586925504,3586925535,FI +3586925536,3586925567,AX 3586925568,3586925695,FI -3586925696,3586926591,AX +3586925696,3586925759,AX +3586925760,3586925791,FI +3586925792,3586925823,AX +3586925824,3586925831,FI +3586925832,3586925855,AX +3586925856,3586925887,FI +3586925888,3586925919,AX +3586925920,3586925983,FI +3586925984,3586926003,AX +3586926004,3586926015,FI +3586926016,3586926047,AX +3586926048,3586926079,FI +3586926080,3586926591,AX 3586926592,3586926847,SE -3586926848,3586928255,AX -3586928256,3586928287,FI -3586928288,3586928335,AX -3586928336,3586928351,FI -3586928352,3586932735,AX +3586926848,3586927103,FI +3586927104,3586927999,AX +3586928000,3586928127,FI +3586928128,3586928143,AX +3586928144,3586928159,FI +3586928160,3586928175,AX +3586928176,3586928223,FI +3586928224,3586928239,AX +3586928240,3586928287,FI +3586928288,3586928319,AX +3586928320,3586928335,FI +3586928336,3586928351,AX +3586928352,3586928639,FI +3586928640,3586932735,AX 3586932736,3586949119,LB 3586949120,3586965503,SE 3586965504,3586981887,NL @@ -123064,11 +125091,9 @@ 3587162112,3587178495,IR 3587178496,3587178795,AT 3587178796,3587178799,US -3587178800,3587179279,AT -3587179280,3587179287,AU -3587179288,3587179439,AT +3587178800,3587179439,AT 3587179440,3587179455,GB -3587179456,3587179463,TR +3587179456,3587179463,AT 3587179464,3587179471,CH 3587179472,3587186687,AT 3587186688,3587194495,DE @@ -123086,16 +125111,16 @@ 3587227648,3587227759,NL 3587227760,3587227775,GB 3587227776,3587227903,NL -3587227904,3587227919,GB -3587227920,3587227935,NL -3587227936,3587227967,GB +3587227904,3587227967,GB 3587227968,3587227983,DE 3587227984,3587228047,GB 3587228048,3587228087,NL 3587228088,3587228127,GB 3587228128,3587228271,NL 3587228272,3587228287,GB -3587228288,3587228591,NL +3587228288,3587228351,NL +3587228352,3587228367,GB +3587228368,3587228591,NL 3587228592,3587228607,GB 3587228608,3587228640,NL 3587228641,3587228647,GB @@ -123103,7 +125128,8 @@ 3587228928,3587229455,GB 3587229456,3587229823,NL 3587229824,3587229839,GB -3587229840,3587229871,NL +3587229840,3587229855,ES +3587229856,3587229871,NL 3587229872,3587229887,GB 3587229888,3587229920,NL 3587229921,3587229935,GB @@ -123137,7 +125163,9 @@ 3587232536,3587232711,GB 3587232712,3587232719,NL 3587232720,3587232767,GB -3587232768,3587233295,NL +3587232768,3587233103,NL +3587233104,3587233119,GB +3587233120,3587233295,NL 3587233296,3587233319,GB 3587233320,3587233343,NL 3587233344,3587233359,GB @@ -123185,25 +125213,21 @@ 3587238472,3587238479,GB 3587238480,3587238535,NL 3587238536,3587238543,GB -3587238544,3587238607,NL +3587238544,3587238575,NL +3587238576,3587238583,GB +3587238584,3587238607,NL 3587238608,3587238911,GB 3587238912,3587239303,NL 3587239304,3587239311,GB -3587239312,3587239679,NL -3587239680,3587239687,GB -3587239688,3587239767,NL -3587239768,3587239775,GB -3587239776,3587239791,NL -3587239792,3587239807,GB -3587239808,3587239871,NL -3587239872,3587239935,GB -3587239936,3587240015,NL -3587240016,3587240023,GB -3587240024,3587240087,NL +3587239312,3587239903,NL +3587239904,3587239935,GB +3587239936,3587240087,NL 3587240088,3587240095,GB 3587240096,3587240103,NL 3587240104,3587240107,GB -3587240108,3587240439,NL +3587240108,3587240359,NL +3587240360,3587240367,GB +3587240368,3587240439,NL 3587240440,3587240447,GB 3587240448,3587240511,NL 3587240512,3587240575,GB @@ -123353,10 +125377,9 @@ 3587375104,3587383295,TR 3587383296,3587391487,CZ 3587391488,3587407871,KZ -3587407872,3587408127,NL -3587408128,3587415039,BE -3587415040,3587422719,NL -3587422720,3587424255,BE +3587407872,3587408383,NL +3587408384,3587408895,BE +3587408896,3587424255,NL 3587424256,3587440639,DE 3587440640,3587457023,SE 3587457024,3587459263,GB @@ -123376,19 +125399,11 @@ 3587620864,3587637247,SE 3587637248,3587653631,FR 3587653632,3587670015,SK -3587670016,3587673763,IT -3587673764,3587673767,GB -3587673768,3587673787,IT -3587673788,3587673792,GB -3587673793,3587679135,IT +3587670016,3587679135,IT 3587679136,3587679143,ES 3587679144,3587683327,IT 3587683328,3587683359,FR -3587683360,3587683415,IT -3587683416,3587683416,GB -3587683417,3587685831,IT -3587685832,3587685839,GB -3587685840,3587686031,IT +3587683360,3587686031,IT 3587686032,3587686039,FR 3587686040,3587687591,IT 3587687592,3587687599,NL @@ -123416,9 +125431,7 @@ 3587850240,3587854335,NL 3587854336,3587866623,PL 3587866624,3587874815,FR -3587874816,3587877383,DE -3587877384,3587877391,US -3587877392,3587877407,DE +3587874816,3587877407,DE 3587877408,3587877439,NL 3587877440,3587878527,DE 3587878528,3587878559,AT @@ -123447,6 +125460,7 @@ 3588112384,3588128767,FR 3588128768,3588145151,HU 3588145152,3588153343,PL +3588153344,3588161535,RU 3588161536,3588227071,FR 3588227072,3588292607,BE 3588292608,3588308991,AT @@ -123542,7 +125556,8 @@ 3589034368,3589034431,NL 3589034432,3589034495,FR 3589034496,3589037055,ES -3589037056,3589037343,NL +3589037056,3589037183,BE +3589037184,3589037343,NL 3589037344,3589037375,SE 3589037376,3589037423,NL 3589037424,3589037439,ES @@ -123609,7 +125624,8 @@ 3589429248,3589429503,FR 3589429504,3589430271,GB 3589430272,3589430543,FR -3589430544,3589431295,GB +3589430544,3589430559,ES +3589430560,3589431295,GB 3589431296,3589431343,FR 3589431344,3589432319,GB 3589432320,3589432575,CH @@ -123651,8 +125667,8 @@ 3589554176,3589570559,PS 3589570560,3589570655,NL 3589570656,3589578751,GB -3589578752,3589579263,NL -3589579264,3589579775,GB +3589578752,3589579391,NL +3589579392,3589579775,GB 3589579776,3589580799,NL 3589580800,3589580895,GB 3589580896,3589581055,NL @@ -123663,9 +125679,7 @@ 3589581440,3589581567,GB 3589581568,3589581791,NL 3589581792,3589581823,GB -3589581824,3589582591,NL -3589582592,3589582607,GB -3589582608,3589582639,NL +3589581824,3589582639,NL 3589582640,3589582655,GB 3589582656,3589583359,NL 3589583360,3589583647,GB @@ -123691,7 +125705,7 @@ 3589680768,3589685247,FR 3589685248,3589718015,GB 3589718016,3589719343,BE -3589719344,3589719347,GB +3589719344,3589719347,LU 3589719348,3589719847,BE 3589719848,3589719855,AT 3589719856,3589719967,BE @@ -123708,16 +125722,14 @@ 3589720312,3589720575,BE 3589720576,3589720583,ES 3589720584,3589720599,FR -3589720600,3589720603,BE -3589720604,3589720607,GB -3589720608,3589720623,BE +3589720600,3589720623,BE 3589720624,3589720631,GB 3589720632,3589720639,FR 3589720640,3589720655,BE 3589720656,3589720663,ES 3589720664,3589720687,BE 3589720688,3589720695,GB -3589720696,3589720703,FR +3589720696,3589720703,ES 3589720704,3589720727,BE 3589720728,3589720735,GB 3589720736,3589720743,BE @@ -123745,9 +125757,7 @@ 3589721048,3589721055,ES 3589721056,3589721063,BE 3589721064,3589721071,GB -3589721072,3589721147,BE -3589721148,3589721151,GB -3589721152,3589721159,BE +3589721072,3589721159,BE 3589721160,3589721167,GB 3589721168,3589721231,BE 3589721232,3589721247,GB @@ -123767,9 +125777,7 @@ 3589721952,3589721967,GB 3589721968,3589722023,BE 3589722024,3589722031,FR -3589722032,3589722059,BE -3589722060,3589722063,GB -3589722064,3589722111,BE +3589722032,3589722111,BE 3589722112,3589722143,GB 3589722144,3589722159,BE 3589722160,3589722167,FR @@ -123781,19 +125789,16 @@ 3589722264,3589722271,GB 3589722272,3589722279,BE 3589722280,3589722287,FR -3589722288,3589722295,BE -3589722296,3589722299,GB -3589722300,3589722303,BE +3589722288,3589722303,BE 3589722304,3589722311,FR 3589722312,3589722319,GB 3589722320,3589722335,FR 3589722336,3589722343,BE 3589722344,3589722359,FR 3589722360,3589722383,BE -3589722384,3589722391,FR -3589722392,3589722395,BE -3589722396,3589722399,GB -3589722400,3589722439,BE +3589722384,3589722391,DE +3589722392,3589722431,BE +3589722432,3589722439,ES 3589722440,3589722447,GB 3589722448,3589722623,BE 3589722624,3589722631,GB @@ -123805,16 +125810,12 @@ 3589722792,3589722799,GB 3589722800,3589722835,BE 3589722836,3589722843,GB -3589722844,3589722859,BE -3589722860,3589722863,GB -3589722864,3589722943,BE +3589722844,3589722943,BE 3589722944,3589722951,GB 3589722952,3589722959,FR -3589722960,3589722979,BE -3589722980,3589722991,GB -3589722992,3589722995,BE -3589722996,3589722999,GB -3589723000,3589723023,BE +3589722960,3589722983,BE +3589722984,3589722991,GB +3589722992,3589723023,BE 3589723024,3589723031,FR 3589723032,3589723975,BE 3589723976,3589723983,FR @@ -123864,27 +125865,16 @@ 3589726488,3589726495,GB 3589726496,3589726535,BE 3589726536,3589726543,GB -3589726544,3589729743,BE +3589726544,3589727007,BE +3589727008,3589727015,FR +3589727016,3589729735,BE +3589729736,3589729743,ES 3589729744,3589729751,GB -3589729752,3589730071,BE -3589730072,3589730075,GB -3589730076,3589730087,BE +3589729752,3589730087,BE 3589730088,3589730095,GB 3589730096,3589730111,BE 3589730112,3589730119,GB -3589730120,3589730139,BE -3589730140,3589730143,GB -3589730144,3589731603,BE -3589731604,3589731607,GB -3589731608,3589731635,BE -3589731636,3589731639,GB -3589731640,3589731719,BE -3589731720,3589731723,GB -3589731724,3589731731,BE -3589731732,3589731735,GB -3589731736,3589731819,BE -3589731820,3589731823,GB -3589731824,3589733375,BE +3589730120,3589733375,BE 3589733376,3589733439,LU 3589733440,3589734399,BE 3589734400,3589742591,EG @@ -123988,16 +125978,13 @@ 3590155816,3590155823,HR 3590155824,3590156031,SI 3590156032,3590156287,RS -3590156288,3590156415,HR -3590156416,3590156423,SI -3590156424,3590156431,HR +3590156288,3590156431,HR 3590156432,3590156447,SI -3590156448,3590156679,HR -3590156680,3590156687,SI +3590156448,3590156671,HR +3590156672,3590156687,SI 3590156688,3590156719,HR 3590156720,3590156727,SI -3590156728,3590156959,HR -3590156960,3590156991,AE +3590156728,3590156991,HR 3590156992,3590157039,SI 3590157040,3590157311,HR 3590157312,3590157343,RS @@ -124105,9 +126092,7 @@ 3590254128,3590254135,RU 3590254136,3590254143,FR 3590254144,3590254271,US -3590254272,3590254303,FR -3590254304,3590254335,US -3590254336,3590254463,FR +3590254272,3590254463,FR 3590254464,3590254879,ES 3590254880,3590254911,FR 3590254912,3590254975,ES @@ -124123,7 +126108,7 @@ 3590256384,3590256639,IT 3590256640,3590256703,US 3590256704,3590256719,BE -3590256720,3590256735,IE +3590256720,3590256735,FR 3590256736,3590256767,BE 3590256768,3590257151,US 3590257152,3590258175,DE @@ -124132,7 +126117,9 @@ 3590258392,3590258431,FR 3590258432,3590258447,GB 3590258448,3590258463,FR -3590258464,3590258687,US +3590258464,3590258495,US +3590258496,3590258559,FR +3590258560,3590258687,US 3590258688,3590291455,IT 3590291456,3590299647,EG 3590299648,3590307839,FI @@ -124145,26 +126132,21 @@ 3590308048,3590308055,NG 3590308056,3590308063,A2 3590308064,3590308071,ZW -3590308072,3590308079,A2 -3590308080,3590308087,MW +3590308072,3590308087,A2 3590308088,3590308095,AO -3590308096,3590308119,A2 -3590308120,3590308127,IQ -3590308128,3590308175,A2 -3590308176,3590308183,NG +3590308096,3590308183,A2 3590308184,3590308191,IQ 3590308192,3590308199,A2 -3590308200,3590308231,IQ -3590308232,3590308247,A2 +3590308200,3590308223,IQ +3590308224,3590308247,A2 3590308248,3590308263,IQ 3590308264,3590308271,A2 3590308272,3590308287,IQ -3590308288,3590308295,A2 -3590308296,3590308303,IQ +3590308288,3590308303,A2 3590308304,3590308311,SO 3590308312,3590308319,IQ -3590308320,3590308327,A2 -3590308328,3590308343,IQ +3590308320,3590308335,A2 +3590308336,3590308343,IQ 3590308344,3590308607,A2 3590308608,3590308735,NG 3590308736,3590308767,A2 @@ -124173,29 +126155,27 @@ 3590308784,3590308799,ZW 3590308800,3590308807,A2 3590308808,3590308815,ZM -3590308816,3590308831,KE +3590308816,3590308823,KE +3590308824,3590308831,A2 3590308832,3590308839,ZW 3590308840,3590308847,ET 3590308848,3590308855,A2 3590308856,3590308863,NG -3590308864,3590308911,A2 -3590308912,3590308927,ZW -3590308928,3590308951,A2 +3590308864,3590308951,A2 3590308952,3590308959,GH -3590308960,3590308991,A2 -3590308992,3590308999,NG +3590308960,3590308999,A2 3590309000,3590309007,UG 3590309008,3590309023,TZ -3590309024,3590309055,ZW +3590309024,3590309039,A2 +3590309040,3590309055,ZW 3590309056,3590309063,CD -3590309064,3590309071,LU +3590309064,3590309071,A2 3590309072,3590309079,MW 3590309080,3590309103,NG 3590309104,3590309111,ZW 3590309112,3590309119,A2 3590309120,3590309375,GB -3590309376,3590309503,A2 -3590309504,3590309511,NG +3590309376,3590309511,A2 3590309512,3590309519,AO 3590309520,3590309527,NG 3590309528,3590309535,CM @@ -124206,43 +126186,39 @@ 3590309584,3590309615,A2 3590309616,3590309623,UG 3590309624,3590309631,ZW -3590309632,3590309647,IQ -3590309648,3590309679,A2 -3590309680,3590309695,IQ -3590309696,3590309711,A2 -3590309712,3590309719,IQ -3590309720,3590309727,A2 -3590309728,3590309759,IQ -3590309760,3590309775,A2 -3590309776,3590309783,IQ -3590309784,3590309799,A2 +3590309632,3590309639,A2 +3590309640,3590309647,IQ +3590309648,3590309687,A2 +3590309688,3590309695,IQ +3590309696,3590309727,A2 +3590309728,3590309743,IQ +3590309744,3590309751,A2 +3590309752,3590309759,IQ +3590309760,3590309799,A2 3590309800,3590309807,IQ -3590309808,3590309823,A2 -3590309824,3590309839,IQ -3590309840,3590309863,A2 -3590309864,3590309871,IQ -3590309872,3590309879,A2 +3590309808,3590309831,A2 +3590309832,3590309839,IQ +3590309840,3590309879,A2 3590309880,3590309887,IQ -3590309888,3590310143,A2 -3590310144,3590310159,MZ +3590309888,3590310159,A2 3590310160,3590310167,IQ 3590310168,3590310175,A2 3590310176,3590310183,LR 3590310184,3590310191,IQ -3590310192,3590310247,A2 -3590310248,3590310255,IQ -3590310256,3590310279,A2 +3590310192,3590310279,A2 3590310280,3590310287,IQ 3590310288,3590310288,A2 3590310289,3590310303,IQ 3590310304,3590310327,A2 3590310328,3590310335,NG -3590310336,3590310351,IQ -3590310352,3590310367,A2 -3590310368,3590310399,IQ -3590310400,3590310655,UA +3590310336,3590310343,IQ +3590310344,3590310391,A2 +3590310392,3590310399,IQ +3590310400,3590310655,A2 3590310656,3590310911,GB -3590310912,3590311423,A2 +3590310912,3590311247,A2 +3590311248,3590311255,NG +3590311256,3590311423,A2 3590311424,3590311679,GB 3590311680,3590311935,YT 3590311936,3590312703,MW @@ -124267,7 +126243,9 @@ 3590314720,3590314727,TG 3590314728,3590314735,UG 3590314736,3590314743,NG -3590314744,3590314823,A2 +3590314744,3590314767,A2 +3590314768,3590314775,US +3590314776,3590314823,A2 3590314824,3590314831,ZW 3590314832,3590314887,A2 3590314888,3590314895,NG @@ -124283,28 +126261,20 @@ 3590316032,3590316039,TZ 3590316040,3590316047,A2 3590316048,3590316055,GH -3590316056,3590316079,IQ +3590316056,3590316071,IQ +3590316072,3590316079,A2 3590316080,3590316087,LB -3590316088,3590316095,A2 -3590316096,3590316127,IQ +3590316088,3590316127,A2 3590316128,3590316151,NG -3590316152,3590316159,A2 -3590316160,3590316175,LB -3590316176,3590316199,A2 -3590316200,3590316215,IQ -3590316216,3590316231,A2 +3590316152,3590316231,A2 3590316232,3590316239,LB 3590316240,3590316271,A2 3590316272,3590316279,IQ -3590316280,3590316287,A2 -3590316288,3590316543,LB -3590316544,3590316567,A2 +3590316280,3590316567,A2 3590316568,3590316575,IQ 3590316576,3590316591,A2 3590316592,3590316599,IQ -3590316600,3590316647,A2 -3590316648,3590316655,LY -3590316656,3590316663,IQ +3590316600,3590316663,A2 3590316664,3590316671,LY 3590316672,3590316727,A2 3590316728,3590316735,LB @@ -124313,18 +126283,18 @@ 3590316832,3590317055,A2 3590317056,3590317311,NG 3590317312,3590317343,AO -3590317344,3590317407,A2 -3590317408,3590317439,US +3590317344,3590317439,A2 3590317440,3590317447,AM 3590317448,3590317455,LB -3590317456,3590317471,IQ +3590317456,3590317463,IQ +3590317464,3590317471,A2 3590317472,3590317479,MW -3590317480,3590317487,US -3590317488,3590317495,A2 +3590317480,3590317495,A2 3590317496,3590317503,LB -3590317504,3590317519,A2 -3590317520,3590317527,LY -3590317528,3590317823,IQ +3590317504,3590317527,A2 +3590317528,3590317543,IQ +3590317544,3590317567,A2 +3590317568,3590317823,IQ 3590317824,3590317951,A2 3590317952,3590318047,UA 3590318048,3590319167,A2 @@ -124335,76 +126305,64 @@ 3590319424,3590319455,AE 3590319456,3590319967,A2 3590319968,3590319999,AE -3590320000,3590320191,A2 -3590320192,3590320199,LB +3590320000,3590320199,A2 3590320200,3590320207,IQ 3590320208,3590320231,A2 3590320232,3590320239,IQ -3590320240,3590320247,A2 -3590320248,3590320255,LB -3590320256,3590320271,A2 -3590320272,3590320295,IQ -3590320296,3590320303,A2 +3590320240,3590320303,A2 3590320304,3590320319,IQ 3590320320,3590320335,A2 3590320336,3590320343,UG -3590320344,3590320367,IQ -3590320368,3590320375,A2 +3590320344,3590320351,A2 +3590320352,3590320359,IQ +3590320360,3590320375,A2 3590320376,3590320383,IQ 3590320384,3590321151,A2 3590321152,3590321663,IQ 3590321664,3590321679,A2 3590321680,3590321687,CM -3590321688,3590321695,IQ +3590321688,3590321695,A2 3590321696,3590321711,ZW -3590321712,3590321727,IQ -3590321728,3590321791,A2 -3590321792,3590321823,IQ -3590321824,3590321855,A2 -3590321856,3590321887,IQ -3590321888,3590321927,A2 -3590321928,3590321935,IQ -3590321936,3590321943,LY +3590321712,3590321943,A2 3590321944,3590321959,IQ 3590321960,3590321967,A2 3590321968,3590321983,TR 3590321984,3590322007,A2 3590322008,3590322015,IQ -3590322016,3590322047,A2 -3590322048,3590322055,NG -3590322056,3590322063,A2 -3590322064,3590322079,IQ -3590322080,3590322111,A2 +3590322016,3590322063,A2 +3590322064,3590322071,IQ +3590322072,3590322111,A2 3590322112,3590322119,BJ -3590322120,3590322127,IQ +3590322120,3590322127,A2 3590322128,3590322135,GH 3590322136,3590322151,A2 3590322152,3590322159,LY -3590322160,3590322167,A2 -3590322168,3590322239,IQ -3590322240,3590322255,A2 -3590322256,3590322271,RW -3590322272,3590322335,A2 +3590322160,3590322175,A2 +3590322176,3590322239,IQ +3590322240,3590322335,A2 3590322336,3590322351,MG -3590322352,3590322375,A2 -3590322376,3590322383,LY -3590322384,3590322399,IQ +3590322352,3590322391,A2 +3590322392,3590322399,IQ 3590322400,3590322415,AO -3590322416,3590322423,LR -3590322424,3590322431,A2 +3590322416,3590322431,A2 3590322432,3590322559,LB -3590322560,3590322575,A2 -3590322576,3590322687,LB +3590322560,3590322607,A2 +3590322608,3590322687,LB 3590322688,3590323199,IQ 3590323200,3590323711,MW 3590323712,3590323903,A2 3590323904,3590323911,CD -3590323912,3590324023,A2 +3590323912,3590323967,A2 +3590323968,3590323975,SD +3590323976,3590323983,A2 +3590323984,3590323991,NG +3590323992,3590324023,A2 3590324024,3590324031,ZW 3590324032,3590324095,NG 3590324096,3590324103,A2 3590324104,3590324111,ZW -3590324112,3590324223,A2 +3590324112,3590324215,A2 +3590324216,3590324223,NG 3590324224,3623890943,US 3623890944,3623891199,ZA 3623891200,3623891455,US @@ -124424,8 +126382,8 @@ 3624272384,3624272415,US 3624272416,3624272639,CA 3624272640,3624272895,DZ -3624272896,3624279039,CA -3624279040,3624279087,BD +3624272896,3624279071,CA +3624279072,3624279087,BD 3624279088,3624281087,CA 3624281088,3624281343,HT 3624281344,3624283135,CA @@ -124433,7 +126391,7 @@ 3624284160,3624288255,CA 3624288256,3624290303,IN 3624290304,3624292351,CA -3624292352,3624292607,GP +3624292352,3624292607,MF 3624292608,3624294143,CA 3624294144,3624294399,US 3624294400,3624295935,CA @@ -124450,11 +126408,7 @@ 3624303760,3624304639,CA 3624304640,3624321023,US 3624321024,3624325119,CA -3624325120,3624330511,US -3624330512,3624330519,IN -3624330520,3624333183,US -3624333184,3624333215,IN -3624333216,3624357887,US +3624325120,3624357887,US 3624357888,3624358143,KN 3624358144,3624359679,US 3624359680,3624360703,AN @@ -124523,15 +126477,11 @@ 3624380968,3624380983,TW 3624380984,3624381471,US 3624381472,3624381487,AU -3624381488,3624381535,US -3624381536,3624381551,CA -3624381552,3624381567,US +3624381488,3624381567,US 3624381568,3624381583,MY 3624381584,3624381631,US 3624381632,3624381647,GB -3624381648,3624381711,US -3624381712,3624381727,OM -3624381728,3624381807,US +3624381648,3624381807,US 3624381808,3624381823,IN 3624381824,3624381855,US 3624381856,3624381887,AU @@ -124542,9 +126492,7 @@ 3624382048,3624383071,US 3624383072,3624383087,GB 3624383088,3624383103,PT -3624383104,3624383183,US -3624383184,3624383199,DE -3624383200,3624384767,US +3624383104,3624384767,US 3624384768,3624385023,CA 3624385024,3624386559,US 3624386560,3624394751,CA @@ -124555,14 +126503,14 @@ 3624443872,3624443879,US 3624443880,3624443903,CA 3624443904,3624443919,US -3624443920,3624444343,CA +3624443920,3624444303,CA +3624444304,3624444319,US +3624444320,3624444343,CA 3624444344,3624444351,US 3624444352,3624444359,CA 3624444360,3624444367,US 3624444368,3624452095,CA -3624452096,3624474879,US -3624474880,3624475391,CA -3624475392,3624480767,US +3624452096,3624480767,US 3624480768,3624484863,CA 3624484864,3624534015,US 3624534016,3624534271,PA @@ -124586,7 +126534,9 @@ 3624547216,3624547239,US 3624547240,3624547255,A2 3624547256,3624547263,AS -3624547264,3624547591,US +3624547264,3624547327,US +3624547328,3624547583,A2 +3624547584,3624547591,US 3624547592,3624547647,A2 3624547648,3624547711,US 3624547712,3624547743,A2 @@ -124602,15 +126552,13 @@ 3624548032,3624548039,A2 3624548040,3624548063,US 3624548064,3624548087,A2 -3624548088,3624548607,US -3624548608,3624548671,A2 -3624548672,3624548687,US +3624548088,3624548095,US +3624548096,3624548679,A2 +3624548680,3624548687,US 3624548688,3624548703,A2 3624548704,3624548711,US 3624548712,3624548735,A2 -3624548736,3624548815,US -3624548816,3624548823,A2 -3624548824,3624548935,US +3624548736,3624548935,US 3624548936,3624548959,A2 3624548960,3624548975,US 3624548976,3624549023,A2 @@ -124621,27 +126569,12 @@ 3624549088,3624549095,US 3624549096,3624549111,A2 3624549112,3624549375,US -3624549376,3624549887,AS -3624549888,3624550143,A2 +3624549376,3624550143,A2 3624550144,3624587263,US 3624587264,3624591359,JM -3624591360,3624730623,US +3624595456,3624730623,US 3624730624,3624796159,CA -3624796160,3624798207,US -3624798208,3624799231,CA -3624799232,3624799743,US -3624799744,3624799999,CA -3624800000,3624800255,US -3624800768,3624801023,CA -3624801024,3624803071,US -3624803072,3624803583,CA -3624803840,3624804351,US -3624804608,3624804863,CA -3624804864,3624807679,US -3624807936,3624808447,CA -3624808448,3624811519,US -3624811520,3624812287,CA -3624812288,3624817679,US +3624812544,3624817679,US 3624817680,3624817687,CA 3624817688,3624820735,US 3624820736,3624820799,CY @@ -124709,7 +126642,9 @@ 3624903424,3624903551,US 3624903552,3624903583,CA 3624903584,3624903679,US -3624903680,3624904703,CA +3624903680,3624903807,CA +3624903808,3624903935,US +3624903936,3624904703,CA 3624904704,3624904767,IN 3624904768,3624905087,US 3624905088,3624905151,CA @@ -124842,9 +126777,7 @@ 3624922112,3624922143,US 3624922144,3624922207,MY 3624922208,3624922239,FR -3624922240,3624922271,US -3624922272,3624922287,CR -3624922288,3624922335,US +3624922240,3624922335,US 3624922336,3624922367,FR 3624922368,3624922495,IN 3624922496,3624922623,BE @@ -124879,18 +126812,13 @@ 3624990464,3624991223,CA 3624991224,3624991231,US 3624991232,3624992767,CA -3624992768,3625002351,US -3625002352,3625002367,CA -3625002368,3625019135,US -3625019136,3625019391,ES -3625019392,3625042327,US +3624992768,3625042327,US 3625042328,3625042335,IT 3625042336,3625058303,US 3625058304,3625091071,CA 3625091072,3625116671,US 3625116672,3625116767,CA -3625116768,3625116775,US -3625116776,3625116927,CA +3625116768,3625116927,US 3625116928,3625117183,SE 3625117184,3625117775,US 3625117776,3625117783,CA @@ -124942,9 +126870,7 @@ 3625293616,3625295871,CA 3625295872,3625320447,US 3625320448,3625320467,CA -3625320468,3625321727,US -3625321728,3625321983,PA -3625321984,3625325055,US +3625320468,3625325055,US 3625325056,3625325087,RU 3625325088,3625326632,US 3625326633,3625326642,GB @@ -124954,8 +126880,7 @@ 3625327815,3625327824,GB 3625327825,3625327907,US 3625327908,3625327917,ID -3625327918,3625333375,US -3625333376,3625333383,PA +3625327918,3625333383,US 3625333384,3625333391,GB 3625333392,3625333455,US 3625333456,3625333463,GB @@ -125001,9 +126926,7 @@ 3625375136,3625375167,RU 3625375168,3625375247,US 3625375248,3625375255,CA -3625375256,3625375271,US -3625375272,3625375279,GB -3625375280,3625375359,US +3625375256,3625375359,US 3625375360,3625375367,SE 3625375368,3625375399,US 3625375400,3625375407,MT @@ -125085,7 +127008,7 @@ 3626228464,3626228479,AE 3626228480,3626270719,US 3626270720,3626287103,CA -3626287104,3626332159,US +3626287104,3626328063,US 3626332160,3626336255,CA 3626336256,3626381317,US 3626381318,3626381321,AU @@ -125681,15 +127604,9 @@ 3627507712,3627511807,CA 3627511808,3627519616,US 3627519617,3627519626,CA -3627519627,3627522690,US -3627522691,3627522700,GB -3627522701,3627524751,US -3627524752,3627524759,AE -3627524760,3627524979,US +3627519627,3627524979,US 3627524980,3627524987,IR -3627524988,3627525200,US -3627525201,3627525208,AU -3627525209,3627532287,US +3627524988,3627532287,US 3627532288,3627544575,CA 3627544576,3627659263,US 3627659264,3627663359,CA @@ -125703,9 +127620,7 @@ 3627667520,3627667583,CA 3627667584,3627669831,US 3627669832,3627669839,CA -3627669840,3627670799,US -3627670800,3627670811,CA -3627670812,3627679743,US +3627669840,3627679743,US 3627679744,3627712511,CA 3627712512,3627745343,US 3627745344,3627745375,BE @@ -125752,9 +127667,7 @@ 3628128704,3628128719,CA 3628128720,3628129087,US 3628129088,3628129103,CA -3628129104,3628138751,US -3628138752,3628139007,GB -3628139008,3628139311,US +3628129104,3628139311,US 3628139312,3628139327,SG 3628139328,3628139343,GB 3628139344,3628139487,US @@ -125767,9 +127680,7 @@ 3628139968,3628139999,AU 3628140000,3628140351,US 3628140352,3628140415,RU -3628140416,3628143615,US -3628143616,3628143871,GB -3628143872,3628145919,US +3628140416,3628145919,US 3628145920,3628146175,AU 3628146176,3628146527,US 3628146528,3628146559,GB @@ -125953,8 +127864,8 @@ 3629202012,3629202015,US 3629202016,3629202047,CA 3629202048,3629202175,US -3629202176,3629202207,CA -3629202208,3629202219,US +3629202176,3629202203,CA +3629202204,3629202219,US 3629202220,3629202239,CA 3629202240,3629202263,US 3629202264,3629202271,CA @@ -125968,9 +127879,7 @@ 3629202428,3629203199,CA 3629203200,3629318143,US 3629318144,3629326335,CA -3629326336,3629331967,US -3629331968,3629332479,CA -3629332480,3629539327,US +3629326336,3629539327,US 3629539328,3629547519,CA 3629547520,3629662207,US 3629662208,3629662463,GB @@ -126478,9 +128387,7 @@ 3630746880,3630747391,TZ 3630747392,3630780415,US 3630780416,3630784511,CA -3630784512,3630784895,US -3630784896,3630784911,IL -3630784912,3630787568,US +3630784512,3630787568,US 3630787569,3630787576,IE 3630787577,3630850047,US 3630850048,3630854143,CA @@ -126502,9 +128409,9 @@ 3631015254,3631015269,CA 3631015270,3631015295,US 3631015296,3631015311,CN -3631015312,3631016243,US -3631016244,3631016257,BD -3631016258,3631016555,US +3631015312,3631015887,US +3631015888,3631015903,CN +3631015904,3631016555,US 3631016556,3631016571,CN 3631016572,3631016581,US 3631016582,3631016613,BD @@ -126529,19 +128436,8 @@ 3631045632,3631045759,CA 3631045760,3631045983,US 3631045984,3631045991,CA -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,3631112703,VC -3631112704,3631116543,BB +3631045992,3631112191,US +3631112192,3631116543,BB 3631116544,3631117567,GD 3631117568,3631117823,BB 3631117824,3631118079,GD @@ -126610,7 +128506,6 @@ 3631881792,3631939583,US 3631939584,3632005119,CA 3632005120,3632136191,US -3632136192,3632144383,CA 3632144384,3632152575,US 3632152576,3632168959,CA 3632168960,3632197631,US @@ -126625,21 +128520,15 @@ 3632284880,3632284895,CA 3632284896,3632286479,US 3632286480,3632286495,CA -3632286496,3632287239,US -3632287240,3632287263,CA -3632287264,3632289583,US +3632286496,3632289583,US 3632289584,3632289599,PH 3632289600,3632291775,US 3632291776,3632291839,GB 3632291840,3632332799,US 3632332800,3632357375,CA -3632357376,3632370559,US -3632370560,3632370575,NG -3632370576,3632373503,US -3632373504,3632373759,NG -3632373760,3632381951,US +3632357376,3632381951,US 3632381952,3632390143,CA -3632390144,3632414719,US +3632390144,3632406527,US 3632414720,3632422911,CA 3632422912,3632451583,US 3632451584,3632455679,CA @@ -126727,8 +128616,7 @@ 3632483408,3632483415,CA 3632483416,3632483423,US 3632483424,3632483455,SK -3632483456,3632483471,HK -3632483472,3632483551,US +3632483456,3632483551,US 3632483552,3632483583,GB 3632483584,3632483599,US 3632483600,3632483607,AU @@ -126928,8 +128816,8 @@ 3632491088,3632491151,US 3632491152,3632491167,IN 3632491168,3632491231,US -3632491232,3632491239,CA -3632491240,3632491263,US +3632491232,3632491247,CA +3632491248,3632491263,US 3632491264,3632491327,DM 3632491328,3632491343,FR 3632491344,3632491359,BR @@ -127099,9 +128987,7 @@ 3632902144,3632971775,US 3632971776,3632972031,CA 3632972032,3632972063,US -3632972064,3632976287,CA -3632976288,3632976303,US -3632976304,3632988159,CA +3632972064,3632988159,CA 3632988160,3633029119,US 3633029120,3633029631,PY 3633029632,3633030143,NI @@ -127152,9 +129038,7 @@ 3633032544,3633032567,NG 3633032568,3633032591,US 3633032592,3633032607,A2 -3633032608,3633032959,US -3633032960,3633033215,A2 -3633033216,3633033247,US +3633032608,3633033247,US 3633033248,3633033255,A2 3633033256,3633033263,US 3633033264,3633033271,A2 @@ -127173,8 +129057,8 @@ 3633034048,3633034079,A2 3633034080,3633034519,US 3633034520,3633034527,NG -3633034528,3633034559,US -3633034560,3633034751,NG +3633034528,3633034623,US +3633034624,3633034751,NG 3633034752,3633035015,US 3633035016,3633035023,NL 3633035024,3633035071,US @@ -127212,16 +129096,7 @@ 3633336480,3633340415,KY 3633340416,3633344511,US 3633344512,3633348607,CA -3633348608,3633373535,US -3633373536,3633373567,BA -3633373568,3633374799,US -3633374800,3633374815,CA -3633374816,3633376959,US -3633376960,3633376991,CA -3633376992,3633377087,US -3633377088,3633377119,IN -3633377120,3633379327,US -3633381376,3633405951,US +3633348608,3633405951,US 3633405952,3633410047,CA 3633410048,3633479679,US 3633479680,3633483775,CA @@ -127229,42 +129104,38 @@ 3633513985,3633514238,ES 3633514239,3633545215,US 3633545216,3633545727,GA -3633545728,3633546239,A2 +3633545728,3633545983,A2 +3633545984,3633546239,US 3633546240,3633546751,GA -3633546752,3633547263,A2 +3633546752,3633547007,A2 +3633547008,3633547263,US 3633547264,3633548287,GA 3633548288,3633548543,A2 3633548544,3633548799,GA -3633548800,3633548927,A2 +3633548800,3633548863,A2 +3633548864,3633548927,US 3633548928,3633549055,GA -3633549056,3633549567,A2 +3633549056,3633549375,A2 +3633549376,3633549391,US +3633549392,3633549567,A2 3633549568,3633549823,GA -3633549824,3633550079,A2 -3633550080,3633550335,US -3633550336,3633550463,A2 -3633550464,3633550527,US -3633550528,3633550847,A2 +3633549824,3633550335,US +3633550336,3633550431,A2 +3633550432,3633550591,US +3633550592,3633550695,A2 +3633550696,3633550847,US 3633550848,3633551359,GA -3633551360,3633552383,A2 -3633552384,3633552639,US +3633551360,3633552639,US 3633552640,3633552911,A2 3633552912,3633552927,GA -3633552928,3633552951,US -3633552952,3633552959,A2 -3633552960,3633552967,US -3633552968,3633553031,A2 -3633553032,3633553039,US -3633553040,3633553127,A2 -3633553128,3633553135,US -3633553136,3633553151,A2 +3633552928,3633553119,US +3633553120,3633553127,A2 +3633553128,3633553143,US +3633553144,3633553151,A2 3633553152,3633553279,GW -3633553280,3633553295,US -3633553296,3633553351,A2 -3633553352,3633553367,US -3633553368,3633553399,A2 -3633553400,3633812775,US -3633812776,3633812783,CA -3633812784,3633815551,US +3633553280,3633553311,US +3633553312,3633553343,A2 +3633553344,3633815551,US 3633815552,3633816079,CA 3633816080,3633816095,US 3633816096,3633816119,CA @@ -127281,8 +129152,8 @@ 3633816248,3633816255,IN 3633816256,3633816263,NG 3633816264,3633816279,CA -3633816280,3633816303,US -3633816304,3633816351,CA +3633816280,3633816311,US +3633816312,3633816351,CA 3633816352,3633816383,IN 3633816384,3633816391,NG 3633816392,3633816399,US @@ -127302,9 +129173,9 @@ 3633819424,3633819647,CA 3633819648,3633821279,US 3633821280,3633821311,BB -3633821312,3633822207,US -3633822208,3633822335,CY -3633822336,3633881087,US +3633821312,3633822303,US +3633822304,3633822327,CA +3633822328,3633881087,US 3633881088,3633885183,AN 3633885184,3633889279,US 3633889280,3633893375,CA @@ -127318,18 +129189,16 @@ 3634053120,3634061311,CL 3634061312,3634065311,US 3634065312,3634065343,SV -3634065344,3634125831,US +3634065344,3634094079,US +3634094080,3634098175,SE +3634098176,3634125831,US 3634125832,3634125839,CA 3634125840,3634125855,JP -3634125856,3634125887,US -3634125888,3634125903,GB -3634125904,3634125951,US +3634125856,3634125951,US 3634125952,3634125967,CA 3634125968,3634135423,US 3634135424,3634135487,CA -3634135488,3634135935,US -3634135936,3634136062,CA -3634136063,3634136103,US +3634135488,3634136103,US 3634136104,3634136111,CA 3634136112,3634138127,US 3634138128,3634138143,CA @@ -127375,15 +129244,7 @@ 3635314688,3635322879,CA 3635322880,3635425279,US 3635425280,3635429375,CA -3635429376,3635458527,US -3635458528,3635458543,CH -3635458544,3635460031,US -3635460032,3635460095,CH -3635460096,3635460543,US -3635460544,3635460575,CH -3635460576,3635460799,US -3635460800,3635460831,CH -3635460832,3635464031,US +3635429376,3635464031,US 3635464032,3635464063,GB 3635464064,3635464127,US 3635464128,3635464135,GB @@ -127472,7 +129333,9 @@ 3636151489,3636151535,US 3636151536,3636151759,CA 3636151760,3636151775,US -3636151776,3636152575,CA +3636151776,3636152303,CA +3636152304,3636152319,US +3636152320,3636152575,CA 3636152576,3636152591,US 3636152592,3636152639,CA 3636152640,3636152647,US @@ -127498,9 +129361,7 @@ 3636154912,3636154975,CA 3636154976,3636154979,US 3636154980,3636154990,CA -3636154991,3636154991,US -3636154992,3636155007,CA -3636155008,3636155071,US +3636154991,3636155071,US 3636155072,3636155391,CA 3636155392,3636155407,US 3636155408,3636155455,CA @@ -127542,7 +129403,9 @@ 3636159840,3636159871,CA 3636159872,3636159999,IN 3636160000,3636160255,US -3636160256,3636160415,CA +3636160256,3636160335,CA +3636160336,3636160343,US +3636160344,3636160415,CA 3636160416,3636160431,US 3636160432,3636160831,CA 3636160832,3636160895,US @@ -127555,8 +129418,8 @@ 3636161792,3636161871,CA 3636161872,3636161885,US 3636161886,3636161943,CA -3636161944,3636161951,US -3636161952,3636162559,CA +3636161944,3636161983,US +3636161984,3636162559,CA 3636162560,3636163583,US 3636163584,3636164095,CA 3636164096,3636164111,BV @@ -127565,9 +129428,7 @@ 3636164328,3636164335,CA 3636164336,3636164351,US 3636164352,3636164607,CA -3636164608,3636165119,US -3636165120,3636165375,CA -3636165376,3636165471,US +3636164608,3636165471,US 3636165472,3636165503,CA 3636165504,3636166143,US 3636166144,3636166655,CA @@ -127614,41 +129475,20 @@ 3636635392,3636635775,CR 3636635776,3636636415,US 3636636416,3636636543,CR -3636636544,3636667647,US -3636667904,3636668159,SC -3636668416,3636668671,GI -3636668672,3636668927,US -3636668928,3636669183,BZ -3636669184,3636669439,CY -3636669696,3636669951,SC -3636669952,3636670207,DE -3636670304,3636670335,RU -3636670464,3636670527,US -3636670656,3636670719,RU -3636670784,3636670799,RU -3636670976,3636671007,VG -3636671200,3636671231,IT -3636671232,3636671487,SC -3636671488,3636671743,GB -3636674560,3636822015,US +3636636544,3636822015,US 3636822016,3636854783,CA 3636854784,3636887551,US 3636887552,3636895743,CA -3636895744,3636904351,US -3636904352,3636904383,MY -3636904384,3636904511,US +3636895744,3636904511,US 3636904512,3636904543,CA 3636904544,3636904575,IN 3636904576,3636904607,US 3636904608,3636904639,IN 3636904640,3636904703,US 3636904704,3636904959,MY -3636904960,3636905087,US -3636905088,3636905215,MY -3636905216,3636905471,US +3636904960,3636905471,US 3636905472,3636905727,CA -3636905728,3636905759,HK -3636905760,3636905791,US +3636905728,3636905791,US 3636905792,3636905823,IN 3636905824,3636905887,US 3636905888,3636905951,CA @@ -127667,9 +129507,8 @@ 3636906880,3636907007,IN 3636907008,3636907103,US 3636907104,3636907135,IN -3636907136,3636907199,CA -3636907200,3636907231,HK -3636907232,3636907775,US +3636907136,3636907167,CA +3636907168,3636907775,US 3636907776,3636908031,CA 3636908032,3636908543,US 3636908544,3636908799,IN @@ -127677,21 +129516,22 @@ 3636909056,3636909567,CA 3636909568,3636909663,US 3636909664,3636909695,IT -3636909696,3636909791,CA +3636909696,3636909727,CA +3636909728,3636909759,US +3636909760,3636909791,CA 3636909792,3636909855,US 3636909856,3636909887,CN 3636909888,3636909951,IT 3636909952,3636910079,US 3636910080,3636910335,CA -3636910336,3636910399,IN -3636910400,3636910495,US +3636910336,3636910495,US 3636910496,3636910527,BE 3636910528,3636910591,US 3636910592,3636910719,CA 3636910720,3636910847,US 3636910848,3636911103,AU -3636911104,3636911295,US -3636911296,3636911359,CA +3636911104,3636911327,US +3636911328,3636911359,CA 3636911360,3636911423,US 3636911424,3636911455,BE 3636911456,3636911615,US @@ -127706,8 +129546,8 @@ 3636914176,3636914431,US 3636914432,3636914687,CA 3636914688,3636914815,US -3636914816,3636914943,CA -3636914944,3636915103,US +3636914816,3636914879,CA +3636914880,3636915103,US 3636915104,3636915135,IN 3636915136,3636915199,US 3636915200,3636915327,IN @@ -127722,15 +129562,13 @@ 3636916992,3636917120,CA 3636917121,3636917255,US 3636917256,3636917263,IN -3636917264,3636917271,CA -3636917272,3636917295,US +3636917264,3636917295,US 3636917296,3636917303,IN 3636917304,3636917447,US 3636917448,3636917455,HK 3636917456,3636917631,US 3636917632,3636919039,CA -3636919040,3636919071,IN -3636919072,3636919103,US +3636919040,3636919103,US 3636919104,3636919135,CA 3636919136,3636919167,IN 3636919168,3636919199,CA @@ -127745,8 +129583,7 @@ 3637071936,3637071943,SK 3637071944,3637071951,IL 3637071952,3637071967,CY -3637071968,3637071999,US -3637072000,3637072015,CA +3637071968,3637072015,US 3637072016,3637072031,CY 3637072032,3637072071,US 3637072072,3637072079,FI @@ -127913,9 +129750,7 @@ 3638370304,3638374751,CA 3638374752,3638374767,US 3638374768,3638386687,CA -3638386688,3638494175,US -3638494176,3638494183,CA -3638494184,3638509295,US +3638386688,3638509295,US 3638509296,3638509311,GB 3638509312,3638509567,US 3638509568,3638526911,CA @@ -127950,11 +129785,7 @@ 3639258679,3639263231,CA 3639263232,3639279615,US 3639279616,3639283711,CA -3639283712,3639322511,US -3639322512,3639322519,JP -3639322520,3639322535,US -3639322536,3639322543,JP -3639322544,3639342703,US +3639283712,3639342703,US 3639342704,3639342711,GB 3639342712,3639343135,US 3639343136,3639343167,GB @@ -127996,7 +129827,7 @@ 3639397024,3639397119,A2 3639397120,3639397375,IN 3639397376,3639397631,US -3639397632,3639397887,NG +3639397632,3639397887,A2 3639397888,3639398399,US 3639398400,3639398423,A2 3639398424,3639398431,LB @@ -128046,7 +129877,6 @@ 3639439640,3639440767,US 3639440768,3639440895,IN 3639440896,3639476223,US -3639507456,3639507967,US 3639541760,3639558143,US 3639558144,3639566335,CA 3639566336,3639607295,US @@ -128142,13 +129972,15 @@ 3639680992,3639681023,CL 3639681024,3639730175,US 3639730176,3639734271,CA -3639734272,3639886095,US -3639886096,3639886103,CN -3639886104,3639886591,US +3639734272,3639886591,US 3639886592,3639886599,SG -3639886600,3639888927,US -3639888928,3639888959,NO -3639888960,3639902207,US +3639886600,3639892359,US +3639892360,3639892367,ID +3639892368,3639892375,US +3639892376,3639892383,ID +3639892384,3639892415,US +3639892416,3639892431,MX +3639892432,3639902207,US 3639902208,3639918591,PE 3639918592,3639934975,AR 3639934976,3640001751,US @@ -128211,9 +130043,7 @@ 3640318976,3640319103,GQ 3640319104,3640319231,US 3640319232,3640319487,NG -3640319488,3640319743,US -3640319744,3640319999,A2 -3640320000,3640344959,US +3640319488,3640344959,US 3640344960,3640345007,MX 3640345008,3640345023,US 3640345024,3640345086,MX @@ -128268,7 +130098,9 @@ 3640560512,3640560527,US 3640560528,3640564455,CA 3640564456,3640564463,US -3640564464,3640582143,CA +3640564464,3640565631,CA +3640565632,3640565647,US +3640565648,3640582143,CA 3640582144,3640647679,US 3640647680,3640651775,JP 3640651776,3640655871,US @@ -128288,9 +130120,7 @@ 3641103720,3641103727,HU 3641103728,3641106951,DE 3641106952,3641106959,CH -3641106960,3641114031,DE -3641114032,3641114039,SK -3641114040,3641134367,DE +3641106960,3641134367,DE 3641134368,3641134375,BE 3641134376,3641140671,DE 3641140672,3641140679,US @@ -128495,7 +130325,11 @@ 3641670792,3641670911,GB 3641670912,3641671679,LS 3641671680,3641679871,RU -3641679872,3641683967,EU +3641679872,3641680127,DK +3641680128,3641681151,GB +3641681152,3641681407,SE +3641681408,3641681663,FR +3641681664,3641683967,EU 3641683968,3641688063,KZ 3641688064,3641692159,RU 3641692160,3641696255,IT @@ -128532,9 +130366,7 @@ 3641762012,3641762047,GR 3641762048,3641762571,CY 3641762572,3641762575,GR -3641762576,3641762591,CY -3641762592,3641762595,GR -3641762596,3641762607,CY +3641762576,3641762607,CY 3641762608,3641762611,GR 3641762612,3641762647,CY 3641762648,3641762655,GR @@ -128625,7 +130457,9 @@ 3641774080,3641778175,DE 3641778176,3641782271,PL 3641782272,3641784079,GB -3641784080,3641786367,BG +3641784080,3641784319,BG +3641784320,3641784575,GB +3641784576,3641786367,BG 3641786368,3641790463,SE 3641790464,3641794559,LT 3641794560,3641798655,RS @@ -128733,6 +130567,7 @@ 3642031744,3642031871,A2 3642031872,3642032127,GB 3642032128,3642036223,PS +3642036224,3642040319,HU 3642040320,3642048511,BY 3642048512,3642053439,A2 3642053440,3642053631,TZ @@ -128740,6 +130575,7 @@ 3642056704,3642060799,RU 3642060800,3642064895,KE 3642064896,3642068991,SE +3642068992,3642073087,AL 3642073088,3642077183,LV 3642077184,3642081271,BE 3642081272,3642081278,US @@ -128809,9 +130645,7 @@ 3642150912,3642163199,IT 3642163200,3642164046,NL 3642164047,3642164048,AF -3642164049,3642164595,NL -3642164596,3642164663,HK -3642164664,3642167295,NL +3642164049,3642167295,NL 3642167296,3642171391,RU 3642171392,3642175487,JO 3642175488,3642179583,DE @@ -128949,8 +130783,8 @@ 3642552832,3642552847,EE 3642552848,3642553095,UA 3642553096,3642553097,LV -3642553098,3642553103,UA -3642553104,3642553139,LV +3642553098,3642553099,UA +3642553100,3642553139,LV 3642553140,3642553143,UA 3642553144,3642553175,LV 3642553176,3642553183,UA @@ -128972,21 +130806,25 @@ 3642553520,3642553523,UA 3642553524,3642553535,RU 3642553536,3642553543,DE -3642553544,3642553589,RU +3642553544,3642553575,RU +3642553576,3642553579,UA +3642553580,3642553589,RU 3642553590,3642553591,UA 3642553592,3642553599,RU 3642553600,3642553855,UA 3642553856,3642553925,RU 3642553926,3642553935,UA -3642553936,3642553951,RU -3642553952,3642554111,UA +3642553936,3642553959,RU +3642553960,3642554111,UA 3642554112,3642554119,RU 3642554120,3642554123,UA 3642554124,3642554151,RU 3642554152,3642554177,UA 3642554178,3642554203,RU 3642554204,3642554205,UA -3642554206,3642554223,RU +3642554206,3642554207,RU +3642554208,3642554211,UA +3642554212,3642554223,RU 3642554224,3642554239,UA 3642554240,3642554271,RU 3642554272,3642554367,UA @@ -129013,7 +130851,7 @@ 3642554976,3642554977,CZ 3642554978,3642554979,FR 3642554980,3642554983,BE -3642554984,3642554987,DE +3642554984,3642554987,UA 3642554988,3642554989,FR 3642554990,3642554991,UA 3642554992,3642555015,DE @@ -129035,13 +130873,15 @@ 3642555184,3642555199,UA 3642555200,3642555223,LT 3642555224,3642555227,LV -3642555228,3642555391,LT +3642555228,3642555279,LT +3642555280,3642555295,UA +3642555296,3642555391,LT 3642555392,3642555499,PL 3642555500,3642555647,UA 3642555648,3642555683,SE 3642555684,3642555687,UA 3642555688,3642555695,SE -3642555696,3642555703,LV +3642555696,3642555703,UA 3642555704,3642555707,FI 3642555708,3642555711,SE 3642555712,3642555727,RU @@ -129049,7 +130889,8 @@ 3642555736,3642555743,GB 3642555744,3642555759,SE 3642555760,3642555771,GB -3642555772,3642555783,SE +3642555772,3642555775,SE +3642555776,3642555783,UA 3642555784,3642555787,GB 3642555788,3642555789,UA 3642555790,3642555791,SE @@ -129071,18 +130912,9 @@ 3642601472,3642605567,RU 3642605568,3642609663,GB 3642609664,3642613759,DZ -3642613760,3642614527,AX -3642614528,3642614783,FI -3642614784,3642615103,AX -3642615104,3642615167,FI -3642615168,3642615295,AX -3642615296,3642615551,FI -3642615552,3642615567,AX -3642615568,3642615583,FI +3642613760,3642615583,FI 3642615584,3642615615,AX -3642615616,3642615679,FI -3642615680,3642616383,AX -3642616384,3642617855,FI +3642615616,3642617855,FI 3642617856,3642621951,JO 3642621952,3642626047,IT 3642626048,3642630143,BE @@ -129330,8 +131162,8 @@ 3645149952,3645150559,DE 3645150560,3645150591,HK 3645150592,3645150615,DE -3645150616,3645150623,US -3645150624,3645150975,DE +3645150616,3645150639,US +3645150640,3645150975,DE 3645150976,3645151231,US 3645151232,3645151487,DE 3645151488,3645151615,MT @@ -129452,7 +131284,6 @@ 3645460480,3645464575,UA 3645464576,3645468671,SE 3645468672,3645472767,RU -3645472768,3645476863,UA 3645476864,3645480959,DE 3645480960,3645485055,RO 3645489152,3645493247,RU @@ -129649,8 +131480,7 @@ 3645763715,3645763715,NL 3645763716,3645763716,DE 3645763717,3645763717,NL -3645763718,3645763718,DE -3645763719,3645763719,NL +3645763718,3645763719,DE 3645763720,3645763720,IT 3645763721,3645763721,DE 3645763722,3645763722,GR @@ -130434,12 +132264,14 @@ 3645779968,3645784063,PS 3645784064,3645788159,NG 3645788160,3645792255,GB +3645792256,3645796351,TR 3645796352,3645800447,CH 3645800448,3645804543,DE 3645804544,3645808639,GB 3645808640,3645812735,DE 3645812736,3645816831,RU 3645816832,3645825023,FI +3645825024,3645829119,RU 3645829120,3645833215,NL 3645833216,3645841407,RU 3645841408,3645845503,BG @@ -130492,7 +132324,9 @@ 3647886188,3647886207,GB 3647886208,3647886271,DE 3647886272,3647886303,GB -3647886304,3647890463,DE +3647886304,3647889663,DE +3647889664,3647889671,BE +3647889672,3647890463,DE 3647890464,3647890471,FR 3647890472,3647912447,DE 3647912448,3647912511,BE @@ -130500,9 +132334,7 @@ 3647916800,3647917055,SE 3647917056,3647917599,DE 3647917600,3647917615,US -3647917616,3647936823,DE -3647936824,3647936827,GB -3647936828,3647936871,DE +3647917616,3647936871,DE 3647936872,3647936879,FR 3647936880,3647954231,DE 3647954232,3647954239,GB @@ -130540,8 +132372,8 @@ 3647965280,3647965295,ES 3647965296,3647965303,DE 3647965304,3647965311,ES -3647965312,3647965327,DE -3647965328,3647965343,ES +3647965312,3647965319,DE +3647965320,3647965343,ES 3647965344,3647965351,DE 3647965352,3647965359,ES 3647965360,3647965375,DE @@ -130553,20 +132385,20 @@ 3647966576,3647966583,DE 3647966584,3647967231,GB 3647967232,3647968255,BE -3647968256,3647968703,FR -3647968704,3647968767,GB -3647968768,3647969279,FR +3647968256,3647969279,FR 3647969280,3647969791,IT 3647969792,3647970303,BE 3647970304,3647971327,FR 3647971328,3647971671,GB 3647971672,3647971679,DE -3647971680,3647972215,GB -3647972216,3647972223,DE -3647972224,3647972259,GB +3647971680,3647972191,GB +3647972192,3647972199,DE +3647972200,3647972259,GB 3647972260,3647972263,DE 3647972264,3647972351,GB -3647972352,3647973783,IT +3647972352,3647973679,IT +3647973680,3647973695,DE +3647973696,3647973783,IT 3647973784,3647973791,DE 3647973792,3647973967,IT 3647973968,3647973975,DE @@ -130576,9 +132408,7 @@ 3647974400,3647976447,ES 3647976448,3647976559,BE 3647976560,3647976575,FR -3647976576,3647976607,BE -3647976608,3647976639,BR -3647976640,3647976647,BE +3647976576,3647976647,BE 3647976648,3647976663,DE 3647976664,3647976719,BE 3647976720,3647976727,DE @@ -130590,14 +132420,20 @@ 3647976792,3647976799,DE 3647976800,3647976927,BE 3647976928,3647976935,DE -3647976936,3647977047,BE -3647977048,3647977215,DE +3647976936,3647977071,BE +3647977072,3647977087,DE +3647977088,3647977151,BE +3647977152,3647977215,DE 3647977216,3647977471,BE 3647977472,3647977791,GB 3647977792,3647977855,IE 3647977856,3647978495,GB -3647978496,3647979007,NL -3647979008,3647979519,DE +3647978496,3647978775,NL +3647978776,3647978783,DE +3647978784,3647978871,NL +3647978872,3647978879,DE +3647978880,3647978895,NL +3647978896,3647979519,DE 3647979520,3647980543,FR 3647980544,3647981055,GB 3647981056,3647981567,IE @@ -130715,7 +132551,9 @@ 3648181024,3648181055,AT 3648181056,3648181215,DE 3648181216,3648181231,RU -3648181232,3648181311,DE +3648181232,3648181247,DE +3648181248,3648181279,IT +3648181280,3648181311,DE 3648181312,3648181343,AT 3648181344,3648181375,DE 3648181376,3648181407,RU @@ -130745,8 +132583,10 @@ 3648182816,3648182823,US 3648182824,3648182831,RU 3648182832,3648182847,DE -3648182848,3648182911,IT -3648182912,3648183871,DE +3648182848,3648182879,AT +3648182880,3648183551,DE +3648183552,3648183679,BR +3648183680,3648183871,DE 3648183872,3648183935,GB 3648183936,3648184319,DE 3648184320,3648192511,RU @@ -130820,8 +132660,8 @@ 3648417880,3648417919,GB 3648417920,3648418047,AT 3648418048,3648418079,GB -3648418080,3648418095,ES -3648418096,3648418111,GB +3648418080,3648418103,ES +3648418104,3648418111,GB 3648418112,3648418135,ES 3648418136,3648418143,GB 3648418144,3648418247,ES @@ -130962,24 +132802,17 @@ 3650244608,3650256895,GB 3650256896,3650265087,DE 3650265088,3650269183,CH -3650269184,3650273279,GB +3650269184,3650273071,GB +3650273072,3650273279,IR 3650273280,3650277375,IT 3650277376,3650281471,IR 3650281472,3650285567,FR 3650285568,3650289663,UA 3650289664,3650297855,RU 3650297856,3650301951,LT -3650301952,3650306623,DE -3650306624,3650306639,GE -3650306640,3650306775,DE +3650301952,3650306775,DE 3650306776,3650306779,GE -3650306780,3650306783,DE -3650306784,3650306791,AT -3650306792,3650306799,DE -3650306800,3650306807,AT -3650306808,3650306943,DE -3650306944,3650306959,GB -3650306960,3650307007,DE +3650306780,3650307007,DE 3650307008,3650307010,GB 3650307011,3650310143,DE 3650310144,3650314239,GB @@ -130996,7 +132829,9 @@ 3650338816,3650342911,FR 3650342912,3650344463,CH 3650344464,3650344479,AT -3650344480,3650344879,CH +3650344480,3650344559,CH +3650344560,3650344575,AT +3650344576,3650344879,CH 3650344880,3650344911,PT 3650344912,3650345879,CH 3650345880,3650345887,IM @@ -131128,7 +132963,9 @@ 3650912640,3650912671,FR 3650912672,3650923103,GB 3650923104,3650923135,FR -3650923136,3650945023,GB +3650923136,3650926591,GB +3650926592,3650929663,ES +3650929664,3650945023,GB 3650945024,3651010559,DK 3651010560,3651076095,GB 3651076096,3651077375,DE @@ -131167,8 +133004,9 @@ 3651087872,3651088127,DE 3651088128,3651088383,IE 3651088384,3651088639,GR -3651088640,3651088895,SG -3651088896,3651098111,DE +3651088640,3651090919,DE +3651090920,3651090959,IE +3651090960,3651098111,DE 3651098112,3651098367,IE 3651098368,3651098623,FR 3651098624,3651101439,DE @@ -131199,7 +133037,8 @@ 3651108864,3651141631,EE 3651141632,3651173375,DE 3651173376,3651173631,ES -3651173632,3651199487,DE +3651173632,3651199231,DE +3651199232,3651199487,ES 3651199488,3651199743,GB 3651199744,3651200255,ES 3651200256,3651201023,PL @@ -131325,6 +133164,7 @@ 3651846144,3651850239,NO 3651850240,3651854335,RU 3651854336,3651858431,IT +3651858432,3651862527,IR 3651862528,3651866623,RU 3651866624,3651870719,FR 3651870720,3651874815,IT @@ -131344,7 +133184,11 @@ 3651886380,3651886383,CD 3651886384,3651886391,BE 3651886392,3651886395,CD -3651886396,3651886435,BE +3651886396,3651886407,BE +3651886408,3651886415,CD +3651886416,3651886423,BE +3651886424,3651886427,CD +3651886428,3651886435,BE 3651886436,3651886451,CD 3651886452,3651886455,BE 3651886456,3651886459,CD @@ -131354,7 +133198,9 @@ 3651886480,3651886495,CD 3651886496,3651886511,BE 3651886512,3651886527,CD -3651886528,3651887103,BE +3651886528,3651886591,BE +3651886592,3651886847,CD +3651886848,3651887103,BE 3651887104,3651891199,GB 3651891200,3651895295,DE 3651895296,3651899391,GB @@ -131449,7 +133295,7 @@ 3651964928,3651969023,SK 3651969024,3651977215,DE 3651977216,3651985407,IT -3651985408,3651993599,PL +3651985408,3651997695,PL 3651997696,3652001791,RU 3652001792,3652005887,HU 3652005888,3652009983,GB @@ -131457,9 +133303,7 @@ 3652011520,3652011775,IT 3652011776,3652014079,RU 3652014080,3652018175,SA -3652018176,3652018239,IE -3652018240,3652018303,GB -3652018304,3652018687,IE +3652018176,3652018687,IE 3652018688,3652018943,GB 3652018944,3652019169,IE 3652019170,3652019199,GB @@ -131475,15 +133319,15 @@ 3652019480,3652019487,GB 3652019488,3652019527,IE 3652019528,3652019551,GB -3652019552,3652019615,IE -3652019616,3652019631,GB +3652019552,3652019567,IE +3652019568,3652019583,GB +3652019584,3652019599,IE +3652019600,3652019631,GB 3652019632,3652019663,IE -3652019664,3652019679,GB -3652019680,3652019687,IE -3652019688,3652019695,GB +3652019664,3652019695,GB 3652019696,3652019735,IE -3652019736,3652019751,GB -3652019752,3652019791,IE +3652019736,3652019759,GB +3652019760,3652019791,IE 3652019792,3652019807,GB 3652019808,3652019815,IE 3652019816,3652019887,GB @@ -131501,7 +133345,8 @@ 3652021064,3652021087,GB 3652021088,3652021151,IE 3652021152,3652021247,GB -3652021248,3652021423,IE +3652021248,3652021415,IE +3652021416,3652021423,BE 3652021424,3652021759,GB 3652021760,3652021775,IE 3652021776,3652021791,GB @@ -131614,78 +133459,56 @@ 3653402624,3653403135,AT 3653403136,3653403647,CD 3653403648,3653403903,ZW -3653403904,3653403911,UA +3653403904,3653403911,A2 3653403912,3653403919,IQ -3653403920,3653403931,UA -3653403932,3653403935,A2 -3653403936,3653403943,IQ +3653403920,3653403927,A2 +3653403928,3653403931,UA +3653403932,3653403943,A2 3653403944,3653403951,LB 3653403952,3653403959,IQ 3653403960,3653403967,MW -3653403968,3653403983,NG +3653403968,3653403975,NG +3653403976,3653403983,A2 3653403984,3653403999,UA 3653404000,3653404008,LB -3653404009,3653404015,A2 -3653404016,3653404023,LB -3653404024,3653404039,A2 -3653404040,3653404055,IQ -3653404056,3653404063,A2 +3653404009,3653404039,A2 +3653404040,3653404047,IQ +3653404048,3653404063,A2 3653404064,3653404071,LB 3653404072,3653404079,AO 3653404080,3653404087,UA -3653404088,3653404095,LB -3653404096,3653404103,IQ -3653404104,3653404111,A2 -3653404112,3653404119,MD -3653404120,3653404127,A2 +3653404088,3653404127,A2 3653404128,3653404135,RS 3653404136,3653404159,A2 3653404160,3653404415,AT 3653404416,3653404543,A2 3653404544,3653404559,NG -3653404560,3653404567,IQ -3653404568,3653404575,LY -3653404576,3653404591,TR -3653404592,3653404607,A2 -3653404608,3653404655,UA +3653404560,3653404639,A2 +3653404640,3653404655,UA 3653404656,3653404671,A2 3653404672,3653404679,TR 3653404680,3653404707,A2 3653404708,3653404713,IQ 3653404714,3653404719,A2 3653404720,3653404735,LB -3653404736,3653404751,A2 -3653404752,3653404759,AM -3653404760,3653404815,A2 -3653404816,3653404831,LB +3653404736,3653404823,A2 +3653404824,3653404831,LB 3653404832,3653404847,NG 3653404848,3653404855,A2 3653404856,3653404863,SL -3653404864,3653404871,LY -3653404872,3653404879,A2 -3653404880,3653404887,UA -3653404888,3653404903,A2 +3653404864,3653404903,A2 3653404904,3653404911,IQ 3653404912,3653404919,LY 3653404920,3653404959,A2 3653404960,3653404975,UA -3653404976,3653404983,A2 -3653404984,3653404991,AM -3653404992,3653404999,IQ -3653405000,3653405007,A2 -3653405008,3653405031,LB -3653405032,3653405039,A2 +3653404976,3653405039,A2 3653405040,3653405047,LB 3653405048,3653405055,IQ 3653405056,3653405063,A2 -3653405064,3653405079,IQ -3653405080,3653405087,A2 -3653405088,3653405095,LY +3653405064,3653405071,IQ +3653405072,3653405095,A2 3653405096,3653405103,NG -3653405104,3653405119,A2 -3653405120,3653405135,ZW -3653405136,3653405151,UA -3653405152,3653405167,A2 +3653405104,3653405167,A2 3653405168,3653405183,UA 3653405184,3653405439,AT 3653405440,3653407015,A2 @@ -131693,16 +133516,14 @@ 3653407024,3653407031,A2 3653407032,3653407039,ZW 3653407040,3653407071,NG -3653407072,3653407087,A2 -3653407088,3653407095,NG -3653407096,3653407103,A2 +3653407072,3653407103,A2 3653407104,3653407111,UG 3653407112,3653407119,ZM 3653407120,3653407127,ZW 3653407128,3653407167,A2 3653407168,3653407231,NG -3653407232,3653407359,A2 -3653407360,3653407375,NG +3653407232,3653407367,A2 +3653407368,3653407375,NG 3653407376,3653407391,A2 3653407392,3653407399,NG 3653407400,3653407423,A2 @@ -131723,17 +133544,13 @@ 3653408048,3653408063,A2 3653408064,3653408071,ZM 3653408072,3653408079,NG -3653408080,3653408087,MW -3653408088,3653408143,A2 +3653408080,3653408143,A2 3653408144,3653408151,NG -3653408152,3653408159,ZM -3653408160,3653408167,A2 +3653408152,3653408167,A2 3653408168,3653408175,ZW 3653408176,3653408183,A2 3653408184,3653408191,MW -3653408192,3653408215,A2 -3653408216,3653408223,MW -3653408224,3653408231,A2 +3653408192,3653408231,A2 3653408232,3653408239,KE 3653408240,3653408247,ZM 3653408248,3653408767,A2 @@ -131742,13 +133559,11 @@ 3653409040,3653409047,NG 3653409048,3653409087,A2 3653409088,3653409095,CD -3653409096,3653409103,A2 -3653409104,3653409127,NG +3653409096,3653409111,A2 +3653409112,3653409127,NG 3653409128,3653409143,CD 3653409144,3653409151,NG -3653409152,3653409175,A2 -3653409176,3653409183,NG -3653409184,3653409191,A2 +3653409152,3653409191,A2 3653409192,3653409199,NG 3653409200,3653409223,A2 3653409224,3653409231,NG @@ -131763,8 +133578,7 @@ 3653409640,3653409647,A2 3653409648,3653409663,NG 3653409664,3653409791,CM -3653409792,3653409855,ZW -3653409856,3653409919,A2 +3653409792,3653409919,A2 3653409920,3653410047,NG 3653410048,3653410063,YT 3653410064,3653410079,UG @@ -131787,8 +133601,7 @@ 3653410256,3653410263,A2 3653410264,3653410271,NG 3653410272,3653410279,SD -3653410280,3653410287,LU -3653410288,3653410295,A2 +3653410280,3653410295,A2 3653410296,3653410303,MW 3653410304,3653410815,GB 3653410816,3653414911,CZ @@ -131813,7 +133626,9 @@ 3653472560,3653472567,NL 3653472568,3653472575,AF 3653472576,3653472591,NL -3653472592,3653472807,AF +3653472592,3653472767,AF +3653472768,3653472775,NL +3653472776,3653472807,AF 3653472808,3653472815,NL 3653472816,3653472823,AF 3653472824,3653472831,NL @@ -131840,8 +133655,8 @@ 3653518368,3653518399,SK 3653518400,3653518479,AT 3653518480,3653518495,SK -3653518496,3653519815,AT -3653519816,3653519839,SK +3653518496,3653519823,AT +3653519824,3653519839,SK 3653519840,3653520223,AT 3653520224,3653520255,SK 3653520256,3653522975,AT @@ -131861,6 +133676,7 @@ 3653525216,3653525503,AT 3653525504,3653529599,RU 3653529600,3653533695,CZ +3653533696,3653537791,IT 3653537792,3653541887,AT 3653541888,3653545983,UA 3653545984,3653550079,CH @@ -131870,6 +133686,7 @@ 3653559672,3653559679,US 3653559680,3653566463,GB 3653566464,3653570559,RU +3653570560,3653574655,ES 3653574656,3653578751,CZ 3653578752,3653582847,SE 3653582848,3653586943,PL @@ -132046,7 +133863,8 @@ 3664004352,3664004607,MY 3664004608,3664004863,SG 3664004864,3664005119,KH -3664005120,3664006143,ID +3664005120,3664005887,ID +3664005888,3664006143,MY 3664052224,3664084991,NZ 3664084992,3664117759,KR 3664117760,3664248831,HK @@ -132299,8 +134117,22 @@ 3743120384,3743121407,JP 3743121408,3743125503,MY 3743125504,3743129599,ID +3743129600,3743130623,HK +3743130624,3743131647,AP +3743131648,3743133695,SG +3743133696,3743134719,AU +3743135744,3743136767,CN +3743136768,3743137791,MY +3743137792,3743154175,TH 3743154176,3743186943,MY 3743186944,3743219711,KR +3743219712,3743252479,JP +3743252480,3743260671,NC +3743268864,3743277055,IN +3743277056,3743281151,PK +3743281152,3743282175,AU +3743283200,3743284223,HK +3743284224,3743285247,PK 3743285248,3743416319,IN 3743416320,3745513471,KR 3745513472,3749838847,CN @@ -132312,7 +134144,7 @@ 3749855232,3749969919,KR 3749969920,3750232063,JP 3750232064,3750756351,TW -3751804928,3752067071,CN +3750756352,3752067071,CN 3752067072,3752132607,ID 3752132608,3752133631,BD 3752133632,3752134655,ID @@ -132325,6 +134157,7 @@ 3752165376,3752198143,KR 3752198144,3752329215,CN 3752329216,3752853503,KR +3752853504,3753902079,IN 3753902080,3754033151,CN 3754033152,3754164223,KR 3754164224,3754229759,IN @@ -132345,6 +134178,7 @@ 3755986944,3755988991,JP 3755988992,3755990015,HK 3755991040,3755999231,JP +3755999232,3757047807,IN 3757047808,3757834239,CN 3757834240,3757867007,AU 3757899776,3757965311,KR diff --git a/src/or/Makefile.am b/src/or/Makefile.am index 9d8fb663c..ef9c9903b 100644 --- a/src/or/Makefile.am +++ b/src/or/Makefile.am @@ -21,7 +21,7 @@ libtor_a_SOURCES = buffers.c circuitbuild.c circuitlist.c \ cpuworker.c directory.c dirserv.c dirvote.c \ dns.c dnsserv.c geoip.c hibernate.c main.c $(tor_platform_source) \ microdesc.c \ - networkstatus.c onion.c policies.c \ + networkstatus.c nodelist.c onion.c policies.c \ reasons.c relay.c rendcommon.c rendclient.c rendmid.c \ rendservice.c rephist.c router.c routerlist.c routerparse.c \ $(evdns_source) config_codedigest.c @@ -56,6 +56,7 @@ noinst_HEADERS = buffers.h circuitbuild.h circuitlist.h circuituse.h \ command.h config.h connection_edge.h connection.h connection_or.h \ control.h cpuworker.h directory.h dirserv.h dirvote.h dns.h \ dnsserv.h geoip.h hibernate.h main.h microdesc.h networkstatus.h \ + nodelist.h \ ntmain.h onion.h policies.h reasons.h relay.h rendclient.h \ rendcommon.h rendmid.h rendservice.h rephist.h router.h routerlist.h \ routerparse.h or.h eventdns.h eventdns_tor.h micro-revision.i diff --git a/src/or/buffers.c b/src/or/buffers.c index 11c656f23..08ed8910a 100644 --- a/src/or/buffers.c +++ b/src/or/buffers.c @@ -640,14 +640,10 @@ 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. */ -/* XXXX021 indicate "read blocked" somehow? */ int read_to_buf(int s, size_t at_most, buf_t *buf, int *reached_eof, int *socket_error) { - /* XXXX021 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; @@ -815,9 +811,6 @@ flush_chunk_tls(tor_tls_t *tls, buf_t *buf, chunk_t *chunk, int flush_buf(int s, buf_t *buf, size_t sz, size_t *buf_flushlen) { - /* XXXX021 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); @@ -1119,8 +1112,7 @@ fetch_var_cell_from_evbuffer(struct evbuffer *buf, var_cell_t **out, int move_buf_to_buf(buf_t *buf_out, buf_t *buf_in, size_t *buf_flushlen) { - /* XXXX we can do way better here, but this doesn't turn up in any - * profiles. */ + /* We can do way better here, but this doesn't turn up in any profiles. */ char b[4096]; size_t cp, len; len = *buf_flushlen; diff --git a/src/or/circuitbuild.c b/src/or/circuitbuild.c index 473b28e87..20a7a0d07 100644 --- a/src/or/circuitbuild.c +++ b/src/or/circuitbuild.c @@ -23,6 +23,7 @@ #include "directory.h" #include "main.h" #include "networkstatus.h" +#include "nodelist.h" #include "onion.h" #include "policies.h" #include "relay.h" @@ -54,8 +55,8 @@ extern circuit_t *global_circuitlist; /** An entry_guard_t represents our information about a chosen long-term * first hop, known as a "helper" node in the literature. We can't just - * use a routerinfo_t, since we want to remember these even when we - * don't have a directory. */ + * use a node_t, since we want to remember these even when we + * don't have any directory info. */ typedef struct { char nickname[MAX_NICKNAME_LEN+1]; char identity[DIGEST_LEN]; @@ -94,7 +95,7 @@ static int circuit_deliver_create_cell(circuit_t *circ, static int onion_pick_cpath_exit(origin_circuit_t *circ, extend_info_t *exit); static crypt_path_t *onion_next_hop_in_cpath(crypt_path_t *cpath); static int onion_extend_cpath(origin_circuit_t *circ); -static int count_acceptable_routers(smartlist_t *routers); +static int count_acceptable_nodes(smartlist_t *routers); static int onion_append_hop(crypt_path_t **head_ptr, extend_info_t *choice); static void entry_guards_changed(void); @@ -1401,10 +1402,9 @@ circuit_list_path_impl(origin_circuit_t *circ, int verbose, int verbose_names) hop = circ->cpath; do { - routerinfo_t *ri; - routerstatus_t *rs; char *elt; const char *id; + const node_t *node; if (!hop) break; if (!verbose && hop->state != CPATH_STATE_OPEN) @@ -1414,10 +1414,8 @@ circuit_list_path_impl(origin_circuit_t *circ, int verbose, int verbose_names) id = hop->extend_info->identity_digest; if (verbose_names) { elt = tor_malloc(MAX_VERBOSE_NICKNAME_LEN+1); - if ((ri = router_get_by_digest(id))) { - router_get_verbose_nickname(elt, ri); - } else if ((rs = router_get_consensus_status_by_id(id))) { - routerstatus_get_verbose_nickname(elt, rs); + if ((node = node_get_by_id(id))) { + node_get_verbose_nickname(node, elt); } else if (is_legal_nickname(hop->extend_info->nickname)) { elt[0] = '$'; base16_encode(elt+1, HEX_DIGEST_LEN+1, id, DIGEST_LEN); @@ -1429,9 +1427,9 @@ circuit_list_path_impl(origin_circuit_t *circ, int verbose, int verbose_names) base16_encode(elt+1, HEX_DIGEST_LEN+1, id, DIGEST_LEN); } } else { /* ! verbose_names */ - if ((ri = router_get_by_digest(id)) && - ri->is_named) { - elt = tor_strdup(hop->extend_info->nickname); + node = node_get_by_id(id); + if (node && node_is_named(node)) { + elt = tor_strdup(node_get_nickname(node)); } else { elt = tor_malloc(HEX_DIGEST_LEN+2); elt[0] = '$'; @@ -1500,31 +1498,28 @@ void circuit_rep_hist_note_result(origin_circuit_t *circ) { crypt_path_t *hop; - char *prev_digest = NULL; - routerinfo_t *router; + const char *prev_digest = NULL; hop = circ->cpath; if (!hop) /* circuit hasn't started building yet. */ return; if (server_mode(get_options())) { - routerinfo_t *me = router_get_my_routerinfo(); + const routerinfo_t *me = router_get_my_routerinfo(); if (!me) return; prev_digest = me->cache_info.identity_digest; } do { - router = router_get_by_digest(hop->extend_info->identity_digest); - if (router) { + const node_t *node = node_get_by_id(hop->extend_info->identity_digest); + if (node) { /* Why do we check this? We know the identity. -NM XXXX */ if (prev_digest) { if (hop->state == CPATH_STATE_OPEN) - rep_hist_note_extend_succeeded(prev_digest, - router->cache_info.identity_digest); + rep_hist_note_extend_succeeded(prev_digest, node->identity); else { - rep_hist_note_extend_failed(prev_digest, - router->cache_info.identity_digest); + rep_hist_note_extend_failed(prev_digest, node->identity); break; } } - prev_digest = router->cache_info.identity_digest; + prev_digest = node->identity; } else { prev_digest = NULL; } @@ -1794,7 +1789,7 @@ int inform_testing_reachability(void) { char dirbuf[128]; - routerinfo_t *me = router_get_my_routerinfo(); + const routerinfo_t *me = router_get_my_routerinfo(); if (!me) return 0; control_event_server_status(LOG_NOTICE, @@ -1866,7 +1861,7 @@ int circuit_send_next_onion_skin(origin_circuit_t *circ) { crypt_path_t *hop; - routerinfo_t *router; + const node_t *node; char payload[2+4+DIGEST_LEN+ONIONSKIN_CHALLENGE_LEN]; char *onionskin; size_t payload_len; @@ -1882,7 +1877,7 @@ circuit_send_next_onion_skin(origin_circuit_t *circ) else control_event_bootstrap(BOOTSTRAP_STATUS_CIRCUIT_CREATE, 0); - router = router_get_by_digest(circ->_base.n_conn->identity_digest); + node = node_get_by_id(circ->_base.n_conn->identity_digest); fast = should_use_create_fast_for_circuit(circ); if (!fast) { /* We are an OR and we know the right onion key: we should @@ -1916,7 +1911,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", - router ? router->nickname : "<unnamed>"); + node ? node_get_nickname(node) : "<unnamed>"); } else { tor_assert(circ->cpath->state == CPATH_STATE_OPEN); tor_assert(circ->_base.state == CIRCUIT_STATE_BUILDING); @@ -1929,7 +1924,7 @@ circuit_send_next_onion_skin(origin_circuit_t *circ) struct timeval end; long timediff; tor_gettimeofday(&end); - timediff = tv_mdiff(&circ->_base.highres_created, &end); + timediff = tv_mdiff(&circ->_base.timestamp_created, &end); /* * If the circuit build time is much greater than we would have cut @@ -2390,12 +2385,12 @@ onionskin_answer(or_circuit_t *circ, uint8_t cell_type, const char *payload, */ static int new_route_len(uint8_t purpose, extend_info_t *exit, - smartlist_t *routers) + smartlist_t *nodes) { int num_acceptable_routers; int routelen; - tor_assert(routers); + tor_assert(nodes); routelen = DEFAULT_ROUTE_LEN; if (exit && @@ -2403,10 +2398,10 @@ new_route_len(uint8_t purpose, extend_info_t *exit, purpose != CIRCUIT_PURPOSE_S_ESTABLISH_INTRO) routelen++; - num_acceptable_routers = count_acceptable_routers(routers); + num_acceptable_routers = count_acceptable_nodes(nodes); log_debug(LD_CIRC,"Chosen route length %d (%d/%d routers suitable).", - routelen, num_acceptable_routers, smartlist_len(routers)); + routelen, num_acceptable_routers, smartlist_len(nodes)); if (num_acceptable_routers < 2) { log_info(LD_CIRC, @@ -2475,12 +2470,12 @@ circuit_all_predicted_ports_handled(time_t now, int *need_uptime, return enough; } -/** Return 1 if <b>router</b> can handle one or more of the ports in +/** Return 1 if <b>node</b> can handle one or more of the ports in * <b>needed_ports</b>, else return 0. */ static int -router_handles_some_port(routerinfo_t *router, smartlist_t *needed_ports) -{ +node_handles_some_port(const node_t *node, smartlist_t *needed_ports) +{ /* XXXX MOVE */ int i; uint16_t port; @@ -2490,7 +2485,10 @@ router_handles_some_port(routerinfo_t *router, smartlist_t *needed_ports) needed_ports is explicitly a smartlist of uint16_t's */ port = *(uint16_t *)smartlist_get(needed_ports, i); tor_assert(port); - r = compare_addr_to_addr_policy(0, port, router->exit_policy); + if (node) + r = compare_addr_to_node_policy(0, port, node); + else + continue; if (r != ADDR_POLICY_REJECTED && r != ADDR_POLICY_PROBABLY_REJECTED) return 1; } @@ -2523,18 +2521,17 @@ ap_stream_wants_exit_attention(connection_t *conn) * * Return NULL if we can't find any suitable routers. */ -static routerinfo_t * -choose_good_exit_server_general(routerlist_t *dir, int need_uptime, - int need_capacity) +static const node_t * +choose_good_exit_server_general(int need_uptime, int need_capacity) { int *n_supported; - int i; int n_pending_connections = 0; smartlist_t *connections; int best_support = -1; int n_best_support=0; - routerinfo_t *router; or_options_t *options = get_options(); + const smartlist_t *the_nodes; + const node_t *node=NULL; connections = get_connection_array(); @@ -2555,10 +2552,11 @@ choose_good_exit_server_general(routerlist_t *dir, int need_uptime, * * -1 means "Don't use this router at all." */ - n_supported = tor_malloc(sizeof(int)*smartlist_len(dir->routers)); - for (i = 0; i < smartlist_len(dir->routers); ++i) {/* iterate over routers */ - router = smartlist_get(dir->routers, i); - if (router_is_me(router)) { + the_nodes = nodelist_get_list(); + n_supported = tor_malloc(sizeof(int)*smartlist_len(the_nodes)); + SMARTLIST_FOREACH_BEGIN(the_nodes, const node_t *, node) { + const int i = node_sl_idx; + if (router_digest_is_me(node->identity)) { n_supported[i] = -1; // log_fn(LOG_DEBUG,"Skipping node %s -- it's me.", router->nickname); /* XXX there's probably a reverse predecessor attack here, but @@ -2566,13 +2564,15 @@ choose_good_exit_server_general(routerlist_t *dir, int need_uptime, */ continue; } - if (!router->is_running || router->is_bad_exit) { + if (!node_has_descriptor(node)) + 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 (router_is_unreliable(router, need_uptime, need_capacity, 0) && + if (node_is_unreliable(node, need_uptime, need_capacity, 0) && (!options->ExitNodes || - !routerset_contains_router(options->ExitNodes, router))) { + !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 @@ -2581,18 +2581,19 @@ choose_good_exit_server_general(routerlist_t *dir, int need_uptime, continue; /* skip routers that are not suitable, unless we have * ExitNodes set, in which case we asked for it */ } - if (!(router->is_valid || options->_AllowInvalid & ALLOW_INVALID_EXIT)) { + if (!(node->is_valid || options->_AllowInvalid & ALLOW_INVALID_EXIT)) { /* if it's invalid and we don't want it */ n_supported[i] = -1; // log_fn(LOG_DEBUG,"Skipping node %s (index %d) -- invalid router.", // router->nickname, i); continue; /* skip invalid routers */ } - if (options->ExcludeSingleHopRelays && router->allow_single_hop_exits) { + if (options->ExcludeSingleHopRelays && + node_allows_single_hop_exits(node)) { n_supported[i] = -1; continue; } - if (router_exit_policy_rejects_all(router)) { + if (node_exit_policy_rejects_all(node)) { n_supported[i] = -1; // log_fn(LOG_DEBUG,"Skipping node %s (index %d) -- it rejects all.", // router->nickname, i); @@ -2600,11 +2601,10 @@ choose_good_exit_server_general(routerlist_t *dir, int need_uptime, } n_supported[i] = 0; /* iterate over connections */ - SMARTLIST_FOREACH(connections, connection_t *, conn, - { + 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), router, 1)) { + if (connection_ap_can_use_exit(TO_EDGE_CONN(conn), node, 1)) { ++n_supported[i]; // log_fn(LOG_DEBUG,"%s is supported. n_supported[%d] now %d.", // router->nickname, i, n_supported[i]); @@ -2612,7 +2612,7 @@ choose_good_exit_server_general(routerlist_t *dir, int need_uptime, // log_fn(LOG_DEBUG,"%s (index %d) would reject this stream.", // router->nickname, i); } - }); /* End looping over connections. */ + } SMARTLIST_FOREACH_END(conn); if (n_pending_connections > 0 && n_supported[i] == 0) { /* Leave best_support at -1 if that's where it is, so we can * distinguish it later. */ @@ -2629,7 +2629,7 @@ choose_good_exit_server_general(routerlist_t *dir, int need_uptime, * count of equally good routers.*/ ++n_best_support; } - } + } SMARTLIST_FOREACH_END(node); log_info(LD_CIRC, "Found %d servers that might support %d/%d pending connections.", n_best_support, best_support >= 0 ? best_support : 0, @@ -2640,18 +2640,19 @@ choose_good_exit_server_general(routerlist_t *dir, int need_uptime, if (best_support > 0) { smartlist_t *supporting = smartlist_create(), *use = smartlist_create(); - for (i = 0; i < smartlist_len(dir->routers); i++) - if (n_supported[i] == best_support) - smartlist_add(supporting, smartlist_get(dir->routers, i)); + SMARTLIST_FOREACH(the_nodes, const node_t *, node, { + if (n_supported[node_sl_idx] == best_support) + smartlist_add(supporting, (void*)node); + }); - routersets_get_disjunction(use, supporting, options->ExitNodes, + 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_disjunction(use, supporting, NULL, + routersets_get_node_disjunction(use, supporting, NULL, options->_ExcludeExitNodesUnion, 1); } - router = routerlist_sl_choose_by_bandwidth(use, WEIGHT_FOR_EXIT); + node = node_sl_choose_by_bandwidth(use, WEIGHT_FOR_EXIT); smartlist_free(use); smartlist_free(supporting); } else { @@ -2670,7 +2671,7 @@ choose_good_exit_server_general(routerlist_t *dir, int need_uptime, need_capacity?", fast":"", need_uptime?", stable":""); tor_free(n_supported); - return choose_good_exit_server_general(dir, 0, 0); + return choose_good_exit_server_general(0, 0); } log_notice(LD_CIRC, "All routers are down or won't exit%s -- " "choosing a doomed exit at random.", @@ -2682,28 +2683,29 @@ choose_good_exit_server_general(routerlist_t *dir, int need_uptime, 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. */ - for (i = 0; i < smartlist_len(dir->routers); i++) { - router = smartlist_get(dir->routers, i); - if (n_supported[i] != -1 && - (attempt || router_handles_some_port(router, needed_ports))) { + 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.", // try, router->nickname); - smartlist_add(supporting, router); + smartlist_add(supporting, (void*)node); } - } + } SMARTLIST_FOREACH_END(node); - routersets_get_disjunction(use, supporting, options->ExitNodes, + 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_disjunction(use, supporting, NULL, + 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. */ - router = routerlist_sl_choose_by_bandwidth(use, WEIGHT_FOR_EXIT); - if (router) + node = node_sl_choose_by_bandwidth(use, WEIGHT_FOR_EXIT); + if (node) break; smartlist_clear(supporting); smartlist_clear(use); @@ -2715,9 +2717,9 @@ choose_good_exit_server_general(routerlist_t *dir, int need_uptime, } tor_free(n_supported); - if (router) { - log_info(LD_CIRC, "Chose exit server '%s'", router->nickname); - return router; + if (node) { + log_info(LD_CIRC, "Chose exit server '%s'", node_get_nickname(node)); + return node; } if (options->ExitNodes && options->StrictNodes) { log_warn(LD_CIRC, @@ -2737,12 +2739,12 @@ choose_good_exit_server_general(routerlist_t *dir, int need_uptime, * For client-side rendezvous circuits, choose a random node, weighted * toward the preferences in 'options'. */ -static routerinfo_t * -choose_good_exit_server(uint8_t purpose, routerlist_t *dir, +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(); - router_crn_flags_t flags = 0; + router_crn_flags_t flags = CRN_NEED_DESC; if (need_uptime) flags |= CRN_NEED_UPTIME; if (need_capacity) @@ -2755,7 +2757,7 @@ choose_good_exit_server(uint8_t purpose, routerlist_t *dir, if (is_internal) /* pick it like a middle hop */ return router_choose_random_node(NULL, options->ExcludeNodes, flags); else - return choose_good_exit_server_general(dir,need_uptime,need_capacity); + return choose_good_exit_server_general(need_uptime,need_capacity); case CIRCUIT_PURPOSE_C_ESTABLISH_REND: if (options->_AllowInvalid & ALLOW_INVALID_RENDEZVOUS) flags |= CRN_ALLOW_INVALID; @@ -2836,13 +2838,12 @@ static int onion_pick_cpath_exit(origin_circuit_t *circ, extend_info_t *exit) { cpath_build_state_t *state = circ->build_state; - routerlist_t *rl = router_get_routerlist(); if (state->onehop_tunnel) { log_debug(LD_CIRC, "Launching a one-hop circuit for dir tunnel."); state->desired_path_len = 1; } else { - int r = new_route_len(circ->_base.purpose, exit, rl->routers); + int r = new_route_len(circ->_base.purpose, exit, nodelist_get_list()); if (r < 1) /* must be at least 1 */ return -1; state->desired_path_len = r; @@ -2853,14 +2854,15 @@ onion_pick_cpath_exit(origin_circuit_t *circ, extend_info_t *exit) log_info(LD_CIRC,"Using requested exit node '%s'", exit->nickname); exit = extend_info_dup(exit); } else { /* we have to decide one */ - routerinfo_t *router = - choose_good_exit_server(circ->_base.purpose, rl, state->need_uptime, + const node_t *node = + choose_good_exit_server(circ->_base.purpose, state->need_uptime, state->need_capacity, state->is_internal); - if (!router) { + if (!node) { log_warn(LD_CIRC,"failed to choose an exit server"); return -1; } - exit = extend_info_from_router(router); + exit = extend_info_from_node(node); + tor_assert(exit); } state->chosen_exit = exit; return 0; @@ -2911,35 +2913,30 @@ circuit_extend_to_new_exit(origin_circuit_t *circ, extend_info_t *exit) * and available for building circuits through. */ static int -count_acceptable_routers(smartlist_t *routers) +count_acceptable_nodes(smartlist_t *nodes) { - int i, n; int num=0; - routerinfo_t *r; - n = smartlist_len(routers); - for (i=0;i<n;i++) { - r = smartlist_get(routers, i); -// log_debug(LD_CIRC, + SMARTLIST_FOREACH_BEGIN(nodes, const node_t *, node) { + // log_debug(LD_CIRC, // "Contemplating whether router %d (%s) is a new option.", // i, r->nickname); - if (r->is_running == 0) { + if (! node->is_running) // log_debug(LD_CIRC,"Nope, the directory says %d is not running.",i); - goto next_i_loop; - } - if (r->is_valid == 0) { + continue; + if (! node->is_valid) // log_debug(LD_CIRC,"Nope, the directory says %d is not valid.",i); - goto next_i_loop; + continue; + if (! node_has_descriptor(node)) + continue; /* XXX This clause makes us count incorrectly: if AllowInvalidRouters * allows this node in some places, then we're getting an inaccurate * count. For now, be conservative and don't count it. But later we * should try to be smarter. */ - } - num++; + ++num; + } SMARTLIST_FOREACH_END(node); + // log_debug(LD_CIRC,"I like %d. num_acceptable_routers now %d.",i, num); - next_i_loop: - ; /* C requires an explicit statement after the label */ - } return num; } @@ -2967,31 +2964,31 @@ onion_append_to_cpath(crypt_path_t **head_ptr, crypt_path_t *new_hop) * circuit. In particular, make sure we don't pick the exit node or its * family, and make sure we don't duplicate any previous nodes or their * families. */ -static routerinfo_t * +static const node_t * choose_good_middle_server(uint8_t purpose, cpath_build_state_t *state, crypt_path_t *head, int cur_len) { int i; - routerinfo_t *r, *choice; + const node_t *r, *choice; crypt_path_t *cpath; smartlist_t *excluded; or_options_t *options = get_options(); - router_crn_flags_t flags = 0; + router_crn_flags_t flags = CRN_NEED_DESC; tor_assert(_CIRCUIT_PURPOSE_MIN <= purpose && purpose <= _CIRCUIT_PURPOSE_MAX); log_debug(LD_CIRC, "Contemplating intermediate hop: random choice."); excluded = smartlist_create(); - if ((r = build_state_get_exit_router(state))) { - smartlist_add(excluded, r); - routerlist_add_family(excluded, r); + if ((r = build_state_get_exit_node(state))) { + smartlist_add(excluded, (void*) r); + nodelist_add_node_family(excluded, r); } for (i = 0, cpath = head; i < cur_len; ++i, cpath=cpath->next) { - if ((r = router_get_by_digest(cpath->extend_info->identity_digest))) { - smartlist_add(excluded, r); - routerlist_add_family(excluded, r); + if ((r = node_get_by_id(cpath->extend_info->identity_digest))) { + smartlist_add(excluded, (void*)r); + nodelist_add_node_family(excluded, r); } } @@ -3014,44 +3011,45 @@ choose_good_middle_server(uint8_t purpose, * If <b>state</b> is NULL, we're choosing a router to serve as an entry * guard, not for any particular circuit. */ -static routerinfo_t * +static const node_t * choose_good_entry_server(uint8_t purpose, cpath_build_state_t *state) { - routerinfo_t *r, *choice; + const node_t *choice; smartlist_t *excluded; or_options_t *options = get_options(); - router_crn_flags_t flags = CRN_NEED_GUARD; + router_crn_flags_t flags = CRN_NEED_GUARD|CRN_NEED_DESC; + const node_t *node; if (state && options->UseEntryGuards && (purpose != CIRCUIT_PURPOSE_TESTING || options->BridgeRelay)) { + /* This is request for an entry server to use for a regular circuit, + * and we use entry guard nodes. Just return one of the guard nodes. */ return choose_random_entry(state); } excluded = smartlist_create(); - if (state && (r = build_state_get_exit_router(state))) { - smartlist_add(excluded, r); - routerlist_add_family(excluded, r); + 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); } if (firewall_is_fascist_or()) { - /*XXXX This could slow things down a lot; use a smarter implementation */ - /* exclude all ORs that listen on the wrong port, if anybody notices. */ - routerlist_t *rl = router_get_routerlist(); - int i; - - for (i=0; i < smartlist_len(rl->routers); i++) { - r = smartlist_get(rl->routers, i); - if (!fascist_firewall_allows_or(r)) - smartlist_add(excluded, r); - } + /* Exclude all ORs that we can't reach through our firewall */ + smartlist_t *nodes = nodelist_get_list(); + SMARTLIST_FOREACH(nodes, const node_t *, node, { + if (!fascist_firewall_allows_node(node)) + smartlist_add(excluded, (void*)node); + }); } - /* and exclude current entry guards, if applicable */ + /* and exclude current entry guards and their families, if applicable */ if (options->UseEntryGuards && entry_guards) { SMARTLIST_FOREACH(entry_guards, entry_guard_t *, entry, { - if ((r = router_get_by_digest(entry->identity))) { - smartlist_add(excluded, r); - routerlist_add_family(excluded, r); + if ((node = node_get_by_id(entry->identity))) { + smartlist_add(excluded, (void*)node); + nodelist_add_node_family(excluded, node); } }); } @@ -3107,14 +3105,18 @@ onion_extend_cpath(origin_circuit_t *circ) if (cur_len == state->desired_path_len - 1) { /* Picking last node */ info = extend_info_dup(state->chosen_exit); } else if (cur_len == 0) { /* picking first node */ - routerinfo_t *r = choose_good_entry_server(purpose, state); - if (r) - info = extend_info_from_router(r); + const node_t *r = choose_good_entry_server(purpose, state); + if (r) { + info = extend_info_from_node(r); + tor_assert(info); + } } else { - routerinfo_t *r = + const node_t *r = choose_good_middle_server(purpose, state, circ->cpath, cur_len); - if (r) - info = extend_info_from_router(r); + if (r) { + info = extend_info_from_node(r); + tor_assert(info); + } } if (!info) { @@ -3173,7 +3175,7 @@ extend_info_alloc(const char *nickname, const char *digest, /** Allocate and return a new extend_info_t that can be used to build a * circuit to or through the router <b>r</b>. */ extend_info_t * -extend_info_from_router(routerinfo_t *r) +extend_info_from_router(const routerinfo_t *r) { tor_addr_t addr; tor_assert(r); @@ -3182,6 +3184,29 @@ extend_info_from_router(routerinfo_t *r) r->onion_pkey, &addr, r->or_port); } +/** Allocate and return a new extend_info that can be used to build a ircuit + * to or through the node <b>node</b>. May return NULL if there is not + * enough info about <b>node</b> to extend to it--for example, if there + * is no routerinfo_t or microdesc_t. + **/ +extend_info_t * +extend_info_from_node(const node_t *node) +{ + if (node->ri) { + return extend_info_from_router(node->ri); + } else if (node->rs && node->md) { + tor_addr_t addr; + tor_addr_from_ipv4h(&addr, node->rs->addr); + return extend_info_alloc(node->rs->nickname, + node->identity, + node->md->onion_pkey, + &addr, + node->rs->or_port); + } else { + return NULL; + } +} + /** Release storage held by an extend_info_t struct. */ void extend_info_free(extend_info_t *info) @@ -3212,12 +3237,12 @@ extend_info_dup(extend_info_t *info) * If there is no chosen exit, or if we don't know the routerinfo_t for * the chosen exit, return NULL. */ -routerinfo_t * -build_state_get_exit_router(cpath_build_state_t *state) +const node_t * +build_state_get_exit_node(cpath_build_state_t *state) { if (!state || !state->chosen_exit) return NULL; - return router_get_by_digest(state->chosen_exit->identity_digest); + return node_get_by_id(state->chosen_exit->identity_digest); } /** Return the nickname for the chosen exit router in <b>state</b>. If @@ -3239,9 +3264,8 @@ build_state_get_exit_nickname(cpath_build_state_t *state) * * If it's not usable, set *<b>reason</b> to a static string explaining why. */ -/*XXXX take a routerstatus, not a routerinfo. */ static int -entry_guard_set_status(entry_guard_t *e, routerinfo_t *ri, +entry_guard_set_status(entry_guard_t *e, const node_t *node, time_t now, or_options_t *options, const char **reason) { char buf[HEX_DIGEST_LEN+1]; @@ -3250,16 +3274,17 @@ entry_guard_set_status(entry_guard_t *e, routerinfo_t *ri, *reason = NULL; /* Do we want to mark this guard as bad? */ - if (!ri) + if (!node) *reason = "unlisted"; - else if (!ri->is_running) + else if (!node->is_running) *reason = "down"; - else if (options->UseBridges && ri->purpose != ROUTER_PURPOSE_BRIDGE) + else if (options->UseBridges && (!node->ri || + node->ri->purpose != ROUTER_PURPOSE_BRIDGE)) *reason = "not a bridge"; - else if (!options->UseBridges && !ri->is_possible_guard && - !routerset_contains_router(options->EntryNodes,ri)) + else if (!options->UseBridges && !node->is_possible_guard && + !routerset_contains_node(options->EntryNodes,node)) *reason = "not recommended as a guard"; - else if (routerset_contains_router(options->ExcludeNodes, ri)) + else if (routerset_contains_node(options->ExcludeNodes, node)) *reason = "excluded"; if (*reason && ! e->bad_since) { @@ -3303,7 +3328,7 @@ entry_is_time_to_retry(entry_guard_t *e, time_t now) return now > (e->last_attempted + 36*60*60); } -/** Return the router corresponding to <b>e</b>, if <b>e</b> is +/** Return the node corresponding to <b>e</b>, if <b>e</b> is * working well enough that we are willing to use it as an entry * right now. (Else return NULL.) In particular, it must be * - Listed as either up or never yet contacted; @@ -3317,11 +3342,11 @@ entry_is_time_to_retry(entry_guard_t *e, time_t now) * * If the answer is no, set *<b>msg</b> to an explanation of why. */ -static INLINE routerinfo_t * +static INLINE const node_t * entry_is_live(entry_guard_t *e, int need_uptime, int need_capacity, int assume_reachable, const char **msg) { - routerinfo_t *r; + const node_t *node; or_options_t *options = get_options(); tor_assert(msg); @@ -3335,33 +3360,36 @@ entry_is_live(entry_guard_t *e, int need_uptime, int need_capacity, *msg = "unreachable"; return NULL; } - r = router_get_by_digest(e->identity); - if (!r) { + node = node_get_by_id(e->identity); + if (!node || !node_has_descriptor(node)) { *msg = "no descriptor"; return NULL; } - if (get_options()->UseBridges && r->purpose != ROUTER_PURPOSE_BRIDGE) { - *msg = "not a bridge"; - return NULL; - } - if (!get_options()->UseBridges && r->purpose != ROUTER_PURPOSE_GENERAL) { - *msg = "not general-purpose"; - return NULL; + if (get_options()->UseBridges) { + if (node_get_purpose(node) != ROUTER_PURPOSE_BRIDGE) { + *msg = "not a 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_router(options->EntryNodes, r)) { + routerset_contains_node(options->EntryNodes, node)) { /* they asked for it, they get it */ need_uptime = need_capacity = 0; } - if (router_is_unreliable(r, need_uptime, need_capacity, 0)) { + if (node_is_unreliable(node, need_uptime, need_capacity, 0)) { *msg = "not fast/stable"; return NULL; } - if (!fascist_firewall_allows_or(r)) { + if (!fascist_firewall_allows_node(node)) { *msg = "unreachable by config"; return NULL; } - return r; + return node; } /** Return the number of entry guards that we think are usable. */ @@ -3459,15 +3487,15 @@ control_event_guard_deferred(void) * If <b>chosen</b> is defined, use that one, and if it's not * already in our entry_guards list, put it at the *beginning*. * Else, put the one we pick at the end of the list. */ -static routerinfo_t * -add_an_entry_guard(routerinfo_t *chosen, int reset_status) +static const node_t * +add_an_entry_guard(const node_t *chosen, int reset_status) { - routerinfo_t *router; + const node_t *node; entry_guard_t *entry; if (chosen) { - router = chosen; - entry = is_an_entry_guard(router->cache_info.identity_digest); + node = chosen; + entry = is_an_entry_guard(node->identity); if (entry) { if (reset_status) { entry->bad_since = 0; @@ -3476,14 +3504,15 @@ add_an_entry_guard(routerinfo_t *chosen, int reset_status) return NULL; } } else { - router = choose_good_entry_server(CIRCUIT_PURPOSE_C_GENERAL, NULL); - if (!router) + node = choose_good_entry_server(CIRCUIT_PURPOSE_C_GENERAL, NULL); + if (!node) return NULL; } entry = tor_malloc_zero(sizeof(entry_guard_t)); - log_info(LD_CIRC, "Chose '%s' as new entry guard.", router->nickname); - strlcpy(entry->nickname, router->nickname, sizeof(entry->nickname)); - memcpy(entry->identity, router->cache_info.identity_digest, DIGEST_LEN); + log_info(LD_CIRC, "Chose '%s' as new entry guard.", + node_get_nickname(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 * is to a) spread out when Tor clients rotate their guards, so they * don't all select them on the same day, and b) avoid leaving a @@ -3498,7 +3527,7 @@ add_an_entry_guard(routerinfo_t *chosen, int reset_status) control_event_guard(entry->nickname, entry->identity, "NEW"); control_event_guard_deferred(); log_entry_guards(LOG_INFO); - return router; + return node; } /** If the use of entry guards is configured, choose more entry guards @@ -3652,7 +3681,7 @@ entry_guards_compute_status(or_options_t *options, time_t now) reasons = digestmap_new(); SMARTLIST_FOREACH_BEGIN(entry_guards, entry_guard_t *, entry) { - routerinfo_t *r = router_get_by_digest(entry->identity); + const node_t *r = node_get_by_id(entry->identity); const char *reason = NULL; if (entry_guard_set_status(entry, r, now, options, &reason)) changed = 1; @@ -3673,7 +3702,7 @@ entry_guards_compute_status(or_options_t *options, time_t now) SMARTLIST_FOREACH_BEGIN(entry_guards, entry_guard_t *, entry) { const char *reason = digestmap_get(reasons, entry->identity); const char *live_msg = ""; - routerinfo_t *r = entry_is_live(entry, 0, 1, 0, &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.", entry->nickname, entry->unreachable_since ? "unreachable" : "reachable", @@ -3790,7 +3819,7 @@ entry_guard_register_connect_status(const char *digest, int succeeded, break; if (e->made_contact) { const char *msg; - routerinfo_t *r = entry_is_live(e, 0, 1, 1, &msg); + const node_t *r = entry_is_live(e, 0, 1, 1, &msg); if (r && e->unreachable_since) { refuse_conn = 1; e->can_retry = 1; @@ -3831,7 +3860,7 @@ entry_nodes_should_be_added(void) static void entry_guards_prepend_from_config(or_options_t *options) { - smartlist_t *entry_routers, *entry_fps; + smartlist_t *entry_nodes, *entry_fps; smartlist_t *old_entry_guards_on_list, *old_entry_guards_not_on_list; tor_assert(entry_guards); @@ -3851,22 +3880,22 @@ entry_guards_prepend_from_config(or_options_t *options) tor_free(string); } - entry_routers = smartlist_create(); + 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. */ - /* XXXX022 Now that we allow countries and IP ranges in EntryNodes, this is - * potentially an enormous list. For now, we disable such values for - * EntryNodes in options_validate(); really, this wants a better solution. - * Perhaps we should do this calculation once whenever the list of routers - * changes or the entrynodes setting changes. - */ - routerset_get_all_routers(entry_routers, options->EntryNodes, 0); - SMARTLIST_FOREACH(entry_routers, routerinfo_t *, ri, - smartlist_add(entry_fps,ri->cache_info.identity_digest)); + /* 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); + SMARTLIST_FOREACH(entry_nodes, const node_t *,node, + smartlist_add(entry_fps, (void*)node->identity)); + SMARTLIST_FOREACH(entry_guards, entry_guard_t *, e, { if (smartlist_digest_isin(entry_fps, e->identity)) smartlist_add(old_entry_guards_on_list, e); @@ -3875,9 +3904,9 @@ entry_guards_prepend_from_config(or_options_t *options) }); /* Remove all currently configured entry guards from entry_routers. */ - SMARTLIST_FOREACH(entry_routers, routerinfo_t *, ri, { - if (is_an_entry_guard(ri->cache_info.identity_digest)) { - SMARTLIST_DEL_CURRENT(entry_routers, ri); + SMARTLIST_FOREACH(entry_nodes, const node_t *, node, { + if (is_an_entry_guard(node->identity)) { + SMARTLIST_DEL_CURRENT(entry_nodes, node); } }); @@ -3886,8 +3915,8 @@ entry_guards_prepend_from_config(or_options_t *options) /* First, the previously configured guards that are in EntryNodes. */ smartlist_add_all(entry_guards, old_entry_guards_on_list); /* Next, the rest of EntryNodes */ - SMARTLIST_FOREACH(entry_routers, routerinfo_t *, ri, { - add_an_entry_guard(ri, 0); + 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 */ @@ -3898,7 +3927,7 @@ entry_guards_prepend_from_config(or_options_t *options) smartlist_add_all(entry_guards, old_entry_guards_not_on_list); } - smartlist_free(entry_routers); + smartlist_free(entry_nodes); smartlist_free(entry_fps); smartlist_free(old_entry_guards_on_list); smartlist_free(old_entry_guards_not_on_list); @@ -3936,21 +3965,22 @@ entry_list_is_totally_static(or_options_t *options) * make sure not to pick this circuit's exit or any node in the * exit's family. If <b>state</b> is NULL, we're looking for a random * guard (likely a bridge). */ -routerinfo_t * +const node_t * choose_random_entry(cpath_build_state_t *state) { or_options_t *options = get_options(); smartlist_t *live_entry_guards = smartlist_create(); smartlist_t *exit_family = smartlist_create(); - routerinfo_t *chosen_exit = state?build_state_get_exit_router(state) : NULL; - routerinfo_t *r = NULL; + const node_t *chosen_exit = + state?build_state_get_exit_node(state) : NULL; + const node_t *node = NULL; int need_uptime = state ? state->need_uptime : 0; int need_capacity = state ? state->need_capacity : 0; int preferred_min, consider_exit_family = 0; if (chosen_exit) { - smartlist_add(exit_family, chosen_exit); - routerlist_add_family(exit_family, chosen_exit); + smartlist_add(exit_family, (void*) chosen_exit); + nodelist_add_node_family(exit_family, chosen_exit); consider_exit_family = 1; } @@ -3966,16 +3996,15 @@ choose_random_entry(cpath_build_state_t *state) retry: smartlist_clear(live_entry_guards); - SMARTLIST_FOREACH(entry_guards, entry_guard_t *, entry, - { + SMARTLIST_FOREACH_BEGIN(entry_guards, entry_guard_t *, entry) { const char *msg; - r = entry_is_live(entry, need_uptime, need_capacity, 0, &msg); - if (!r) + node = entry_is_live(entry, need_uptime, need_capacity, 0, &msg); + if (!node) continue; /* down, no point */ - if (consider_exit_family && smartlist_isin(exit_family, r)) + if (consider_exit_family && smartlist_isin(exit_family, node)) continue; /* avoid relays that are family members of our exit */ if (options->EntryNodes && - !routerset_contains_router(options->EntryNodes, r)) { + !routerset_contains_node(options->EntryNodes, node)) { /* We've come to the end of our preferred entry nodes. */ if (smartlist_len(live_entry_guards)) goto choose_and_finish; /* only choose from the ones we like */ @@ -3988,7 +4017,7 @@ choose_random_entry(cpath_build_state_t *state) "No relays from EntryNodes available. Using others."); } } - smartlist_add(live_entry_guards, r); + smartlist_add(live_entry_guards, (void*)node); if (!entry->made_contact) { /* Always start with the first not-yet-contacted entry * guard. Otherwise we might add several new ones, pick @@ -3998,7 +4027,7 @@ choose_random_entry(cpath_build_state_t *state) } if (smartlist_len(live_entry_guards) >= options->NumEntryGuards) break; /* we have enough */ - }); + } SMARTLIST_FOREACH_END(entry); if (entry_list_is_constrained(options)) { /* If we prefer the entry nodes we've got, and we have at least @@ -4018,8 +4047,8 @@ choose_random_entry(cpath_build_state_t *state) /* 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 */ - r = add_an_entry_guard(NULL, 0); - if (r) { + node = add_an_entry_guard(NULL, 0); + if (node) { entry_guards_changed(); /* XXX we start over here in case the new node we added shares * a family with our exit node. There's a chance that we'll just @@ -4029,16 +4058,16 @@ choose_random_entry(cpath_build_state_t *state) goto retry; } } - if (!r && need_uptime) { + if (!node && need_uptime) { need_uptime = 0; /* try without that requirement */ goto retry; } - if (!r && need_capacity) { + if (!node && need_capacity) { /* still no? last attempt, try without requiring capacity */ need_capacity = 0; goto retry; } - if (!r && entry_list_is_constrained(options) && consider_exit_family) { + 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 * bridges/entry guards, then be flexible about families. */ @@ -4052,16 +4081,16 @@ choose_random_entry(cpath_build_state_t *state) if (entry_list_is_constrained(options)) { /* We need to weight by bandwidth, because our bridges or entryguards * were not already selected proportional to their bandwidth. */ - r = routerlist_sl_choose_by_bandwidth(live_entry_guards, WEIGHT_FOR_GUARD); + node = node_sl_choose_by_bandwidth(live_entry_guards, WEIGHT_FOR_GUARD); } else { /* We choose uniformly at random here, because choose_good_entry_server() * already weights its choices by bandwidth, so we don't want to * *double*-weight our guard selection. */ - r = smartlist_choose(live_entry_guards); + node = smartlist_choose(live_entry_guards); } smartlist_free(live_entry_guards); smartlist_free(exit_family); - return r; + return node; } /** Parse <b>state</b> and learn about the entry guards it describes. @@ -4308,7 +4337,7 @@ getinfo_helper_entry_guards(control_connection_t *conn, char *c = tor_malloc(len); const char *status = NULL; time_t when = 0; - routerinfo_t *ri; + const node_t *node; if (!e->made_contact) { status = "never-connected"; @@ -4319,9 +4348,9 @@ getinfo_helper_entry_guards(control_connection_t *conn, status = "up"; } - ri = router_get_by_digest(e->identity); - if (ri) { - router_get_verbose_nickname(nbuf, ri); + node = node_get_by_id(e->identity); + if (node) { + node_get_verbose_nickname(node, nbuf); } else { nbuf[0] = '$'; base16_encode(nbuf+1, sizeof(nbuf)-1, e->identity, DIGEST_LEN); @@ -4398,7 +4427,7 @@ get_configured_bridge_by_addr_port_digest(tor_addr_t *addr, uint16_t port, /** Wrapper around get_configured_bridge_by_addr_port_digest() to look * it up via router descriptor <b>ri</b>. */ static bridge_info_t * -get_configured_bridge_by_routerinfo(routerinfo_t *ri) +get_configured_bridge_by_routerinfo(const routerinfo_t *ri) { tor_addr_t addr; tor_addr_from_ipv4h(&addr, ri->addr); @@ -4408,7 +4437,7 @@ get_configured_bridge_by_routerinfo(routerinfo_t *ri) /** Return 1 if <b>ri</b> is one of our known bridges, else 0. */ int -routerinfo_is_a_configured_bridge(routerinfo_t *ri) +routerinfo_is_a_configured_bridge(const routerinfo_t *ri) { return get_configured_bridge_by_routerinfo(ri) ? 1 : 0; } @@ -4567,14 +4596,17 @@ learned_bridge_descriptor(routerinfo_t *ri, int from_cache) int first = !any_bridge_descriptors_known(); bridge_info_t *bridge = get_configured_bridge_by_routerinfo(ri); time_t now = time(NULL); - ri->is_running = 1; + router_set_status(ri->cache_info.identity_digest, 1); if (bridge) { /* if we actually want to use this one */ + const 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); - add_an_entry_guard(ri, 1); + node = node_get_by_id(ri->cache_info.identity_digest); + tor_assert(node); + add_an_entry_guard(node, 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 @@ -4628,19 +4660,18 @@ any_pending_bridge_descriptor_fetches(void) static int entries_retry_helper(or_options_t *options, int act) { - routerinfo_t *ri; + const node_t *node; int any_known = 0; int any_running = 0; - int purpose = options->UseBridges ? - ROUTER_PURPOSE_BRIDGE : ROUTER_PURPOSE_GENERAL; + int need_bridges = options->UseBridges != 0; if (!entry_guards) entry_guards = smartlist_create(); - SMARTLIST_FOREACH(entry_guards, entry_guard_t *, e, - { - ri = router_get_by_digest(e->identity); - if (ri && ri->purpose == purpose) { + SMARTLIST_FOREACH_BEGIN(entry_guards, entry_guard_t *, e) { + node = node_get_by_id(e->identity); + if (node && node_has_descriptor(node) && + node_is_bridge(node) == need_bridges) { any_known = 1; - if (ri->is_running) + if (node->is_running) any_running = 1; /* some entry is both known and running */ else if (act) { /* Mark all current connections to this OR as unhealthy, since @@ -4649,15 +4680,15 @@ entries_retry_helper(or_options_t *options, int act) * the node down and undermine the retry attempt. We mark even * the established conns, since if the network just came back * we'll want to attach circuits to fresh conns. */ - connection_or_set_bad_connections(ri->cache_info.identity_digest, 1); + connection_or_set_bad_connections(node->identity, 1); /* mark this entry node for retry */ - router_set_status(ri->cache_info.identity_digest, 1); + router_set_status(node->identity, 1); e->can_retry = 1; e->bad_since = 0; } } - }); + } SMARTLIST_FOREACH_END(e); log_debug(LD_DIR, "%d: any_known %d, any_running %d", act, any_known, any_running); return any_known && !any_running; diff --git a/src/or/circuitbuild.h b/src/or/circuitbuild.h index 888bf9d25..7c125e96b 100644 --- a/src/or/circuitbuild.h +++ b/src/or/circuitbuild.h @@ -44,10 +44,11 @@ void onion_append_to_cpath(crypt_path_t **head_ptr, crypt_path_t *new_hop); extend_info_t *extend_info_alloc(const char *nickname, const char *digest, crypto_pk_env_t *onion_key, const tor_addr_t *addr, uint16_t port); -extend_info_t *extend_info_from_router(routerinfo_t *r); +extend_info_t *extend_info_from_router(const routerinfo_t *r); +extend_info_t *extend_info_from_node(const node_t *node); extend_info_t *extend_info_dup(extend_info_t *info); void extend_info_free(extend_info_t *info); -routerinfo_t *build_state_get_exit_router(cpath_build_state_t *state); +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); @@ -55,7 +56,7 @@ 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); -routerinfo_t *choose_random_entry(cpath_build_state_t *state); +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); int getinfo_helper_entry_guards(control_connection_t *conn, @@ -63,9 +64,9 @@ int getinfo_helper_entry_guards(control_connection_t *conn, const char **errmsg); void clear_bridge_list(void); -int routerinfo_is_a_configured_bridge(routerinfo_t *ri); -void -learned_router_identity(tor_addr_t *addr, uint16_t port, const char *digest); +int routerinfo_is_a_configured_bridge(const routerinfo_t *ri); +void learned_router_identity(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); void retry_bridge_descriptor_fetch_directly(const char *digest); diff --git a/src/or/circuitlist.c b/src/or/circuitlist.c index fb4b69be0..205b0a89a 100644 --- a/src/or/circuitlist.c +++ b/src/or/circuitlist.c @@ -19,6 +19,7 @@ #include "connection_or.h" #include "control.h" #include "networkstatus.h" +#include "nodelist.h" #include "onion.h" #include "relay.h" #include "rendclient.h" @@ -86,10 +87,7 @@ orconn_circid_circuit_map_t *_last_circid_orconn_ent = NULL; /** Implementation helper for circuit_set_{p,n}_circid_orconn: A circuit ID * and/or or_connection for circ has just changed from <b>old_conn, old_id</b> * to <b>conn, id</b>. Adjust the conn,circid map as appropriate, removing - * the old entry (if any) and adding a new one. If <b>active</b> is true, - * remove the circuit from the list of active circuits on old_conn and add it - * to the list of active circuits on conn. - * XXX "active" isn't an arg anymore */ + * the old entry (if any) and adding a new one. */ static void circuit_set_circid_orconn_helper(circuit_t *circ, int direction, circid_t id, @@ -396,8 +394,7 @@ circuit_initial_package_window(void) static void init_circuit_base(circuit_t *circ) { - circ->timestamp_created = time(NULL); - tor_gettimeofday(&circ->highres_created); + tor_gettimeofday(&circ->timestamp_created); circ->package_window = circuit_initial_package_window(); circ->deliver_window = CIRCWINDOW_START; @@ -609,7 +606,8 @@ circuit_dump_details(int severity, circuit_t *circ, int conn_array_index, log(severity, LD_CIRC, "Conn %d has %s circuit: circID %d (other side %d), " "state %d (%s), born %d:", conn_array_index, type, this_circid, other_circid, circ->state, - circuit_state_to_string(circ->state), (int)circ->timestamp_created); + circuit_state_to_string(circ->state), + (int)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)); } @@ -946,15 +944,15 @@ circuit_find_to_cannibalize(uint8_t purpose, extend_info_t *info, if (info) { /* need to make sure we don't duplicate hops */ crypt_path_t *hop = circ->cpath; - routerinfo_t *ri1 = router_get_by_digest(info->identity_digest); + const node_t *ri1 = node_get_by_id(info->identity_digest); do { - routerinfo_t *ri2; + const node_t *ri2; if (!memcmp(hop->extend_info->identity_digest, info->identity_digest, DIGEST_LEN)) goto next; if (ri1 && - (ri2 = router_get_by_digest(hop->extend_info->identity_digest)) - && routers_in_same_family(ri1, ri2)) + (ri2 = node_get_by_id(hop->extend_info->identity_digest)) + && nodes_in_same_family(ri1, ri2)) goto next; hop=hop->next; } while (hop!=circ->cpath); diff --git a/src/or/circuituse.c b/src/or/circuituse.c index 3af0fb642..542656350 100644 --- a/src/or/circuituse.c +++ b/src/or/circuituse.c @@ -17,6 +17,7 @@ #include "connection.h" #include "connection_edge.h" #include "control.h" +#include "nodelist.h" #include "policies.h" #include "rendclient.h" #include "rendcommon.h" @@ -43,7 +44,7 @@ circuit_is_acceptable(circuit_t *circ, edge_connection_t *conn, int need_uptime, int need_internal, time_t now) { - routerinfo_t *exitrouter; + const node_t *exitnode; cpath_build_state_t *build_state; tor_assert(circ); tor_assert(conn); @@ -85,7 +86,7 @@ circuit_is_acceptable(circuit_t *circ, edge_connection_t *conn, * of the one we meant to finish at. */ build_state = TO_ORIGIN_CIRCUIT(circ)->build_state; - exitrouter = build_state_get_exit_router(build_state); + exitnode = build_state_get_exit_node(build_state); if (need_uptime && !build_state->need_uptime) return 0; @@ -93,7 +94,7 @@ circuit_is_acceptable(circuit_t *circ, edge_connection_t *conn, return 0; if (purpose == CIRCUIT_PURPOSE_C_GENERAL) { - if (!exitrouter && !build_state->onehop_tunnel) { + if (!exitnode && !build_state->onehop_tunnel) { log_debug(LD_CIRC,"Not considering circuit with unknown router."); return 0; /* this circuit is screwed and doesn't know it yet, * or is a rendezvous circuit. */ @@ -127,7 +128,7 @@ circuit_is_acceptable(circuit_t *circ, edge_connection_t *conn, return 0; } } - if (exitrouter && !connection_ap_can_use_exit(conn, exitrouter, 0)) { + if (exitnode && !connection_ap_can_use_exit(conn, exitnode, 0)) { /* can't exit from this router */ return 0; } @@ -162,7 +163,7 @@ circuit_is_better(circuit_t *a, circuit_t *b, uint8_t purpose) return 1; } else { if (a->timestamp_dirty || - a->timestamp_created > b->timestamp_created) + tor_timercmp(&a->timestamp_created, &b->timestamp_created, >)) return 1; if (CIRCUIT_IS_ORIGIN(b) && TO_ORIGIN_CIRCUIT(b)->build_state->is_internal) @@ -222,8 +223,8 @@ circuit_get_best(edge_connection_t *conn, int must_be_open, uint8_t purpose, * 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 + REND_PARALLEL_INTRO_DELAY < now) { + !must_be_open && circ->state != CIRCUIT_STATE_OPEN && + circ->timestamp_created.tv_sec + REND_PARALLEL_INTRO_DELAY < now) { intro_going_on_but_too_old = 1; continue; } @@ -312,14 +313,14 @@ circuit_expire_building(time_t now) else cutoff = general_cutoff; - if (victim->timestamp_created > cutoff) + if (victim->timestamp_created.tv_sec > 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 <= introcirc_cutoff && - victim->timestamp_created > general_cutoff) + 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."); @@ -407,15 +408,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 > 2*circ_times.close_ms/1000+1) { + if (now - victim->timestamp_created.tv_sec > + 2*circ_times.close_ms/1000+1) { log_notice(LD_CIRC, "Extremely large value for circuit build timeout: %lds. " "Assuming clock jump. Purpose %d", - (long)(now - victim->timestamp_created), + (long)(now - victim->timestamp_created.tv_sec), victim->purpose); } else if (circuit_build_times_count_close(&circ_times, - first_hop_succeeded, - victim->timestamp_created)) { + first_hop_succeeded, + victim->timestamp_created.tv_sec)) { circuit_build_times_set_timeout(&circ_times); } } @@ -473,7 +475,7 @@ circuit_stream_is_being_handled(edge_connection_t *conn, uint16_t port, int min) { circuit_t *circ; - routerinfo_t *exitrouter; + const node_t *exitnode; int num=0; time_t now = time(NULL); int need_uptime = smartlist_string_num_isin(get_options()->LongLivedPorts, @@ -489,14 +491,14 @@ circuit_stream_is_being_handled(edge_connection_t *conn, if (build_state->is_internal || build_state->onehop_tunnel) continue; - exitrouter = build_state_get_exit_router(build_state); - if (exitrouter && (!need_uptime || build_state->need_uptime)) { + exitnode = build_state_get_exit_node(build_state); + if (exitnode && (!need_uptime || build_state->need_uptime)) { int ok; if (conn) { - ok = connection_ap_can_use_exit(conn, exitrouter, 0); + ok = connection_ap_can_use_exit(conn, exitnode, 0); } else { - addr_policy_result_t r = compare_addr_to_addr_policy( - 0, port, exitrouter->exit_policy); + addr_policy_result_t r; + r = compare_addr_to_node_policy(0, port, exitnode); ok = r != ADDR_POLICY_REJECTED && r != ADDR_POLICY_PROBABLY_REJECTED; } if (ok) { @@ -563,7 +565,7 @@ circuit_predict_and_launch_new(void) log_info(LD_CIRC, "Have %d clean circs (%d internal), need another exit circ.", num, num_internal); - circuit_launch_by_router(CIRCUIT_PURPOSE_C_GENERAL, NULL, flags); + circuit_launch(CIRCUIT_PURPOSE_C_GENERAL, flags); return; } @@ -575,7 +577,7 @@ circuit_predict_and_launch_new(void) "Have %d clean circs (%d internal), need another internal " "circ for my hidden service.", num, num_internal); - circuit_launch_by_router(CIRCUIT_PURPOSE_C_GENERAL, NULL, flags); + circuit_launch(CIRCUIT_PURPOSE_C_GENERAL, flags); return; } @@ -593,7 +595,7 @@ circuit_predict_and_launch_new(void) "Have %d clean circs (%d uptime-internal, %d internal), need" " another hidden service circ.", num, num_uptime_internal, num_internal); - circuit_launch_by_router(CIRCUIT_PURPOSE_C_GENERAL, NULL, flags); + circuit_launch(CIRCUIT_PURPOSE_C_GENERAL, flags); return; } @@ -606,7 +608,7 @@ circuit_predict_and_launch_new(void) flags = CIRCLAUNCH_NEED_CAPACITY; log_info(LD_CIRC, "Have %d clean circs need another buildtime test circ.", num); - circuit_launch_by_router(CIRCUIT_PURPOSE_C_GENERAL, NULL, flags); + circuit_launch(CIRCUIT_PURPOSE_C_GENERAL, flags); return; } } @@ -642,9 +644,9 @@ circuit_build_needed_circs(time_t now) circ = circuit_get_youngest_clean_open(CIRCUIT_PURPOSE_C_GENERAL); if (get_options()->RunTesting && circ && - circ->timestamp_created + TESTING_CIRCUIT_INTERVAL < now) { + circ->timestamp_created.tv_sec + TESTING_CIRCUIT_INTERVAL < now) { log_fn(LOG_INFO,"Creating a new testing circuit."); - circuit_launch_by_router(CIRCUIT_PURPOSE_C_GENERAL, NULL, 0); + circuit_launch(CIRCUIT_PURPOSE_C_GENERAL, 0); } #endif } @@ -753,7 +755,7 @@ circuit_expire_old_circuits_clientside(time_t now) 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 < cutoff) { + if (circ->timestamp_created.tv_sec < cutoff) { if (circ->purpose == CIRCUIT_PURPOSE_C_GENERAL || circ->purpose == CIRCUIT_PURPOSE_C_MEASURE_TIMEOUT || circ->purpose == CIRCUIT_PURPOSE_S_ESTABLISH_INTRO || @@ -763,7 +765,7 @@ circuit_expire_old_circuits_clientside(time_t now) 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)); + (long)(now - circ->timestamp_created.tv_sec)); 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,7 +779,7 @@ circuit_expire_old_circuits_clientside(time_t now) "Ancient non-dirty circuit %d is still around after " "%ld seconds. Purpose: %d", TO_ORIGIN_CIRCUIT(circ)->global_identifier, - (long)(now - circ->timestamp_created), + (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 */ @@ -1076,17 +1078,9 @@ static int did_circs_fail_last_period = 0; /** Launch a new circuit; see circuit_launch_by_extend_info() for * details on arguments. */ origin_circuit_t * -circuit_launch_by_router(uint8_t purpose, - routerinfo_t *exit, int flags) +circuit_launch(uint8_t purpose, int flags) { - origin_circuit_t *circ; - extend_info_t *info = NULL; - if (exit) - info = extend_info_from_router(exit); - circ = circuit_launch_by_extend_info(purpose, info, flags); - - extend_info_free(info); - return circ; + return circuit_launch_by_extend_info(purpose, NULL, flags); } /** Launch a new circuit with purpose <b>purpose</b> and exit node @@ -1123,7 +1117,7 @@ circuit_launch_by_extend_info(uint8_t purpose, /* reset the birth date of this circ, else expire_building * will see it and think it's been trying to build since it * began. */ - circ->_base.timestamp_created = time(NULL); + tor_gettimeofday(&circ->_base.timestamp_created); switch (purpose) { case CIRCUIT_PURPOSE_C_ESTABLISH_REND: case CIRCUIT_PURPOSE_S_ESTABLISH_INTRO: @@ -1256,9 +1250,9 @@ circuit_get_open_circ_or_launch(edge_connection_t *conn, uint32_t addr = 0; if (tor_inet_aton(conn->socks_request->address, &in)) addr = ntohl(in.s_addr); - if (router_exit_policy_all_routers_reject(addr, - conn->socks_request->port, - need_uptime)) { + if (router_exit_policy_all_nodes_reject(addr, + conn->socks_request->port, + need_uptime)) { log_notice(LD_APP, "No Tor server allows exit to %s:%d. Rejecting.", safe_str_client(conn->socks_request->address), @@ -1267,9 +1261,9 @@ circuit_get_open_circ_or_launch(edge_connection_t *conn, } } else { /* XXXX022 Duplicates checks in connection_ap_handshake_attach_circuit */ - routerinfo_t *router = router_get_by_nickname(conn->chosen_exit_name, 1); + const node_t *node = node_get_by_nickname(conn->chosen_exit_name, 1); int opt = conn->chosen_exit_optional; - if (router && !connection_ap_can_use_exit(conn, router, 0)) { + if (node && !connection_ap_can_use_exit(conn, node, 0)) { log_fn(opt ? LOG_INFO : LOG_WARN, LD_APP, "Requested exit point '%s' would refuse request. %s.", conn->chosen_exit_name, opt ? "Trying others" : "Closing"); @@ -1317,11 +1311,11 @@ circuit_get_open_circ_or_launch(edge_connection_t *conn, */ if (desired_circuit_purpose == CIRCUIT_PURPOSE_C_GENERAL) { if (conn->chosen_exit_name) { - routerinfo_t *r; + const node_t *r; int opt = conn->chosen_exit_optional; - r = router_get_by_nickname(conn->chosen_exit_name, 1); - if (r) { - extend_info = extend_info_from_router(r); + r = node_get_by_nickname(conn->chosen_exit_name, 1); + if (r && node_has_descriptor(r)) { + extend_info = extend_info_from_node(r); } else { log_debug(LD_DIR, "considering %d, %s", want_onehop, conn->chosen_exit_name); @@ -1571,9 +1565,9 @@ connection_ap_handshake_attach_circuit(edge_connection_t *conn) origin_circuit_t *circ=NULL; if (conn->chosen_exit_name) { - routerinfo_t *router = router_get_by_nickname(conn->chosen_exit_name, 1); + const node_t *node = node_get_by_nickname(conn->chosen_exit_name, 1); int opt = conn->chosen_exit_optional; - if (!router && !want_onehop) { + if (!node && !want_onehop) { /* We ran into this warning when trying to extend a circuit to a * hidden service directory for which we didn't have a router * descriptor. See flyspray task 767 for more details. We should @@ -1589,7 +1583,7 @@ connection_ap_handshake_attach_circuit(edge_connection_t *conn) } return -1; } - if (router && !connection_ap_can_use_exit(conn, router, 0)) { + if (node && !connection_ap_can_use_exit(conn, node, 0)) { log_fn(opt ? LOG_INFO : LOG_WARN, LD_APP, "Requested exit point '%s' would refuse request. %s.", conn->chosen_exit_name, opt ? "Trying others" : "Closing"); diff --git a/src/or/circuituse.h b/src/or/circuituse.h index 269b6c5f8..4e4cd1a4d 100644 --- a/src/or/circuituse.h +++ b/src/or/circuituse.h @@ -41,8 +41,7 @@ void circuit_build_failed(origin_circuit_t *circ); origin_circuit_t *circuit_launch_by_extend_info(uint8_t purpose, extend_info_t *info, int flags); -origin_circuit_t *circuit_launch_by_router(uint8_t purpose, - routerinfo_t *exit, int flags); +origin_circuit_t *circuit_launch(uint8_t purpose, int flags); void circuit_reset_failure_count(int timeout); int connection_ap_handshake_attach_chosen_circuit(edge_connection_t *conn, origin_circuit_t *circ, diff --git a/src/or/command.c b/src/or/command.c index ea0bbea1e..60c9184b5 100644 --- a/src/or/command.c +++ b/src/or/command.c @@ -25,6 +25,7 @@ #include "control.h" #include "cpuworker.h" #include "hibernate.h" +#include "nodelist.h" #include "onion.h" #include "relay.h" #include "router.h" @@ -267,15 +268,18 @@ command_process_create_cell(cell_t *cell, or_connection_t *conn) } if (circuit_id_in_use_on_orconn(cell->circ_id, conn)) { - routerinfo_t *router = router_get_by_digest(conn->identity_digest); + const node_t *node = node_get_by_id(conn->identity_digest); log_fn(LOG_PROTOCOL_WARN, LD_PROTOCOL, "Received CREATE cell (circID %d) for known circ. " "Dropping (age %d).", cell->circ_id, (int)(time(NULL) - conn->_base.timestamp_created)); - if (router) + if (node) { + char *p = esc_for_log(node_get_platform(node)); log_fn(LOG_PROTOCOL_WARN, LD_PROTOCOL, "Details: nickname \"%s\", platform %s.", - router->nickname, escaped(router->platform)); + node_get_nickname(node), p); + tor_free(p); + } return; } @@ -618,7 +622,7 @@ command_process_netinfo_cell(cell_t *cell, or_connection_t *conn) /** Warn when we get a netinfo skew with at least this value. */ #define NETINFO_NOTICE_SKEW 3600 if (labs(apparent_skew) > NETINFO_NOTICE_SKEW && - router_get_by_digest(conn->identity_digest)) { + router_get_by_id_digest(conn->identity_digest)) { char dbuf[64]; int severity; /*XXXX be smarter about when everybody says we are skewed. */ diff --git a/src/or/config.c b/src/or/config.c index 25f07edce..6a4e2c464 100644 --- a/src/or/config.c +++ b/src/or/config.c @@ -419,6 +419,7 @@ static config_var_t testing_tor_network_defaults[] = { V(TestingV3AuthInitialDistDelay, INTERVAL, "20 seconds"), V(TestingAuthDirTimeToLearnReachability, INTERVAL, "0 minutes"), V(TestingEstimatedDescriptorPropagationTime, INTERVAL, "0 minutes"), + V(MinUptimeHidServDirectoryV2, INTERVAL, "0 minutes"), { NULL, CONFIG_TYPE_OBSOLETE, 0, NULL } }; #undef VAR @@ -695,6 +696,11 @@ or_options_free(or_options_t *options) return; routerset_free(options->_ExcludeExitNodesUnion); + if (options->NodeFamilySets) { + SMARTLIST_FOREACH(options->NodeFamilySets, routerset_t *, + rs, routerset_free(rs)); + smartlist_free(options->NodeFamilySets); + } config_free(&options_format, options); } @@ -2354,7 +2360,7 @@ resolve_my_address(int warn_severity, or_options_t *options, int explicit_ip=1; int explicit_hostname=1; int from_interface=0; - char tmpbuf[INET_NTOA_BUF_LEN]; + char *addr_string = NULL; const char *address = options->Address; int notice_severity = warn_severity <= LOG_NOTICE ? LOG_NOTICE : warn_severity; @@ -2396,49 +2402,43 @@ resolve_my_address(int warn_severity, or_options_t *options, return -1; } from_interface = 1; - in.s_addr = htonl(interface_ip); - tor_inet_ntoa(&in,tmpbuf,sizeof(tmpbuf)); + addr = interface_ip; log_fn(notice_severity, LD_CONFIG, "Learned IP address '%s' for " - "local interface. Using that.", tmpbuf); + "local interface. Using that.", fmt_addr32(addr)); strlcpy(hostname, "<guessed from interfaces>", sizeof(hostname)); } else { /* resolved hostname into addr */ - in.s_addr = htonl(addr); - if (!explicit_hostname && - is_internal_IP(ntohl(in.s_addr), 0)) { + is_internal_IP(addr, 0)) { uint32_t interface_ip; - tor_inet_ntoa(&in,tmpbuf,sizeof(tmpbuf)); log_fn(notice_severity, LD_CONFIG, "Guessed local hostname '%s' " - "resolves to a private IP address (%s). Trying something " - "else.", hostname, tmpbuf); + "resolves to a private IP address (%s). Trying something " + "else.", hostname, fmt_addr32(addr)); if (get_interface_address(warn_severity, &interface_ip)) { log_fn(warn_severity, LD_CONFIG, "Could not get local interface IP address. Too bad."); } else if (is_internal_IP(interface_ip, 0)) { - struct in_addr in2; - in2.s_addr = htonl(interface_ip); - tor_inet_ntoa(&in2,tmpbuf,sizeof(tmpbuf)); log_fn(notice_severity, LD_CONFIG, "Interface IP address '%s' is a private address too. " - "Ignoring.", tmpbuf); + "Ignoring.", fmt_addr32(interface_ip)); } else { from_interface = 1; - in.s_addr = htonl(interface_ip); - tor_inet_ntoa(&in,tmpbuf,sizeof(tmpbuf)); + addr = interface_ip; log_fn(notice_severity, LD_CONFIG, "Learned IP address '%s' for local interface." - " Using that.", tmpbuf); + " Using that.", fmt_addr32(addr)); strlcpy(hostname, "<guessed from interfaces>", sizeof(hostname)); } } } + } else { + addr = ntohl(in.s_addr); /* set addr so that addr_string is not + * illformed */ } - tor_inet_ntoa(&in,tmpbuf,sizeof(tmpbuf)); - if (is_internal_IP(ntohl(in.s_addr), 0) && - options->_PublishServerDescriptor) { + addr_string = tor_dup_ip(addr); + if (is_internal_IP(addr, 0) && options->_PublishServerDescriptor) { /* make sure we're ok with publishing an internal IP */ if (!options->DirServers && !options->AlternateDirAuthority) { /* if they are using the default dirservers, disallow internal IPs @@ -2446,7 +2446,8 @@ resolve_my_address(int warn_severity, or_options_t *options, log_fn(warn_severity, LD_CONFIG, "Address '%s' resolves to private IP address '%s'. " "Tor servers that use the default DirServers must have public " - "IP addresses.", hostname, tmpbuf); + "IP addresses.", hostname, addr_string); + tor_free(addr_string); return -1; } if (!explicit_ip) { @@ -2454,19 +2455,20 @@ resolve_my_address(int warn_severity, or_options_t *options, * they're using an internal address. */ log_fn(warn_severity, LD_CONFIG, "Address '%s' resolves to private " "IP address '%s'. Please set the Address config option to be " - "the IP address you want to use.", hostname, tmpbuf); + "the IP address you want to use.", hostname, addr_string); + tor_free(addr_string); return -1; } } - log_debug(LD_CONFIG, "Resolved Address to '%s'.", tmpbuf); - *addr_out = ntohl(in.s_addr); + log_debug(LD_CONFIG, "Resolved Address to '%s'.", fmt_addr32(addr)); + *addr_out = addr; if (last_resolved_addr && last_resolved_addr != *addr_out) { /* Leave this as a notice, regardless of the requested severity, * at least until dynamic IP address support becomes bulletproof. */ log_notice(LD_NET, "Your IP address seems to have changed to %s. Updating.", - tmpbuf); + addr_string); ip_address_changed(0); } if (last_resolved_addr != *addr_out) { @@ -2485,11 +2487,12 @@ resolve_my_address(int warn_severity, or_options_t *options, } control_event_server_status(LOG_NOTICE, "EXTERNAL_ADDRESS ADDRESS=%s METHOD=%s %s%s", - tmpbuf, method, h?"HOSTNAME=":"", h); + addr_string, method, h?"HOSTNAME=":"", h); } last_resolved_addr = *addr_out; if (hostname_out) *hostname_out = tor_strdup(hostname); + tor_free(addr_string); return 0; } @@ -3102,17 +3105,24 @@ options_validate(or_options_t *old_options, or_options_t *options, routerset_union(options->_ExcludeExitNodesUnion,options->ExcludeNodes); } + if (options->NodeFamilies) { + options->NodeFamilySets = smartlist_create(); + for (cl = options->NodeFamilies; cl; cl = cl->next) { + routerset_t *rs = routerset_new(); + if (routerset_parse(rs, cl->value, cl->key) == 0) { + smartlist_add(options->NodeFamilySets, rs); + } else { + routerset_free(rs); + } + } + } + if (options->ExcludeNodes && options->StrictNodes) { COMPLAIN("You have asked to exclude certain relays from all positions " "in your circuits. Expect hidden services and other Tor " "features to be broken in unpredictable ways."); } - if (options->EntryNodes && !routerset_is_list(options->EntryNodes)) { - /* XXXX fix this; see entry_guards_prepend_from_config(). */ - REJECT("IPs or countries are not yet supported in EntryNodes."); - } - if (options->AuthoritativeDir) { if (!options->ContactInfo && !options->TestingTorNetwork) REJECT("Authoritative directory servers must set ContactInfo"); @@ -3567,8 +3577,12 @@ options_validate(or_options_t *old_options, or_options_t *options, if (check_nickname_list(options->MyFamily, "MyFamily", msg)) return -1; for (cl = options->NodeFamilies; cl; cl = cl->next) { - if (check_nickname_list(cl->value, "NodeFamily", msg)) + routerset_t *rs = routerset_new(); + if (routerset_parse(rs, cl->value, cl->key)) { + routerset_free(rs); return -1; + } + routerset_free(rs); } if (validate_addr_policies(options, msg) < 0) diff --git a/src/or/connection.c b/src/or/connection.c index d1b079a97..52996e8ea 100644 --- a/src/or/connection.c +++ b/src/or/connection.c @@ -1281,7 +1281,7 @@ connection_connect(connection_t *conn, const char *address, int s, inprogress = 0; char addrbuf[256]; struct sockaddr *dest_addr = (struct sockaddr*) addrbuf; - socklen_t dest_addr_len; + int dest_addr_len; or_options_t *options = get_options(); int protocol_family; @@ -1337,7 +1337,7 @@ connection_connect(connection_t *conn, const char *address, log_debug(LD_NET, "Connecting to %s:%u.", escaped_safe_str_client(address), port); - if (connect(s, dest_addr, dest_addr_len) < 0) { + if (connect(s, dest_addr, (socklen_t)dest_addr_len) < 0) { int e = tor_socket_errno(s); if (!ERRNO_IS_CONN_EINPROGRESS(e)) { /* yuck. kill it. */ diff --git a/src/or/connection.h b/src/or/connection.h index 004ede5d0..dc8c5df81 100644 --- a/src/or/connection.h +++ b/src/or/connection.h @@ -34,15 +34,21 @@ void _connection_mark_for_close(connection_t *conn,int line, const char *file); #define connection_mark_for_close(c) \ _connection_mark_for_close((c), __LINE__, _SHORT_FILE_) -#define connection_mark_and_flush(c) \ +/** + * Mark 'c' for close, but try to hold it open until all the data is written. + */ +#define _connection_mark_and_flush(c,line,file) \ do { \ connection_t *tmp_conn_ = (c); \ - _connection_mark_for_close(tmp_conn_, __LINE__, _SHORT_FILE_); \ + _connection_mark_for_close(tmp_conn_, (line), (file)); \ tmp_conn_->hold_open_until_flushed = 1; \ IF_HAS_BUFFEREVENT(tmp_conn_, \ connection_start_writing(tmp_conn_)); \ } while (0) +#define connection_mark_and_flush(c) \ + _connection_mark_and_flush((c), __LINE__, _SHORT_FILE_) + void connection_expire_held_open(void); int connection_connect(connection_t *conn, const char *address, diff --git a/src/or/connection_edge.c b/src/or/connection_edge.c index 9627631ad..22711d6ae 100644 --- a/src/or/connection_edge.c +++ b/src/or/connection_edge.c @@ -23,6 +23,7 @@ #include "dirserv.h" #include "hibernate.h" #include "main.h" +#include "nodelist.h" #include "policies.h" #include "reasons.h" #include "relay.h" @@ -90,9 +91,8 @@ _connection_mark_unattached_ap(edge_connection_t *conn, int endreason, conn->socks_request->has_finished = 1; } - _connection_mark_for_close(TO_CONN(conn), line, file); - conn->_base.hold_open_until_flushed = 1; - IF_HAS_BUFFEREVENT(TO_CONN(conn), connection_start_writing(TO_CONN(conn))); + _connection_mark_and_flush(TO_CONN(conn), line, file); + conn->end_reason = endreason; } @@ -587,7 +587,7 @@ void circuit_discard_optional_exit_enclaves(extend_info_t *info) { edge_connection_t *edge_conn; - routerinfo_t *r1, *r2; + const node_t *r1, *r2; smartlist_t *conns = get_connection_array(); SMARTLIST_FOREACH_BEGIN(conns, connection_t *, conn) { @@ -599,8 +599,8 @@ circuit_discard_optional_exit_enclaves(extend_info_t *info) if (!edge_conn->chosen_exit_optional && !edge_conn->chosen_exit_retries) continue; - r1 = router_get_by_nickname(edge_conn->chosen_exit_name, 0); - r2 = router_get_by_nickname(info->nickname, 0); + r1 = node_get_by_nickname(edge_conn->chosen_exit_name, 0); + r2 = node_get_by_id(info->identity_digest); if (!r1 || !r2 || r1 != r2) continue; tor_assert(edge_conn->socks_request); @@ -1185,7 +1185,6 @@ static char * addressmap_get_virtual_address(int type) { char buf[64]; - struct in_addr in; tor_assert(addressmap); if (type == RESOLVED_TYPE_HOSTNAME) { @@ -1206,9 +1205,7 @@ addressmap_get_virtual_address(int type) (next_virtual_addr & 0xff) == 0xff) { ++next_virtual_addr; } - in.s_addr = htonl(next_virtual_addr); - tor_inet_ntoa(&in, buf, sizeof(buf)); - if (!strmap_get(addressmap, buf)) { + if (!strmap_get(addressmap, fmt_addr32(next_virtual_addr))) { ++next_virtual_addr; break; } @@ -1575,12 +1572,12 @@ connection_ap_handshake_rewrite_and_attach(edge_connection_t *conn, return -1; } } else { - routerinfo_t *r; + const node_t *r; conn->chosen_exit_name = tor_strdup(socks->address); - r = router_get_by_nickname(conn->chosen_exit_name, 1); + r = node_get_by_nickname(conn->chosen_exit_name, 1); *socks->address = 0; if (r) { - strlcpy(socks->address, r->address, sizeof(socks->address)); + node_get_address_string(r, socks->address, sizeof(socks->address)); } else { log_warn(LD_APP, "Unrecognized server in exit address '%s.exit'. Refusing.", @@ -1631,16 +1628,16 @@ connection_ap_handshake_rewrite_and_attach(edge_connection_t *conn, if (!conn->use_begindir && !conn->chosen_exit_name && !circ) { /* see if we can find a suitable enclave exit */ - routerinfo_t *r = + const node_t *r = router_find_exact_exit_enclave(socks->address, socks->port); if (r) { log_info(LD_APP, "Redirecting address %s to exit at enclave router %s", - safe_str_client(socks->address), r->nickname); + safe_str_client(socks->address), node_get_nickname(r)); /* use the hex digest, not nickname, in case there are two routers with this nickname */ conn->chosen_exit_name = - tor_strdup(hex_str(r->cache_info.identity_digest, DIGEST_LEN)); + tor_strdup(hex_str(r->identity, DIGEST_LEN)); conn->chosen_exit_optional = 1; } } @@ -2298,13 +2295,11 @@ tell_controller_about_resolved_result(edge_connection_t *conn, answer_type == RESOLVED_TYPE_HOSTNAME)) { return; /* we already told the controller. */ } else if (answer_type == RESOLVED_TYPE_IPV4 && answer_len >= 4) { - struct in_addr in; - char buf[INET_NTOA_BUF_LEN]; - in.s_addr = get_uint32(answer); - tor_inet_ntoa(&in, buf, sizeof(buf)); + char *cp = tor_dup_ip(get_uint32(answer)); control_event_address_mapped(conn->socks_request->address, - buf, expires, NULL); - } else if (answer_type == RESOLVED_TYPE_HOSTNAME && answer_len <256) { + cp, expires, NULL); + tor_free(cp); + } else if (answer_type == RESOLVED_TYPE_HOSTNAME && answer_len < 256) { char *cp = tor_strndup(answer, answer_len); control_event_address_mapped(conn->socks_request->address, cp, expires, NULL); @@ -2896,7 +2891,7 @@ connection_edge_is_rendezvous_stream(edge_connection_t *conn) * this relay, return 0. */ int -connection_ap_can_use_exit(edge_connection_t *conn, routerinfo_t *exit, +connection_ap_can_use_exit(edge_connection_t *conn, const node_t *exit, int excluded_means_no) { or_options_t *options = get_options(); @@ -2910,10 +2905,10 @@ connection_ap_can_use_exit(edge_connection_t *conn, routerinfo_t *exit, * make sure the exit node of the existing circuit matches exactly. */ if (conn->chosen_exit_name) { - routerinfo_t *chosen_exit = - router_get_by_nickname(conn->chosen_exit_name, 1); - if (!chosen_exit || memcmp(chosen_exit->cache_info.identity_digest, - exit->cache_info.identity_digest, DIGEST_LEN)) { + const node_t *chosen_exit = + node_get_by_nickname(conn->chosen_exit_name, 1); + if (!chosen_exit || memcmp(chosen_exit->identity, + exit->identity, DIGEST_LEN)) { /* doesn't match */ // log_debug(LD_APP,"Requested node '%s', considering node '%s'. No.", // conn->chosen_exit_name, exit->nickname); @@ -2928,8 +2923,7 @@ connection_ap_can_use_exit(edge_connection_t *conn, routerinfo_t *exit, addr_policy_result_t r; if (tor_inet_aton(conn->socks_request->address, &in)) addr = ntohl(in.s_addr); - r = compare_addr_to_addr_policy(addr, conn->socks_request->port, - exit->exit_policy); + r = compare_addr_to_node_policy(addr, conn->socks_request->port, exit); if (r == ADDR_POLICY_REJECTED) return 0; /* We know the address, and the exit policy rejects it. */ if (r == ADDR_POLICY_PROBABLY_REJECTED && !conn->chosen_exit_name) @@ -2938,12 +2932,12 @@ connection_ap_can_use_exit(edge_connection_t *conn, routerinfo_t *exit, * this node, err on the side of caution. */ } else if (SOCKS_COMMAND_IS_RESOLVE(conn->socks_request->command)) { /* Don't send DNS requests to non-exit servers by default. */ - if (!conn->chosen_exit_name && policy_is_reject_star(exit->exit_policy)) + if (!conn->chosen_exit_name && node_exit_policy_rejects_all(exit)) return 0; } if (options->_ExcludeExitNodesUnion && (options->StrictNodes || excluded_means_no) && - routerset_contains_router(options->_ExcludeExitNodesUnion, exit)) { + 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. * diff --git a/src/or/connection_edge.h b/src/or/connection_edge.h index 0f7bf0780..f54d7a44e 100644 --- a/src/or/connection_edge.h +++ b/src/or/connection_edge.h @@ -47,7 +47,8 @@ int connection_exit_begin_conn(cell_t *cell, circuit_t *circ); 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, routerinfo_t *exit, +int connection_ap_can_use_exit(edge_connection_t *conn, + const node_t *exit, int excluded_means_no); void connection_ap_expire_beginning(void); void connection_ap_attach_pending(void); diff --git a/src/or/connection_or.c b/src/or/connection_or.c index 069c3e133..467f7be90 100644 --- a/src/or/connection_or.c +++ b/src/or/connection_or.c @@ -22,6 +22,7 @@ #include "geoip.h" #include "main.h" #include "networkstatus.h" +#include "nodelist.h" #include "reasons.h" #include "relay.h" #include "rephist.h" @@ -41,6 +42,8 @@ static int connection_or_check_valid_tls_handshake(or_connection_t *conn, int started_here, char *digest_rcvd_out); +static void connection_or_tls_renegotiated_cb(tor_tls_t *tls, void *_conn); + #ifdef USE_BUFFEREVENTS static void connection_or_handle_event_cb(struct bufferevent *bufev, short event, void *arg); @@ -237,6 +240,12 @@ connection_or_process_inbuf(or_connection_t *conn) } return ret; + case OR_CONN_STATE_TLS_SERVER_RENEGOTIATING: + if (tor_tls_server_got_renegotiate(conn->tls)) + connection_or_tls_renegotiated_cb(conn->tls, conn); + if (conn->_base.marked_for_close) + return 0; + /* fall through. */ case OR_CONN_STATE_OPEN: case OR_CONN_STATE_OR_HANDSHAKING: return connection_or_process_cells_from_inbuf(conn); @@ -351,7 +360,7 @@ connection_or_digest_is_known_relay(const char *id_digest) { if (router_get_consensus_status_by_id(id_digest)) return 1; /* It's in the consensus: "yes" */ - if (router_get_by_digest(id_digest)) + if (router_get_by_id_digest(id_digest)) return 1; /* Not in the consensus, but we have a descriptor for * it. Probably it was in a recent consensus. "Yes". */ return 0; @@ -438,7 +447,7 @@ connection_or_init_conn_from_address(or_connection_t *conn, const char *id_digest, int started_here) { - routerinfo_t *r = router_get_by_digest(id_digest); + const node_t *r = node_get_by_id(id_digest); connection_or_set_identity_digest(conn, id_digest); connection_or_update_token_buckets_helper(conn, 1, get_options()); @@ -446,8 +455,10 @@ connection_or_init_conn_from_address(or_connection_t *conn, tor_addr_copy(&conn->_base.addr, addr); tor_addr_copy(&conn->real_addr, addr); if (r) { + tor_addr_t node_addr; + node_get_addr(r, &node_addr); /* XXXX proposal 118 will make this more complex. */ - if (tor_addr_eq_ipv4h(&conn->_base.addr, r->addr)) + if (tor_addr_eq(&conn->_base.addr, &node_addr)) conn->is_canonical = 1; if (!started_here) { /* Override the addr/port, so our log messages will make sense. @@ -460,12 +471,12 @@ connection_or_init_conn_from_address(or_connection_t *conn, * right IP address and port 56244, that wouldn't be as helpful. now we * log the "right" port too, so we know if it's moria1 or moria2. */ - tor_addr_from_ipv4h(&conn->_base.addr, r->addr); - conn->_base.port = r->or_port; + tor_addr_copy(&conn->_base.addr, &node_addr); + conn->_base.port = node_get_orport(r); } - conn->nickname = tor_strdup(r->nickname); + conn->nickname = tor_strdup(node_get_nickname(r)); tor_free(conn->_base.address); - conn->_base.address = tor_strdup(r->address); + conn->_base.address = tor_dup_addr(&node_addr); } else { const char *n; /* If we're an authoritative directory server, we may know a @@ -906,9 +917,12 @@ connection_tls_start_handshake(or_connection_t *conn, int receiving) if (conn->bucket_cfg) bufferevent_set_rate_limit(conn->_base.bufev, conn->bucket_cfg); connection_enable_rate_limiting(TO_CONN(conn)); - bufferevent_setcb(b, connection_handle_read_cb, + + connection_configure_bufferevent_callbacks(TO_CONN(conn)); + bufferevent_setcb(b, + connection_handle_read_cb, connection_handle_write_cb, - connection_or_handle_event_cb, + connection_or_handle_event_cb,/* overriding this one*/ TO_CONN(conn)); } #endif @@ -1034,14 +1048,29 @@ connection_or_handle_event_cb(struct bufferevent *bufev, short event, tor_tls_unblock_renegotiation(conn->tls); return; /* ???? */ } - } else { - /* improved handshake, but not a client. */ + } else if (tor_tls_get_num_server_handshakes(conn->tls) == 1) { + /* improved handshake, as a server. Only got one handshake, so + * wait for the next one. */ tor_tls_set_renegotiate_callback(conn->tls, connection_or_tls_renegotiated_cb, conn); conn->_base.state = OR_CONN_STATE_TLS_SERVER_RENEGOTIATING; /* return 0; */ return; /* ???? */ + } else { + const int handshakes = tor_tls_get_num_server_handshakes(conn->tls); + tor_assert(handshakes >= 2); + if (handshakes == 2) { + /* improved handshake, as a server. Two handshakes happened already, + * so we treat renegotiation as done. + */ + connection_or_tls_renegotiated_cb(conn->tls, conn); + } else { + log_warn(LD_OR, "More than two handshakes done on connection. " + "Closing."); + connection_mark_for_close(TO_CONN(conn)); + } + return; } } connection_watch_events(TO_CONN(conn), READ_EVENT|WRITE_EVENT); @@ -1050,6 +1079,14 @@ connection_or_handle_event_cb(struct bufferevent *bufev, short event, return; } + if (event & BEV_EVENT_ERROR) { + unsigned long err; + while ((err = bufferevent_get_openssl_error(bufev))) { + tor_tls_log_one_error(conn->tls, err, LOG_WARN, LD_OR, + "handshaking (with bufferevent)"); + } + } + connection_handle_event_cb(bufev, event, arg); } #endif @@ -1105,6 +1142,9 @@ connection_or_check_valid_tls_handshake(or_connection_t *conn, started_here ? conn->_base.address : safe_str_client(conn->_base.address); const char *conn_type = started_here ? "outgoing" : "incoming"; + crypto_pk_env_t *our_identity = + started_here ? get_tlsclient_identity_key() : + get_server_identity_key(); int has_cert = 0, has_identity=0; check_no_tls_errors(); @@ -1142,7 +1182,7 @@ connection_or_check_valid_tls_handshake(or_connection_t *conn, if (identity_rcvd) { has_identity = 1; crypto_pk_get_digest(identity_rcvd, digest_rcvd_out); - if (crypto_pk_cmp_keys(get_identity_key(), identity_rcvd)<0) { + if (crypto_pk_cmp_keys(our_identity, identity_rcvd)<0) { conn->circ_id_type = CIRC_ID_TYPE_LOWER; } else { conn->circ_id_type = CIRC_ID_TYPE_HIGHER; @@ -1222,7 +1262,9 @@ connection_tls_finish_handshake(or_connection_t *conn) char digest_rcvd[DIGEST_LEN]; int started_here = connection_or_nonopen_was_started_here(conn); - log_debug(LD_HANDSHAKE,"tls handshake with %s done. verifying.", + log_debug(LD_HANDSHAKE,"%s tls handshake on %p with %s done. verifying.", + started_here?"outgoing":"incoming", + conn, safe_str_client(conn->_base.address)); directory_set_dirty(); @@ -1303,7 +1345,7 @@ connection_or_set_state_open(or_connection_t *conn) router_set_status(conn->identity_digest, 1); } else { /* only report it to the geoip module if it's not a known router */ - if (!router_get_by_digest(conn->identity_digest)) { + if (!router_get_by_id_digest(conn->identity_digest)) { if (tor_addr_family(&TO_CONN(conn)->addr) == AF_INET) { /*XXXX IP6 support ipv6 geoip.*/ uint32_t a = tor_addr_to_ipv4h(&TO_CONN(conn)->addr); @@ -1491,7 +1533,7 @@ connection_or_send_netinfo(or_connection_t *conn) { cell_t cell; time_t now = time(NULL); - routerinfo_t *me; + const routerinfo_t *me; int len; char *out; diff --git a/src/or/control.c b/src/or/control.c index 37ebfd88d..a2c9e467f 100644 --- a/src/or/control.c +++ b/src/or/control.c @@ -26,6 +26,7 @@ #include "hibernate.h" #include "main.h" #include "networkstatus.h" +#include "nodelist.h" #include "policies.h" #include "reasons.h" #include "router.h" @@ -1344,7 +1345,7 @@ getinfo_helper_misc(control_connection_t *conn, const char *question, } else if (!strcmp(question, "dir-usage")) { *answer = directory_dump_request_log(); } else if (!strcmp(question, "fingerprint")) { - routerinfo_t *me = router_get_my_routerinfo(); + const routerinfo_t *me = router_get_my_routerinfo(); if (!me) { *errmsg = "No routerdesc known; am I really a server?"; return -1; @@ -1366,8 +1367,9 @@ getinfo_helper_misc(control_connection_t *conn, const char *question, * NOTE: <b>ri_body</b> is as returned by signed_descriptor_get_body: it might * not be NUL-terminated. */ static char * -munge_extrainfo_into_routerinfo(const char *ri_body, signed_descriptor_t *ri, - signed_descriptor_t *ei) +munge_extrainfo_into_routerinfo(const char *ri_body, + const signed_descriptor_t *ri, + const signed_descriptor_t *ei) { char *out = NULL, *outp; int i; @@ -1412,16 +1414,17 @@ getinfo_helper_dir(control_connection_t *control_conn, const char *question, char **answer, const char **errmsg) { + const routerinfo_t *ri; (void) control_conn; if (!strcmpstart(question, "desc/id/")) { - routerinfo_t *ri = router_get_by_hexdigest(question+strlen("desc/id/")); + ri = router_get_by_hexdigest(question+strlen("desc/id/")); if (ri) { const char *body = signed_descriptor_get_body(&ri->cache_info); if (body) *answer = tor_strndup(body, ri->cache_info.signed_descriptor_len); } } else if (!strcmpstart(question, "desc/name/")) { - routerinfo_t *ri = router_get_by_nickname(question+strlen("desc/name/"),1); + ri = router_get_by_nickname(question+strlen("desc/name/"),1); if (ri) { const char *body = signed_descriptor_get_body(&ri->cache_info); if (body) @@ -1431,7 +1434,7 @@ getinfo_helper_dir(control_connection_t *control_conn, routerlist_t *routerlist = router_get_routerlist(); smartlist_t *sl = smartlist_create(); if (routerlist && routerlist->routers) { - SMARTLIST_FOREACH(routerlist->routers, routerinfo_t *, ri, + SMARTLIST_FOREACH(routerlist->routers, const routerinfo_t *, ri, { const char *body = signed_descriptor_get_body(&ri->cache_info); if (body) @@ -1447,7 +1450,7 @@ getinfo_helper_dir(control_connection_t *control_conn, routerlist_t *routerlist = router_get_routerlist(); smartlist_t *sl = smartlist_create(); if (routerlist && routerlist->routers) { - SMARTLIST_FOREACH(routerlist->routers, routerinfo_t *, ri, + SMARTLIST_FOREACH(routerlist->routers, const routerinfo_t *, ri, { const char *body = signed_descriptor_get_body(&ri->cache_info); signed_descriptor_t *ei = extrainfo_get_by_descriptor_digest( @@ -1465,8 +1468,8 @@ getinfo_helper_dir(control_connection_t *control_conn, SMARTLIST_FOREACH(sl, char *, c, tor_free(c)); smartlist_free(sl); } else if (!strcmpstart(question, "desc-annotations/id/")) { - routerinfo_t *ri = router_get_by_hexdigest(question+ - strlen("desc-annotations/id/")); + ri = router_get_by_hexdigest(question+ + strlen("desc-annotations/id/")); if (ri) { const char *annotations = signed_descriptor_get_annotations(&ri->cache_info); @@ -2105,7 +2108,7 @@ static int handle_control_extendcircuit(control_connection_t *conn, uint32_t len, const char *body) { - smartlist_t *router_nicknames=NULL, *routers=NULL; + smartlist_t *router_nicknames=NULL, *nodes=NULL; origin_circuit_t *circ = NULL; int zero_circ; uint8_t intended_purpose = CIRCUIT_PURPOSE_C_GENERAL; @@ -2136,8 +2139,7 @@ handle_control_extendcircuit(control_connection_t *conn, uint32_t len, if ((smartlist_len(args) == 1) || (smartlist_len(args) >= 2 && is_keyval_pair(smartlist_get(args, 1)))) { // "EXTENDCIRCUIT 0" || EXTENDCIRCUIT 0 foo=bar" - circ = circuit_launch_by_router(intended_purpose, NULL, - CIRCLAUNCH_NEED_CAPACITY); + circ = circuit_launch(intended_purpose, CIRCLAUNCH_NEED_CAPACITY); if (!circ) { connection_write_str_to_buf("551 Couldn't start circuit\r\n", conn); } else { @@ -2165,17 +2167,21 @@ handle_control_extendcircuit(control_connection_t *conn, uint32_t len, SMARTLIST_FOREACH(args, char *, cp, tor_free(cp)); smartlist_free(args); - routers = smartlist_create(); + nodes = smartlist_create(); SMARTLIST_FOREACH(router_nicknames, const char *, n, { - routerinfo_t *r = router_get_by_nickname(n, 1); - if (!r) { + const node_t *node = node_get_by_nickname(n, 1); + if (!node) { connection_printf_to_buf(conn, "552 No such router \"%s\"\r\n", n); goto done; } - smartlist_add(routers, r); + if (!node_has_descriptor(node)) { + connection_printf_to_buf(conn, "552 descriptor for \"%s\"\r\n", n); + goto done; + } + smartlist_add(nodes, (void*)node); }); - if (!smartlist_len(routers)) { + if (!smartlist_len(nodes)) { connection_write_str_to_buf("512 No router names provided\r\n", conn); goto done; } @@ -2186,9 +2192,10 @@ handle_control_extendcircuit(control_connection_t *conn, uint32_t len, } /* now circ refers to something that is ready to be extended */ - SMARTLIST_FOREACH(routers, routerinfo_t *, r, + SMARTLIST_FOREACH(nodes, const node_t *, node, { - extend_info_t *info = extend_info_from_router(r); + extend_info_t *info = extend_info_from_node(node); + tor_assert(info); /* True, since node_has_descriptor(node) == true */ circuit_append_new_exit(circ, info); extend_info_free(info); }); @@ -2222,7 +2229,7 @@ handle_control_extendcircuit(control_connection_t *conn, uint32_t len, done: SMARTLIST_FOREACH(router_nicknames, char *, n, tor_free(n)); smartlist_free(router_nicknames); - smartlist_free(routers); + smartlist_free(nodes); return 0; } @@ -2338,16 +2345,17 @@ handle_control_attachstream(control_connection_t *conn, uint32_t len, } /* Is this a single hop circuit? */ if (circ && (circuit_get_cpath_len(circ)<2 || hop==1)) { - routerinfo_t *r = NULL; - char* exit_digest; + const node_t *node = NULL; + char *exit_digest; if (circ->build_state && circ->build_state->chosen_exit && !tor_digest_is_zero(circ->build_state->chosen_exit->identity_digest)) { exit_digest = circ->build_state->chosen_exit->identity_digest; - r = router_get_by_digest(exit_digest); + node = node_get_by_id(exit_digest); } /* Do both the client and relay allow one-hop exit circuits? */ - if (!r || !r->allow_single_hop_exits || + if (!node || + !node_allows_single_hop_exits(node) || !get_options()->AllowSingleHopCircuits) { connection_write_str_to_buf( "551 Can't attach stream to this one-hop circuit.\r\n", conn); @@ -2798,8 +2806,8 @@ connection_control_process_inbuf(control_connection_t *conn) body_len = 2+strlen(buf+6)+2; /* code, msg, nul. */ set_uint16(buf+0, htons(body_len)); connection_write_to_buf(buf, 4+body_len, TO_CONN(conn)); - connection_mark_for_close(TO_CONN(conn)); - conn->_base.hold_open_until_flushed = 1; + + connection_mark_and_flush(TO_CONN(conn)); return 0; } @@ -2820,8 +2828,7 @@ connection_control_process_inbuf(control_connection_t *conn) if (data_len + conn->incoming_cmd_cur_len > MAX_COMMAND_LINE_LENGTH) { connection_write_str_to_buf("500 Line too long.\r\n", conn); connection_stop_reading(TO_CONN(conn)); - connection_mark_for_close(TO_CONN(conn)); - conn->_base.hold_open_until_flushed = 1; + connection_mark_and_flush(TO_CONN(conn)); } while (conn->incoming_cmd_len < data_len+conn->incoming_cmd_cur_len) conn->incoming_cmd_len *= 2; @@ -2880,8 +2887,7 @@ connection_control_process_inbuf(control_connection_t *conn) /* Otherwise, Quit is always valid. */ if (!strcasecmp(conn->incoming_cmd, "QUIT")) { connection_write_str_to_buf("250 closing connection\r\n", conn); - connection_mark_for_close(TO_CONN(conn)); - conn->_base.hold_open_until_flushed = 1; + connection_mark_and_flush(TO_CONN(conn)); return 0; } @@ -3175,10 +3181,10 @@ control_event_stream_status(edge_connection_t *conn, stream_status_event_t tp, static void orconn_target_get_name(char *name, size_t len, or_connection_t *conn) { - routerinfo_t *ri = router_get_by_digest(conn->identity_digest); - if (ri) { + const node_t *node = node_get_by_id(conn->identity_digest); + if (node) { tor_assert(len > MAX_VERBOSE_NICKNAME_LEN); - router_get_verbose_nickname(name, ri); + node_get_verbose_nickname(node, name); } else if (! tor_digest_is_zero(conn->identity_digest)) { name[0] = '$'; base16_encode(name+1, len-1, conn->identity_digest, @@ -3495,7 +3501,7 @@ control_event_networkstatus_changed_helper(smartlist_t *statuses, smartlist_add(strs, tor_strdup("650+")); smartlist_add(strs, tor_strdup(event_string)); smartlist_add(strs, tor_strdup("\r\n")); - SMARTLIST_FOREACH(statuses, routerstatus_t *, rs, + SMARTLIST_FOREACH(statuses, const routerstatus_t *, rs, { s = networkstatus_getinfo_helper_single(rs); if (!s) continue; @@ -3586,7 +3592,7 @@ control_event_buildtimeout_set(const circuit_build_times_t *cbt, /** Called when a single local_routerstatus_t has changed: Sends an NS event * to any controller that cares. */ int -control_event_networkstatus_changed_single(routerstatus_t *rs) +control_event_networkstatus_changed_single(const routerstatus_t *rs) { smartlist_t *statuses; int r; @@ -3595,7 +3601,7 @@ control_event_networkstatus_changed_single(routerstatus_t *rs) return 0; statuses = smartlist_create(); - smartlist_add(statuses, rs); + smartlist_add(statuses, (void*)rs); r = control_event_networkstatus_changed(statuses); smartlist_free(statuses); return r; @@ -3720,9 +3726,9 @@ control_event_guard(const char *nickname, const char *digest, { char buf[MAX_VERBOSE_NICKNAME_LEN+1]; - routerinfo_t *ri = router_get_by_digest(digest); - if (ri) { - router_get_verbose_nickname(buf, ri); + const node_t *node = node_get_by_id(digest); + if (node) { + node_get_verbose_nickname(node, buf); } else { tor_snprintf(buf, sizeof(buf), "$%s~%s", hbuf, nickname); } diff --git a/src/or/control.h b/src/or/control.h index 27ef5c37f..275c6de8e 100644 --- a/src/or/control.h +++ b/src/or/control.h @@ -53,7 +53,7 @@ int control_event_my_descriptor_changed(void); int control_event_networkstatus_changed(smartlist_t *statuses); int control_event_newconsensus(const networkstatus_t *consensus); -int control_event_networkstatus_changed_single(routerstatus_t *rs); +int control_event_networkstatus_changed_single(const routerstatus_t *rs); int control_event_general_status(int severity, const char *format, ...) CHECK_PRINTF(2,3); int control_event_client_status(int severity, const char *format, ...) diff --git a/src/or/directory.c b/src/or/directory.c index 657b210b5..a4d123d64 100644 --- a/src/or/directory.c +++ b/src/or/directory.c @@ -17,6 +17,7 @@ #include "main.h" #include "microdesc.h" #include "networkstatus.h" +#include "nodelist.h" #include "policies.h" #include "rendclient.h" #include "rendcommon.h" @@ -219,17 +220,19 @@ dir_conn_purpose_to_string(int purpose) int router_supports_extrainfo(const char *identity_digest, int is_authority) { - routerinfo_t *ri = router_get_by_digest(identity_digest); + const node_t *node = node_get_by_id(identity_digest); - if (ri) { - if (ri->caches_extra_info) + if (node && node->ri) { + if (node->ri->caches_extra_info) return 1; - if (is_authority && ri->platform && - tor_version_as_new_as(ri->platform, "Tor 0.2.0.0-alpha-dev (r10070)")) + if (is_authority && node->ri->platform && + tor_version_as_new_as(node->ri->platform, + "Tor 0.2.0.0-alpha-dev (r10070)")) return 1; } if (is_authority) { - routerstatus_t *rs = router_get_consensus_status_by_id(identity_digest); + const routerstatus_t *rs = + router_get_consensus_status_by_id(identity_digest); if (rs && rs->version_supports_extrainfo_upload) return 1; } @@ -328,7 +331,7 @@ void directory_get_from_dirserver(uint8_t dir_purpose, uint8_t router_purpose, const char *resource, int pds_flags) { - routerstatus_t *rs = NULL; + const routerstatus_t *rs = NULL; 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); @@ -400,10 +403,12 @@ directory_get_from_dirserver(uint8_t dir_purpose, uint8_t router_purpose, * 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. */ - routerinfo_t *ri = choose_random_entry(NULL); - if (ri) { + const node_t *node = choose_random_entry(NULL); + if (node && node->ri) { + /* every bridge has a routerinfo. */ tor_addr_t addr; - tor_addr_from_ipv4h(&addr, ri->addr); + routerinfo_t *ri = node->ri; + node_get_addr(node, &addr); directory_initiate_command(ri->address, &addr, ri->or_port, 0, 0, /* don't use conditional consensus url */ @@ -512,7 +517,7 @@ directory_get_from_all_authorities(uint8_t dir_purpose, /** Same as directory_initiate_command_routerstatus(), but accepts * rendezvous data to fetch a hidden service descriptor. */ void -directory_initiate_command_routerstatus_rend(routerstatus_t *status, +directory_initiate_command_routerstatus_rend(const routerstatus_t *status, uint8_t dir_purpose, uint8_t router_purpose, int anonymized_connection, @@ -522,18 +527,19 @@ directory_initiate_command_routerstatus_rend(routerstatus_t *status, time_t if_modified_since, const rend_data_t *rend_query) { - routerinfo_t *router; + const node_t *node; char address_buf[INET_NTOA_BUF_LEN+1]; struct in_addr in; const char *address; tor_addr_t addr; - router = router_get_by_digest(status->identity_digest); - if (!router && anonymized_connection) { + 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); return; - } else if (router) { - address = router->address; + } else if (node) { + node_get_address_string(node, address_buf, sizeof(address_buf)); + address = address_buf; } else { in.s_addr = htonl(status->addr); tor_inet_ntoa(&in, address_buf, sizeof(address_buf)); @@ -566,7 +572,7 @@ directory_initiate_command_routerstatus_rend(routerstatus_t *status, * want to fetch. */ void -directory_initiate_command_routerstatus(routerstatus_t *status, +directory_initiate_command_routerstatus(const routerstatus_t *status, uint8_t dir_purpose, uint8_t router_purpose, int anonymized_connection, @@ -590,7 +596,7 @@ directory_conn_is_self_reachability_test(dir_connection_t *conn) { if (conn->requested_resource && !strcmpstart(conn->requested_resource,"authority")) { - routerinfo_t *me = router_get_my_routerinfo(); + const routerinfo_t *me = router_get_my_routerinfo(); if (me && router_digest_is_me(conn->identity_digest) && tor_addr_eq_ipv4h(&conn->_base.addr, me->addr) && /*XXXX prop 118*/ @@ -1157,7 +1163,7 @@ directory_send_command(dir_connection_t *conn, case DIR_PURPOSE_FETCH_MICRODESC: tor_assert(resource); httpcommand = "GET"; - tor_asprintf(&url, "/tor/micro/%s.z", resource); + tor_asprintf(&url, "/tor/micro/%s", resource); break; case DIR_PURPOSE_UPLOAD_DIR: tor_assert(!resource); @@ -1597,7 +1603,8 @@ connection_dir_client_reached_eof(dir_connection_t *conn) "'%s:%d'. I'll try again soon.", status_code, escaped(reason), conn->_base.address, conn->_base.port); - if ((rs = router_get_consensus_status_by_id(conn->identity_digest))) + 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; @@ -3692,7 +3699,7 @@ dir_microdesc_download_failed(smartlist_t *failed, if (! consensus) return; SMARTLIST_FOREACH_BEGIN(failed, const char *, d) { - rs = router_get_consensus_status_by_descriptor_digest(consensus, d); + rs = router_get_mutable_consensus_status_by_descriptor_digest(consensus,d); if (!rs) continue; dls = &rs->dl_status; diff --git a/src/or/directory.h b/src/or/directory.h index 6fd2c0bef..5782df926 100644 --- a/src/or/directory.h +++ b/src/or/directory.h @@ -23,7 +23,7 @@ void directory_get_from_dirserver(uint8_t dir_purpose, uint8_t router_purpose, void directory_get_from_all_authorities(uint8_t dir_purpose, uint8_t router_purpose, const char *resource); -void directory_initiate_command_routerstatus(routerstatus_t *status, +void directory_initiate_command_routerstatus(const routerstatus_t *status, uint8_t dir_purpose, uint8_t router_purpose, int anonymized_connection, @@ -31,7 +31,7 @@ void directory_initiate_command_routerstatus(routerstatus_t *status, const char *payload, size_t payload_len, time_t if_modified_since); -void directory_initiate_command_routerstatus_rend(routerstatus_t *status, +void directory_initiate_command_routerstatus_rend(const routerstatus_t *status, uint8_t dir_purpose, uint8_t router_purpose, int anonymized_connection, diff --git a/src/or/dirserv.c b/src/or/dirserv.c index 75e3e8610..4f793dc74 100644 --- a/src/or/dirserv.c +++ b/src/or/dirserv.c @@ -16,6 +16,7 @@ #include "hibernate.h" #include "microdesc.h" #include "networkstatus.h" +#include "nodelist.h" #include "policies.h" #include "rephist.h" #include "router.h" @@ -65,8 +66,6 @@ static char *format_versions_list(config_line_t *ln); struct authdir_config_t; static int add_fingerprint_to_dir(const char *nickname, const char *fp, struct authdir_config_t *list); -static uint32_t dirserv_router_get_status(const routerinfo_t *router, - const char **msg); static uint32_t dirserv_get_status_impl(const char *fp, const char *nickname, const char *address, @@ -74,7 +73,8 @@ dirserv_get_status_impl(const char *fp, const char *nickname, const char *platform, const char *contact, const char **msg, int should_log); static void clear_cached_dir(cached_dir_t *d); -static signed_descriptor_t *get_signed_descriptor_by_fp(const char *fp, +static const signed_descriptor_t *get_signed_descriptor_by_fp( + const char *fp, int extrainfo, time_t publish_cutoff); static int dirserv_add_extrainfo(extrainfo_t *ei, const char **msg); @@ -303,7 +303,7 @@ dirserv_load_fingerprint_file(void) * * If the status is 'FP_REJECT' and <b>msg</b> is provided, set * *<b>msg</b> to an explanation of why. */ -static uint32_t +uint32_t dirserv_router_get_status(const routerinfo_t *router, const char **msg) { char d[DIGEST_LEN]; @@ -325,7 +325,7 @@ dirserv_router_get_status(const routerinfo_t *router, const char **msg) /** Return true if there is no point in downloading the router described by * <b>rs</b> because this directory would reject it. */ int -dirserv_would_reject_router(routerstatus_t *rs) +dirserv_would_reject_router(const routerstatus_t *rs) { uint32_t res; @@ -360,7 +360,7 @@ dirserv_get_name_status(const char *id_digest, const char *nickname) return 0; } -/** Helper: As dirserv_get_router_status, but takes the router fingerprint +/** Helper: As dirserv_router_get_status, but takes the router fingerprint * (hex, no spaces), nickname, address (used for logging only), IP address, OR * port, platform (logging only) and contact info (logging only) as arguments. * @@ -375,7 +375,7 @@ dirserv_get_status_impl(const char *id_digest, const char *nickname, const char **msg, int should_log) { int reject_unlisted = get_options()->AuthDirRejectUnlisted; - uint32_t result = 0; + uint32_t result; router_status_t *status_by_digest; if (!fingerprint_list) @@ -533,7 +533,7 @@ dirserv_router_has_valid_address(routerinfo_t *ri) */ int authdir_wants_to_reject_router(routerinfo_t *ri, const char **msg, - int complain) + int complain, int *valid_out) { /* Okay. Now check whether the fingerprint is recognized. */ uint32_t status = dirserv_router_get_status(ri, msg); @@ -574,15 +574,24 @@ authdir_wants_to_reject_router(routerinfo_t *ri, const char **msg, *msg = "Rejected: Address is not an IP, or IP is a private address."; return -1; } - /* Okay, looks like we're willing to accept this one. */ - ri->is_named = (status & FP_NAMED) ? 1 : 0; - ri->is_valid = (status & FP_INVALID) ? 0 : 1; - ri->is_bad_directory = (status & FP_BADDIR) ? 1 : 0; - ri->is_bad_exit = (status & FP_BADEXIT) ? 1 : 0; + + *valid_out = ! (status & FP_INVALID); return 0; } +/** Update the relevant flags of <b>node</b> based on our opinion as a + * directory authority in <b>authstatus</b>, as returned by + * dirserv_router_get_status or equivalent. */ +void +dirserv_set_node_flags_from_authoritative_status(node_t *node, + uint32_t authstatus) +{ + node->is_valid = (authstatus & FP_INVALID) ? 0 : 1; + node->is_bad_directory = (authstatus & FP_BADDIR) ? 1 : 0; + node->is_bad_exit = (authstatus & FP_BADEXIT) ? 1 : 0; +} + /** True iff <b>a</b> is more severe than <b>b</b>. */ static int WRA_MORE_SEVERE(was_router_added_t a, was_router_added_t b) @@ -707,7 +716,7 @@ dirserv_add_descriptor(routerinfo_t *ri, const char **msg, const char *source) * from this server. (We do this here and not in router_add_to_routerlist * because we want to be able to accept the newest router descriptor that * another authority has, so we all converge on the same one.) */ - ri_old = router_get_by_digest(ri->cache_info.identity_digest); + ri_old = router_get_mutable_by_digest(ri->cache_info.identity_digest); if (ri_old && ri_old->cache_info.published_on < ri->cache_info.published_on && router_differences_are_cosmetic(ri_old, ri) && !router_is_me(ri)) { @@ -751,8 +760,7 @@ dirserv_add_descriptor(routerinfo_t *ri, const char **msg, const char *source) routerlist_descriptors_added(changed, 0); smartlist_free(changed); if (!*msg) { - *msg = ri->is_valid ? "Descriptor for valid server accepted" : - "Descriptor for invalid server accepted"; + *msg = "Descriptor accepted"; } log_info(LD_DIRSERV, "Added descriptor from '%s' (source: %s): %s.", @@ -767,12 +775,12 @@ dirserv_add_descriptor(routerinfo_t *ri, const char **msg, const char *source) static was_router_added_t dirserv_add_extrainfo(extrainfo_t *ei, const char **msg) { - routerinfo_t *ri; + const routerinfo_t *ri; int r; tor_assert(msg); *msg = NULL; - ri = router_get_by_digest(ei->cache_info.identity_digest); + ri = router_get_by_id_digest(ei->cache_info.identity_digest); if (!ri) { *msg = "No corresponding router descriptor for extra-info descriptor"; extrainfo_free(ei); @@ -807,50 +815,60 @@ dirserv_add_extrainfo(extrainfo_t *ei, const char **msg) static void directory_remove_invalid(void) { - int i; int changed = 0; routerlist_t *rl = router_get_routerlist(); + smartlist_t *nodes = smartlist_create(); + smartlist_add_all(nodes, nodelist_get_list()); - routerlist_assert_ok(rl); - - for (i = 0; i < smartlist_len(rl->routers); ++i) { + SMARTLIST_FOREACH_BEGIN(nodes, node_t *, node) { const char *msg; - routerinfo_t *ent = smartlist_get(rl->routers, i); - uint32_t r = dirserv_router_get_status(ent, &msg); + routerinfo_t *ent = node->ri; + uint32_t r; + if (!ent) + continue; + r = dirserv_router_get_status(ent, &msg); if (r & FP_REJECT) { log_info(LD_DIRSERV, "Router '%s' is now rejected: %s", ent->nickname, msg?msg:""); routerlist_remove(rl, ent, 0, time(NULL)); - i--; changed = 1; continue; } - if (bool_neq((r & FP_NAMED), ent->is_named)) { +#if 0 + if (bool_neq((r & FP_NAMED), ent->auth_says_is_named)) { log_info(LD_DIRSERV, "Router '%s' is now %snamed.", ent->nickname, (r&FP_NAMED)?"":"un"); ent->is_named = (r&FP_NAMED)?1:0; changed = 1; } - if (bool_neq((r & FP_INVALID), !ent->is_valid)) { + if (bool_neq((r & FP_UNNAMED), ent->auth_says_is_unnamed)) { + log_info(LD_DIRSERV, + "Router '%s' is now %snamed. (FP_UNNAMED)", ent->nickname, + (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, (r&FP_INVALID) ? "in" : ""); - ent->is_valid = (r&FP_INVALID)?0:1; + node->is_valid = (r&FP_INVALID)?0:1; changed = 1; } - if (bool_neq((r & FP_BADDIR), ent->is_bad_directory)) { + if (bool_neq((r & FP_BADDIR), node->is_bad_directory)) { log_info(LD_DIRSERV, "Router '%s' is now a %s directory", ent->nickname, (r & FP_BADDIR) ? "bad" : "good"); - ent->is_bad_directory = (r&FP_BADDIR) ? 1: 0; + node->is_bad_directory = (r&FP_BADDIR) ? 1: 0; changed = 1; } - if (bool_neq((r & FP_BADEXIT), ent->is_bad_exit)) { + if (bool_neq((r & FP_BADEXIT), node->is_bad_exit)) { log_info(LD_DIRSERV, "Router '%s' is now a %s exit", ent->nickname, (r & FP_BADEXIT) ? "bad" : "good"); - ent->is_bad_exit = (r&FP_BADEXIT) ? 1: 0; + node->is_bad_exit = (r&FP_BADEXIT) ? 1: 0; changed = 1; } - } + } SMARTLIST_FOREACH_END(node); if (changed) directory_set_dirty(); @@ -893,10 +911,11 @@ directory_set_dirty(void) * as running iff <b>is_live</b> is true. */ static char * -list_single_server_status(routerinfo_t *desc, int is_live) +list_single_server_status(const routerinfo_t *desc, int is_live) { char buf[MAX_NICKNAME_LEN+HEX_DIGEST_LEN+4]; /* !nickname=$hexdigest\0 */ char *cp; + const node_t *node; tor_assert(desc); @@ -904,7 +923,8 @@ list_single_server_status(routerinfo_t *desc, int is_live) if (!is_live) { *cp++ = '!'; } - if (desc->is_valid) { + node = node_get_by_id(desc->cache_info.identity_digest); + if (node && node->is_valid) { strlcpy(cp, desc->nickname, sizeof(buf)-(cp-buf)); cp += strlen(cp); *cp++ = '='; @@ -943,6 +963,8 @@ dirserv_set_router_is_running(routerinfo_t *router, time_t now) unreachable. */ int answer; + node_t *node = node_get_mutable_by_id(router->cache_info.identity_digest); + tor_assert(node); if (router_is_me(router)) { /* We always know if we are down ourselves. */ @@ -967,7 +989,7 @@ dirserv_set_router_is_running(routerinfo_t *router, time_t now) rep_hist_note_router_unreachable(router->cache_info.identity_digest, now); } - router->is_running = answer; + node->is_running = answer; } /** Based on the routerinfo_ts in <b>routers</b>, allocate the @@ -995,6 +1017,8 @@ list_server_status_v1(smartlist_t *routers, char **router_status_out, rs_entries = smartlist_create(); SMARTLIST_FOREACH_BEGIN(routers, routerinfo_t *, ri) { + const node_t *node = node_get_by_id(ri->cache_info.identity_digest); + tor_assert(node); if (authdir) { /* Update router status in routerinfo_t. */ dirserv_set_router_is_running(ri, now); @@ -1002,12 +1026,13 @@ list_server_status_v1(smartlist_t *routers, char **router_status_out, if (for_controller) { char name_buf[MAX_VERBOSE_NICKNAME_LEN+2]; char *cp = name_buf; - if (!ri->is_running) + if (!node->is_running) *cp++ = '!'; router_get_verbose_nickname(cp, ri); smartlist_add(rs_entries, tor_strdup(name_buf)); } else if (ri->cache_info.published_on >= cutoff) { - smartlist_add(rs_entries, list_single_server_status(ri, ri->is_running)); + smartlist_add(rs_entries, list_single_server_status(ri, + node->is_running)); } } SMARTLIST_FOREACH_END(ri); @@ -1045,12 +1070,12 @@ format_versions_list(config_line_t *ln) * not hibernating, and not too old. Else return 0. */ static int -router_is_active(routerinfo_t *ri, time_t now) +router_is_active(const routerinfo_t *ri, const node_t *node, time_t now) { time_t cutoff = now - ROUTER_MAX_AGE_TO_PUBLISH; if (ri->cache_info.published_on < cutoff) return 0; - if (!ri->is_running || !ri->is_valid || ri->is_hibernating) + if (!node->is_running || !node->is_valid || ri->is_hibernating) return 0; return 1; } @@ -1151,7 +1176,7 @@ dirserv_dump_directory_to_string(char **dir_out, int directory_fetches_from_authorities(or_options_t *options) { - routerinfo_t *me; + const routerinfo_t *me; uint32_t addr; int refuseunknown; if (options->FetchDirInfoEarly) @@ -1213,7 +1238,7 @@ directory_caches_dir_info(or_options_t *options) return 0; /* We need an up-to-date view of network info if we're going to try to * block exit attempts from unknown relays. */ - return router_my_exit_policy_is_reject_star() && + return ! router_my_exit_policy_is_reject_star() && should_refuse_unknown_exits(options); } @@ -1553,7 +1578,8 @@ dirserv_regenerate_directory(void) { char *new_directory=NULL; - if (dirserv_dump_directory_to_string(&new_directory, get_identity_key())) { + if (dirserv_dump_directory_to_string(&new_directory, + get_server_identity_key())) { log_warn(LD_BUG, "Error creating directory."); tor_free(new_directory); return NULL; @@ -1583,7 +1609,7 @@ generate_runningrouters(void) char digest[DIGEST_LEN]; char published[ISO_TIME_LEN+1]; size_t len; - crypto_pk_env_t *private_key = get_identity_key(); + crypto_pk_env_t *private_key = get_server_identity_key(); char *identity_pkey; /* Identity key, DER64-encoded. */ size_t identity_pkey_len; @@ -1716,7 +1742,7 @@ static uint64_t total_exit_bandwidth = 0; /** Helper: estimate the uptime of a router given its stated uptime and the * amount of time since it last stated its stated uptime. */ static INLINE long -real_uptime(routerinfo_t *router, time_t now) +real_uptime(const routerinfo_t *router, time_t now) { if (now < router->cache_info.published_on) return router->uptime; @@ -1767,7 +1793,8 @@ dirserv_thinks_router_is_unreliable(time_t now, * been set. */ static int -dirserv_thinks_router_is_hs_dir(routerinfo_t *router, time_t now) +dirserv_thinks_router_is_hs_dir(const routerinfo_t *router, + const node_t *node, time_t now) { long uptime = real_uptime(router, now); @@ -1777,7 +1804,7 @@ dirserv_thinks_router_is_hs_dir(routerinfo_t *router, time_t now) * version is too old. */ return (router->wants_to_be_hs_dir && router->dir_port && uptime > get_options()->MinUptimeHidServDirectoryV2 && - router->is_running); + node->is_running); } /** Look through the routerlist, the Mean Time Between Failure history, and @@ -1825,19 +1852,22 @@ dirserv_compute_performance_thresholds(routerlist_t *rl) /* Weighted fractional uptime for each active router. */ wfus = tor_malloc(sizeof(double)*smartlist_len(rl->routers)); + nodelist_assert_ok(); + /* Now, fill in the arrays. */ - SMARTLIST_FOREACH(rl->routers, routerinfo_t *, ri, { - if (router_is_active(ri, now)) { + SMARTLIST_FOREACH_BEGIN(nodelist_get_list(), node_t *, node) { + routerinfo_t *ri = node->ri; + if (ri && router_is_active(ri, node, now)) { const char *id = ri->cache_info.identity_digest; uint32_t bw; - ri->is_exit = (!router_exit_policy_rejects_all(ri) && - exit_policy_is_general_exit(ri->exit_policy)); + node->is_exit = (!router_exit_policy_rejects_all(ri) && + exit_policy_is_general_exit(ri->exit_policy)); uptimes[n_active] = (uint32_t)real_uptime(ri, now); mtbfs[n_active] = rep_hist_get_stability(id, now); tks [n_active] = rep_hist_get_weighted_time_known(id, now); bandwidths[n_active] = bw = router_get_advertised_bandwidth(ri); total_bandwidth += bw; - if (ri->is_exit && !ri->is_bad_exit) { + if (node->is_exit && !node->is_bad_exit) { total_exit_bandwidth += bw; } else { bandwidths_excluding_exits[n_active_nonexit] = bw; @@ -1845,7 +1875,7 @@ dirserv_compute_performance_thresholds(routerlist_t *rl) } ++n_active; } - }); + } SMARTLIST_FOREACH_END(node); /* Now, compute thresholds. */ if (n_active) { @@ -1871,15 +1901,17 @@ dirserv_compute_performance_thresholds(routerlist_t *rl) /* Now that we have a time-known that 7/8 routers are known longer than, * fill wfus with the wfu of every such "familiar" router. */ n_familiar = 0; - SMARTLIST_FOREACH(rl->routers, routerinfo_t *, ri, { - if (router_is_active(ri, now)) { + + SMARTLIST_FOREACH_BEGIN(nodelist_get_list(), node_t *, node) { + routerinfo_t *ri = node->ri; + if (ri && router_is_active(ri, node, now)) { const char *id = ri->cache_info.identity_digest; long tk = rep_hist_get_weighted_time_known(id, now); if (tk < guard_tk) continue; wfus[n_familiar++] = rep_hist_get_weighted_fractional_uptime(id, now); } - }); + } SMARTLIST_FOREACH_END(node); if (n_familiar) guard_wfu = median_double(wfus, n_familiar); if (guard_wfu > WFU_TO_GUARANTEE_GUARD) @@ -1950,24 +1982,20 @@ version_from_platform(const char *platform) */ int routerstatus_format_entry(char *buf, size_t buf_len, - routerstatus_t *rs, const char *version, + const routerstatus_t *rs, const char *version, routerstatus_format_type_t format) { int r; - struct in_addr in; char *cp; char *summary; char published[ISO_TIME_LEN+1]; - char ipaddr[INET_NTOA_BUF_LEN]; char identity64[BASE64_DIGEST_LEN+1]; char digest64[BASE64_DIGEST_LEN+1]; format_iso_time(published, rs->published_on); digest_to_base64(identity64, rs->identity_digest); digest_to_base64(digest64, rs->descriptor_digest); - in.s_addr = htonl(rs->addr); - tor_inet_ntoa(&in, ipaddr, sizeof(ipaddr)); r = tor_snprintf(buf, buf_len, "r %s %s %s%s%s %s %d %d\n", @@ -1976,7 +2004,7 @@ routerstatus_format_entry(char *buf, size_t buf_len, (format==NS_V3_CONSENSUS_MICRODESC)?"":digest64, (format==NS_V3_CONSENSUS_MICRODESC)?"":" ", published, - ipaddr, + fmt_addr32(rs->addr), (int)rs->or_port, (int)rs->dir_port); if (r<0) { @@ -2004,7 +2032,7 @@ routerstatus_format_entry(char *buf, size_t buf_len, rs->is_possible_guard?" Guard":"", rs->is_hs_dir?" HSDir":"", rs->is_named?" Named":"", - rs->is_running?" Running":"", + rs->is_flagged_running?" Running":"", rs->is_stable?" Stable":"", rs->is_unnamed?" Unnamed":"", rs->is_v2_dir?" V2Dir":"", @@ -2026,7 +2054,7 @@ routerstatus_format_entry(char *buf, size_t buf_len, } if (format != NS_V2) { - routerinfo_t* desc = router_get_by_digest(rs->identity_digest); + const routerinfo_t* desc = router_get_by_id_digest(rs->identity_digest); uint32_t bw; if (format != NS_CONTROL_PORT) { @@ -2122,6 +2150,8 @@ _compare_routerinfo_by_ip_and_bw(const void **a, const void **b) routerinfo_t *first = *(routerinfo_t **)a, *second = *(routerinfo_t **)b; int first_is_auth, second_is_auth; uint32_t bw_first, bw_second; + const node_t *node_first, *node_second; + int first_is_running, second_is_running; /* we return -1 if first should appear before second... that is, * if first is a better router. */ @@ -2144,9 +2174,14 @@ _compare_routerinfo_by_ip_and_bw(const void **a, const void **b) else if (!first_is_auth && second_is_auth) return 1; - else if (first->is_running && !second->is_running) + node_first = node_get_by_id(first->cache_info.identity_digest); + node_second = node_get_by_id(second->cache_info.identity_digest); + first_is_running = node_first && node_first->is_running; + second_is_running = node_second && node_second->is_running; + + if (first_is_running && !second_is_running) return -1; - else if (!first->is_running && second->is_running) + else if (!first_is_running && second_is_running) return 1; bw_first = router_get_advertised_bandwidth(first); @@ -2215,7 +2250,9 @@ get_possible_sybil_list(const smartlist_t *routers) */ void set_routerstatus_from_routerinfo(routerstatus_t *rs, - routerinfo_t *ri, time_t now, + node_t *node, + routerinfo_t *ri, + time_t now, int naming, int listbadexits, int listbaddirs) { @@ -2227,48 +2264,46 @@ set_routerstatus_from_routerinfo(routerstatus_t *rs, router_digest_is_trusted_dir(ri->cache_info.identity_digest); /* Already set by compute_performance_thresholds. */ - rs->is_exit = ri->is_exit; - rs->is_stable = ri->is_stable = - router_is_active(ri, now) && + rs->is_exit = node->is_exit; + rs->is_stable = node->is_stable = + router_is_active(ri, node, now) && !dirserv_thinks_router_is_unreliable(now, ri, 1, 0) && !unstable_version; - rs->is_fast = ri->is_fast = - router_is_active(ri, now) && + rs->is_fast = node->is_fast = + router_is_active(ri, node, now) && !dirserv_thinks_router_is_unreliable(now, ri, 0, 1); - rs->is_running = ri->is_running; /* computed above */ + rs->is_flagged_running = node->is_running; /* computed above */ if (naming) { uint32_t name_status = dirserv_get_name_status( - ri->cache_info.identity_digest, ri->nickname); + node->identity, ri->nickname); rs->is_named = (naming && (name_status & FP_NAMED)) ? 1 : 0; rs->is_unnamed = (naming && (name_status & FP_UNNAMED)) ? 1 : 0; } - rs->is_valid = ri->is_valid; + rs->is_valid = node->is_valid; - if (rs->is_fast && + if (node->is_fast && (router_get_advertised_bandwidth(ri) >= BANDWIDTH_TO_GUARANTEE_GUARD || router_get_advertised_bandwidth(ri) >= MIN(guard_bandwidth_including_exits, guard_bandwidth_excluding_exits))) { - long tk = rep_hist_get_weighted_time_known( - ri->cache_info.identity_digest, now); - double wfu = rep_hist_get_weighted_fractional_uptime( - ri->cache_info.identity_digest, now); + long tk = rep_hist_get_weighted_time_known(node->identity, now); + double wfu = rep_hist_get_weighted_fractional_uptime(node->identity, now); rs->is_possible_guard = (wfu >= guard_wfu && tk >= guard_tk) ? 1 : 0; } else { rs->is_possible_guard = 0; } - rs->is_bad_directory = listbaddirs && ri->is_bad_directory; - rs->is_bad_exit = listbadexits && ri->is_bad_exit; - ri->is_hs_dir = dirserv_thinks_router_is_hs_dir(ri, now); - rs->is_hs_dir = ri->is_hs_dir; + rs->is_bad_directory = listbaddirs && node->is_bad_directory; + rs->is_bad_exit = listbadexits && node->is_bad_exit; + node->is_hs_dir = dirserv_thinks_router_is_hs_dir(ri, node, now); + rs->is_hs_dir = node->is_hs_dir; rs->is_v2_dir = ri->dir_port != 0; if (!strcasecmp(ri->nickname, UNNAMED_ROUTER_NICKNAME)) rs->is_named = rs->is_unnamed = 0; rs->published_on = ri->cache_info.published_on; - memcpy(rs->identity_digest, ri->cache_info.identity_digest, DIGEST_LEN); + memcpy(rs->identity_digest, node->identity, DIGEST_LEN); memcpy(rs->descriptor_digest, ri->cache_info.signed_descriptor_digest, DIGEST_LEN); rs->addr = ri->addr; @@ -2285,7 +2320,7 @@ static void clear_status_flags_on_sybil(routerstatus_t *rs) { rs->is_authority = rs->is_exit = rs->is_stable = rs->is_fast = - rs->is_running = rs->is_named = rs->is_valid = rs->is_v2_dir = + rs->is_flagged_running = rs->is_named = rs->is_valid = rs->is_v2_dir = rs->is_hs_dir = rs->is_possible_guard = rs->is_bad_exit = rs->is_bad_directory = 0; /* FFFF we might want some mechanism to check later on if we @@ -2293,18 +2328,6 @@ clear_status_flags_on_sybil(routerstatus_t *rs) * forget to add it to this clause. */ } -/** Clear all the status flags in routerinfo <b>router</b>. We put this - * function here because it's eerily similar to - * clear_status_flags_on_sybil() above. One day we should merge them. */ -void -router_clear_status_flags(routerinfo_t *router) -{ - router->is_valid = router->is_running = router->is_hs_dir = - router->is_fast = router->is_stable = - router->is_possible_guard = router->is_exit = - router->is_bad_exit = router->is_bad_directory = 0; -} - /** * Helper function to parse out a line in the measured bandwidth file * into a measured_bw_line_t output structure. Returns -1 on failure @@ -2552,17 +2575,20 @@ dirserv_generate_networkstatus_vote_obj(crypto_pk_env_t *private_key, routerstatus_t *rs; vote_routerstatus_t *vrs; microdesc_t *md; + node_t *node = node_get_mutable_by_id(ri->cache_info.identity_digest); + if (!node) + continue; vrs = tor_malloc_zero(sizeof(vote_routerstatus_t)); rs = &vrs->status; - set_routerstatus_from_routerinfo(rs, ri, now, + set_routerstatus_from_routerinfo(rs, node, ri, now, naming, listbadexits, listbaddirs); if (digestmap_get(omit_as_sybil, ri->cache_info.identity_digest)) clear_status_flags_on_sybil(rs); if (!vote_on_reachability) - rs->is_running = 0; + rs->is_flagged_running = 0; vrs->version = version_from_platform(ri->platform); md = dirvote_create_microdescriptor(ri); @@ -2693,10 +2719,8 @@ generate_v2_networkstatus_opinion(void) char *outp, *endp; or_options_t *options = get_options(); char fingerprint[FINGERPRINT_LEN+1]; - char ipaddr[INET_NTOA_BUF_LEN]; char published[ISO_TIME_LEN+1]; char digest[DIGEST_LEN]; - struct in_addr in; uint32_t addr; crypto_pk_env_t *private_key; routerlist_t *rl = router_get_routerlist(); @@ -2711,14 +2735,12 @@ generate_v2_networkstatus_opinion(void) smartlist_t *routers = NULL; digestmap_t *omit_as_sybil = NULL; - private_key = get_identity_key(); + private_key = get_server_identity_key(); if (resolve_my_address(LOG_WARN, options, &addr, &hostname)<0) { log_warn(LD_NET, "Couldn't resolve my hostname"); goto done; } - in.s_addr = htonl(addr); - tor_inet_ntoa(&in, ipaddr, sizeof(ipaddr)); format_iso_time(published, now); @@ -2764,7 +2786,7 @@ 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, ipaddr, (int)options->DirPort, + hostname, fmt_addr32(addr), (int)options->DirPort, fingerprint, contact, published, @@ -2795,8 +2817,12 @@ generate_v2_networkstatus_opinion(void) if (ri->cache_info.published_on >= cutoff) { routerstatus_t rs; char *version = version_from_platform(ri->platform); - - set_routerstatus_from_routerinfo(&rs, ri, now, + node_t *node = node_get_mutable_by_id(ri->cache_info.identity_digest); + if (!node) { + tor_free(version); + continue; + } + set_routerstatus_from_routerinfo(&rs, node, ri, now, naming, listbadexits, listbaddirs); if (digestmap_get(omit_as_sybil, ri->cache_info.identity_digest)) @@ -2879,7 +2905,7 @@ dirserv_get_networkstatus_v2_fingerprints(smartlist_t *result, if (!strcmp(key,"authority")) { if (authdir_mode_v2(get_options())) { - routerinfo_t *me = router_get_my_routerinfo(); + const routerinfo_t *me = router_get_my_routerinfo(); if (me) smartlist_add(result, tor_memdup(me->cache_info.identity_digest, DIGEST_LEN)); @@ -2965,7 +2991,7 @@ dirserv_get_routerdesc_fingerprints(smartlist_t *fps_out, const char *key, smartlist_add(fps_out, tor_memdup(r->cache_info.identity_digest, DIGEST_LEN))); } else if (!strcmp(key, "authority")) { - routerinfo_t *ri = router_get_my_routerinfo(); + const routerinfo_t *ri = router_get_my_routerinfo(); if (ri) smartlist_add(fps_out, tor_memdup(ri->cache_info.identity_digest, DIGEST_LEN)); @@ -2985,8 +3011,8 @@ dirserv_get_routerdesc_fingerprints(smartlist_t *fps_out, const char *key, if (for_unencrypted_conn) { /* Remove anything that insists it not be sent unencrypted. */ - SMARTLIST_FOREACH(fps_out, char *, cp, { - signed_descriptor_t *sd; + SMARTLIST_FOREACH_BEGIN(fps_out, char *, cp) { + const signed_descriptor_t *sd; if (by_id) sd = get_signed_descriptor_by_fp(cp,is_extrainfo,0); else if (is_extrainfo) @@ -2997,7 +3023,7 @@ dirserv_get_routerdesc_fingerprints(smartlist_t *fps_out, const char *key, tor_free(cp); SMARTLIST_DEL_CURRENT(fps_out, cp); } - }); + } SMARTLIST_FOREACH_END(cp); } if (!smartlist_len(fps_out)) { @@ -3036,9 +3062,9 @@ dirserv_get_routerdescs(smartlist_t *descs_out, const char *key, SMARTLIST_FOREACH(rl->routers, routerinfo_t *, r, smartlist_add(descs_out, &(r->cache_info))); } else if (!strcmp(key, "/tor/server/authority")) { - routerinfo_t *ri = router_get_my_routerinfo(); + const routerinfo_t *ri = router_get_my_routerinfo(); if (ri) - smartlist_add(descs_out, &(ri->cache_info)); + smartlist_add(descs_out, (void*) &(ri->cache_info)); } else if (!strcmpstart(key, "/tor/server/d/")) { smartlist_t *digests = smartlist_create(); key += strlen("/tor/server/d/"); @@ -3062,17 +3088,17 @@ dirserv_get_routerdescs(smartlist_t *descs_out, const char *key, { if (router_digest_is_me(d)) { /* make sure desc_routerinfo exists */ - routerinfo_t *ri = router_get_my_routerinfo(); + const routerinfo_t *ri = router_get_my_routerinfo(); if (ri) - smartlist_add(descs_out, &(ri->cache_info)); + smartlist_add(descs_out, (void*) &(ri->cache_info)); } else { - routerinfo_t *ri = router_get_by_digest(d); + const routerinfo_t *ri = router_get_by_id_digest(d); /* Don't actually serve a descriptor that everyone will think is * expired. This is an (ugly) workaround to keep buggy 0.1.1.10 * Tors from downloading descriptors that they will throw away. */ if (ri && ri->cache_info.published_on > cutoff) - smartlist_add(descs_out, &(ri->cache_info)); + smartlist_add(descs_out, (void*) &(ri->cache_info)); } }); SMARTLIST_FOREACH(digests, char *, d, tor_free(d)); @@ -3121,6 +3147,7 @@ dirserv_orconn_tls_done(const char *address, } } }); + /* 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. */ @@ -3130,7 +3157,8 @@ dirserv_orconn_tls_done(const char *address, * an upload or a download. Used to decide whether to relaunch reachability * testing for the server. */ int -dirserv_should_launch_reachability_test(routerinfo_t *ri, routerinfo_t *ri_old) +dirserv_should_launch_reachability_test(const routerinfo_t *ri, + const routerinfo_t *ri_old) { if (!authdir_mode_handles_descs(get_options(), ri->purpose)) return 0; @@ -3254,7 +3282,7 @@ dirserv_remove_old_statuses(smartlist_t *fps, time_t cutoff) * its extra-info document if <b>extrainfo</b> is true. Return * NULL if not found or if the descriptor is older than * <b>publish_cutoff</b>. */ -static signed_descriptor_t * +static const signed_descriptor_t * get_signed_descriptor_by_fp(const char *fp, int extrainfo, time_t publish_cutoff) { @@ -3264,7 +3292,7 @@ get_signed_descriptor_by_fp(const char *fp, int extrainfo, else return &(router_get_my_routerinfo()->cache_info); } else { - routerinfo_t *ri = router_get_by_digest(fp); + const routerinfo_t *ri = router_get_by_id_digest(fp); if (ri && ri->cache_info.published_on > publish_cutoff) { if (extrainfo) @@ -3332,7 +3360,7 @@ dirserv_estimate_data_size(smartlist_t *fps, int is_serverdescs, tor_assert(fps); if (is_serverdescs) { int n = smartlist_len(fps); - routerinfo_t *me = router_get_my_routerinfo(); + const routerinfo_t *me = router_get_my_routerinfo(); result = (me?me->cache_info.signed_descriptor_len:2048) * n; if (compressed) result /= 2; /* observed compressibility is between 35 and 55%. */ @@ -3399,7 +3427,7 @@ connection_dirserv_add_servers_to_outbuf(dir_connection_t *conn) connection_get_outbuf_len(TO_CONN(conn)) < DIRSERV_BUFFER_MIN) { const char *body; char *fp = smartlist_pop_last(conn->fingerprint_stack); - signed_descriptor_t *sd = NULL; + const signed_descriptor_t *sd = NULL; if (by_fp) { sd = get_signed_descriptor_by_fp(fp, extra, publish_cutoff); } else { @@ -3457,7 +3485,7 @@ connection_dirserv_add_microdescs_to_outbuf(dir_connection_t *conn) { microdesc_cache_t *cache = get_microdesc_cache(); while (smartlist_len(conn->fingerprint_stack) && - buf_datalen(conn->_base.outbuf) < DIRSERV_BUFFER_MIN) { + connection_get_outbuf_len(TO_CONN(conn)) < DIRSERV_BUFFER_MIN) { char *fp256 = smartlist_pop_last(conn->fingerprint_stack); microdesc_t *md = microdesc_cache_lookup_by_digest256(cache, fp256); tor_free(fp256); diff --git a/src/or/dirserv.h b/src/or/dirserv.h index 94e4e811d..a77963243 100644 --- a/src/or/dirserv.h +++ b/src/or/dirserv.h @@ -40,8 +40,6 @@ MAX_V_LINE_LEN \ ) -#define UNNAMED_ROUTER_NICKNAME "Unnamed" - int connection_dirserv_flushed_some(dir_connection_t *conn); int dirserv_add_own_fingerprint(const char *nickname, crypto_pk_env_t *pk); @@ -99,13 +97,19 @@ void dirserv_orconn_tls_done(const char *address, uint16_t or_port, const char *digest_rcvd, int as_advertised); -int dirserv_should_launch_reachability_test(routerinfo_t *ri, - routerinfo_t *ri_old); +int dirserv_should_launch_reachability_test(const routerinfo_t *ri, + const routerinfo_t *ri_old); void dirserv_single_reachability_test(time_t now, routerinfo_t *router); void dirserv_test_reachability(time_t now); int authdir_wants_to_reject_router(routerinfo_t *ri, const char **msg, - int complain); -int dirserv_would_reject_router(routerstatus_t *rs); + int complain, + int *valid_out); +uint32_t dirserv_router_get_status(const routerinfo_t *router, + const char **msg); +void dirserv_set_node_flags_from_authoritative_status(node_t *node, + uint32_t authstatus); + +int dirserv_would_reject_router(const routerstatus_t *rs); int dirserv_remove_old_statuses(smartlist_t *fps, time_t cutoff); int dirserv_have_any_serverdesc(smartlist_t *fps, int spool_src); int dirserv_have_any_microdesc(const smartlist_t *fps); @@ -114,7 +118,7 @@ size_t dirserv_estimate_data_size(smartlist_t *fps, int is_serverdescs, size_t dirserv_estimate_microdesc_size(const smartlist_t *fps, int compressed); int routerstatus_format_entry(char *buf, size_t buf_len, - routerstatus_t *rs, const char *platform, + const routerstatus_t *rs, const char *platform, routerstatus_format_type_t format); void dirserv_free_all(void); void cached_dir_decref(cached_dir_t *d); diff --git a/src/or/dirvote.c b/src/or/dirvote.c index dd36a0f91..1cb35637d 100644 --- a/src/or/dirvote.c +++ b/src/or/dirvote.c @@ -83,9 +83,7 @@ format_networkstatus_vote(crypto_pk_env_t *private_signing_key, const char *client_versions = NULL, *server_versions = NULL; char *outp, *endp; char fingerprint[FINGERPRINT_LEN+1]; - char ipaddr[INET_NTOA_BUF_LEN]; char digest[DIGEST_LEN]; - struct in_addr in; uint32_t addr; routerlist_t *rl = router_get_routerlist(); char *version_lines = NULL; @@ -98,8 +96,6 @@ format_networkstatus_vote(crypto_pk_env_t *private_signing_key, voter = smartlist_get(v3_ns->voters, 0); addr = voter->addr; - in.s_addr = htonl(addr); - tor_inet_ntoa(&in, ipaddr, sizeof(ipaddr)); base16_encode(fingerprint, sizeof(fingerprint), v3_ns->cert->cache_info.identity_digest, DIGEST_LEN); @@ -186,7 +182,8 @@ format_networkstatus_vote(crypto_pk_env_t *private_signing_key, flags, params, voter->nickname, fingerprint, voter->address, - ipaddr, voter->dir_port, voter->or_port, voter->contact); + fmt_addr32(addr), voter->dir_port, voter->or_port, + voter->contact); if (r < 0) { log_err(LD_BUG, "Insufficient memory for network status line"); @@ -1529,8 +1526,6 @@ networkstatus_compute_consensus(smartlist_t *votes, smartlist_sort(dir_sources, _compare_dir_src_ents_by_authority_id); SMARTLIST_FOREACH_BEGIN(dir_sources, const dir_src_ent_t *, e) { - struct in_addr in; - char ip[INET_NTOA_BUF_LEN]; char fingerprint[HEX_DIGEST_LEN+1]; char votedigest[HEX_DIGEST_LEN+1]; networkstatus_t *v = e->v; @@ -1540,8 +1535,6 @@ networkstatus_compute_consensus(smartlist_t *votes, if (e->is_legacy) tor_assert(consensus_method >= 2); - in.s_addr = htonl(voter->addr); - tor_inet_ntoa(&in, ip, sizeof(ip)); base16_encode(fingerprint, sizeof(fingerprint), e->digest, DIGEST_LEN); base16_encode(votedigest, sizeof(votedigest), voter->vote_digest, DIGEST_LEN); @@ -1549,7 +1542,7 @@ networkstatus_compute_consensus(smartlist_t *votes, tor_asprintf(&buf, "dir-source %s%s %s %s %s %d %d\n", voter->nickname, e->is_legacy ? "-legacy" : "", - fingerprint, voter->address, ip, + fingerprint, voter->address, fmt_addr32(voter->addr), voter->dir_port, voter->or_port); smartlist_add(chunks, buf); diff --git a/src/or/dirvote.h b/src/or/dirvote.h index e384dc53b..33213a88c 100644 --- a/src/or/dirvote.h +++ b/src/or/dirvote.h @@ -63,6 +63,7 @@ const char *dirvote_get_pending_detached_signatures(void); #define DGV_INCLUDE_PREVIOUS 4 const cached_dir_t *dirvote_get_vote(const char *fp, int flags); void set_routerstatus_from_routerinfo(routerstatus_t *rs, + node_t *node, routerinfo_t *ri, time_t now, int naming, int listbadexits, int listbaddirs); diff --git a/src/or/dns.c b/src/or/dns.c index 4e319b7d8..83d47914e 100644 --- a/src/or/dns.c +++ b/src/or/dns.c @@ -668,7 +668,7 @@ dns_resolve_impl(edge_connection_t *exitconn, int is_resolve, cached_resolve_t *resolve; cached_resolve_t search; pending_connection_t *pending_connection; - routerinfo_t *me; + const routerinfo_t *me; tor_addr_t addr; time_t now = time(NULL); uint8_t is_reverse = 0; diff --git a/src/or/hibernate.c b/src/or/hibernate.c index 3c6a3fa03..e9be5930d 100644 --- a/src/or/hibernate.c +++ b/src/or/hibernate.c @@ -522,7 +522,7 @@ accounting_set_wakeup_time(void) uint64_t time_to_exhaust_bw; int time_to_consider; - if (! identity_key_is_set()) { + if (! server_identity_key_is_set()) { if (init_keys() < 0) { log_err(LD_BUG, "Error initializing keys"); tor_assert(0); @@ -530,7 +530,7 @@ accounting_set_wakeup_time(void) } format_iso_time(buf, interval_start_time); - crypto_pk_get_digest(get_identity_key(), digest); + crypto_pk_get_digest(get_server_identity_key(), digest); d_env = crypto_new_digest_env(); crypto_digest_add_bytes(d_env, buf, ISO_TIME_LEN); diff --git a/src/or/main.c b/src/or/main.c index ddd5da364..1e01ad14d 100644 --- a/src/or/main.c +++ b/src/or/main.c @@ -33,6 +33,7 @@ #include "main.h" #include "microdesc.h" #include "networkstatus.h" +#include "nodelist.h" #include "ntmain.h" #include "onion.h" #include "policies.h" @@ -160,7 +161,7 @@ int can_complete_circuit=0; * ****************************************************************************/ -#ifdef USE_BUFFEREVENTS +#if 0 && defined(USE_BUFFEREVENTS) static void free_old_inbuf(connection_t *conn) { @@ -210,7 +211,12 @@ connection_add_impl(connection_t *conn, int is_connecting) tor_libevent_get_base(), conn->s, BEV_OPT_DEFER_CALLBACKS); - /* XXXX CHECK FOR NULL RETURN! */ + if (!conn->bufev) { + log_warn(LD_BUG, "Unable to create socket bufferevent"); + smartlist_del(connection_array, conn->conn_array_index); + conn->conn_array_index = -1; + return -1; + } if (is_connecting) { /* Put the bufferevent into a "connecting" state so that we'll get * a "connected" event callback on successful write. */ @@ -222,29 +228,28 @@ connection_add_impl(connection_t *conn, int is_connecting) tor_assert(conn->s < 0); if (!conn->bufev) { struct bufferevent *pair[2] = { NULL, NULL }; - /* XXXX CHECK FOR ERROR RETURN! */ - bufferevent_pair_new(tor_libevent_get_base(), - BEV_OPT_DEFER_CALLBACKS, - pair); + if (bufferevent_pair_new(tor_libevent_get_base(), + BEV_OPT_DEFER_CALLBACKS, + pair) < 0) { + log_warn(LD_BUG, "Unable to create bufferevent pair"); + smartlist_del(connection_array, conn->conn_array_index); + conn->conn_array_index = -1; + return -1; + } tor_assert(pair[0]); conn->bufev = pair[0]; conn->linked_conn->bufev = pair[1]; } /* else the other side already was added, and got a bufferevent_pair */ connection_configure_bufferevent_callbacks(conn); + } else { + tor_assert(!conn->linked); } - if (conn->bufev && conn->inbuf) { - /* XXX Instead we should assert that there is no inbuf, once we - * have linked connections using bufferevents. */ - free_old_inbuf(conn); - } + if (conn->bufev) + tor_assert(conn->inbuf == NULL); - if (conn->linked_conn && conn->linked_conn->bufev && - conn->linked_conn->inbuf) { - /* XXX Instead we should assert that there is no inbuf, once we - * have linked connections using bufferevents. */ - free_old_inbuf(conn->linked_conn); - } + if (conn->linked_conn && conn->linked_conn->bufev) + tor_assert(conn->linked_conn->inbuf == NULL); } #else (void) is_connecting; @@ -722,14 +727,17 @@ conn_close_if_marked(int i) /* assert_all_pending_dns_resolves_ok(); */ #ifdef USE_BUFFEREVENTS - if (conn->bufev && conn->hold_open_until_flushed) { - if (conn->linked) { + if (conn->bufev) { + if (conn->hold_open_until_flushed && + evbuffer_get_length(bufferevent_get_output(conn->bufev))) { + /* don't close yet. */ + return 0; + } + if (conn->linked_conn && ! conn->linked_conn->marked_for_close) { /* We need to do this explicitly so that the linked connection * notices that there was an EOF. */ bufferevent_flush(conn->bufev, EV_WRITE, BEV_FINISHED); } - if (evbuffer_get_length(bufferevent_get_output(conn->bufev))) - return 0; } #endif @@ -949,8 +957,7 @@ run_connection_housekeeping(int i, time_t now) connection_or_connect_failed(TO_OR_CONN(conn), END_OR_CONN_REASON_TIMEOUT, "Tor gave up on the connection"); - connection_mark_for_close(conn); - conn->hold_open_until_flushed = 1; + connection_mark_and_flush(conn); } else if (!connection_state_is_open(conn)) { if (past_keepalive) { /* We never managed to actually get this connection open and happy. */ @@ -1030,6 +1037,7 @@ run_scheduled_events(time_t now) static int should_init_bridge_stats = 1; static time_t time_to_retry_dns_init = 0; or_options_t *options = get_options(); + int is_server = server_mode(options); int i; int have_dir_info; @@ -1039,6 +1047,16 @@ run_scheduled_events(time_t now) */ consider_hibernation(now); +#if 0 + { + static time_t nl_check_time = 0; + if (nl_check_time <= now) { + nodelist_assert_ok(); + nl_check_time = now + 30; + } + } +#endif + /* 0b. If we've deferred a signewnym, make sure it gets handled * eventually. */ if (signewnym_is_pending && @@ -1051,7 +1069,7 @@ run_scheduled_events(time_t now) * shut down and restart all cpuworkers, and update the directory if * necessary. */ - if (server_mode(options) && + if (is_server && get_onion_key_set_at()+MIN_ONION_KEY_LIFETIME < now) { log_info(LD_GENERAL,"Rotating onion key."); rotate_onion_key(); @@ -1086,7 +1104,10 @@ run_scheduled_events(time_t now) last_rotated_x509_certificate = now; if (last_rotated_x509_certificate+MAX_SSL_KEY_LIFETIME < now) { log_info(LD_GENERAL,"Rotating tls context."); - if (tor_tls_context_new(get_identity_key(), MAX_SSL_KEY_LIFETIME) < 0) { + if (tor_tls_context_init(public_server_mode(options), + get_tlsclient_identity_key(), + is_server ? get_server_identity_key() : NULL, + MAX_SSL_KEY_LIFETIME) < 0) { log_warn(LD_BUG, "Error reinitializing TLS context"); /* XXX is it a bug here, that we just keep going? -RD */ } @@ -1263,7 +1284,7 @@ run_scheduled_events(time_t now) /* If we haven't checked for 12 hours and our bandwidth estimate is * low, do another bandwidth test. This is especially important for * bridges, since they might go long periods without much use. */ - routerinfo_t *me = router_get_my_routerinfo(); + const routerinfo_t *me = router_get_my_routerinfo(); if (time_to_recheck_bandwidth && me && me->bandwidthcapacity < me->bandwidthrate && me->bandwidthcapacity < 51200) { @@ -1369,7 +1390,7 @@ run_scheduled_events(time_t now) /** 9. and if we're a server, check whether our DNS is telling stories to * us. */ - if (server_mode(options) && time_to_check_for_correct_dns < now) { + if (is_server && time_to_check_for_correct_dns < now) { if (!time_to_check_for_correct_dns) { time_to_check_for_correct_dns = now + 60 + crypto_rand_int(120); } else { @@ -1464,7 +1485,7 @@ second_elapsed_callback(periodic_timer_t *timer, void *arg) (stats_n_seconds_working+seconds_elapsed) / TIMEOUT_UNTIL_UNREACHABILITY_COMPLAINT) { /* every 20 minutes, check and complain if necessary */ - routerinfo_t *me = router_get_my_routerinfo(); + const routerinfo_t *me = router_get_my_routerinfo(); if (me && !check_whether_orport_reachable()) { log_warn(LD_CONFIG,"Your server (%s:%d) has not managed to confirm that " "its ORPort is reachable. Please check your firewalls, ports, " @@ -1643,7 +1664,7 @@ do_main_loop(void) /* load the private keys, if we're supposed to have them, and set up the * TLS context. */ - if (! identity_key_is_set()) { + if (! client_identity_key_is_set()) { if (init_keys() < 0) { log_err(LD_BUG,"Error initializing keys; exiting"); return -1; @@ -2205,6 +2226,7 @@ tor_free_all(int postfork) connection_free_all(); buf_shrink_freelists(1); memarea_clear_freelist(); + nodelist_free_all(); microdesc_free_all(); if (!postfork) { config_free_all(); @@ -2281,7 +2303,7 @@ do_list_fingerprint(void) log_err(LD_BUG,"Error initializing keys; can't display fingerprint"); return -1; } - if (!(k = get_identity_key())) { + if (!(k = get_server_identity_key())) { log_err(LD_GENERAL,"Error: missing identity key."); return -1; } diff --git a/src/or/microdesc.c b/src/or/microdesc.c index 2752d15c8..e014cd076 100644 --- a/src/or/microdesc.c +++ b/src/or/microdesc.c @@ -4,11 +4,13 @@ #include "or.h" #include "config.h" #include "directory.h" +#include "dirserv.h" #include "microdesc.h" -#include "routerparse.h" #include "networkstatus.h" +#include "nodelist.h" +#include "policies.h" #include "routerlist.h" -#include "dirserv.h" +#include "routerparse.h" /** A data structure to hold a bunch of cached microdescriptors. There are * two active files in the cache: a "cache file" that we mmap, and a "journal @@ -249,6 +251,12 @@ microdescs_add_list_to_cache(microdesc_cache_t *cache, 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)); + } + return added; } @@ -311,26 +319,32 @@ microdesc_cache_reload(microdesc_cache_t *cache) return 0; } -/** DOCDOC */ +/** By default, we remove any microdescriptors that have gone at least this + * long without appearing in a current consensus. */ #define TOLERATE_MICRODESC_AGE (7*24*60*60) -/** DOCDOC */ +/** Remove all microdescriptors from <b>cache</b> that haven't been listed for + * a long time. Does not rebuild the cache on disk. If <b>cutoff</b> is + * positive, specifically remove microdescriptors that have been unlisted + * since <b>cutoff</b>. If <b>force</b> is true, remove microdescriptors even + * if we have no current live microdescriptor consensus. + */ void -microdesc_cache_clean(microdesc_cache_t *cache) +microdesc_cache_clean(microdesc_cache_t *cache, time_t cutoff, int force) { - networkstatus_t *consensus; - time_t cutoff; microdesc_t **mdp, *victim; int dropped=0, kept=0; size_t bytes_dropped = 0; time_t now = time(NULL); - /* If we don't know a consensus, never believe last_listed values */ - consensus = networkstatus_get_reasonably_live_consensus(now, FLAV_MICRODESC); - if (consensus == NULL) - return; + /* If we don't know a live consensus, don't believe last_listed values: we + * might be starting up after being down for a while. */ + if (! force && + ! networkstatus_get_reasonably_live_consensus(now, FLAV_MICRODESC)) + return; - cutoff = now - TOLERATE_MICRODESC_AGE; + if (cutoff <= 0) + cutoff = now - TOLERATE_MICRODESC_AGE; for (mdp = HT_START(microdesc_map, &cache->map); mdp != NULL; ) { if ((*mdp)->last_listed < cutoff) { @@ -368,8 +382,10 @@ microdesc_cache_rebuild(microdesc_cache_t *cache) log_info(LD_DIR, "Rebuilding the microdescriptor cache..."); - microdesc_cache_clean(cache); + /* Remove dead descriptors */ + microdesc_cache_clean(cache, 0/*cutoff*/, 0/*force*/); + /* Calculate starting disk usage */ orig_size = (int)(cache->cache_content ? cache->cache_content->size : 0); orig_size += (int)cache->journal_len; @@ -393,6 +409,7 @@ microdesc_cache_rebuild(microdesc_cache_t *cache) /* log? return -1? die? coredump the universe? */ continue; } + tor_assert(((size_t)size) == annotation_len + md->bodylen); md->off = off + annotation_len; off += size; if (md->saved_location != SAVED_IN_CACHE) { @@ -417,7 +434,21 @@ microdesc_cache_rebuild(microdesc_cache_t *cache) SMARTLIST_FOREACH_BEGIN(wrote, microdesc_t *, md) { tor_assert(md->saved_location == SAVED_IN_CACHE); md->body = (char*)cache->cache_content->data + md->off; - tor_assert(!memcmp(md->body, "onion-key", 9)); + if (PREDICT_UNLIKELY( + md->bodylen < 9 || memcmp(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; + char *bad_str; + tor_assert(avail >= 0); + bad_str = tor_strndup(md->body, MIN(128, (size_t)avail)); + log_err(LD_BUG, "After rebuilding microdesc cache, offsets seem wrong. " + " At offset %d, I expected to find a microdescriptor starting " + " 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)); + } } SMARTLIST_FOREACH_END(md); smartlist_free(wrote); @@ -451,7 +482,7 @@ microdesc_free(microdesc_t *md) SMARTLIST_FOREACH(md->family, char *, cp, tor_free(cp)); smartlist_free(md->family); } - tor_free(md->exitsummary); + short_policy_free(md->exit_policy); tor_free(md); } @@ -521,7 +552,13 @@ microdesc_list_missing_digest256(networkstatus_t *ns, microdesc_cache_t *cache, return result; } -/** DOCDOC */ +/** Launch download requests for mircodescriptors as appropriate. + * + * Specifically, we should launch download requests if we are configured to + * download mirodescriptors, and there are some microdescriptors listed the + * current microdesc consensus that we don't have, and either we never asked + * for them, or we failed to download them but we're willing to retry. + */ void update_microdesc_downloads(time_t now) { @@ -560,7 +597,10 @@ update_microdesc_downloads(time_t now) smartlist_free(missing); } -/** DOCDOC */ +/** For every microdescriptor listed in the current microdecriptor consensus, + * update its last_listed field to be at least as recent as the publication + * time of the current microdescriptor consensus. + */ void update_microdescs_from_networkstatus(time_t now) { @@ -580,3 +620,4 @@ update_microdescs_from_networkstatus(time_t now) md->last_listed = ns->valid_after; } SMARTLIST_FOREACH_END(rs); } + diff --git a/src/or/microdesc.h b/src/or/microdesc.h index 1dfe3ae82..eda7008b9 100644 --- a/src/or/microdesc.h +++ b/src/or/microdesc.h @@ -22,7 +22,7 @@ smartlist_t *microdescs_add_list_to_cache(microdesc_cache_t *cache, smartlist_t *descriptors, saved_location_t where, int no_save); -void microdesc_cache_clean(microdesc_cache_t *cache); +void microdesc_cache_clean(microdesc_cache_t *cache, time_t cutoff, int force); int microdesc_cache_rebuild(microdesc_cache_t *cache); int microdesc_cache_reload(microdesc_cache_t *cache); void microdesc_cache_clear(microdesc_cache_t *cache); diff --git a/src/or/networkstatus.c b/src/or/networkstatus.c index cba02f370..11017836d 100644 --- a/src/or/networkstatus.c +++ b/src/or/networkstatus.c @@ -22,6 +22,7 @@ #include "main.h" #include "microdesc.h" #include "networkstatus.h" +#include "nodelist.h" #include "relay.h" #include "router.h" #include "routerlist.h" @@ -106,9 +107,8 @@ void networkstatus_reset_warnings(void) { if (current_consensus) { - SMARTLIST_FOREACH(current_consensus->routerstatus_list, - routerstatus_t *, rs, - rs->name_lookup_warned = 0); + SMARTLIST_FOREACH(nodelist_get_list(), node_t *, node, + node->name_lookup_warned = 0); } have_warned_about_old_version = 0; @@ -939,10 +939,9 @@ compare_digest_to_routerstatus_entry(const void *_key, const void **_member) return memcmp(key, rs->identity_digest, DIGEST_LEN); } -/** Return the entry in <b>ns</b> for the identity digest <b>digest</b>, or - * NULL if none was found. */ +/** As networkstatus_v2_find_entry, but do not return a const pointer */ routerstatus_t * -networkstatus_v2_find_entry(networkstatus_v2_t *ns, const char *digest) +networkstatus_v2_find_mutable_entry(networkstatus_v2_t *ns, const char *digest) { return smartlist_bsearch(ns->entries, digest, compare_digest_to_routerstatus_entry); @@ -950,14 +949,29 @@ networkstatus_v2_find_entry(networkstatus_v2_t *ns, const char *digest) /** Return the entry in <b>ns</b> for the identity digest <b>digest</b>, or * NULL if none was found. */ +const routerstatus_t * +networkstatus_v2_find_entry(networkstatus_v2_t *ns, const char *digest) +{ + return networkstatus_v2_find_mutable_entry(ns, digest); +} + +/** As networkstatus_find_entry, but do not return a const pointer */ routerstatus_t * -networkstatus_vote_find_entry(networkstatus_t *ns, const char *digest) +networkstatus_vote_find_mutable_entry(networkstatus_t *ns, const char *digest) { return smartlist_bsearch(ns->routerstatus_list, digest, compare_digest_to_routerstatus_entry); } -/*XXXX make this static once functions are moved into this file. */ +/** Return the entry in <b>ns</b> for the identity digest <b>digest</b>, or + * NULL if none was found. */ +const routerstatus_t * +networkstatus_vote_find_entry(networkstatus_t *ns, const char *digest) +{ + return networkstatus_vote_find_mutable_entry(ns, digest); +} + +/*XXXX MOVE make this static once functions are moved into this file. */ /** Search the routerstatuses in <b>ns</b> for one whose identity digest is * <b>digest</b>. Return value and set *<b>found_out</b> as for * smartlist_bsearch_idx(). */ @@ -979,11 +993,11 @@ networkstatus_get_v2_list(void) return networkstatus_v2_list; } -/** Return the consensus view of the status of the router whose current - * <i>descriptor</i> digest in <b>consensus</b> is <b>digest</b>, or NULL if - * no such router is known. */ +/* As router_get_consensus_status_by_descriptor_digest, but does not return + * a const pointer */ routerstatus_t * -router_get_consensus_status_by_descriptor_digest(networkstatus_t *consensus, +router_get_mutable_consensus_status_by_descriptor_digest( + networkstatus_t *consensus, const char *digest) { if (!consensus) @@ -1001,6 +1015,17 @@ router_get_consensus_status_by_descriptor_digest(networkstatus_t *consensus, return digestmap_get(consensus->desc_digest_map, digest); } +/** Return the consensus view of the status of the router whose current + * <i>descriptor</i> digest in <b>consensus</b> is <b>digest</b>, or NULL if + * no such router is known. */ +const routerstatus_t * +router_get_consensus_status_by_descriptor_digest(networkstatus_t *consensus, + const char *digest) +{ + return router_get_mutable_consensus_status_by_descriptor_digest( + consensus, digest); +} + /** Given the digest of a router descriptor, return its current download * status, or NULL if the digest is unrecognized. */ download_status_t * @@ -1009,8 +1034,8 @@ router_get_dl_status_by_descriptor_digest(const char *d) routerstatus_t *rs; if (!current_ns_consensus) return NULL; - if ((rs = router_get_consensus_status_by_descriptor_digest( - current_ns_consensus, d))) + if ((rs = router_get_mutable_consensus_status_by_descriptor_digest( + current_ns_consensus, d))) return &rs->dl_status; if (v2_download_status_map) return digestmap_get(v2_download_status_map, d); @@ -1018,10 +1043,9 @@ router_get_dl_status_by_descriptor_digest(const char *d) return NULL; } -/** Return the consensus view of the status of the router whose identity - * digest is <b>digest</b>, or NULL if we don't know about any such router. */ +/** As router_get_consensus_status_by_id, but do not return a const pointer */ routerstatus_t * -router_get_consensus_status_by_id(const char *digest) +router_get_mutable_consensus_status_by_id(const char *digest) { if (!current_consensus) return NULL; @@ -1029,100 +1053,27 @@ router_get_consensus_status_by_id(const char *digest) compare_digest_to_routerstatus_entry); } +/** Return the consensus view of the status of the router whose identity + * digest is <b>digest</b>, or NULL if we don't know about any such router. */ +const routerstatus_t * +router_get_consensus_status_by_id(const char *digest) +{ + return router_get_mutable_consensus_status_by_id(digest); +} + /** Given a nickname (possibly verbose, possibly a hexadecimal digest), return * the corresponding routerstatus_t, or NULL if none exists. Warn the * user if <b>warn_if_unnamed</b> is set, and they have specified a router by * nickname, but the Named flag isn't set for that router. */ -routerstatus_t * +const routerstatus_t * router_get_consensus_status_by_nickname(const char *nickname, int warn_if_unnamed) { - char digest[DIGEST_LEN]; - routerstatus_t *best=NULL; - smartlist_t *matches=NULL; - const char *named_id=NULL; - - if (!current_consensus || !nickname) - return NULL; - - /* Is this name really a hexadecimal identity digest? */ - if (nickname[0] == '$') { - if (base16_decode(digest, DIGEST_LEN, nickname+1, strlen(nickname+1))<0) - return NULL; - return networkstatus_vote_find_entry(current_consensus, digest); - } else if (strlen(nickname) == HEX_DIGEST_LEN && - (base16_decode(digest, DIGEST_LEN, nickname, strlen(nickname))==0)) { - return networkstatus_vote_find_entry(current_consensus, digest); - } - - /* Is there a server that is Named with this name? */ - if (named_server_map) - named_id = strmap_get_lc(named_server_map, nickname); - if (named_id) - return networkstatus_vote_find_entry(current_consensus, named_id); - - /* Okay; is this name listed as Unnamed? */ - if (unnamed_server_map && - strmap_get_lc(unnamed_server_map, nickname)) { - log_info(LD_GENERAL, "The name %s is listed as Unnamed; it is not the " - "canonical name of any server we know.", escaped(nickname)); + const node_t *node = node_get_by_nickname(nickname, warn_if_unnamed); + if (node) + return node->rs; + else return NULL; - } - - /* This name is not canonical for any server; go through the list and - * see who it matches. */ - /*XXXX This is inefficient; optimize it if it matters. */ - matches = smartlist_create(); - SMARTLIST_FOREACH(current_consensus->routerstatus_list, - routerstatus_t *, lrs, - { - if (!strcasecmp(lrs->nickname, nickname)) { - if (lrs->is_named) { - tor_fragile_assert() /* This should never happen. */ - smartlist_free(matches); - return lrs; - } else { - if (lrs->is_unnamed) { - tor_fragile_assert(); /* nor should this. */ - smartlist_clear(matches); - best=NULL; - break; - } - smartlist_add(matches, lrs); - best = lrs; - } - } - }); - - if (smartlist_len(matches)>1 && warn_if_unnamed) { - int any_unwarned=0; - SMARTLIST_FOREACH(matches, routerstatus_t *, lrs, - { - if (! lrs->name_lookup_warned) { - lrs->name_lookup_warned=1; - any_unwarned=1; - } - }); - if (any_unwarned) { - log_warn(LD_CONFIG,"There are multiple matches for the nickname \"%s\"," - " but none is listed as named by the directory authorities. " - "Choosing one arbitrarily.", nickname); - } - } else if (warn_if_unnamed && best && !best->name_lookup_warned) { - char fp[HEX_DIGEST_LEN+1]; - base16_encode(fp, sizeof(fp), - best->identity_digest, DIGEST_LEN); - log_warn(LD_CONFIG, - "When looking up a status, you specified a server \"%s\" by name, " - "but the directory authorities do not have any key registered for " - "this nickname -- so it could be used by any server, " - "not just the one you meant. " - "To make sure you get the same server in the future, refer to " - "it by key, as \"$%s\".", nickname, fp); - best->name_lookup_warned = 1; - } - smartlist_free(matches); - return best; } /** Return the identity digest that's mapped to officially by @@ -1524,7 +1475,7 @@ routerstatus_has_changed(const routerstatus_t *a, const routerstatus_t *b) a->is_exit != b->is_exit || a->is_stable != b->is_stable || a->is_fast != b->is_fast || - a->is_running != b->is_running || + a->is_flagged_running != b->is_flagged_running || a->is_named != b->is_named || a->is_unnamed != b->is_unnamed || a->is_valid != b->is_valid || @@ -1565,13 +1516,14 @@ notify_control_networkstatus_changed(const networkstatus_t *old_c, } changed = smartlist_create(); - SMARTLIST_FOREACH_JOIN(old_c->routerstatus_list, routerstatus_t *, rs_old, - new_c->routerstatus_list, routerstatus_t *, rs_new, - memcmp(rs_old->identity_digest, - rs_new->identity_digest, DIGEST_LEN), - smartlist_add(changed, rs_new)) { + 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, + rs_new->identity_digest, DIGEST_LEN), + smartlist_add(changed, (void*) rs_new)) { if (routerstatus_has_changed(rs_old, rs_new)) - smartlist_add(changed, rs_new); + smartlist_add(changed, (void*)rs_new); } SMARTLIST_FOREACH_JOIN_END(rs_old, rs_new); control_event_networkstatus_changed(changed); @@ -1595,7 +1547,6 @@ networkstatus_copy_old_consensus_info(networkstatus_t *new_c, rs_new->identity_digest, DIGEST_LEN), STMT_NIL) { /* Okay, so we're looking at the same identity. */ - rs_new->name_lookup_warned = rs_old->name_lookup_warned; rs_new->last_dir_503_at = rs_old->last_dir_503_at; if (!memcmp(rs_old->descriptor_digest, rs_new->descriptor_digest, @@ -1642,7 +1593,7 @@ networkstatus_set_current_consensus(const char *consensus, const digests_t *current_digests = NULL; consensus_waiting_for_certs_t *waiting = NULL; time_t current_valid_after = 0; - int free_consensus = 1; + int free_consensus = 1; /* Free 'c' at the end of the function */ if (flav < 0) { /* XXXX we don't handle unrecognized flavors yet. */ @@ -1742,7 +1693,7 @@ networkstatus_set_current_consensus(const char *consensus, networkstatus_vote_free(waiting->consensus); tor_free(waiting->body); waiting->consensus = c; - c = NULL; /* Prevent free. */ + free_consensus = 0; waiting->body = tor_strdup(consensus); waiting->set_at = now; waiting->dl_failed = 0; @@ -1788,6 +1739,10 @@ networkstatus_set_current_consensus(const char *consensus, if (current_ns_consensus) { networkstatus_copy_old_consensus_info(c, current_ns_consensus); networkstatus_vote_free(current_ns_consensus); + /* Defensive programming : we should set current_consensus very soon, + * but we're about to call some stuff in the meantime, and leaving this + * dangling pointer around has proven to be trouble. */ + current_ns_consensus = NULL; } current_ns_consensus = c; free_consensus = 0; /* avoid free */ @@ -1795,6 +1750,8 @@ networkstatus_set_current_consensus(const char *consensus, if (current_md_consensus) { networkstatus_copy_old_consensus_info(c, current_md_consensus); networkstatus_vote_free(current_md_consensus); + /* more defensive programming */ + current_md_consensus = NULL; } current_md_consensus = c; free_consensus = 0; /* avoid free */ @@ -1822,17 +1779,12 @@ networkstatus_set_current_consensus(const char *consensus, download_status_failed(&consensus_dl_status[flav], 0); } - if (directory_caches_dir_info(options)) { - dirserv_set_cached_consensus_networkstatus(consensus, - flavor, - &c->digests, - c->valid_after); - } - if (flav == USABLE_CONSENSUS_FLAVOR) { /* XXXXNM Microdescs: needs a non-ns variant. */ update_consensus_networkstatus_fetch_time(now); + nodelist_set_consensus(current_consensus); + dirvote_recalculate_timing(options, now); routerstatus_list_update_named_server_map(); cell_ewma_set_scale_factor(options, current_consensus); @@ -1843,11 +1795,18 @@ networkstatus_set_current_consensus(const char *consensus, circuit_build_times_new_consensus_params(&circ_times, current_consensus); } + if (directory_caches_dir_info(options)) { + dirserv_set_cached_consensus_networkstatus(consensus, + flavor, + &c->digests, + c->valid_after); + } + if (!from_cache) { write_str_to_file(consensus_fname, consensus, 0); } - if (ftime_definitely_before(now, c->valid_after)) { + if (time_definitely_before(now, c->valid_after, 60)) { char tbuf[ISO_TIME_LEN+1]; char dbuf[64]; long delta = now - c->valid_after; @@ -1975,7 +1934,7 @@ download_status_map_update_from_v2_networkstatus(void) dl_status = digestmap_new(); SMARTLIST_FOREACH_BEGIN(networkstatus_v2_list, networkstatus_v2_t *, ns) { - SMARTLIST_FOREACH_BEGIN(ns->entries, routerstatus_t *, rs) { + SMARTLIST_FOREACH_BEGIN(ns->entries, const routerstatus_t *, rs) { const char *d = rs->descriptor_digest; download_status_t *s; if (digestmap_get(dl_status, d)) @@ -2003,7 +1962,8 @@ routerstatus_list_update_named_server_map(void) named_server_map = strmap_new(); strmap_free(unnamed_server_map, NULL); unnamed_server_map = strmap_new(); - SMARTLIST_FOREACH(current_consensus->routerstatus_list, routerstatus_t *, rs, + SMARTLIST_FOREACH(current_consensus->routerstatus_list, + const routerstatus_t *, rs, { if (rs->is_named) { strmap_set_lc(named_server_map, rs->nickname, @@ -2025,7 +1985,6 @@ routers_update_status_from_consensus_networkstatus(smartlist_t *routers, trusted_dir_server_t *ds; or_options_t *options = get_options(); int authdir = authdir_mode_v2(options) || authdir_mode_v3(options); - int namingdir = authdir && options->NamingAuthoritativeDir; networkstatus_t *ns = current_consensus; if (!ns || !smartlist_len(ns->routerstatus_list)) return; @@ -2039,25 +1998,19 @@ routers_update_status_from_consensus_networkstatus(smartlist_t *routers, memcmp(rs->identity_digest, router->cache_info.identity_digest, DIGEST_LEN), { +#if 0 /* We have no routerstatus for this router. Clear flags and skip it. */ - if (!namingdir) - router->is_named = 0; if (!authdir) { if (router->purpose == ROUTER_PURPOSE_GENERAL) router_clear_status_flags(router); } +#endif }) { /* We have a routerstatus for this router. */ const char *digest = router->cache_info.identity_digest; ds = router_get_trusteddirserver_by_digest(digest); - if (!namingdir) { - if (rs->is_named && !strcasecmp(router->nickname, rs->nickname)) - router->is_named = 1; - else - router->is_named = 0; - } /* Is it the same descriptor, or only the same identity? */ if (!memcmp(router->cache_info.signed_descriptor_digest, rs->descriptor_digest, DIGEST_LEN)) { @@ -2065,28 +2018,17 @@ routers_update_status_from_consensus_networkstatus(smartlist_t *routers, router->cache_info.last_listed_as_valid_until = ns->valid_until; } - if (!authdir) { - /* If we're not an authdir, believe others. */ - router->is_valid = rs->is_valid; - router->is_running = rs->is_running; - router->is_fast = rs->is_fast; - router->is_stable = rs->is_stable; - router->is_possible_guard = rs->is_possible_guard; - router->is_exit = rs->is_exit; - router->is_bad_directory = rs->is_bad_directory; - router->is_bad_exit = rs->is_bad_exit; - router->is_hs_dir = rs->is_hs_dir; - } else { + if (authdir) { /* If we _are_ an authority, we should check whether this router * is one that will cause us to need a reachability test. */ routerinfo_t *old_router = - router_get_by_digest(router->cache_info.identity_digest); + router_get_mutable_by_digest(router->cache_info.identity_digest); if (old_router != router) { router->needs_retest_if_added = dirserv_should_launch_reachability_test(router, old_router); } } - if (router->is_running && ds) { + if (rs->is_flagged_running && ds) { download_status_reset(&ds->v2_ns_dl_status); } if (reset_failures) { @@ -2095,10 +2037,9 @@ routers_update_status_from_consensus_networkstatus(smartlist_t *routers, } SMARTLIST_FOREACH_JOIN_END(rs, router); /* Now update last_listed_as_valid_until from v2 networkstatuses. */ - /* XXXX If this is slow, we need to rethink the code. */ SMARTLIST_FOREACH(networkstatus_v2_list, networkstatus_v2_t *, ns, { time_t live_until = ns->published_on + V2_NETWORKSTATUS_ROUTER_LIFETIME; - SMARTLIST_FOREACH_JOIN(ns->entries, routerstatus_t *, rs, + SMARTLIST_FOREACH_JOIN(ns->entries, const routerstatus_t *, rs, routers, routerinfo_t *, ri, memcmp(rs->identity_digest, ri->cache_info.identity_digest, DIGEST_LEN), @@ -2131,7 +2072,7 @@ signed_descs_update_status_from_consensus_networkstatus(smartlist_t *descs) } SMARTLIST_FOREACH(descs, signed_descriptor_t *, d, { - routerstatus_t *rs = digestmap_get(ns->desc_digest_map, + const routerstatus_t *rs = digestmap_get(ns->desc_digest_map, d->signed_descriptor_digest); if (rs) { if (ns->valid_until > d->last_listed_as_valid_until) @@ -2144,7 +2085,7 @@ signed_descs_update_status_from_consensus_networkstatus(smartlist_t *descs) * return the result in a newly allocated string. Used only by controller * interface (for now.) */ char * -networkstatus_getinfo_helper_single(routerstatus_t *rs) +networkstatus_getinfo_helper_single(const routerstatus_t *rs) { char buf[RS_ENTRY_LEN+1]; routerstatus_format_entry(buf, sizeof(buf), rs, NULL, NS_CONTROL_PORT); @@ -2177,6 +2118,9 @@ networkstatus_getinfo_by_purpose(const char *purpose_string, time_t now) statuses = smartlist_create(); SMARTLIST_FOREACH(rl->routers, routerinfo_t *, ri, { + node_t *node = node_get_mutable_by_id(ri->cache_info.identity_digest); + if (!node) + continue; if (ri->cache_info.published_on < cutoff) continue; if (ri->purpose != purpose) @@ -2184,7 +2128,7 @@ networkstatus_getinfo_by_purpose(const char *purpose_string, time_t now) if (bridge_auth && ri->purpose == ROUTER_PURPOSE_BRIDGE) dirserv_set_router_is_running(ri, now); /* then generate and write out status lines for each of them */ - set_routerstatus_from_routerinfo(&rs, ri, now, 0, 0, 0); + set_routerstatus_from_routerinfo(&rs, node, ri, now, 0, 0, 0); smartlist_add(statuses, networkstatus_getinfo_helper_single(&rs)); }); @@ -2300,7 +2244,7 @@ getinfo_helper_networkstatus(control_connection_t *conn, const char *question, char **answer, const char **errmsg) { - routerstatus_t *status; + const routerstatus_t *status; (void) conn; if (!current_consensus) { @@ -2311,7 +2255,7 @@ getinfo_helper_networkstatus(control_connection_t *conn, if (!strcmp(question, "ns/all")) { smartlist_t *statuses = smartlist_create(); SMARTLIST_FOREACH(current_consensus->routerstatus_list, - routerstatus_t *, rs, + const routerstatus_t *, rs, { smartlist_add(statuses, networkstatus_getinfo_helper_single(rs)); }); diff --git a/src/or/networkstatus.h b/src/or/networkstatus.h index adaddc498..aa5496e2b 100644 --- a/src/or/networkstatus.h +++ b/src/or/networkstatus.h @@ -38,20 +38,30 @@ int router_set_networkstatus_v2(const char *s, time_t arrived_at, void networkstatus_v2_list_clean(time_t now); int compare_digest_to_routerstatus_entry(const void *_key, const void **_member); -routerstatus_t *networkstatus_v2_find_entry(networkstatus_v2_t *ns, +const routerstatus_t *networkstatus_v2_find_entry(networkstatus_v2_t *ns, const char *digest); -routerstatus_t *networkstatus_vote_find_entry(networkstatus_t *ns, +const routerstatus_t *networkstatus_vote_find_entry(networkstatus_t *ns, + const char *digest); +routerstatus_t *networkstatus_v2_find_mutable_entry(networkstatus_v2_t *ns, + const char *digest); +routerstatus_t *networkstatus_vote_find_mutable_entry(networkstatus_t *ns, const char *digest); int networkstatus_vote_find_entry_idx(networkstatus_t *ns, const char *digest, int *found_out); const smartlist_t *networkstatus_get_v2_list(void); download_status_t *router_get_dl_status_by_descriptor_digest(const char *d); -routerstatus_t *router_get_consensus_status_by_id(const char *digest); -routerstatus_t *router_get_consensus_status_by_descriptor_digest( +const routerstatus_t *router_get_consensus_status_by_id(const char *digest); +routerstatus_t *router_get_mutable_consensus_status_by_id( + const char *digest); +const routerstatus_t *router_get_consensus_status_by_descriptor_digest( + networkstatus_t *consensus, + const char *digest); +routerstatus_t *router_get_mutable_consensus_status_by_descriptor_digest( networkstatus_t *consensus, const char *digest); -routerstatus_t *router_get_consensus_status_by_nickname(const char *nickname, - int warn_if_unnamed); +const routerstatus_t *router_get_consensus_status_by_nickname( + const char *nickname, + int warn_if_unnamed); const char *networkstatus_get_router_digest_by_nickname(const char *nickname); int networkstatus_nickname_is_unnamed(const char *nickname); void networkstatus_consensus_download_failed(int status_code, @@ -83,7 +93,7 @@ void routers_update_status_from_consensus_networkstatus(smartlist_t *routers, void signed_descs_update_status_from_consensus_networkstatus( smartlist_t *descs); -char *networkstatus_getinfo_helper_single(routerstatus_t *rs); +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, diff --git a/src/or/nodelist.c b/src/or/nodelist.c new file mode 100644 index 000000000..951a7a8e8 --- /dev/null +++ b/src/or/nodelist.c @@ -0,0 +1,733 @@ +/* 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. */ +/* See LICENSE for licensing information */ + +#include "or.h" +#include "config.h" +#include "dirserv.h" +#include "microdesc.h" +#include "networkstatus.h" +#include "nodelist.h" +#include "policies.h" +#include "router.h" +#include "routerlist.h" + +#include <string.h> + +static void nodelist_drop_node(node_t *node, int remove_from_ht); +static void node_free(node_t *node); + +/** A nodelist_t holds a node_t object for every router we're "willing to use + * for something". Specifically, it should hold a node_t for every node that + * is currently in the routerlist, or currently in the consensus we're using. + */ +typedef struct nodelist_t { + /* A list of all the nodes. */ + smartlist_t *nodes; + /* Hash table to map from node ID digest to node. */ + HT_HEAD(nodelist_map, node_t) nodes_by_id; + +} nodelist_t; + +static INLINE unsigned int +node_id_hash(const node_t *node) +{ +#if SIZEOF_INT == 4 + const uint32_t *p = (const uint32_t*)node->identity; + return p[0] ^ p[1] ^ p[2] ^ p[3] ^ p[4]; +#elif SIZEOF_INT == 8 + const uint64_t *p = (const uint32_t*)node->identity; + const uint32_t *p32 = (const uint32_t*)node->identity; + return p[0] ^ p[1] ^ p32[4]; +#endif +} + +static INLINE unsigned int +node_id_eq(const node_t *node1, const node_t *node2) +{ + return 0 == memcmp(node1->identity, node2->identity, DIGEST_LEN); +} + +HT_PROTOTYPE(nodelist_map, node_t, ht_ent, node_id_hash, node_id_eq); +HT_GENERATE(nodelist_map, node_t, ht_ent, node_id_hash, node_id_eq, + 0.6, malloc, realloc, free); + +/** The global nodelist. */ +static nodelist_t *the_nodelist=NULL; + +/** Create an empty nodelist if we haven't done so already. */ +static void +init_nodelist(void) +{ + if (PREDICT_UNLIKELY(the_nodelist == NULL)) { + the_nodelist = tor_malloc_zero(sizeof(nodelist_t)); + HT_INIT(nodelist_map, &the_nodelist->nodes_by_id); + the_nodelist->nodes = smartlist_create(); + } +} + +/** As node_get_by_id, but returns a non-const pointer */ +node_t * +node_get_mutable_by_id(const char *identity_digest) +{ + node_t search, *node; + if (PREDICT_UNLIKELY(the_nodelist == NULL)) + return NULL; + + memcpy(&search.identity, identity_digest, DIGEST_LEN); + node = HT_FIND(nodelist_map, &the_nodelist->nodes_by_id, &search); + return node; +} + +/** Return the node_t whose identity is <b>identity_digest</b>, or NULL + * if no such node exists. */ +const node_t * +node_get_by_id(const char *identity_digest) +{ + return node_get_mutable_by_id(identity_digest); +} + +/** Internal: return the node_t whose identity_digest is + * <b>identity_digest</b>. If none exists, create a new one, add it to the + * nodelist, and return it. + * + * Requires that the nodelist be initialized. + */ +static node_t * +node_get_or_create(const char *identity_digest) +{ + node_t *node; + + if ((node = node_get_mutable_by_id(identity_digest))) + return node; + + node = tor_malloc_zero(sizeof(node_t)); + memcpy(node->identity, identity_digest, DIGEST_LEN); + HT_INSERT(nodelist_map, &the_nodelist->nodes_by_id, node); + + smartlist_add(the_nodelist->nodes, node); + node->nodelist_idx = smartlist_len(the_nodelist->nodes) - 1; + + node->country = -1; + + return node; +} + +/** Add <b>ri</b> to the nodelist. */ +node_t * +nodelist_add_routerinfo(routerinfo_t *ri) +{ + node_t *node; + init_nodelist(); + node = node_get_or_create(ri->cache_info.identity_digest); + node->ri = ri; + + if (node->country == -1) + node_set_country(node); + + if (authdir_mode(get_options())) { + const char *discard=NULL; + uint32_t status = dirserv_router_get_status(ri, &discard); + dirserv_set_node_flags_from_authoritative_status(node, status); + } + + return node; +} + +/** Set the appropriate node_t to use <b>md</b> as its microdescriptor. + * + * Called when a new microdesc has arrived and the usable consensus flavor + * is "microdesc". + **/ +node_t * +nodelist_add_microdesc(microdesc_t *md) +{ + networkstatus_t *ns = + networkstatus_get_latest_consensus_by_flavor(FLAV_MICRODESC); + const routerstatus_t *rs; + node_t *node; + if (ns == NULL) + return NULL; + init_nodelist(); + + /* Microdescriptors don't carry an identity digest, so we need to figure + * it out by looking up the routerstatus. */ + rs = router_get_consensus_status_by_descriptor_digest(ns, md->digest); + if (rs == NULL) + return NULL; + node = node_get_mutable_by_id(rs->identity_digest); + if (node) + node->md = md; + return node; +} + +/** Tell the nodelist that the current usable consensus to <b>ns</b>. + * This makes the nodelist change all of the routerstatus entries for + * the nodes, drop nodes that no longer have enough info to get used, + * and grab microdescriptors into nodes as appropriate. + */ +void +nodelist_set_consensus(networkstatus_t *ns) +{ + or_options_t *options = get_options(); + int authdir = authdir_mode_v2(options) || authdir_mode_v3(options); + init_nodelist(); + + SMARTLIST_FOREACH(the_nodelist->nodes, node_t *, node, + node->rs = NULL); + + SMARTLIST_FOREACH_BEGIN(ns->routerstatus_list, routerstatus_t *, rs) { + node_t *node = node_get_or_create(rs->identity_digest); + node->rs = rs; + if (ns->flavor == FLAV_MICRODESC) { + if (node->md == NULL || + 0!=memcmp(node->md->digest,rs->descriptor_digest,DIGEST256_LEN)) { + node->md = microdesc_cache_lookup_by_digest256(NULL, + rs->descriptor_digest); + } + } + + node_set_country(node); + + /* If we're not an authdir, believe others. */ + if (!authdir) { + node->is_valid = rs->is_valid; + node->is_running = rs->is_flagged_running; + node->is_fast = rs->is_fast; + node->is_stable = rs->is_stable; + node->is_possible_guard = rs->is_possible_guard; + node->is_exit = rs->is_exit; + node->is_bad_directory = rs->is_bad_directory; + node->is_bad_exit = rs->is_bad_exit; + node->is_hs_dir = rs->is_hs_dir; + } + + } SMARTLIST_FOREACH_END(rs); + + nodelist_purge(); + + if (! authdir) { + SMARTLIST_FOREACH_BEGIN(the_nodelist->nodes, node_t *, node) { + /* We have no routerstatus for this router. Clear flags so we can skip + * it, maybe.*/ + if (!node->rs) { + tor_assert(node->ri); /* if it had only an md, or nothing, purge + * would have removed it. */ + if (node->ri->purpose == ROUTER_PURPOSE_GENERAL) { + /* Clear all flags. */ + node->is_valid = node->is_running = node->is_hs_dir = + node->is_fast = node->is_stable = + node->is_possible_guard = node->is_exit = + node->is_bad_exit = node->is_bad_directory = 0; + } + } + } SMARTLIST_FOREACH_END(node); + } +} + +/** Helper: return true iff a node has a usable amount of information*/ +static INLINE int +node_is_usable(const node_t *node) +{ + return (node->rs) || (node->ri); +} + +/** Tell the nodelist that <b>md</b> is no longer a microdescriptor for the + * node with <b>identity_digest</b>. */ +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) + node->md = NULL; +} + +/** Tell the nodelist that <b>ri</b> is no longer in the routerlist. */ +void +nodelist_remove_routerinfo(routerinfo_t *ri) +{ + node_t *node = node_get_mutable_by_id(ri->cache_info.identity_digest); + if (node && node->ri == ri) { + node->ri = NULL; + if (! node_is_usable(node)) { + nodelist_drop_node(node, 1); + node_free(node); + } + } +} + +/** Remove <b>node</b> from the nodelist. (Asserts that it was there to begin + * with.) */ +static void +nodelist_drop_node(node_t *node, int remove_from_ht) +{ + node_t *tmp; + int idx; + if (remove_from_ht) { + tmp = HT_REMOVE(nodelist_map, &the_nodelist->nodes_by_id, node); + tor_assert(tmp == node); + } + + idx = node->nodelist_idx; + tor_assert(idx >= 0); + + tor_assert(node == smartlist_get(the_nodelist->nodes, idx)); + smartlist_del(the_nodelist->nodes, idx); + if (idx < smartlist_len(the_nodelist->nodes)) { + tmp = smartlist_get(the_nodelist->nodes, idx); + tmp->nodelist_idx = idx; + } + node->nodelist_idx = -1; +} + +/** Release storage held by <b>node</b> */ +static void +node_free(node_t *node) +{ + if (!node) + return; + tor_assert(node->nodelist_idx == -1); + tor_free(node); +} + +/** Remove all entries from the nodelist that don't have enough info to be + * usable for anything. */ +void +nodelist_purge(void) +{ + node_t **iter; + if (PREDICT_UNLIKELY(the_nodelist == NULL)) + return; + + /* Remove the non-usable nodes. */ + for (iter = HT_START(nodelist_map, &the_nodelist->nodes_by_id); iter; ) { + node_t *node = *iter; + + if (node_is_usable(node)) { + iter = HT_NEXT(nodelist_map, &the_nodelist->nodes_by_id, iter); + } else { + iter = HT_NEXT_RMV(nodelist_map, &the_nodelist->nodes_by_id, iter); + nodelist_drop_node(node, 0); + node_free(node); + } + } + nodelist_assert_ok(); +} + +/** Release all storage held by the nodelist. */ +void +nodelist_free_all(void) +{ + if (PREDICT_UNLIKELY(the_nodelist == NULL)) + return; + + HT_CLEAR(nodelist_map, &the_nodelist->nodes_by_id); + SMARTLIST_FOREACH_BEGIN(the_nodelist->nodes, node_t *, node) { + node->nodelist_idx = -1; + node_free(node); + } SMARTLIST_FOREACH_END(node); + + smartlist_free(the_nodelist->nodes); + + tor_free(the_nodelist); +} + +/** Check that the nodelist is internally consistent, and consistent with + * the directory info it's derived from. + */ +void +nodelist_assert_ok(void) +{ + routerlist_t *rl = router_get_routerlist(); + networkstatus_t *ns = networkstatus_get_latest_consensus(); + digestmap_t *dm = digestmap_new(); + + if (!the_nodelist) + return; + + /* 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, + node->identity, DIGEST_LEN)); + tor_assert(! digestmap_get(dm, node->identity)); + digestmap_set(dm, node->identity, (void*)node); + } SMARTLIST_FOREACH_END(ri); + } + + /* every routerstatus in ns should be in the nodelist */ + if (ns) { + 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)); + digestmap_set(dm, node->identity, (void*)node); + if (ns->flavor == FLAV_MICRODESC) { + /* If it's a microdesc consensus, every entry that has a + * microdescriptor should be in the nodelist. + */ + microdesc_t *md = + microdesc_cache_lookup_by_digest256(NULL, rs->descriptor_digest); + tor_assert(md == node->md); + } + } SMARTLIST_FOREACH_END(rs); + } + + /* The nodelist should have no other entries, and its entries should be + * well-formed. */ + SMARTLIST_FOREACH_BEGIN(the_nodelist->nodes, node_t *, node) { + tor_assert(digestmap_get(dm, node->identity) != NULL); + tor_assert(node_sl_idx == node->nodelist_idx); + } SMARTLIST_FOREACH_END(node); + + tor_assert((long)smartlist_len(the_nodelist->nodes) == + (long)HT_SIZE(&the_nodelist->nodes_by_id)); + + digestmap_free(dm, NULL); +} + +/** Return a list of a node_t * for every node we know about. The caller + * MUST NOT modify the list. (You can set and clear flags in the nodes if + * you must, but you must not add or remove nodes.) */ +smartlist_t * +nodelist_get_list(void) +{ + init_nodelist(); + return the_nodelist->nodes; +} + +/** Given a hex-encoded nickname of the format DIGEST, $DIGEST, $DIGEST=name, + * or $DIGEST~name, return the node with the matching identity digest and + * nickname (if any). Return NULL if no such node exists, or if <b>hex_id</b> + * is not well-formed. */ +const node_t * +node_get_by_hex_id(const char *hex_id) +{ + char digest_buf[DIGEST_LEN]; + char nn_buf[MAX_NICKNAME_LEN+1]; + char nn_char='\0'; + + if (hex_digest_nickname_decode(hex_id, digest_buf, &nn_char, nn_buf)==0) { + const node_t *node = node_get_by_id(digest_buf); + if (!node) + return NULL; + if (nn_char) { + const char *real_name = node_get_nickname(node); + if (!real_name || strcasecmp(real_name, nn_buf)) + return NULL; + 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)) + return NULL; + } + } + return node; + } + + return NULL; +} + +/** Given a nickname (possibly verbose, possibly a hexadecimal digest), return + * the corresponding node_t, or NULL if none exists. Warn the user if + * <b>warn_if_unnamed</b> is set, and they have specified a router by + * nickname, but the Named flag isn't set for that router. */ +const node_t * +node_get_by_nickname(const char *nickname, int warn_if_unnamed) +{ + const node_t *node; + if (!the_nodelist) + return NULL; + + /* Handle these cases: DIGEST, $DIGEST, $DIGEST=name, $DIGEST~name. */ + if ((node = node_get_by_hex_id(nickname)) != NULL) + return node; + + if (!strcasecmp(nickname, UNNAMED_ROUTER_NICKNAME)) + return NULL; + + /* Okay, so if we get here, the nickname is just a nickname. Is there + * a binding for it in the consensus? */ + { + const char *named_id = + networkstatus_get_router_digest_by_nickname(nickname); + if (named_id) + return node_get_by_id(named_id); + } + + /* Is it marked as owned-by-someone-else? */ + if (networkstatus_nickname_is_unnamed(nickname)) { + log_info(LD_GENERAL, "The name %s is listed as Unnamed: there is some " + "router that holds it, but not one listed in the current " + "consensus.", escaped(nickname)); + return NULL; + } + + /* Okay, so the name is not canonical for anybody. */ + { + smartlist_t *matches = smartlist_create(); + const node_t *choice = NULL; + + SMARTLIST_FOREACH_BEGIN(the_nodelist->nodes, node_t *, node) { + if (!strcasecmp(node_get_nickname(node), nickname)) + smartlist_add(matches, node); + } SMARTLIST_FOREACH_END(node); + + if (smartlist_len(matches)>1 && warn_if_unnamed) { + int any_unwarned = 0; + SMARTLIST_FOREACH_BEGIN(matches, node_t *, node) { + if (!node->name_lookup_warned) { + node->name_lookup_warned = 1; + any_unwarned = 1; + } + } SMARTLIST_FOREACH_END(node); + + if (any_unwarned) { + log_warn(LD_CONFIG, "There are multiple matches for the name %s, " + "but none is listed as Named in the directory consensus. " + "Choosing one arbitrarily.", nickname); + } + } else if (smartlist_len(matches)>1 && warn_if_unnamed) { + char fp[HEX_DIGEST_LEN+1]; + node_t *node = smartlist_get(matches, 0); + if (node->name_lookup_warned) { + base16_encode(fp, sizeof(fp), node->identity, DIGEST_LEN); + log_warn(LD_CONFIG, + "You specified a server \"%s\" by name, but the directory " + "authorities do not have any key registered for this " + "nickname -- so it could be used by any server, not just " + "the one you meant. " + "To make sure you get the same server in the future, refer " + "to it by key, as \"$%s\".", nickname, fp); + node->name_lookup_warned = 1; + } + } + + if (smartlist_len(matches)) + choice = smartlist_get(matches, 0); + + smartlist_free(matches); + return choice; + } +} + +/** Return the nickname of <b>node</b>, or NULL if we can't find one. */ +const char * +node_get_nickname(const node_t *node) +{ + tor_assert(node); + if (node->rs) + return node->rs->nickname; + else if (node->ri) + return node->ri->nickname; + else + return NULL; +} + +/** Return true iff the nickname of <b>node</b> is canonical, based on the + * latest consensus. */ +int +node_is_named(const node_t *node) +{ + const char *named_id; + const char *nickname = node_get_nickname(node); + if (!nickname) + return 0; + named_id = networkstatus_get_router_digest_by_nickname(nickname); + if (!named_id) + return 0; + return !memcmp(named_id, node->identity, DIGEST_LEN); +} + +/** Return true iff <b>node</b> appears to be a directory authority or + * directory cache */ +int +node_is_dir(const node_t *node) +{ + if (node->rs) + return node->rs->dir_port != 0; + else if (node->ri) + return node->ri->dir_port != 0; + else + return 0; +} + +/** Return true iff <b>node</b> has either kind of usable descriptor -- that + * is, a routerdecriptor or a microdescriptor. */ +int +node_has_descriptor(const node_t *node) +{ + return (node->ri || + (node->rs && node->md)); +} + +/** Return the router_purpose of <b>node</b>. */ +int +node_get_purpose(const node_t *node) +{ + if (node->ri) + return node->ri->purpose; + else + return ROUTER_PURPOSE_GENERAL; +} + +/** Compute the verbose ("extended") nickname of <b>node</b> and store it + * into the MAX_VERBOSE_NICKNAME_LEN+1 character buffer at + * <b>verbose_nickname_out</b> */ +void +node_get_verbose_nickname(const node_t *node, + char *verbose_name_out) +{ + const char *nickname = node_get_nickname(node); + int is_named = node_is_named(node); + verbose_name_out[0] = '$'; + base16_encode(verbose_name_out+1, HEX_DIGEST_LEN+1, node->identity, + DIGEST_LEN); + if (!nickname) + return; + verbose_name_out[1+HEX_DIGEST_LEN] = is_named ? '=' : '~'; + strlcpy(verbose_name_out+1+HEX_DIGEST_LEN+1, nickname, MAX_NICKNAME_LEN+1); +} + +/** Return true iff it seems that <b>node</b> allows circuits to exit + * through it directlry from the client. */ +int +node_allows_single_hop_exits(const node_t *node) +{ + if (node && node->ri) + return node->ri->allow_single_hop_exits; + else + return 0; +} + +/** Return true iff it seems that <b>node</b> has an exit policy that doesn't + * actually permit anything to exit, or we don't know its exit policy */ +int +node_exit_policy_rejects_all(const node_t *node) +{ + if (node->rejects_all) + return 1; + + if (node->ri) + return node->ri->policy_is_reject_star; + else if (node->md) + return node->md->exit_policy == NULL || + short_policy_is_reject_star(node->md->exit_policy); + else + return 1; +} + +/** Copy the address for <b>node</b> into *<b>addr_out</b>. */ +int +node_get_addr(const node_t *node, tor_addr_t *addr_out) +{ + if (node->ri) { + tor_addr_from_ipv4h(addr_out, node->ri->addr); + return 0; + } else if (node->rs) { + tor_addr_from_ipv4h(addr_out, node->rs->addr); + return 0; + } + return -1; +} + +/** Return the host-order IPv4 address for <b>node</b>, or 0 if it doesn't + * seem to have one. */ +uint32_t +node_get_addr_ipv4h(const node_t *node) +{ + if (node->ri) { + return node->ri->addr; + } else if (node->rs) { + return node->rs->addr; + } + return 0; +} + +/** Copy a string representation of the IP address for <b>node</b> into the + * <b>len</b>-byte buffer at <b>buf</b>. + */ +void +node_get_address_string(const node_t *node, char *buf, size_t len) +{ + if (node->ri) { + strlcpy(buf, node->ri->address, len); + } else if (node->rs) { + tor_addr_t addr; + tor_addr_from_ipv4h(&addr, node->rs->addr); + tor_addr_to_str(buf, &addr, len, 0); + } else { + buf[0] = '\0'; + } +} + +/** Return <b>node</b>'s declared uptime, or -1 if it doesn't seem to have + * one. */ +long +node_get_declared_uptime(const node_t *node) +{ + if (node->ri) + return node->ri->uptime; + else + return -1; +} + +/** Return <b>node</b>'s declared or_port */ +uint16_t +node_get_orport(const node_t *node) +{ + if (node->ri) + return node->ri->or_port; + else if (node->rs) + return node->rs->or_port; + else + return 0; +} + +/** Return <b>node</b>'s platform string, or NULL if we don't know it. */ +const char * +node_get_platform(const node_t *node) +{ + /* If we wanted, we could record the version in the routerstatus_t, since + * the consensus lists it. We don't, though, so this function just won't + * work with microdescriptors. */ + if (node->ri) + return node->ri->platform; + else + return NULL; +} + +/** Return <b>node</b>'s time of publication, or 0 if we don't have one. */ +time_t +node_get_published_on(const node_t *node) +{ + if (node->ri) + return node->ri->cache_info.published_on; + else + return 0; +} + +/** Return true iff <b>node</b> is one representing this router. */ +int +node_is_me(const node_t *node) +{ + return router_digest_is_me(node->identity); +} + +/** Return <b>node</b> declared family (as a list of names), or NULL if + * the node didn't declare a family. */ +const smartlist_t * +node_get_declared_family(const node_t *node) +{ + if (node->ri && node->ri->declared_family) + return node->ri->declared_family; + else if (node->md && node->md->family) + return node->md->family; + else + return NULL; +} + diff --git a/src/or/nodelist.h b/src/or/nodelist.h new file mode 100644 index 000000000..d85d3eb41 --- /dev/null +++ b/src/or/nodelist.h @@ -0,0 +1,60 @@ +/* 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. */ +/* See LICENSE for licensing information */ + +/** + * \file microdesc.h + * \brief Header file for microdesc.c. + **/ + +#ifndef _TOR_NODELIST_H +#define _TOR_NODELIST_H + +node_t *node_get_mutable_by_id(const char *identity_digest); +const node_t *node_get_by_id(const char *identity_digest); +const node_t *node_get_by_hex_id(const char *identity_digest); +node_t *nodelist_add_routerinfo(routerinfo_t *ri); +node_t *nodelist_add_microdesc(microdesc_t *md); +void nodelist_set_consensus(networkstatus_t *ns); + +void nodelist_remove_microdesc(const char *identity_digest, microdesc_t *md); +void nodelist_remove_routerinfo(routerinfo_t *ri); +void nodelist_purge(void); + +void nodelist_free_all(void); +void nodelist_assert_ok(void); + +const node_t *node_get_by_nickname(const char *nickname, int warn_if_unnamed); +void node_get_verbose_nickname(const node_t *node, + char *verbose_name_out); +int node_is_named(const node_t *node); +int node_is_dir(const node_t *node); +int node_has_descriptor(const node_t *node); +int node_get_purpose(const node_t *node); +#define node_is_bridge(node) \ + (node_get_purpose((node)) == ROUTER_PURPOSE_BRIDGE) +int node_is_me(const node_t *node); +int node_exit_policy_rejects_all(const node_t *node); +int node_get_addr(const node_t *node, tor_addr_t *addr_out); +uint32_t node_get_addr_ipv4h(const node_t *node); +int node_allows_single_hop_exits(const node_t *node); +uint16_t node_get_orport(const node_t *node); +const char *node_get_nickname(const node_t *node); +const char *node_get_platform(const node_t *node); +void node_get_address_string(const node_t *node, char *cp, size_t len); +long node_get_declared_uptime(const node_t *node); +time_t node_get_published_on(const node_t *node); +const smartlist_t *node_get_declared_family(const node_t *node); + +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); +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 46e7afb78..c5c6a58bb 100644 --- a/src/or/ntmain.c +++ b/src/or/ntmain.c @@ -183,7 +183,6 @@ nt_service_loadlibrary(void) */ int nt_service_is_stopping(void) -/* XXXX this function would probably _love_ to be inline, in 0.2.0. */ { /* If we haven't loaded the function pointers, we can't possibly be an NT * service trying to shut down. */ diff --git a/src/or/or.h b/src/or/or.h index 01365381f..5498d933c 100644 --- a/src/or/or.h +++ b/src/or/or.h @@ -809,6 +809,9 @@ typedef enum { * Tor 0.1.2.x is obsolete, we can remove this. */ #define DEFAULT_CLIENT_NICKNAME "client" +/** Name chosen by routers that don't configure nicknames */ +#define UNNAMED_ROUTER_NICKNAME "Unnamed" + /** Number of bytes in a SOCKS4 header. */ #define SOCKS4_NETWORK_LEN 8 @@ -1510,52 +1513,44 @@ typedef struct { unsigned int allow_single_hop_exits:1; /**< Whether the router says * it allows single hop exits. */ - /* local info */ - unsigned int is_running:1; /**< As far as we know, is this OR currently - * running? */ - unsigned int is_valid:1; /**< Has a trusted dirserver validated this OR? - * (For Authdir: Have we validated this OR?) - */ - unsigned int is_named:1; /**< Do we believe the nickname that this OR gives - * us? */ - unsigned int is_fast:1; /** Do we think this is a fast OR? */ - unsigned int is_stable:1; /** Do we think this is a stable OR? */ - unsigned int is_possible_guard:1; /**< Do we think this is an OK guard? */ - unsigned int is_exit:1; /**< Do we think this is an OK exit? */ - unsigned int is_bad_exit:1; /**< Do we think this exit is censored, borked, - * or otherwise nasty? */ - unsigned int is_bad_directory:1; /**< Do we think this directory is junky, - * underpowered, or otherwise useless? */ unsigned int wants_to_be_hs_dir:1; /**< True iff this router claims to be * a hidden service directory. */ - unsigned int is_hs_dir:1; /**< True iff this router is a hidden service - * directory according to the authorities. */ unsigned int policy_is_reject_star:1; /**< True iff the exit policy for this * router rejects everything. */ /** True if, after we have added this router, we should re-launch * tests for it. */ unsigned int needs_retest_if_added:1; -/** Tor can use this router for general positions in circuits. */ +/** Tor can use this router for general positions in circuits; we got it + * from a directory server as usual, or we're an authority and a server + * uploaded it. */ #define ROUTER_PURPOSE_GENERAL 0 -/** Tor should avoid using this router for circuit-building. */ +/** Tor should avoid using this router for circuit-building: we got it + * from a crontroller. If the controller wants to use it, it'll have to + * ask for it by identity. */ #define ROUTER_PURPOSE_CONTROLLER 1 -/** Tor should use this router only for bridge positions in circuits. */ +/** Tor should use this router only for bridge positions in circuits: we got + * it via a directory request from the bridge itself, or a bridge + * authority. x*/ #define ROUTER_PURPOSE_BRIDGE 2 /** Tor should not use this router; it was marked in cached-descriptors with * a purpose we didn't recognize. */ #define ROUTER_PURPOSE_UNKNOWN 255 - uint8_t purpose; /** What positions in a circuit is this router good for? */ + /* In what way did we find out about this router? One of ROUTER_PURPOSE_*. + * Routers of different purposes are kept segregated and used for different + * things; see notes on ROUTER_PURPOSE_* macros above. + */ + uint8_t purpose; /* The below items are used only by authdirservers for * reachability testing. */ + /** When was the last time we could reach this OR? */ time_t last_reachable; /** When did we start testing reachability for this OR? */ time_t testing_since; - /** According to the geoip db what country is this router in? */ - country_t country; + } routerinfo_t; /** Information needed to keep and cache a signed extra-info document. */ @@ -1591,7 +1586,11 @@ typedef struct routerstatus_t { unsigned int is_exit:1; /**< True iff this router is a good exit. */ unsigned int is_stable:1; /**< True iff this router stays up a long time. */ unsigned int is_fast:1; /**< True iff this router has good bandwidth. */ - unsigned int is_running:1; /**< True iff this router is up. */ + /** True iff this router is called 'running' in the consensus. We give it + * this funny name so that we don't accidentally use this bit as a view of + * whether we think the router is *currently* running. If that's what you + * want to know, look at is_running in node_t. */ + unsigned int is_flagged_running:1; unsigned int is_named:1; /**< True iff "nickname" belongs to this router. */ unsigned int is_unnamed:1; /**< True iff "nickname" belongs to another * router. */ @@ -1643,15 +1642,31 @@ typedef struct routerstatus_t { * from this authority.) Applies in v2 networkstatus document only. */ unsigned int need_to_mirror:1; - unsigned int name_lookup_warned:1; /**< Have we warned the user for referring - * to this (unnamed) router by nickname? - */ time_t last_dir_503_at; /**< When did this router last tell us that it * was too busy to serve directory info? */ download_status_t dl_status; } routerstatus_t; +/** A single entry in a parsed policy summary, describing a range of ports. */ +typedef struct short_policy_entry_t { + uint16_t min_port, max_port; +} short_policy_entry_t; + +/** A short_poliy_t is the parsed version of a policy summary. */ +typedef struct short_policy_t { + /** True if the members of 'entries' are port ranges to accept; false if + * they are port ranges to reject */ + 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). + */ + short_policy_entry_t entries[1]; +} short_policy_t; + /** A microdescriptor is the smallest amount of information needed to build a * circuit through a router. They are generated by the directory authorities, * using information from the uploaded routerinfo documents. They are not @@ -1693,11 +1708,75 @@ typedef struct microdesc_t { crypto_pk_env_t *onion_pkey; /** As routerinfo_t.family */ smartlist_t *family; - /** Encoded exit policy summary */ - char *exitsummary; /**< exit policy summary - - * XXX this probably should not stay a string. */ + /** Exit policy summary */ + short_policy_t *exit_policy; } microdesc_t; +/** A node_t represents a Tor router. + * + * Specifically, a node_t is a Tor router as we are using it: a router that + * we are considering for circuits, connections, and so on. A node_t is a + * thin wrapper around the routerstatus, routerinfo, and microdesc for a + * single wrapper, and provides a consistent interface for all of them. + * + * Also, a node_t has mutable state. While a routerinfo, a routerstatus, + * and a microdesc have[*] only the information read from a router + * descriptor, a consensus entry, and a microdescriptor (respectively)... + * a node_t has flags based on *our own current opinion* of the node. + * + * [*] Actually, there is some leftover information in each that is mutable. + * We should try to excise that. + */ +typedef struct node_t { + /* Indexing information */ + + /** Used to look up the node_t by its identity digest. */ + HT_ENTRY(node_t) ht_ent; + /** Position of the node within the list of nodes */ + int nodelist_idx; + + /** The identity digest of this node_t. No more than one node_t per + * identity may exist at a time. */ + char identity[DIGEST_LEN]; + + microdesc_t *md; + routerinfo_t *ri; + routerstatus_t *rs; + + /* local info: copied from routerstatus, then possibly frobbed based + * on experience. Authorities set this stuff directly. */ + + unsigned int is_running:1; /**< As far as we know, is this OR currently + * running? */ + unsigned int is_valid:1; /**< Has a trusted dirserver validated this OR? + * (For Authdir: Have we validated this OR?) + */ + unsigned int is_fast:1; /** Do we think this is a fast OR? */ + unsigned int is_stable:1; /** Do we think this is a stable OR? */ + unsigned int is_possible_guard:1; /**< Do we think this is an OK guard? */ + unsigned int is_exit:1; /**< Do we think this is an OK exit? */ + unsigned int is_bad_exit:1; /**< Do we think this exit is censored, borked, + * or otherwise nasty? */ + unsigned int is_bad_directory:1; /**< Do we think this directory is junky, + * underpowered, or otherwise useless? */ + unsigned int is_hs_dir:1; /**< True iff this router is a hidden service + * directory according to the authorities. */ + + /* Local info: warning state. */ + + unsigned int name_lookup_warned:1; /**< Have we warned the user for referring + * to this (unnamed) router by nickname? + */ + + /** Local info: we treat this node as if it rejects everything */ + unsigned int rejects_all:1; + + /* Local info: derived. */ + + /** According to the geoip db what country is this router in? */ + country_t country; +} node_t; + /** How many times will we try to download a router's descriptor before giving * up? */ #define MAX_ROUTERDESC_DOWNLOAD_FAILURES 8 @@ -2181,10 +2260,12 @@ typedef struct circuit_t { * length ONIONSKIN_CHALLENGE_LEN. */ char *n_conn_onionskin; - time_t timestamp_created; /**< When was this circuit created? */ + /** When was this circuit created? We keep this timestamp with a higher + * 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. */ - struct timeval highres_created; /**< When exactly was the circuit created? */ uint16_t marked_for_close; /**< Should we close this circuit at the end of * the main loop? (If true, holds the line number @@ -2668,7 +2749,8 @@ typedef struct { char *MyFamily; /**< Declared family for this OR. */ config_line_t *NodeFamilies; /**< List of config lines for - * node families */ + * node families */ + smartlist_t *NodeFamilySets; /**< List of parsed NodeFamilies values. */ config_line_t *AuthDirBadDir; /**< Address policy for descriptors to * mark as bad dir mirrors. */ config_line_t *AuthDirBadExit; /**< Address policy for descriptors to @@ -3386,7 +3468,7 @@ typedef enum { ADDR_POLICY_PROBABLY_ACCEPTED=1, /** Part of the address was unknown, but as far as we can tell, it was * rejected. */ - ADDR_POLICY_PROBABLY_REJECTED=2 + ADDR_POLICY_PROBABLY_REJECTED=2, } addr_policy_result_t; /********************************* rephist.c ***************************/ @@ -3536,7 +3618,8 @@ typedef enum { CRN_NEED_GUARD = 1<<2, CRN_ALLOW_INVALID = 1<<3, /* XXXX not used, apparently. */ - CRN_WEIGHT_AS_EXIT = 1<<5 + CRN_WEIGHT_AS_EXIT = 1<<5, + CRN_NEED_DESC = 1<<6 } router_crn_flags_t; /** Return value for router_add_to_routerlist() and dirserv_add_descriptor() */ diff --git a/src/or/policies.c b/src/or/policies.c index 4fd090415..8d8de1182 100644 --- a/src/or/policies.c +++ b/src/or/policies.c @@ -11,6 +11,7 @@ #include "or.h" #include "config.h" #include "dirserv.h" +#include "nodelist.h" #include "policies.h" #include "routerparse.h" #include "ht.h" @@ -261,7 +262,7 @@ fascist_firewall_allows_address_or(const tor_addr_t *addr, uint16_t port) /** Return true iff we think our firewall will let us make an OR connection to * <b>ri</b>. */ int -fascist_firewall_allows_or(routerinfo_t *ri) +fascist_firewall_allows_or(const routerinfo_t *ri) { /* XXXX proposal 118 */ tor_addr_t addr; @@ -269,6 +270,22 @@ fascist_firewall_allows_or(routerinfo_t *ri) return fascist_firewall_allows_address_or(&addr, ri->or_port); } +/** Return true iff we think our firewall will let us make an OR connection to + * <b>node</b>. */ +int +fascist_firewall_allows_node(const node_t *node) +{ + if (node->ri) { + return fascist_firewall_allows_or(node->ri); + } else if (node->rs) { + tor_addr_t addr; + tor_addr_from_ipv4h(&addr, node->rs->addr); + return fascist_firewall_allows_address_or(&addr, node->rs->or_port); + } else { + return 1; + } +} + /** Return true iff we think our firewall will let us make a directory * connection to addr:port. */ int @@ -858,15 +875,11 @@ policies_parse_exit_policy(config_line_t *cfg, smartlist_t **dest, return 0; } -/** Replace the exit policy of <b>r</b> with reject *:*. */ +/** Replace the exit policy of <b>node</b> with reject *:* */ void -policies_set_router_exitpolicy_to_reject_all(routerinfo_t *r) +policies_set_node_exitpolicy_to_reject_all(node_t *node) { - addr_policy_t *item; - addr_policy_list_free(r->exit_policy); - r->exit_policy = smartlist_create(); - item = router_parse_addr_policy_item_from_string("reject *:*", -1); - smartlist_add(r->exit_policy, item); + node->rejects_all = 1; } /** Return 1 if there is at least one /8 subnet in <b>policy</b> that @@ -1075,7 +1088,7 @@ policy_summary_split(smartlist_t *summary, int start_at_index; int i = 0; - /* XXXX Do a binary search if run time matters */ + while (AT(i)->prt_max < prt_min) i++; if (AT(i)->prt_min != prt_min) { @@ -1288,6 +1301,195 @@ policy_summarize(smartlist_t *policy) return result; } +/** Convert a summarized policy string into a short_policy_t. Return NULL + * if the string is not well-formed. */ +short_policy_t * +parse_short_policy(const char *summary) +{ + const char *orig_summary = summary; + short_policy_t *result; + int is_accept; + int n_entries; + short_policy_entry_t entries[MAX_EXITPOLICY_SUMMARY_LEN]; /* overkill */ + const char *next; + + if (!strcmpstart(summary, "accept ")) { + is_accept = 1; + summary += strlen("accept "); + } else if (!strcmpstart(summary, "reject ")) { + is_accept = 0; + summary += strlen("reject "); + } else { + log_fn(LOG_PROTOCOL_WARN, LD_DIR, "Unrecognized policy summary keyword"); + return NULL; + } + + n_entries = 0; + for ( ; *summary; summary = next) { + const char *comma = strchr(summary, ','); + unsigned low, high; + char dummy; + char ent_buf[32]; + + next = comma ? comma+1 : strchr(summary, '\0'); + + if (n_entries == MAX_EXITPOLICY_SUMMARY_LEN) { + log_fn(LOG_PROTOCOL_WARN, LD_DIR, "Impossibly long policy summary %s", + escaped(orig_summary)); + return NULL; + } + + if (! TOR_ISDIGIT(*summary) || next-summary > (int)(sizeof(ent_buf)-1)) { + /* unrecognized entry format. skip it. */ + continue; + } + if (next-summary < 2) { + /* empty; skip it. */ + continue; + } + + memcpy(ent_buf, summary, next-summary-1); + ent_buf[next-summary-1] = '\0'; + + if (tor_sscanf(ent_buf, "%u-%u%c", &low, &high, &dummy) == 2) { + if (low<1 || low>65535 || high<1 || high>65535) { + log_fn(LOG_PROTOCOL_WARN, LD_DIR, + "Found bad entry in policy summary %s", escaped(orig_summary)); + return NULL; + } + } else if (tor_sscanf(ent_buf, "%u%c", &low, &dummy) == 1) { + if (low<1 || low>65535) { + log_fn(LOG_PROTOCOL_WARN, LD_DIR, + "Found bad entry in policy summary %s", escaped(orig_summary)); + return NULL; + } + high = low; + } else { + log_fn(LOG_PROTOCOL_WARN, LD_DIR,"Found bad entry in policy summary %s", + escaped(orig_summary)); + return NULL; + } + + entries[n_entries].min_port = low; + entries[n_entries].max_port = high; + n_entries++; + } + + if (n_entries == 0) { + log_fn(LOG_PROTOCOL_WARN, LD_DIR, + "Found no port-range entries in summary %s", escaped(orig_summary)); + return NULL; + } + + { + size_t size = sizeof(short_policy_t) + + sizeof(short_policy_entry_t)*(n_entries-1); + result = tor_malloc_zero(size); + + tor_assert( (char*)&result->entries[n_entries-1] < ((char*)result)+size); + } + + result->is_accept = is_accept; + result->n_entries = n_entries; + memcpy(result->entries, entries, sizeof(short_policy_entry_t)*n_entries); + return result; +} + +/** Release all storage held in <b>policy</b>. */ +void +short_policy_free(short_policy_t *policy) +{ + tor_free(policy); +} + +/** See whether the <b>addr</b>:<b>port</b> address is likely to be accepted + * or rejected by the summarized policy <b>policy</b>. Return values are as + * for compare_tor_addr_to_addr_policy. Unlike the regular addr_policy + * functions, requires the <b>port</b> be specified. */ +addr_policy_result_t +compare_tor_addr_to_short_policy(const tor_addr_t *addr, uint16_t port, + const short_policy_t *policy) +{ + int i; + int found_match = 0; + int accept; + (void)addr; + + tor_assert(port != 0); + + if (addr && (tor_addr_is_internal(addr, 0) || + tor_addr_is_null(addr) || + tor_addr_is_loopback(addr))) + return ADDR_POLICY_REJECTED; + + for (i=0; i < policy->n_entries; ++i) { + const short_policy_entry_t *e = &policy->entries[i]; + if (e->min_port <= port && port <= e->max_port) { + found_match = 1; + break; + } + } + + if (found_match) + accept = policy->is_accept; + else + accept = ! policy->is_accept; + + /* ???? are these right? */ + if (accept) + return ADDR_POLICY_PROBABLY_ACCEPTED; + else + return ADDR_POLICY_REJECTED; +} + +/** Return true iff <b>policy</b> seems reject all ports */ +int +short_policy_is_reject_star(const short_policy_t *policy) +{ + /* This doesn't need to be as much on the lookout as policy_is_reject_star, + * since policy summaries are from the consensus or from consensus + * microdescs. + */ + tor_assert(policy); + /* Check for an exact match of "reject 1-65535". */ + return (policy->is_accept == 0 && policy->n_entries == 1 && + policy->entries[0].min_port == 1 && + policy->entries[0].max_port == 65535); +} + +/** Decides whether addr:port is probably or definitely accepted or rejcted by + * <b>node</b>. See compare_tor_addr_to_addr_policy for details on addr/port + * interpretation. */ +addr_policy_result_t +compare_addr_to_node_policy(uint32_t addr, uint16_t port, const node_t *node) +{ + tor_addr_t a; + tor_addr_from_ipv4h(&a, addr); + return compare_tor_addr_to_node_policy(&a, port, node); +} + +/** Decides whether addr:port is probably or definitely accepted or rejcted by + * <b>node</b>. See compare_tor_addr_to_addr_policy for details on addr/port + * interpretation. */ +addr_policy_result_t +compare_tor_addr_to_node_policy(const tor_addr_t *addr, uint16_t port, + const node_t *node) +{ + if (node->rejects_all) + return ADDR_POLICY_REJECTED; + + if (node->ri) + return compare_tor_addr_to_addr_policy(addr, port, node->ri->exit_policy); + else if (node->md && node->md) { + if (node->md->exit_policy == NULL) + return ADDR_POLICY_REJECTED; + else + return compare_tor_addr_to_short_policy(addr, port, + node->md->exit_policy); + } else + return ADDR_POLICY_PROBABLY_REJECTED; +} + /** Implementation for GETINFO control command: knows the answer for questions * about "exit-policy/..." */ int diff --git a/src/or/policies.h b/src/or/policies.h index dd46f4de9..5c1113e75 100644 --- a/src/or/policies.h +++ b/src/or/policies.h @@ -19,7 +19,8 @@ int firewall_is_fascist_or(void); int fascist_firewall_allows_address_or(const tor_addr_t *addr, uint16_t port); -int fascist_firewall_allows_or(routerinfo_t *ri); +int fascist_firewall_allows_or(const routerinfo_t *ri); +int fascist_firewall_allows_node(const node_t *node); int fascist_firewall_allows_address_dir(const tor_addr_t *addr, uint16_t port); int dir_policy_permits_address(const tor_addr_t *addr); int socks_policy_permits_address(const tor_addr_t *addr); @@ -38,10 +39,16 @@ addr_policy_result_t compare_tor_addr_to_addr_policy(const tor_addr_t *addr, uint16_t port, const smartlist_t *policy); addr_policy_result_t compare_addr_to_addr_policy(uint32_t addr, uint16_t port, const smartlist_t *policy); + +addr_policy_result_t compare_addr_to_node_policy(uint32_t addr, + uint16_t port, const node_t *node); +addr_policy_result_t compare_tor_addr_to_node_policy(const tor_addr_t *addr, + uint16_t port, const node_t *node); + int policies_parse_exit_policy(config_line_t *cfg, smartlist_t **dest, int rejectprivate, const char *local_address, int add_default_policy); -void policies_set_router_exitpolicy_to_reject_all(routerinfo_t *exitrouter); +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); int getinfo_helper_policies(control_connection_t *conn, @@ -56,5 +63,12 @@ void policies_free_all(void); char *policy_summarize(smartlist_t *policy); +short_policy_t *parse_short_policy(const char *summary); +void short_policy_free(short_policy_t *policy); +int short_policy_is_reject_star(const short_policy_t *policy); +addr_policy_result_t compare_tor_addr_to_short_policy( + const tor_addr_t *addr, uint16_t port, + const short_policy_t *policy); + #endif diff --git a/src/or/relay.c b/src/or/relay.c index f9a44cf16..1d7a5171b 100644 --- a/src/or/relay.c +++ b/src/or/relay.c @@ -24,6 +24,7 @@ #include "main.h" #include "mempool.h" #include "networkstatus.h" +#include "nodelist.h" #include "policies.h" #include "reasons.h" #include "relay.h" @@ -592,17 +593,11 @@ relay_send_command_from_edge(streamid_t stream_id, circuit_t *circ, origin_circuit_t *origin_circ = TO_ORIGIN_CIRCUIT(circ); if (origin_circ->remaining_relay_early_cells > 0 && (relay_command == RELAY_COMMAND_EXTEND || - (cpath_layer != origin_circ->cpath && - !CIRCUIT_PURPOSE_IS_ESTABLISHED_REND(circ->purpose)))) { - /* If we've got any relay_early cells left, and we're sending - * an extend cell or (we're not talking to the first hop and we're - * not talking to a rendezvous circuit), use one of them. - * Don't worry about the conn protocol version: + cpath_layer != origin_circ->cpath)) { + /* If we've got any relay_early cells left and (we're sending + * an extend cell or we're not talking to the first hop), use + * one of them. Don't worry about the conn protocol version: * append_cell_to_circuit_queue will fix it up. */ - /* XXX For now, clients don't use RELAY_EARLY cells when sending - * relay cells on rendezvous circuits. See bug 1038. Once no relays - * (and thus no rendezvous points) are running 0.2.1.3-alpha through - * 0.2.1.18, we can take out that exception. -RD */ cell.command = CELL_RELAY_EARLY; --origin_circ->remaining_relay_early_cells; log_debug(LD_OR, "Sending a RELAY_EARLY cell; %d remaining.", @@ -712,7 +707,7 @@ connection_ap_process_end_not_open( edge_connection_t *conn, crypt_path_t *layer_hint) { struct in_addr in; - routerinfo_t *exitrouter; + node_t *exitrouter; int reason = *(cell->payload+RELAY_HEADER_SIZE); int control_reason = reason | END_STREAM_REASON_FLAG_REMOTE; (void) layer_hint; /* unused */ @@ -720,11 +715,12 @@ connection_ap_process_end_not_open( if (rh->length > 0 && edge_reason_is_retriable(reason) && !connection_edge_is_rendezvous_stream(conn) /* avoid retry if rend */ ) { + const char *chosen_exit_digest = + circ->build_state->chosen_exit->identity_digest; log_info(LD_APP,"Address '%s' refused due to '%s'. Considering retrying.", safe_str(conn->socks_request->address), stream_end_reason_to_string(reason)); - exitrouter = - router_get_by_digest(circ->build_state->chosen_exit->identity_digest); + exitrouter = node_get_mutable_by_id(chosen_exit_digest); switch (reason) { case END_STREAM_REASON_EXITPOLICY: if (rh->length >= 5) { @@ -759,8 +755,8 @@ connection_ap_process_end_not_open( log_info(LD_APP, "Exitrouter '%s' seems to be more restrictive than its exit " "policy. Not using this router as exit for now.", - exitrouter->nickname); - policies_set_router_exitpolicy_to_reject_all(exitrouter); + node_get_nickname(exitrouter)); + policies_set_node_exitpolicy_to_reject_all(exitrouter); } /* rewrite it to an IP if we learned one. */ if (addressmap_rewrite(conn->socks_request->address, @@ -823,7 +819,7 @@ connection_ap_process_end_not_open( case END_STREAM_REASON_HIBERNATING: case END_STREAM_REASON_RESOURCELIMIT: if (exitrouter) { - policies_set_router_exitpolicy_to_reject_all(exitrouter); + policies_set_node_exitpolicy_to_reject_all(exitrouter); } if (conn->chosen_exit_optional) { /* stop wanting a specific exit */ @@ -906,12 +902,8 @@ connection_edge_process_relay_cell_not_open( int ttl; if (!addr || (get_options()->ClientDNSRejectInternalAddresses && is_internal_IP(addr, 0))) { - char buf[INET_NTOA_BUF_LEN]; - struct in_addr a; - a.s_addr = htonl(addr); - tor_inet_ntoa(&a, buf, sizeof(buf)); - log_info(LD_APP, - "...but it claims the IP address was %s. Closing.", buf); + log_info(LD_APP, "...but it claims the IP address was %s. Closing.", + fmt_addr32(addr)); connection_edge_end(conn, END_STREAM_REASON_TORPROTOCOL); connection_mark_unattached_ap(conn, END_STREAM_REASON_TORPROTOCOL); return 0; @@ -988,11 +980,8 @@ connection_edge_process_relay_cell_not_open( uint32_t addr = ntohl(get_uint32(cell->payload+RELAY_HEADER_SIZE+2)); if (get_options()->ClientDNSRejectInternalAddresses && is_internal_IP(addr, 0)) { - char buf[INET_NTOA_BUF_LEN]; - struct in_addr a; - a.s_addr = htonl(addr); - tor_inet_ntoa(&a, buf, sizeof(buf)); - log_info(LD_APP,"Got a resolve with answer %s. Rejecting.", buf); + log_info(LD_APP,"Got a resolve with answer %s. Rejecting.", + fmt_addr32(addr)); connection_ap_handshake_socks_resolved(conn, RESOLVED_TYPE_ERROR_TRANSIENT, 0, NULL, 0, TIME_MAX); @@ -1510,7 +1499,7 @@ circuit_resume_edge_reading_helper(edge_connection_t *first_conn, if (!layer_hint || conn->cpath_layer == layer_hint) { connection_start_reading(TO_CONN(conn)); - if (buf_datalen(conn->_base.inbuf) > 0) + if (connection_get_inbuf_len(TO_CONN(conn)) > 0) ++n_streams; } } @@ -1549,7 +1538,7 @@ circuit_resume_edge_reading_helper(edge_connection_t *first_conn, } /* If there's still data to read, we'll be coming back to this stream. */ - if (buf_datalen(conn->_base.inbuf)) + if (connection_get_inbuf_len(TO_CONN(conn))) ++n_streams_left; /* If the circuit won't accept any more data, return without looking diff --git a/src/or/rendclient.c b/src/or/rendclient.c index 68abb886a..5c5c48afb 100644 --- a/src/or/rendclient.c +++ b/src/or/rendclient.c @@ -16,6 +16,7 @@ #include "connection_edge.h" #include "directory.h" #include "main.h" +#include "nodelist.h" #include "relay.h" #include "rendclient.h" #include "rendcommon.h" @@ -414,7 +415,7 @@ directory_get_from_hs_dir(const char *desc_id, const rend_data_t *rend_query) SMARTLIST_FOREACH(responsible_dirs, routerstatus_t *, dir, { if (lookup_last_hid_serv_request(dir, desc_id_base32, 0, 0) + REND_HID_SERV_DIR_REQUERY_PERIOD >= now || - !router_get_by_digest(dir->identity_digest)) + !router_get_by_id_digest(dir->identity_digest)) SMARTLIST_DEL_CURRENT(responsible_dirs, dir); }); @@ -738,7 +739,6 @@ rend_client_get_random_intro(const rend_data_t *rend_query) int i; rend_cache_entry_t *entry; rend_intro_point_t *intro; - routerinfo_t *router; if (rend_cache_lookup_entry(rend_query->onion_address, -1, &entry) < 1) { log_warn(LD_REND, @@ -755,8 +755,12 @@ rend_client_get_random_intro(const rend_data_t *rend_query) intro = smartlist_get(entry->parsed->intro_nodes, i); /* Do we need to look up the router or is the extend info complete? */ if (!intro->extend_info->onion_key) { - router = router_get_by_nickname(intro->extend_info->nickname, 0); - if (!router) { + const node_t *node; + if (tor_digest_is_zero(intro->extend_info->identity_digest)) + node = node_get_by_hex_id(intro->extend_info->nickname); + else + node = node_get_by_id(intro->extend_info->identity_digest); + if (!node) { log_info(LD_REND, "Unknown router with nickname '%s'; trying another.", intro->extend_info->nickname); rend_intro_point_free(intro); @@ -764,7 +768,7 @@ rend_client_get_random_intro(const rend_data_t *rend_query) goto again; } extend_info_free(intro->extend_info); - intro->extend_info = extend_info_from_router(router); + intro->extend_info = extend_info_from_node(node); } return extend_info_dup(intro->extend_info); } diff --git a/src/or/rendservice.c b/src/or/rendservice.c index b0d791529..0f63776ef 100644 --- a/src/or/rendservice.c +++ b/src/or/rendservice.c @@ -14,6 +14,7 @@ #include "config.h" #include "directory.h" #include "networkstatus.h" +#include "nodelist.h" #include "rendclient.h" #include "rendcommon.h" #include "rendservice.h" @@ -1001,7 +1002,7 @@ rend_service_introduce(origin_circuit_t *circuit, const char *request, } else { char *rp_nickname; size_t nickname_field_len; - routerinfo_t *router; + const node_t *node; int version; if (*buf == 1) { rp_nickname = buf+1; @@ -1028,8 +1029,8 @@ rend_service_introduce(origin_circuit_t *circuit, const char *request, len -= nickname_field_len; len -= rp_nickname - buf; /* also remove header space used by version, if * any */ - router = router_get_by_nickname(rp_nickname, 0); - if (!router) { + node = node_get_by_nickname(rp_nickname, 0); + if (!node) { log_info(LD_REND, "Couldn't find router %s named in introduce2 cell.", escaped_safe_str_client(rp_nickname)); /* XXXX Add a no-such-router reason? */ @@ -1037,7 +1038,7 @@ rend_service_introduce(origin_circuit_t *circuit, const char *request, goto err; } - extend_info = extend_info_from_router(router); + extend_info = extend_info_from_node(node); } if (len != REND_COOKIE_LEN+DH_KEY_LEN) { @@ -1577,7 +1578,7 @@ directory_post_to_hs_dir(rend_service_descriptor_t *renddesc, hs_dir->identity_digest)) /* Don't upload descriptor if we succeeded in doing so last time. */ continue; - if (!router_get_by_digest(hs_dir->identity_digest)) { + 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 " "router descriptor. Queuing for later upload.", @@ -1754,19 +1755,19 @@ void rend_services_introduce(void) { int i,j,r; - routerinfo_t *router; + const node_t *node; rend_service_t *service; rend_intro_point_t *intro; int changed, prev_intro_nodes; - smartlist_t *intro_routers; + smartlist_t *intro_nodes; time_t now; or_options_t *options = get_options(); - intro_routers = smartlist_create(); + intro_nodes = smartlist_create(); now = time(NULL); for (i=0; i < smartlist_len(rend_service_list); ++i) { - smartlist_clear(intro_routers); + smartlist_clear(intro_nodes); service = smartlist_get(rend_service_list, i); tor_assert(service); @@ -1786,8 +1787,8 @@ rend_services_introduce(void) service. */ for (j=0; j < smartlist_len(service->intro_nodes); ++j) { intro = smartlist_get(service->intro_nodes, j); - router = router_get_by_digest(intro->extend_info->identity_digest); - if (!router || !find_intro_circuit(intro, service->pk_digest)) { + 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); if (service->desc) { @@ -1806,8 +1807,8 @@ rend_services_introduce(void) smartlist_del(service->intro_nodes,j--); changed = 1; } - if (router) - smartlist_add(intro_routers, router); + if (node) + smartlist_add(intro_nodes, (void*)node); } /* We have enough intro points, and the intro points we thought we had were @@ -1836,26 +1837,26 @@ rend_services_introduce(void) #define NUM_INTRO_POINTS_INIT (NUM_INTRO_POINTS + 2) for (j=prev_intro_nodes; j < (prev_intro_nodes == 0 ? NUM_INTRO_POINTS_INIT : NUM_INTRO_POINTS); ++j) { - router_crn_flags_t flags = CRN_NEED_UPTIME; + router_crn_flags_t flags = CRN_NEED_UPTIME|CRN_NEED_DESC; if (get_options()->_AllowInvalid & ALLOW_INVALID_INTRODUCTION) flags |= CRN_ALLOW_INVALID; - router = router_choose_random_node(intro_routers, - options->ExcludeNodes, flags); - if (!router) { + node = router_choose_random_node(intro_nodes, + options->ExcludeNodes, flags); + if (!node) { log_warn(LD_REND, "Could only establish %d introduction points for %s.", smartlist_len(service->intro_nodes), service->service_id); break; } changed = 1; - smartlist_add(intro_routers, router); + smartlist_add(intro_nodes, (void*)node); intro = tor_malloc_zero(sizeof(rend_intro_point_t)); - intro->extend_info = extend_info_from_router(router); + intro->extend_info = extend_info_from_node(node); intro->intro_key = crypto_new_pk_env(); 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.", - router->nickname, service->service_id); + node_get_nickname(node), service->service_id); } /* If there's no need to launch new circuits, stop here. */ @@ -1872,7 +1873,7 @@ rend_services_introduce(void) } } } - smartlist_free(intro_routers); + smartlist_free(intro_nodes); } /** Regenerate and upload rendezvous service descriptors for all diff --git a/src/or/rephist.c b/src/or/rephist.c index 056fc5cc1..a18b2cebc 100644 --- a/src/or/rephist.c +++ b/src/or/rephist.c @@ -14,6 +14,7 @@ #include "circuitlist.h" #include "circuituse.h" #include "config.h" +#include "nodelist.h" #include "rephist.h" #include "router.h" #include "routerlist.h" @@ -579,7 +580,7 @@ rep_hist_dump_stats(time_t now, int severity) size_t len; int ret; unsigned long upt, downt; - routerinfo_t *r; + const node_t *node; rep_history_clean(now - get_options()->RephistTrackTime); @@ -593,8 +594,8 @@ rep_hist_dump_stats(time_t now, int severity) digestmap_iter_get(orhist_it, &digest1, &or_history_p); or_history = (or_history_t*) or_history_p; - if ((r = router_get_by_digest(digest1))) - name1 = r->nickname; + if ((node = node_get_by_id(digest1)) && node_get_nickname(node)) + name1 = node_get_nickname(node); else name1 = "(unknown)"; base16_encode(hexdigest1, sizeof(hexdigest1), digest1, DIGEST_LEN); @@ -624,8 +625,8 @@ rep_hist_dump_stats(time_t now, int severity) lhist_it = digestmap_iter_next(or_history->link_history_map, lhist_it)) { digestmap_iter_get(lhist_it, &digest2, &link_history_p); - if ((r = router_get_by_digest(digest2))) - name2 = r->nickname; + if ((node = node_get_by_id(digest2)) && node_get_nickname(node)) + name2 = node_get_nickname(node); else name2 = "(unknown)"; @@ -756,7 +757,7 @@ rep_hist_record_mtbf_data(time_t now, int missing_means_down) base16_encode(dbuf, sizeof(dbuf), digest, DIGEST_LEN); if (missing_means_down && hist->start_of_run && - !router_get_by_digest(digest)) { + !router_get_by_id_digest(digest)) { /* We think this relay is running, but it's not listed in our * routerlist. Somehow it fell out without telling us it went * down. Complain and also correct it. */ @@ -871,28 +872,32 @@ rep_hist_get_router_stability_doc(time_t now) } DIGESTMAP_FOREACH(history_map, id, or_history_t *, hist) { - routerinfo_t *ri; + const node_t *node; char dbuf[BASE64_DIGEST_LEN+1]; char header_buf[512]; char *info; digest_to_base64(dbuf, id); - ri = router_get_by_digest(id); - if (ri) { - char *ip = tor_dup_ip(ri->addr); + node = node_get_by_id(id); + if (node) { + char ip[INET_NTOA_BUF_LEN+1]; char tbuf[ISO_TIME_LEN+1]; - format_iso_time(tbuf, ri->cache_info.published_on); + time_t published = node_get_published_on(node); + node_get_address_string(node,ip,sizeof(ip)); + if (published > 0) + format_iso_time(tbuf, published); + else + strlcpy(tbuf, "???", sizeof(tbuf)); tor_snprintf(header_buf, sizeof(header_buf), "router %s %s %s\n" "published %s\n" "relevant-flags %s%s%s\n" "declared-uptime %ld\n", - dbuf, ri->nickname, ip, + dbuf, node_get_nickname(node), ip, tbuf, - ri->is_running ? "Running " : "", - ri->is_valid ? "Valid " : "", - ri->is_hibernating ? "Hibernating " : "", - ri->uptime); - tor_free(ip); + node->is_running ? "Running " : "", + node->is_valid ? "Valid " : "", + node->ri && node->ri->is_hibernating ? "Hibernating " : "", + node_get_declared_uptime(node)); } else { tor_snprintf(header_buf, sizeof(header_buf), "router %s {no descriptor}\n", dbuf); @@ -2184,7 +2189,6 @@ typedef struct circ_buffer_stats_t { uint32_t processed_cells; double mean_num_cells_in_queue; double mean_time_cells_in_queue; - uint32_t local_circ_id; } circ_buffer_stats_t; /** Holds stats. */ @@ -2207,9 +2211,9 @@ rep_hist_buffer_stats_add_circ(circuit_t *circ, time_t end_of_interval) return; if (!circuits_for_buffer_stats) circuits_for_buffer_stats = smartlist_create(); - start_of_interval = circ->timestamp_created > - start_of_buffer_stats_interval ? - circ->timestamp_created : + start_of_interval = (circ->timestamp_created.tv_sec > + start_of_buffer_stats_interval) ? + circ->timestamp_created.tv_sec : start_of_buffer_stats_interval; interval_length = (int) (end_of_interval - start_of_interval); stat = tor_malloc_zero(sizeof(circ_buffer_stats_t)); diff --git a/src/or/router.c b/src/or/router.c index 8b3a1849a..a188d50f9 100644 --- a/src/or/router.c +++ b/src/or/router.c @@ -7,6 +7,7 @@ #define ROUTER_PRIVATE #include "or.h" +#include "circuitbuild.h" #include "circuitlist.h" #include "circuituse.h" #include "config.h" @@ -19,6 +20,7 @@ #include "hibernate.h" #include "main.h" #include "networkstatus.h" +#include "nodelist.h" #include "policies.h" #include "relay.h" #include "rephist.h" @@ -49,11 +51,15 @@ static crypto_pk_env_t *onionkey=NULL; /** Previous private onionskin decryption key: used to decode CREATE cells * generated by clients that have an older version of our descriptor. */ static crypto_pk_env_t *lastonionkey=NULL; -/** Private "identity key": used to sign directory info and TLS +/** Private server "identity key": used to sign directory info and TLS * certificates. Never changes. */ -static crypto_pk_env_t *identitykey=NULL; -/** Digest of identitykey. */ -static char identitykey_digest[DIGEST_LEN]; +static crypto_pk_env_t *server_identitykey=NULL; +/** Digest of server_identitykey. */ +static char server_identitykey_digest[DIGEST_LEN]; +/** Private client "identity key": used to sign bridges' and clients' + * outbound TLS certificates. Regenerated on startup and on IP address + * change. */ +static crypto_pk_env_t *client_identitykey=NULL; /** Signing key used for v3 directory material; only set for authorities. */ static crypto_pk_env_t *authority_signing_key = NULL; /** Key certificate to authenticate v3 directory material; only set for @@ -123,31 +129,78 @@ get_onion_key_set_at(void) return onionkey_set_at; } -/** Set the current identity key to k. +/** Set the current server identity key to <b>k</b>. */ void -set_identity_key(crypto_pk_env_t *k) +set_server_identity_key(crypto_pk_env_t *k) { - crypto_free_pk_env(identitykey); - identitykey = k; - crypto_pk_get_digest(identitykey, identitykey_digest); + crypto_free_pk_env(server_identitykey); + server_identitykey = k; + crypto_pk_get_digest(server_identitykey, server_identitykey_digest); } -/** Returns the current identity key; requires that the identity key has been - * set. +/** Make sure that we have set up our identity keys to match or not match as + * appropriate, and die with an assertion if we have not. */ +static void +assert_identity_keys_ok(void) +{ + tor_assert(client_identitykey); + if (public_server_mode(get_options())) { + /* assert that we have set the client and server keys to be equal */ + tor_assert(server_identitykey); + tor_assert(0==crypto_pk_cmp_keys(client_identitykey, server_identitykey)); + } else { + /* assert that we have set the client and server keys to be unequal */ + if (server_identitykey) + tor_assert(0!=crypto_pk_cmp_keys(client_identitykey, + server_identitykey)); + } +} + +/** Returns the current server identity key; requires that the key has + * been set, and that we are running as a Tor server. */ crypto_pk_env_t * -get_identity_key(void) +get_server_identity_key(void) { - tor_assert(identitykey); - return identitykey; + tor_assert(server_identitykey); + tor_assert(server_mode(get_options())); + assert_identity_keys_ok(); + return server_identitykey; } -/** Return true iff the identity key has been set. */ +/** Return true iff the server identity key has been set. */ int -identity_key_is_set(void) +server_identity_key_is_set(void) +{ + return server_identitykey != NULL; +} + +/** Set the current client identity key to <b>k</b>. + */ +void +set_client_identity_key(crypto_pk_env_t *k) { - return identitykey != NULL; + crypto_free_pk_env(client_identitykey); + client_identitykey = k; +} + +/** Returns the current client identity key for use on outgoing TLS + * connections; requires that the key has been set. + */ +crypto_pk_env_t * +get_tlsclient_identity_key(void) +{ + tor_assert(client_identitykey); + assert_identity_keys_ok(); + return client_identitykey; +} + +/** Return true iff the client identity key has been set. */ +int +client_identity_key_is_set(void) +{ + return client_identitykey != NULL; } /** Return the key certificate for this v3 (voting) authority, or NULL @@ -470,9 +523,12 @@ init_keys(void) crypto_free_pk_env(prkey); return -1; } - set_identity_key(prkey); - /* Create a TLS context; default the client nickname to "client". */ - if (tor_tls_context_new(get_identity_key(), MAX_SSL_KEY_LIFETIME) < 0) { + set_client_identity_key(prkey); + /* Create a TLS context. */ + if (tor_tls_context_init(0, + get_tlsclient_identity_key(), + NULL, + MAX_SSL_KEY_LIFETIME) < 0) { log_err(LD_GENERAL,"Error creating TLS context for Tor client."); return -1; } @@ -507,13 +563,28 @@ init_keys(void) } } - /* 1. Read identity key. Make it if none is found. */ + /* 1b. Read identity key. Make it if none is found. */ keydir = get_datadir_fname2("keys", "secret_id_key"); log_info(LD_GENERAL,"Reading/making identity key \"%s\"...",keydir); prkey = init_key_from_file(keydir, 1, LOG_ERR); tor_free(keydir); if (!prkey) return -1; - set_identity_key(prkey); + set_server_identity_key(prkey); + + /* 1c. If we are configured as a bridge, generate a client key; + * otherwise, set the server identity key as our client identity + * key. */ + if (public_server_mode(options)) { + set_client_identity_key(crypto_pk_dup_key(prkey)); /* set above */ + } else { + if (!(prkey = crypto_new_pk_env())) + return -1; + if (crypto_pk_generate_key(prkey)) { + crypto_free_pk_env(prkey); + return -1; + } + set_client_identity_key(prkey); + } /* 2. Read onion key. Make it if none is found. */ keydir = get_datadir_fname2("keys", "secret_onion_key"); @@ -550,7 +621,10 @@ init_keys(void) tor_free(keydir); /* 3. Initialize link key and TLS context. */ - if (tor_tls_context_new(get_identity_key(), MAX_SSL_KEY_LIFETIME) < 0) { + if (tor_tls_context_init(public_server_mode(options), + get_tlsclient_identity_key(), + get_server_identity_key(), + MAX_SSL_KEY_LIFETIME) < 0) { log_err(LD_GENERAL,"Error initializing TLS context"); return -1; } @@ -561,7 +635,8 @@ init_keys(void) const char *m = NULL; routerinfo_t *ri; /* We need to add our own fingerprint so it gets recognized. */ - if (dirserv_add_own_fingerprint(options->Nickname, get_identity_key())) { + if (dirserv_add_own_fingerprint(options->Nickname, + get_server_identity_key())) { log_err(LD_GENERAL,"Error adding own fingerprint to approved set"); return -1; } @@ -582,7 +657,8 @@ init_keys(void) /* 5. Dump fingerprint to 'fingerprint' */ keydir = get_datadir_fname("fingerprint"); log_info(LD_GENERAL,"Dumping fingerprint to \"%s\"...",keydir); - if (crypto_pk_get_fingerprint(get_identity_key(), fingerprint, 0)<0) { + if (crypto_pk_get_fingerprint(get_server_identity_key(), + fingerprint, 0) < 0) { log_err(LD_GENERAL,"Error computing fingerprint"); tor_free(keydir); return -1; @@ -620,7 +696,7 @@ init_keys(void) return -1; } /* 6b. [authdirserver only] add own key to approved directories. */ - crypto_pk_get_digest(get_identity_key(), digest); + 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) | @@ -773,18 +849,21 @@ decide_to_advertise_dirport(or_options_t *options, uint16_t dir_port) void consider_testing_reachability(int test_or, int test_dir) { - routerinfo_t *me = router_get_my_routerinfo(); + const routerinfo_t *me = router_get_my_routerinfo(); int orport_reachable = check_whether_orport_reachable(); tor_addr_t addr; if (!me) 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.", !orport_reachable ? "reachability" : "bandwidth", me->address, me->or_port); - circuit_launch_by_router(CIRCUIT_PURPOSE_TESTING, me, - CIRCLAUNCH_NEED_CAPACITY|CIRCLAUNCH_IS_INTERNAL); + ei = extend_info_from_router(me); + circuit_launch_by_extend_info(CIRCUIT_PURPOSE_TESTING, ei, + CIRCLAUNCH_NEED_CAPACITY|CIRCLAUNCH_IS_INTERNAL); + extend_info_free(ei); } tor_addr_from_ipv4h(&addr, me->addr); @@ -808,7 +887,7 @@ void router_orport_found_reachable(void) { if (!can_reach_or_port) { - routerinfo_t *me = router_get_my_routerinfo(); + const routerinfo_t *me = router_get_my_routerinfo(); log_notice(LD_OR,"Self-testing indicates your ORPort is reachable from " "the outside. Excellent.%s", get_options()->_PublishServerDescriptor != NO_AUTHORITY ? @@ -831,7 +910,7 @@ void router_dirport_found_reachable(void) { if (!can_reach_dir_port) { - routerinfo_t *me = router_get_my_routerinfo(); + const routerinfo_t *me = router_get_my_routerinfo(); log_notice(LD_DIRSERV,"Self-testing indicates your DirPort is reachable " "from the outside. Excellent."); can_reach_dir_port = 1; @@ -976,6 +1055,15 @@ server_mode(or_options_t *options) return (options->ORPort != 0 || options->ORListenAddress); } +/** Return true iff we are trying to be a non-bridge server. + */ +int +public_server_mode(or_options_t *options) +{ + if (!server_mode(options)) return 0; + return (!options->BridgeRelay); +} + /** Return true iff the combination of options in <b>options</b> and parameters * in the consensus mean that we don't want to allow exits from circuits * we got from addresses not known to be servers. */ @@ -1093,7 +1181,7 @@ static int desc_needs_upload = 0; void router_upload_dir_desc_to_dirservers(int force) { - routerinfo_t *ri; + const routerinfo_t *ri; extrainfo_t *ei; char *msg; size_t desc_len, extra_len = 0, total_len; @@ -1163,11 +1251,12 @@ router_my_exit_policy_is_reject_star(void) } /** Return true iff I'm a server and <b>digest</b> is equal to - * my identity digest. */ + * my server identity key digest. */ int router_digest_is_me(const char *digest) { - return identitykey && !memcmp(identitykey_digest, digest, DIGEST_LEN); + return (server_identitykey && + !memcmp(server_identitykey_digest, digest, DIGEST_LEN)); } /** Return true iff I'm a server and <b>digest</b> is equal to @@ -1186,7 +1275,7 @@ router_extrainfo_digest_is_me(const char *digest) /** A wrapper around router_digest_is_me(). */ int -router_is_me(routerinfo_t *router) +router_is_me(const routerinfo_t *router) { return router_digest_is_me(router->cache_info.identity_digest); } @@ -1205,7 +1294,7 @@ router_fingerprint_is_me(const char *fp) /** Return a routerinfo for this OR, rebuilding a fresh one if * necessary. Return NULL on error, or if called on an OP. */ -routerinfo_t * +const routerinfo_t * router_get_my_routerinfo(void) { if (!server_mode(get_options())) @@ -1257,8 +1346,6 @@ static int router_guess_address_from_dir_headers(uint32_t *guess); int router_pick_published_address(or_options_t *options, uint32_t *addr) { - char buf[INET_NTOA_BUF_LEN]; - struct in_addr a; if (resolve_my_address(LOG_INFO, options, addr, NULL) < 0) { log_info(LD_CONFIG, "Could not determine our address locally. " "Checking if directory headers provide any hints."); @@ -1268,9 +1355,7 @@ router_pick_published_address(or_options_t *options, uint32_t *addr) return -1; } } - a.s_addr = htonl(*addr); - tor_inet_ntoa(&a, buf, sizeof(buf)); - log_info(LD_CONFIG,"Success: chose address '%s'.", buf); + log_info(LD_CONFIG,"Success: chose address '%s'.", fmt_addr32(*addr)); return 0; } @@ -1310,7 +1395,7 @@ router_rebuild_descriptor(int force) ri->cache_info.published_on = time(NULL); ri->onion_pkey = crypto_pk_dup_key(get_onion_key()); /* must invoke from * main thread */ - ri->identity_pkey = crypto_pk_dup_key(get_identity_key()); + ri->identity_pkey = crypto_pk_dup_key(get_server_identity_key()); if (crypto_pk_get_digest(ri->identity_pkey, ri->cache_info.identity_digest)<0) { routerinfo_free(ri); @@ -1333,13 +1418,12 @@ router_rebuild_descriptor(int force) ri->policy_is_reject_star = policy_is_reject_star(ri->exit_policy); - if (desc_routerinfo) { /* inherit values */ - ri->is_valid = desc_routerinfo->is_valid; - ri->is_running = desc_routerinfo->is_running; - ri->is_named = desc_routerinfo->is_named; - } +#if 0 + /* XXXX NM NM I belive this is safe to remove */ if (authdir_mode(options)) ri->is_valid = ri->is_named = 1; /* believe in yourself */ +#endif + if (options->MyFamily) { smartlist_t *family; if (!warned_nonexistent_family) @@ -1348,13 +1432,12 @@ router_rebuild_descriptor(int force) ri->declared_family = smartlist_create(); smartlist_split_string(family, options->MyFamily, ",", SPLIT_SKIP_SPACE|SPLIT_SKIP_SPACE|SPLIT_IGNORE_BLANK, 0); - SMARTLIST_FOREACH(family, char *, name, - { - routerinfo_t *member; + SMARTLIST_FOREACH_BEGIN(family, char *, name) { + const node_t *member; if (!strcasecmp(name, options->Nickname)) - member = ri; + goto skip; /* Don't list ourself, that's redundant */ else - member = router_get_by_nickname(name, 1); + member = node_get_by_nickname(name, 1); if (!member) { int is_legal = is_legal_nickname_or_hexdigest(name); if (!smartlist_string_isin(warned_nonexistent_family, name) && @@ -1374,19 +1457,21 @@ router_rebuild_descriptor(int force) smartlist_add(ri->declared_family, name); name = NULL; } - } else if (router_is_me(member)) { + } else if (router_digest_is_me(member->identity)) { /* Don't list ourself in our own family; that's redundant */ + /* XXX shouldn't be possible */ } else { char *fp = tor_malloc(HEX_DIGEST_LEN+2); fp[0] = '$'; base16_encode(fp+1,HEX_DIGEST_LEN+1, - member->cache_info.identity_digest, DIGEST_LEN); + member->identity, DIGEST_LEN); smartlist_add(ri->declared_family, fp); if (smartlist_string_isin(warned_nonexistent_family, name)) smartlist_string_remove(warned_nonexistent_family, name); } + skip: tor_free(name); - }); + } SMARTLIST_FOREACH_END(name); /* remove duplicates from the list */ smartlist_sort_strings(ri->declared_family); @@ -1405,7 +1490,8 @@ router_rebuild_descriptor(int force) ei_size = options->ExtraInfoStatistics ? MAX_EXTRAINFO_UPLOAD_SIZE : 8192; ei->cache_info.signed_descriptor_body = tor_malloc(ei_size); if (extrainfo_dump_to_string(ei->cache_info.signed_descriptor_body, - ei_size, ei, get_identity_key()) < 0) { + ei_size, ei, + get_server_identity_key()) < 0) { log_warn(LD_BUG, "Couldn't generate extra-info descriptor."); routerinfo_free(ri); extrainfo_free(ei); @@ -1422,7 +1508,7 @@ router_rebuild_descriptor(int force) DIGEST_LEN); ri->cache_info.signed_descriptor_body = tor_malloc(8192); if (router_dump_router_to_string(ri->cache_info.signed_descriptor_body, 8192, - ri, get_identity_key())<0) { + ri, get_server_identity_key()) < 0) { log_warn(LD_BUG, "Couldn't generate router descriptor."); routerinfo_free(ri); extrainfo_free(ei); @@ -1444,8 +1530,6 @@ router_rebuild_descriptor(int force) strlen(ri->cache_info.signed_descriptor_body), ri->cache_info.signed_descriptor_digest); - routerinfo_set_country(ri); - tor_assert(! routerinfo_incompatible_with_extrainfo(ri, ei, NULL, NULL)); routerinfo_free(desc_routerinfo); @@ -2099,10 +2183,15 @@ is_legal_hexdigest(const char *s) void 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, + router->cache_info.identity_digest, + DIGEST_LEN); buf[0] = '$'; base16_encode(buf+1, HEX_DIGEST_LEN+1, router->cache_info.identity_digest, DIGEST_LEN); - buf[1+HEX_DIGEST_LEN] = router->is_named ? '=' : '~'; + buf[1+HEX_DIGEST_LEN] = is_named ? '=' : '~'; strlcpy(buf+1+HEX_DIGEST_LEN+1, router->nickname, MAX_NICKNAME_LEN+1); } @@ -2171,7 +2260,8 @@ router_free_all(void) { crypto_free_pk_env(onionkey); crypto_free_pk_env(lastonionkey); - crypto_free_pk_env(identitykey); + crypto_free_pk_env(server_identitykey); + crypto_free_pk_env(client_identitykey); tor_mutex_free(key_lock); routerinfo_free(desc_routerinfo); extrainfo_free(desc_extrainfo); diff --git a/src/or/router.h b/src/or/router.h index c17fc78bd..41a9f7119 100644 --- a/src/or/router.h +++ b/src/or/router.h @@ -14,9 +14,12 @@ crypto_pk_env_t *get_onion_key(void); time_t get_onion_key_set_at(void); -void set_identity_key(crypto_pk_env_t *k); -crypto_pk_env_t *get_identity_key(void); -int identity_key_is_set(void); +void set_server_identity_key(crypto_pk_env_t *k); +crypto_pk_env_t *get_server_identity_key(void); +int server_identity_key_is_set(void); +void set_client_identity_key(crypto_pk_env_t *k); +crypto_pk_env_t *get_tlsclient_identity_key(void); +int client_identity_key_is_set(void); authority_cert_t *get_my_v3_authority_cert(void); crypto_pk_env_t *get_my_v3_authority_signing_key(void); authority_cert_t *get_my_v3_legacy_cert(void); @@ -48,6 +51,7 @@ int authdir_mode_tests_reachability(or_options_t *options); int authdir_mode_bridge(or_options_t *options); int server_mode(or_options_t *options); +int public_server_mode(or_options_t *options); int advertised_server_mode(void); int proxy_mode(or_options_t *options); void consider_publishable_server(int force); @@ -62,12 +66,12 @@ void router_new_address_suggestion(const char *suggestion, const dir_connection_t *d_conn); int router_compare_to_my_exit_policy(edge_connection_t *conn); int router_my_exit_policy_is_reject_star(void); -routerinfo_t *router_get_my_routerinfo(void); +const routerinfo_t *router_get_my_routerinfo(void); extrainfo_t *router_get_my_extrainfo(void); const char *router_get_my_descriptor(void); int router_digest_is_me(const char *digest); int router_extrainfo_digest_is_me(const char *digest); -int router_is_me(routerinfo_t *router); +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_rebuild_descriptor(int force); diff --git a/src/or/routerlist.c b/src/or/routerlist.c index 43be8346c..143591199 100644 --- a/src/or/routerlist.c +++ b/src/or/routerlist.c @@ -24,6 +24,7 @@ #include "main.h" #include "microdesc.h" #include "networkstatus.h" +#include "nodelist.h" #include "policies.h" #include "reasons.h" #include "rendcommon.h" @@ -38,17 +39,21 @@ /****************************************************************************/ /* static function prototypes */ -static routerstatus_t *router_pick_directory_server_impl( +static const routerstatus_t *router_pick_directory_server_impl( authority_type_t auth, int flags); -static routerstatus_t *router_pick_trusteddirserver_impl( +static const routerstatus_t *router_pick_trusteddirserver_impl( authority_type_t auth, int flags, int *n_busy_out); static void mark_all_trusteddirservers_up(void); -static int router_nickname_matches(routerinfo_t *router, const char *nickname); +static int router_nickname_matches(const routerinfo_t *router, + const char *nickname); +static int node_nickname_matches(const node_t *router, + const char *nickname); static void trusted_dir_server_free(trusted_dir_server_t *ds); static int signed_desc_digest_is_recognized(signed_descriptor_t *desc); static void update_router_have_minimum_dir_info(void); -static const char *signed_descriptor_get_body_impl(signed_descriptor_t *desc, - int with_annotations); +static const char *signed_descriptor_get_body_impl( + const signed_descriptor_t *desc, + int with_annotations); static void list_pending_downloads(digestmap_t *result, int purpose, const char *prefix); @@ -310,6 +315,7 @@ trusted_dirs_remove_old_certs(void) time_t now = time(NULL); #define DEAD_CERT_LIFETIME (2*24*60*60) #define OLD_CERT_LIFETIME (7*24*60*60) +#define CERT_EXPIRY_SKEW (60*60) if (!trusted_dir_certs) return; @@ -326,7 +332,7 @@ trusted_dirs_remove_old_certs(void) time_t cert_published; if (newest == cert) continue; - expired = ftime_definitely_after(now, cert->expires); + expired = time_definitely_after(now, cert->expires, CERT_EXPIRY_SKEW); cert_published = cert->cache_info.published_on; /* Store expired certs for 48 hours after a newer arrives; */ @@ -518,7 +524,7 @@ authority_certs_fetch_missing(networkstatus_t *status, time_t now) continue; cl = get_cert_list(ds->v3_identity_digest); SMARTLIST_FOREACH(cl->certs, authority_cert_t *, cert, { - if (!ftime_definitely_after(now, cert->expires)) { + if (! time_definitely_after(now, cert->expires, CERT_EXPIRY_SKEW)) { /* 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); @@ -598,7 +604,7 @@ router_should_rebuild_store(desc_store_t *store) /** Return the desc_store_t in <b>rl</b> that should be used to store * <b>sd</b>. */ static INLINE desc_store_t * -desc_get_store(routerlist_t *rl, signed_descriptor_t *sd) +desc_get_store(routerlist_t *rl, const signed_descriptor_t *sd) { if (sd->is_extrainfo) return &rl->extrainfo_store; @@ -924,10 +930,10 @@ router_get_trusted_dir_servers(void) * Don't pick an authority if any non-authority is viable; try to avoid using * servers that have returned 503 recently. */ -routerstatus_t * +const routerstatus_t * router_pick_directory_server(authority_type_t type, int flags) { - routerstatus_t *choice; + const routerstatus_t *choice; if (get_options()->PreferTunneledDirConns) flags |= _PDS_PREFER_TUNNELED_DIR_CONNS; @@ -956,8 +962,8 @@ int router_get_my_share_of_directory_requests(double *v2_share_out, double *v3_share_out) { - routerinfo_t *me = router_get_my_routerinfo(); - routerstatus_t *rs; + const routerinfo_t *me = router_get_my_routerinfo(); + const routerstatus_t *rs; const int pds_flags = PDS_ALLOW_SELF|PDS_IGNORE_FASCISTFIREWALL; *v2_share_out = *v3_share_out = 0.0; if (!me) @@ -1030,10 +1036,10 @@ trusteddirserver_get_by_v3_auth_digest(const char *digest) /** Try to find a running trusted dirserver. Flags are as for * router_pick_directory_server. */ -routerstatus_t * +const routerstatus_t * router_pick_trusteddirserver(authority_type_t type, int flags) { - routerstatus_t *choice; + const routerstatus_t *choice; int busy = 0; if (get_options()->PreferTunneledDirConns) flags |= _PDS_PREFER_TUNNELED_DIR_CONNS; @@ -1066,10 +1072,10 @@ router_pick_trusteddirserver(authority_type_t type, int flags) * If the _PDS_PREFER_TUNNELED_DIR_CONNS flag is set, prefer directory servers * that we can use with BEGINDIR. */ -static routerstatus_t * +static const routerstatus_t * router_pick_directory_server_impl(authority_type_t type, int flags) { - routerstatus_t *result; + const node_t *result; smartlist_t *direct, *tunnel; smartlist_t *trusted_direct, *trusted_tunnel; smartlist_t *overloaded_direct, *overloaded_tunnel; @@ -1090,49 +1096,54 @@ router_pick_directory_server_impl(authority_type_t type, int flags) overloaded_tunnel = smartlist_create(); /* Find all the running dirservers we know about. */ - SMARTLIST_FOREACH_BEGIN(consensus->routerstatus_list, routerstatus_t *, - status) { + SMARTLIST_FOREACH_BEGIN(nodelist_get_list(), const node_t *, node) { int is_trusted; - int is_overloaded = status->last_dir_503_at + DIR_503_TIMEOUT > now; + int is_overloaded; tor_addr_t addr; - if (!status->is_running || !status->dir_port || !status->is_valid) + const routerstatus_t *status = node->rs; + if (!status) continue; - if (status->is_bad_directory) + + if (!node->is_running || !status->dir_port || !node->is_valid) + continue; + if (node->is_bad_directory) continue; - if (requireother && router_digest_is_me(status->identity_digest)) + if (requireother && router_digest_is_me(node->identity)) continue; if (type & V3_AUTHORITY) { if (!(status->version_supports_v3_dir || - router_digest_is_trusted_dir_type(status->identity_digest, + router_digest_is_trusted_dir_type(node->identity, V3_AUTHORITY))) continue; } - is_trusted = router_digest_is_trusted_dir(status->identity_digest); - if ((type & V2_AUTHORITY) && !(status->is_v2_dir || is_trusted)) + is_trusted = router_digest_is_trusted_dir(node->identity); + if ((type & V2_AUTHORITY) && !(node->rs->is_v2_dir || is_trusted)) continue; if ((type & EXTRAINFO_CACHE) && - !router_supports_extrainfo(status->identity_digest, 0)) + !router_supports_extrainfo(node->identity, 0)) continue; /* XXXX IP6 proposal 118 */ - tor_addr_from_ipv4h(&addr, status->addr); + tor_addr_from_ipv4h(&addr, node->rs->addr); + + is_overloaded = status->last_dir_503_at + DIR_503_TIMEOUT > now; if (prefer_tunnel && status->version_supports_begindir && (!fascistfirewall || fascist_firewall_allows_address_or(&addr, status->or_port))) smartlist_add(is_trusted ? trusted_tunnel : - is_overloaded ? overloaded_tunnel : tunnel, status); + is_overloaded ? overloaded_tunnel : tunnel, (void*)node); else if (!fascistfirewall || fascist_firewall_allows_address_dir(&addr, status->dir_port)) smartlist_add(is_trusted ? trusted_direct : - is_overloaded ? overloaded_direct : direct, status); - } SMARTLIST_FOREACH_END(status); + is_overloaded ? overloaded_direct : direct, (void*)node); + } SMARTLIST_FOREACH_END(node); if (smartlist_len(tunnel)) { - result = routerstatus_sl_choose_by_bandwidth(tunnel, WEIGHT_FOR_DIR); + result = node_sl_choose_by_bandwidth(tunnel, WEIGHT_FOR_DIR); } else if (smartlist_len(overloaded_tunnel)) { - result = routerstatus_sl_choose_by_bandwidth(overloaded_tunnel, + result = node_sl_choose_by_bandwidth(overloaded_tunnel, WEIGHT_FOR_DIR); } else if (smartlist_len(trusted_tunnel)) { /* FFFF We don't distinguish between trusteds and overloaded trusteds @@ -1141,10 +1152,10 @@ router_pick_directory_server_impl(authority_type_t type, int flags) * is a feature, but it could easily be a bug. -RD */ result = smartlist_choose(trusted_tunnel); } else if (smartlist_len(direct)) { - result = routerstatus_sl_choose_by_bandwidth(direct, WEIGHT_FOR_DIR); + result = node_sl_choose_by_bandwidth(direct, WEIGHT_FOR_DIR); } else if (smartlist_len(overloaded_direct)) { - result = routerstatus_sl_choose_by_bandwidth(overloaded_direct, - WEIGHT_FOR_DIR); + result = node_sl_choose_by_bandwidth(overloaded_direct, + WEIGHT_FOR_DIR); } else { result = smartlist_choose(trusted_direct); } @@ -1154,20 +1165,20 @@ router_pick_directory_server_impl(authority_type_t type, int flags) smartlist_free(trusted_tunnel); smartlist_free(overloaded_direct); smartlist_free(overloaded_tunnel); - return result; + return result ? result->rs : NULL; } /** Choose randomly from among the trusted dirservers that are up. Flags * are as for router_pick_directory_server_impl(). */ -static routerstatus_t * +static const routerstatus_t * router_pick_trusteddirserver_impl(authority_type_t type, int flags, int *n_busy_out) { smartlist_t *direct, *tunnel; smartlist_t *overloaded_direct, *overloaded_tunnel; - routerinfo_t *me = router_get_my_routerinfo(); - routerstatus_t *result; + const routerinfo_t *me = router_get_my_routerinfo(); + const routerstatus_t *result; time_t now = time(NULL); const int requireother = ! (flags & PDS_ALLOW_SELF); const int fascistfirewall = ! (flags & PDS_IGNORE_FASCISTFIREWALL); @@ -1257,22 +1268,18 @@ router_pick_trusteddirserver_impl(authority_type_t type, int flags, static void mark_all_trusteddirservers_up(void) { - if (routerlist) { - SMARTLIST_FOREACH(routerlist->routers, routerinfo_t *, router, - if (router_digest_is_trusted_dir(router->cache_info.identity_digest) && - router->dir_port > 0) { - router->is_running = 1; - }); - } + SMARTLIST_FOREACH(nodelist_get_list(), node_t *, node, { + if (router_digest_is_trusted_dir(node->identity)) + node->is_running = 1; + }); if (trusted_dir_servers) { SMARTLIST_FOREACH(trusted_dir_servers, trusted_dir_server_t *, dir, { routerstatus_t *rs; dir->is_running = 1; download_status_reset(&dir->v2_ns_dl_status); - rs = router_get_consensus_status_by_id(dir->digest); - if (rs && !rs->is_running) { - rs->is_running = 1; + rs = router_get_mutable_consensus_status_by_id(dir->digest); + if (rs) { rs->last_dir_503_at = 0; control_event_networkstatus_changed_single(rs); } @@ -1296,25 +1303,14 @@ router_reset_status_download_failures(void) mark_all_trusteddirservers_up(); } -/** Return true iff router1 and router2 have the same /16 network. */ +/** Return true iff router1 and router2 have similar enough network addresses + * that we should treat them as being in the same family */ static INLINE int -routers_in_same_network_family(routerinfo_t *r1, routerinfo_t *r2) -{ - return (r1->addr & 0xffff0000) == (r2->addr & 0xffff0000); -} - -/** Look through the routerlist and identify routers that - * advertise the same /16 network address as <b>router</b>. - * Add each of them to <b>sl</b>. - */ -static void -routerlist_add_network_family(smartlist_t *sl, routerinfo_t *router) +addrs_in_same_network_family(const tor_addr_t *a1, + const tor_addr_t *a2) { - SMARTLIST_FOREACH(routerlist->routers, routerinfo_t *, r, - { - if (router != r && routers_in_same_network_family(router, r)) - smartlist_add(sl, r); - }); + /* XXXX MOVE ? */ + 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>. @@ -1322,122 +1318,132 @@ routerlist_add_network_family(smartlist_t *sl, routerinfo_t *router) * or pick more than one relay from a family for our entry guard list. */ void -routerlist_add_family(smartlist_t *sl, routerinfo_t *router) +nodelist_add_node_family(smartlist_t *sl, const node_t *node) { - routerinfo_t *r; - config_line_t *cl; + /* XXXX MOVE */ + const smartlist_t *all_nodes = nodelist_get_list(); + const smartlist_t *declared_family; or_options_t *options = get_options(); - /* First, add any routers with similar network addresses. */ - if (options->EnforceDistinctSubnets) - routerlist_add_network_family(sl, router); + tor_assert(node); - if (router->declared_family) { - /* Add every r such that router declares familyness with r, and r + declared_family = node_get_declared_family(node); + + /* First, add any nodes with similar network addresses. */ + if (options->EnforceDistinctSubnets) { + tor_addr_t node_addr; + node_get_addr(node, &node_addr); + + SMARTLIST_FOREACH_BEGIN(all_nodes, const node_t *, node2) { + tor_addr_t a; + node_get_addr(node2, &a); + if (addrs_in_same_network_family(&a, &node_addr)) + smartlist_add(sl, (void*)node2); + } SMARTLIST_FOREACH_END(node2); + } + + /* Now, add all nodes in the declared_family of this node, if they + * also declare this node to be in their family. */ + if (declared_family) { + /* Add every r such that router declares familyness with node, and node * declares familyhood with router. */ - SMARTLIST_FOREACH(router->declared_family, const char *, n, - { - if (!(r = router_get_by_nickname(n, 0))) - continue; - if (!r->declared_family) - continue; - SMARTLIST_FOREACH(r->declared_family, const char *, n2, - { - if (router_nickname_matches(router, n2)) - smartlist_add(sl, r); - }); - }); + SMARTLIST_FOREACH_BEGIN(declared_family, const char *, name) { + const node_t *node2; + const smartlist_t *family2; + if (!(node2 = node_get_by_nickname(name, 0))) + continue; + if (!(family2 = node_get_declared_family(node2))) + continue; + SMARTLIST_FOREACH_BEGIN(family2, const char *, name2) { + if (node_nickname_matches(node, name2)) { + smartlist_add(sl, (void*)node2); + break; + } + } SMARTLIST_FOREACH_END(name2); + } SMARTLIST_FOREACH_END(name); } /* If the user declared any families locally, honor those too. */ - for (cl = options->NodeFamilies; cl; cl = cl->next) { - if (router_nickname_is_in_list(router, cl->value)) { - add_nickname_list_to_smartlist(sl, cl->value, 0); - } + if (options->NodeFamilySets) { + SMARTLIST_FOREACH(options->NodeFamilySets, const routerset_t *, rs, { + if (routerset_contains_node(rs, node)) { + routerset_get_all_nodes(sl, rs, 0); + } + }); } } -/** Return true iff r is named by some nickname in <b>lst</b>. */ +/** Given a <b>router</b>, add every node_t in its family 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) +{ + /* XXXX MOVE ? */ + node_t fake_node; + const node_t *node = node_get_by_id(router->cache_info.identity_digest);; + if (node == NULL) { + memset(&fake_node, 0, sizeof(fake_node)); + fake_node.ri = (routerinfo_t *)router; + memcpy(fake_node.identity, router->cache_info.identity_digest, DIGEST_LEN); + node = &fake_node; + } + nodelist_add_node_family(sl, node); +} + +/** Return true iff <b>node</b> is named by some nickname in <b>lst</b>. */ static INLINE int -router_in_nickname_smartlist(smartlist_t *lst, routerinfo_t *r) +node_in_nickname_smartlist(const smartlist_t *lst, const node_t *node) { + /* XXXX MOVE */ if (!lst) return 0; - SMARTLIST_FOREACH(lst, const char *, name, - if (router_nickname_matches(r, name)) - return 1;); + SMARTLIST_FOREACH(lst, const char *, name, { + if (node_nickname_matches(node, name)) + return 1; + }); return 0; } /** Return true iff r1 and r2 are in the same family, but not the same * router. */ int -routers_in_same_family(routerinfo_t *r1, routerinfo_t *r2) +nodes_in_same_family(const node_t *node1, const node_t *node2) { + /* XXXX MOVE */ or_options_t *options = get_options(); - config_line_t *cl; - - if (options->EnforceDistinctSubnets && routers_in_same_network_family(r1,r2)) - return 1; - if (router_in_nickname_smartlist(r1->declared_family, r2) && - router_in_nickname_smartlist(r2->declared_family, r1)) - return 1; - - for (cl = options->NodeFamilies; cl; cl = cl->next) { - if (router_nickname_is_in_list(r1, cl->value) && - router_nickname_is_in_list(r2, cl->value)) + /* Are they in the same family because of their addresses? */ + if (options->EnforceDistinctSubnets) { + tor_addr_t a1, a2; + node_get_addr(node1, &a1); + node_get_addr(node2, &a2); + if (addrs_in_same_network_family(&a1, &a2)) return 1; } - return 0; -} -/** Given a (possibly NULL) comma-and-whitespace separated list of nicknames, - * see which nicknames in <b>list</b> name routers in our routerlist, and add - * the routerinfos for those routers to <b>sl</b>. If <b>must_be_running</b>, - * only include routers that we think are running. - * Warn if any non-Named routers are specified by nickname. - */ -void -add_nickname_list_to_smartlist(smartlist_t *sl, const char *list, - int must_be_running) -{ - routerinfo_t *router; - smartlist_t *nickname_list; - int have_dir_info = router_have_minimum_dir_info(); - - if (!list) - return; /* nothing to do */ - tor_assert(sl); - - nickname_list = smartlist_create(); - if (!warned_nicknames) - warned_nicknames = smartlist_create(); + /* Are they in the same family because the agree they are? */ + { + const smartlist_t *f1, *f2; + f1 = node_get_declared_family(node1); + f2 = node_get_declared_family(node2); + if (f1 && f2 && + node_in_nickname_smartlist(f1, node2) && + node_in_nickname_smartlist(f2, node1)) + return 1; + } - smartlist_split_string(nickname_list, list, ",", - SPLIT_SKIP_SPACE|SPLIT_IGNORE_BLANK, 0); + /* Are they in the same option because the user says they are? */ + if (options->NodeFamilySets) { + SMARTLIST_FOREACH(options->NodeFamilySets, const routerset_t *, rs, { + if (routerset_contains_node(rs, node1) && + routerset_contains_node(rs, node2)) + return 1; + }); + } - SMARTLIST_FOREACH(nickname_list, const char *, nick, { - int warned; - if (!is_legal_nickname_or_hexdigest(nick)) { - log_warn(LD_CONFIG, "Nickname '%s' is misformed; skipping", nick); - continue; - } - router = router_get_by_nickname(nick, 1); - warned = smartlist_string_isin(warned_nicknames, nick); - if (router) { - if (!must_be_running || router->is_running) { - smartlist_add(sl,router); - } - } else if (!router_get_consensus_status_by_nickname(nick,1)) { - if (!warned) { - log_fn(have_dir_info ? LOG_WARN : LOG_INFO, LD_CONFIG, - "Nickname list includes '%s' which isn't a known router.",nick); - smartlist_add(warned_nicknames, tor_strdup(nick)); - } - } - }); - SMARTLIST_FOREACH(nickname_list, char *, nick, tor_free(nick)); - smartlist_free(nickname_list); + return 0; } /** Return 1 iff any member of the (possibly NULL) comma-separated list @@ -1445,7 +1451,7 @@ add_nickname_list_to_smartlist(smartlist_t *sl, const char *list, * return 0. */ int -router_nickname_is_in_list(routerinfo_t *router, const char *list) +router_nickname_is_in_list(const routerinfo_t *router, const char *list) { smartlist_t *nickname_list; int v = 0; @@ -1464,34 +1470,32 @@ router_nickname_is_in_list(routerinfo_t *router, const char *list) return v; } -/** Add every suitable router from our routerlist to <b>sl</b>, so that +/** Add every suitable node from our nodelist to <b>sl</b>, so that * we can pick a node for a circuit. */ static void -router_add_running_routers_to_smartlist(smartlist_t *sl, int allow_invalid, - int need_uptime, int need_capacity, - int need_guard) -{ - if (!routerlist) - return; +router_add_running_nodes_to_smartlist(smartlist_t *sl, int allow_invalid, + int need_uptime, int need_capacity, + int need_guard, int need_desc) +{ /* XXXX MOVE */ + SMARTLIST_FOREACH_BEGIN(nodelist_get_list(), const node_t *, node) { + if (!node->is_running || + (!node->is_valid && !allow_invalid)) + continue; + if (need_desc && !(node->ri || (node->rs && node->md))) + continue; + if (node->ri && node->ri->purpose != ROUTER_PURPOSE_GENERAL) + continue; + if (node_is_unreliable(node, need_uptime, need_capacity, need_guard)) + continue; - SMARTLIST_FOREACH(routerlist->routers, routerinfo_t *, router, - { - if (router->is_running && - router->purpose == ROUTER_PURPOSE_GENERAL && - (router->is_valid || allow_invalid) && - !router_is_unreliable(router, need_uptime, - need_capacity, need_guard)) { - /* If it's running, and it's suitable according to the - * other flags we had in mind */ - smartlist_add(sl, router); - } - }); + smartlist_add(sl, (void *)node); + } SMARTLIST_FOREACH_END(node); } /** Look through the routerlist until we find a router that has my key. Return it. */ -routerinfo_t * +const routerinfo_t * routerlist_find_my_routerinfo(void) { if (!routerlist) @@ -1509,9 +1513,9 @@ routerlist_find_my_routerinfo(void) * that allows exit to this address:port, or return NULL if there * isn't a good one. */ -routerinfo_t * +const node_t * router_find_exact_exit_enclave(const char *address, uint16_t port) -{ +{/*XXXX MOVE*/ uint32_t addr; struct in_addr in; tor_addr_t a; @@ -1522,13 +1526,12 @@ router_find_exact_exit_enclave(const char *address, uint16_t port) tor_addr_from_ipv4h(&a, addr); - SMARTLIST_FOREACH(routerlist->routers, routerinfo_t *, router, - { - if (router->addr == addr && - router->is_running && - compare_tor_addr_to_addr_policy(&a, port, router->exit_policy) == + SMARTLIST_FOREACH(nodelist_get_list(), const node_t *, node, { + if (node_get_addr_ipv4h(node) == addr && + node->is_running && + compare_tor_addr_to_node_policy(&a, port, node) == ADDR_POLICY_ACCEPTED) - return router; + return node; }); return NULL; } @@ -1540,14 +1543,14 @@ router_find_exact_exit_enclave(const char *address, uint16_t port) * If <b>need_guard</b>, we require that the router is a possible entry guard. */ int -router_is_unreliable(routerinfo_t *router, int need_uptime, - int need_capacity, int need_guard) +node_is_unreliable(const node_t *node, int need_uptime, + int need_capacity, int need_guard) { - if (need_uptime && !router->is_stable) + if (need_uptime && !node->is_stable) return 1; - if (need_capacity && !router->is_fast) + if (need_capacity && !node->is_fast) return 1; - if (need_guard && !router->is_possible_guard) + if (need_guard && !node->is_possible_guard) return 1; return 0; } @@ -1555,7 +1558,7 @@ router_is_unreliable(routerinfo_t *router, int need_uptime, /** Return the smaller of the router's configured BandwidthRate * and its advertised capacity. */ uint32_t -router_get_advertised_bandwidth(routerinfo_t *router) +router_get_advertised_bandwidth(const routerinfo_t *router) { if (router->bandwidthcapacity < router->bandwidthrate) return router->bandwidthcapacity; @@ -1569,7 +1572,7 @@ router_get_advertised_bandwidth(routerinfo_t *router) /** Return the smaller of the router's configured BandwidthRate * and its advertised capacity, capped by max-believe-bw. */ uint32_t -router_get_advertised_bandwidth_capped(routerinfo_t *router) +router_get_advertised_bandwidth_capped(const routerinfo_t *router) { uint32_t result = router->bandwidthcapacity; if (result > router->bandwidthrate) @@ -1611,13 +1614,10 @@ kb_to_bytes(uint32_t bw) } /** Helper function: - * choose a random element of smartlist <b>sl</b>, weighted by + * choose a random element of smartlist <b>sl</b> of nodes, weighted by * the advertised bandwidth of each element using the consensus * bandwidth weights. * - * If <b>statuses</b> is zero, then <b>sl</b> is a list of - * routerinfo_t's. Otherwise it's a list of routerstatus_t's. - * * If <b>rule</b>==WEIGHT_FOR_EXIT. we're picking an exit node: consider all * nodes' bandwidth equally regardless of their Exit status, since there may * be some in the list because they exit to obscure ports. If @@ -1627,10 +1627,9 @@ kb_to_bytes(uint32_t bw) * guard node: consider all guard's bandwidth equally. Otherwise, weight * guards proportionally less. */ -static void * -smartlist_choose_by_bandwidth_weights(smartlist_t *sl, - bandwidth_weight_rule_t rule, - int statuses) +static const node_t * +smartlist_choose_node_by_bandwidth_weights(smartlist_t *sl, + bandwidth_weight_rule_t rule) { int64_t weight_scale; int64_t rand_bw; @@ -1725,15 +1724,14 @@ smartlist_choose_by_bandwidth_weights(smartlist_t *sl, bandwidths = tor_malloc_zero(sizeof(double)*smartlist_len(sl)); // Cycle through smartlist and total the bandwidth. - for (i = 0; i < (unsigned)smartlist_len(sl); ++i) { + 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; - if (statuses) { - routerstatus_t *status = smartlist_get(sl, i); - is_exit = status->is_exit; - is_guard = status->is_possible_guard; - is_dir = (status->dir_port != 0); - if (!status->has_bandwidth) { + is_exit = node->is_exit; + is_guard = node->is_possible_guard; + is_dir = node_is_dir(node); + if (node->rs) { + if (!node->rs->has_bandwidth) { tor_free(bandwidths); /* This should never happen, unless all the authorites downgrade * to 0.2.0 or rogue routerstatuses get inserted into our consensus. */ @@ -1742,26 +1740,17 @@ smartlist_choose_by_bandwidth_weights(smartlist_t *sl, "old router selection algorithm."); return NULL; } - this_bw = kb_to_bytes(status->bandwidth); - if (router_digest_is_me(status->identity_digest)) - is_me = 1; + this_bw = kb_to_bytes(node->rs->bandwidth); + } else if (node->ri) { + /* bridge or other descriptor not in our consensus */ + this_bw = bridge_get_advertised_bandwidth_bounded(node->ri); + have_unknown = 1; } else { - routerstatus_t *rs; - routerinfo_t *router = smartlist_get(sl, i); - rs = router_get_consensus_status_by_id( - router->cache_info.identity_digest); - is_exit = router->is_exit; - is_guard = router->is_possible_guard; - is_dir = (router->dir_port != 0); - if (rs && rs->has_bandwidth) { - this_bw = kb_to_bytes(rs->bandwidth); - } else { /* bridge or other descriptor not in our consensus */ - this_bw = bridge_get_advertised_bandwidth_bounded(router); - have_unknown = 1; - } - if (router_digest_is_me(router->cache_info.identity_digest)) - is_me = 1; + /* We can't use this one. */ + continue; } + is_me = router_digest_is_me(node->identity); + if (is_guard && is_exit) { weight = (is_dir ? Wdb*Wd : Wd); } else if (is_guard) { @@ -1772,11 +1761,11 @@ smartlist_choose_by_bandwidth_weights(smartlist_t *sl, weight = (is_dir ? Wmb*Wm : Wm); } - bandwidths[i] = weight*this_bw; + bandwidths[node_sl_idx] = weight*this_bw; weighted_bw += weight*this_bw; if (is_me) sl_last_weighted_bw_of_me = weight*this_bw; - } + } SMARTLIST_FOREACH_END(node); /* XXXX022 this is a kludge to expose these values. */ sl_last_total_weighted_bw = weighted_bw; @@ -1824,12 +1813,9 @@ smartlist_choose_by_bandwidth_weights(smartlist_t *sl, } /** Helper function: - * choose a random element of smartlist <b>sl</b>, weighted by + * choose a random node_t element of smartlist <b>sl</b>, weighted by * the advertised bandwidth of each element. * - * If <b>statuses</b> is zero, then <b>sl</b> is a list of - * routerinfo_t's. Otherwise it's a list of routerstatus_t's. - * * If <b>rule</b>==WEIGHT_FOR_EXIT. we're picking an exit node: consider all * nodes' bandwidth equally regardless of their Exit status, since there may * be some in the list because they exit to obscure ports. If @@ -1839,13 +1825,11 @@ smartlist_choose_by_bandwidth_weights(smartlist_t *sl, * guard node: consider all guard's bandwidth equally. Otherwise, weight * guards proportionally less. */ -static void * -smartlist_choose_by_bandwidth(smartlist_t *sl, bandwidth_weight_rule_t rule, - int statuses) +static const node_t * +smartlist_choose_node_by_bandwidth(smartlist_t *sl, + bandwidth_weight_rule_t rule) { - unsigned int i; - routerinfo_t *router; - routerstatus_t *status=NULL; + unsigned i; int32_t *bandwidths; int is_exit; int is_guard; @@ -1886,49 +1870,34 @@ smartlist_choose_by_bandwidth(smartlist_t *sl, bandwidth_weight_rule_t rule, guard_bits = bitarray_init_zero(smartlist_len(sl)); /* Iterate over all the routerinfo_t or routerstatus_t, and */ - for (i = 0; i < (unsigned)smartlist_len(sl); ++i) { + SMARTLIST_FOREACH_BEGIN(sl, const node_t *, node) { /* first, learn what bandwidth we think i has */ int is_known = 1; int32_t flags = 0; uint32_t this_bw = 0; - if (statuses) { - status = smartlist_get(sl, i); - if (router_digest_is_me(status->identity_digest)) - me_idx = i; - router = router_get_by_digest(status->identity_digest); - is_exit = status->is_exit; - is_guard = status->is_possible_guard; - if (status->has_bandwidth) { - this_bw = kb_to_bytes(status->bandwidth); + i = node_sl_idx; + + if (router_digest_is_me(node->identity)) + me_idx = node_sl_idx; + + is_exit = node->is_exit; + is_guard = node->is_possible_guard; + if (node->rs) { + if (node->rs->has_bandwidth) { + this_bw = kb_to_bytes(node->rs->bandwidth); } else { /* guess */ /* XXX022 once consensuses always list bandwidths, we can take * this guessing business out. -RD */ is_known = 0; - flags = status->is_fast ? 1 : 0; + flags = node->rs->is_fast ? 1 : 0; flags |= is_exit ? 2 : 0; flags |= is_guard ? 4 : 0; } - } else { - routerstatus_t *rs; - router = smartlist_get(sl, i); - rs = router_get_consensus_status_by_id( - router->cache_info.identity_digest); - if (router_digest_is_me(router->cache_info.identity_digest)) - me_idx = i; - is_exit = router->is_exit; - is_guard = router->is_possible_guard; - if (rs && rs->has_bandwidth) { - this_bw = kb_to_bytes(rs->bandwidth); - } else if (rs) { /* guess; don't trust the descriptor */ - /* XXX022 once consensuses always list bandwidths, we can take - * this guessing business out. -RD */ - is_known = 0; - flags = router->is_fast ? 1 : 0; - flags |= is_exit ? 2 : 0; - flags |= is_guard ? 4 : 0; - } else /* bridge or other descriptor not in our consensus */ - this_bw = bridge_get_advertised_bandwidth_bounded(router); + } else if (node->ri) { + /* Must be a bridge if we're willing to use it */ + this_bw = bridge_get_advertised_bandwidth_bounded(node->ri); } + if (is_exit) bitarray_set(exit_bits, i); if (is_guard) @@ -1948,9 +1917,9 @@ smartlist_choose_by_bandwidth(smartlist_t *sl, bandwidth_weight_rule_t rule, total_nonexit_bw += this_bw; } else { ++n_unknown; - bandwidths[i] = -flags; + bandwidths[node_sl_idx] = -flags; } - } + } SMARTLIST_FOREACH_END(node); /* Now, fill in the unknown values. */ if (n_unknown) { @@ -2092,40 +2061,23 @@ smartlist_choose_by_bandwidth(smartlist_t *sl, bandwidth_weight_rule_t rule, return smartlist_get(sl, i); } -/** Choose a random element of router list <b>sl</b>, weighted by - * the advertised bandwidth of each router. - */ -routerinfo_t * -routerlist_sl_choose_by_bandwidth(smartlist_t *sl, - bandwidth_weight_rule_t rule) -{ - routerinfo_t *ret; - if ((ret = smartlist_choose_by_bandwidth_weights(sl, rule, 0))) { - return ret; - } else { - return smartlist_choose_by_bandwidth(sl, rule, 0); - } -} - /** Choose a random element of status list <b>sl</b>, weighted by - * the advertised bandwidth of each status. - */ -routerstatus_t * -routerstatus_sl_choose_by_bandwidth(smartlist_t *sl, - bandwidth_weight_rule_t rule) -{ - /* We are choosing neither exit nor guard here. Weight accordingly. */ - routerstatus_t *ret; - if ((ret = smartlist_choose_by_bandwidth_weights(sl, rule, 1))) { + * the advertised bandwidth of each node */ +const node_t * +node_sl_choose_by_bandwidth(smartlist_t *sl, + bandwidth_weight_rule_t rule) +{ /*XXXX MOVE */ + const node_t *ret; + if ((ret = smartlist_choose_node_by_bandwidth_weights(sl, rule))) { return ret; } else { - return smartlist_choose_by_bandwidth(sl, rule, 1); + return smartlist_choose_node_by_bandwidth(sl, rule); } } -/** Return a random running router from the routerlist. Never - * pick a node whose routerinfo is in - * <b>excludedsmartlist</b>, or whose routerinfo matches <b>excludedset</b>, +/** Return a random running node from the nodelist. Never + * pick a node that is in + * <b>excludedsmartlist</b>, or which matches <b>excludedset</b>, * even if they are the only nodes available. * If <b>CRN_NEED_UPTIME</b> is set in flags and any router has more than * a minimum uptime, return one of those. @@ -2137,21 +2089,26 @@ routerstatus_sl_choose_by_bandwidth(smartlist_t *sl, * If <b>CRN_WEIGHT_AS_EXIT</b> is set in flags, we weight bandwidths as if * picking an exit node, otherwise we weight bandwidths for picking a relay * node (that is, possibly discounting exit nodes). + * If <b>CRN_NEED_DESC</b> is set in flags, we only consider nodes that + * have a routerinfo or microdescriptor -- that is, enough info to be + * used to build a circuit. */ -routerinfo_t * +const node_t * router_choose_random_node(smartlist_t *excludedsmartlist, routerset_t *excludedset, router_crn_flags_t flags) -{ +{ /* XXXX MOVE */ const int need_uptime = (flags & CRN_NEED_UPTIME) != 0; const int need_capacity = (flags & CRN_NEED_CAPACITY) != 0; const int need_guard = (flags & CRN_NEED_GUARD) != 0; const int allow_invalid = (flags & CRN_ALLOW_INVALID) != 0; const int weight_for_exit = (flags & CRN_WEIGHT_AS_EXIT) != 0; + const int need_desc = (flags & CRN_NEED_DESC) != 0; smartlist_t *sl=smartlist_create(), - *excludednodes=smartlist_create(); - routerinfo_t *choice = NULL, *r; + *excludednodes=smartlist_create(); + const node_t *choice = NULL; + const routerinfo_t *r; bandwidth_weight_rule_t rule; tor_assert(!(weight_for_exit && need_guard)); @@ -2161,29 +2118,30 @@ router_choose_random_node(smartlist_t *excludedsmartlist, /* Exclude relays that allow single hop exit circuits, if the user * wants to (such relays might be risky) */ if (get_options()->ExcludeSingleHopRelays) { - routerlist_t *rl = router_get_routerlist(); - SMARTLIST_FOREACH(rl->routers, routerinfo_t *, r, - if (r->allow_single_hop_exits) { - smartlist_add(excludednodes, r); + SMARTLIST_FOREACH(nodelist_get_list(), node_t *, node, + if (node_allows_single_hop_exits(node)) { + smartlist_add(excludednodes, node); }); } if ((r = routerlist_find_my_routerinfo())) { - smartlist_add(excludednodes, r); - routerlist_add_family(excludednodes, r); + 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); } - router_add_running_routers_to_smartlist(sl, allow_invalid, - need_uptime, need_capacity, - need_guard); + router_add_running_nodes_to_smartlist(sl, allow_invalid, + need_uptime, need_capacity, + need_guard, need_desc); smartlist_subtract(sl,excludednodes); if (excludedsmartlist) smartlist_subtract(sl,excludedsmartlist); if (excludedset) - routerset_subtract_routers(sl,excludedset); + routerset_subtract_nodes(sl,excludedset); // Always weight by bandwidth - choice = routerlist_sl_choose_by_bandwidth(sl, rule); + choice = node_sl_choose_by_bandwidth(sl, rule); smartlist_free(sl); if (!choice && (need_uptime || need_capacity || need_guard)) { @@ -2206,35 +2164,88 @@ router_choose_random_node(smartlist_t *excludedsmartlist, return choice; } -/** Helper: Return true iff the <b>identity_digest</b> and <b>nickname</b> - * combination of a router, encoded in hexadecimal, matches <b>hexdigest</b> - * (which is optionally prefixed with a single dollar sign). Return false if - * <b>hexdigest</b> is malformed, or it doesn't match. */ -static INLINE int -hex_digest_matches(const char *hexdigest, const char *identity_digest, - const char *nickname, int is_named) +/** Helper: given an extended nickname in <b>hexdigest</b> try to decode it. + * Return 0 on success, -1 on failure. Store the result into the + * DIGEST_LEN-byte buffer at <b>digest_out</b>, the single character at + * <b>nickname_qualifier_char_out</b>, and the MAXNICKNAME_LEN+1-byte buffer + * at <b>nickname_out</b>. + * + * The recognized format is: + * HexName = Dollar? HexDigest NamePart? + * Dollar = '?' + * HexDigest = HexChar*20 + * HexChar = 'a'..'f' | 'A'..'F' | '0'..'9' + * NamePart = QualChar Name + * QualChar = '=' | '~' + * Name = NameChar*(1..MAX_NICKNAME_LEN) + * NameChar = Any ASCII alphanumeric character + */ +int +hex_digest_nickname_decode(const char *hexdigest, + char *digest_out, + char *nickname_qualifier_char_out, + char *nickname_out) { - char digest[DIGEST_LEN]; size_t len; + tor_assert(hexdigest); if (hexdigest[0] == '$') ++hexdigest; len = strlen(hexdigest); - if (len < HEX_DIGEST_LEN) + if (len < HEX_DIGEST_LEN) { + return -1; + } else if (len > HEX_DIGEST_LEN && (hexdigest[HEX_DIGEST_LEN] == '=' || + hexdigest[HEX_DIGEST_LEN] == '~') && + len <= HEX_DIGEST_LEN+1+MAX_NICKNAME_LEN) { + *nickname_qualifier_char_out = hexdigest[HEX_DIGEST_LEN]; + strlcpy(nickname_out, hexdigest+HEX_DIGEST_LEN+1 , MAX_NICKNAME_LEN+1); + } else if (len == HEX_DIGEST_LEN) { + ; + } else { + return -1; + } + + if (base16_decode(digest_out, DIGEST_LEN, hexdigest, HEX_DIGEST_LEN)<0) + return -1; + return 0; +} + +/** Helper: Return true iff the <b>identity_digest</b> and <b>nickname</b> + * combination of a router, encoded in hexadecimal, matches <b>hexdigest</b> + * (which is optionally prefixed with a single dollar sign). Return false if + * <b>hexdigest</b> is malformed, or it doesn't match. */ +static int +hex_digest_nickname_matches(const char *hexdigest, const char *identity_digest, + const char *nickname, int is_named) +{ + char digest[DIGEST_LEN]; + char nn_char='\0'; + char nn_buf[MAX_NICKNAME_LEN+1]; + + if (hex_digest_nickname_decode(hexdigest, digest, &nn_char, nn_buf) == -1) return 0; - else if (len > HEX_DIGEST_LEN && - (hexdigest[HEX_DIGEST_LEN] == '=' || - hexdigest[HEX_DIGEST_LEN] == '~')) { - if (strcasecmp(hexdigest+HEX_DIGEST_LEN+1, nickname)) + + if (nn_char == '=' || nn_char == '~') { + if (strcasecmp(nn_buf, nickname)) return 0; - if (hexdigest[HEX_DIGEST_LEN] == '=' && !is_named) + if (nn_char == '=' && !is_named) return 0; } - if (base16_decode(digest, DIGEST_LEN, hexdigest, HEX_DIGEST_LEN)<0) - return 0; - return (!memcmp(digest, identity_digest, DIGEST_LEN)); + return !memcmp(digest, identity_digest, DIGEST_LEN); +} + +/* Return true iff <b>router</b> is listed as named in the current + * consensus. */ +static 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)); } /** Return true iff the digest of <b>router</b>'s identity key, @@ -2242,10 +2253,12 @@ hex_digest_matches(const char *hexdigest, const char *identity_digest, * optionally prefixed with a single dollar sign). Return false if * <b>hexdigest</b> is malformed, or it doesn't match. */ static INLINE int -router_hex_digest_matches(routerinfo_t *router, const char *hexdigest) +router_hex_digest_matches(const routerinfo_t *router, const char *hexdigest) { - return hex_digest_matches(hexdigest, router->cache_info.identity_digest, - router->nickname, router->is_named); + return hex_digest_nickname_matches(hexdigest, + router->cache_info.identity_digest, + router->nickname, + router_is_named(router)); } /** Return true if <b>router</b>'s nickname matches <b>nickname</b> @@ -2253,20 +2266,43 @@ router_hex_digest_matches(routerinfo_t *router, const char *hexdigest) * matches a hexadecimal value stored in <b>nickname</b>. Return * false otherwise. */ static int -router_nickname_matches(routerinfo_t *router, const char *nickname) +router_nickname_matches(const routerinfo_t *router, const char *nickname) { if (nickname[0]!='$' && !strcasecmp(router->nickname, nickname)) return 1; return router_hex_digest_matches(router, nickname); } +/** Return true if <b>node</b>'s nickname matches <b>nickname</b> + * (case-insensitive), or if <b>node's</b> identity key digest + * matches a hexadecimal value stored in <b>nickname</b>. Return + * false otherwise. */ +static int +node_nickname_matches(const node_t *node, const char *nickname) +{ + const char *n = node_get_nickname(node); + if (n && nickname[0]!='$' && !strcasecmp(n, nickname)) + return 1; + return hex_digest_nickname_matches(nickname, + node->identity, + n, + node_is_named(node)); +} + /** Return the router in our routerlist whose (case-insensitive) * nickname or (case-sensitive) hexadecimal key digest is * <b>nickname</b>. Return NULL if no such router is known. */ -routerinfo_t * +const routerinfo_t * router_get_by_nickname(const char *nickname, int warn_if_unnamed) { +#if 1 + const node_t *node = node_get_by_nickname(nickname, warn_if_unnamed); + if (node) + return node->ri; + else + return NULL; +#else int maybedigest; char digest[DIGEST_LEN]; routerinfo_t *best_match=NULL; @@ -2280,9 +2316,6 @@ router_get_by_nickname(const char *nickname, int warn_if_unnamed) return router_get_by_hexdigest(nickname); if (!strcasecmp(nickname, UNNAMED_ROUTER_NICKNAME)) return NULL; - if (server_mode(get_options()) && - !strcasecmp(nickname, get_options()->Nickname)) - return router_get_my_routerinfo(); maybedigest = (strlen(nickname) >= HEX_DIGEST_LEN) && (base16_decode(digest,DIGEST_LEN,nickname,HEX_DIGEST_LEN) == 0); @@ -2315,15 +2348,14 @@ router_get_by_nickname(const char *nickname, int warn_if_unnamed) if (warn_if_unnamed && n_matches > 1) { smartlist_t *fps = smartlist_create(); int any_unwarned = 0; - SMARTLIST_FOREACH(routerlist->routers, routerinfo_t *, router, - { + SMARTLIST_FOREACH_BEGIN(routerlist->routers, routerinfo_t *, router) { routerstatus_t *rs; char *desc; size_t dlen; char fp[HEX_DIGEST_LEN+1]; if (strcasecmp(router->nickname, nickname)) continue; - rs = router_get_consensus_status_by_id( + rs = router_get_mutable_consensus_status_by_id( router->cache_info.identity_digest); if (rs && !rs->name_lookup_warned) { rs->name_lookup_warned = 1; @@ -2336,7 +2368,7 @@ router_get_by_nickname(const char *nickname, int warn_if_unnamed) tor_snprintf(desc, dlen, "\"$%s\" for the one at %s:%d", fp, router->address, router->or_port); smartlist_add(fps, desc); - }); + } SMARTLIST_FOREACH_END(router); if (any_unwarned) { char *alternatives = smartlist_join_strings(fps, "; ",0,NULL); log_warn(LD_CONFIG, @@ -2349,7 +2381,7 @@ router_get_by_nickname(const char *nickname, int warn_if_unnamed) SMARTLIST_FOREACH(fps, char *, cp, tor_free(cp)); smartlist_free(fps); } else if (warn_if_unnamed) { - routerstatus_t *rs = router_get_consensus_status_by_id( + routerstatus_t *rs = router_get_mutable_consensus_status_by_id( best_match->cache_info.identity_digest); if (rs && !rs->name_lookup_warned) { char fp[HEX_DIGEST_LEN+1]; @@ -2365,8 +2397,8 @@ router_get_by_nickname(const char *nickname, int warn_if_unnamed) } return best_match; } - return NULL; +#endif } /** Try to find a routerinfo for <b>digest</b>. If we don't have one, @@ -2375,7 +2407,7 @@ router_get_by_nickname(const char *nickname, int warn_if_unnamed) int router_digest_version_as_new_as(const char *digest, const char *cutoff) { - routerinfo_t *router = router_get_by_digest(digest); + const routerinfo_t *router = router_get_by_id_digest(digest); if (!router) return 1; return tor_version_as_new_as(router->platform, cutoff); @@ -2429,44 +2461,20 @@ hexdigest_to_digest(const char *hexdigest, char *digest) /** Return the router in our routerlist whose hexadecimal key digest * is <b>hexdigest</b>. Return NULL if no such router is known. */ -routerinfo_t * +const routerinfo_t * router_get_by_hexdigest(const char *hexdigest) { - char digest[DIGEST_LEN]; - size_t len; - routerinfo_t *ri; - - tor_assert(hexdigest); - if (!routerlist) + if (is_legal_nickname(hexdigest)) return NULL; - if (hexdigest[0]=='$') - ++hexdigest; - len = strlen(hexdigest); - if (hexdigest_to_digest(hexdigest, digest) < 0) - return NULL; - - ri = router_get_by_digest(digest); - if (ri && len > HEX_DIGEST_LEN) { - if (hexdigest[HEX_DIGEST_LEN] == '=') { - if (strcasecmp(ri->nickname, hexdigest+HEX_DIGEST_LEN+1) || - !ri->is_named) - return NULL; - } else if (hexdigest[HEX_DIGEST_LEN] == '~') { - if (strcasecmp(ri->nickname, hexdigest+HEX_DIGEST_LEN+1)) - return NULL; - } else { - return NULL; - } - } - - return ri; + /* It's not a legal nickname, so it must be a hexdigest or nothing. */ + return router_get_by_nickname(hexdigest, 1); } -/** Return the router in our routerlist whose 20-byte key digest - * is <b>digest</b>. Return NULL if no such router is known. */ +/** As router_get_by_id_digest,but return a pointer that you're allowed to + * modify */ routerinfo_t * -router_get_by_digest(const char *digest) +router_get_mutable_by_digest(const char *digest) { tor_assert(digest); @@ -2477,6 +2485,14 @@ router_get_by_digest(const char *digest) return rimap_get(routerlist->identity_map, digest); } +/** Return the router in our routerlist whose 20-byte key digest + * is <b>digest</b>. Return NULL if no such router is known. */ +const routerinfo_t * +router_get_by_id_digest(const char *digest) +{ + return router_get_mutable_by_digest(digest); +} + /** Return the router in our routerlist whose 20-byte descriptor * is <b>digest</b>. Return NULL if no such router is known. */ signed_descriptor_t * @@ -2527,7 +2543,7 @@ extrainfo_get_by_descriptor_digest(const char *digest) * The caller must not free the string returned. */ static const char * -signed_descriptor_get_body_impl(signed_descriptor_t *desc, +signed_descriptor_get_body_impl(const signed_descriptor_t *desc, int with_annotations) { const char *r = NULL; @@ -2576,7 +2592,7 @@ signed_descriptor_get_body_impl(signed_descriptor_t *desc, * The caller must not free the string returned. */ const char * -signed_descriptor_get_body(signed_descriptor_t *desc) +signed_descriptor_get_body(const signed_descriptor_t *desc) { return signed_descriptor_get_body_impl(desc, 0); } @@ -2584,7 +2600,7 @@ signed_descriptor_get_body(signed_descriptor_t *desc) /** As signed_descriptor_get_body(), but points to the beginning of the * annotations section rather than the beginning of the descriptor. */ const char * -signed_descriptor_get_annotations(signed_descriptor_t *desc) +signed_descriptor_get_annotations(const signed_descriptor_t *desc) { return signed_descriptor_get_body_impl(desc, 1); } @@ -2637,7 +2653,6 @@ routerinfo_free(routerinfo_t *router) } addr_policy_list_free(router->exit_policy); - /* XXXX Remove if this turns out to affect performance. */ memset(router, 77, sizeof(routerinfo_t)); tor_free(router); @@ -2652,7 +2667,6 @@ extrainfo_free(extrainfo_t *extrainfo) tor_free(extrainfo->cache_info.signed_descriptor_body); tor_free(extrainfo->pending_sig); - /* XXXX remove this if it turns out to slow us down. */ memset(extrainfo, 88, sizeof(extrainfo_t)); /* debug bad memory usage */ tor_free(extrainfo); } @@ -2666,7 +2680,6 @@ signed_descriptor_free(signed_descriptor_t *sd) tor_free(sd->signed_descriptor_body); - /* XXXX remove this once more bugs go away. */ memset(sd, 99, sizeof(signed_descriptor_t)); /* Debug bad mem usage */ tor_free(sd); } @@ -2768,8 +2781,7 @@ routerlist_insert(routerlist_t *rl, routerinfo_t *ri) { routerinfo_t *ri_old; { - /* XXXX Remove if this slows us down. */ - routerinfo_t *ri_generated = router_get_my_routerinfo(); + const routerinfo_t *ri_generated = router_get_my_routerinfo(); tor_assert(ri_generated != ri); } tor_assert(ri->cache_info.routerlist_index == -1); @@ -2783,6 +2795,7 @@ routerlist_insert(routerlist_t *rl, routerinfo_t *ri) &ri->cache_info); smartlist_add(rl->routers, ri); ri->cache_info.routerlist_index = smartlist_len(rl->routers) - 1; + nodelist_add_routerinfo(ri); router_dir_info_changed(); #ifdef DEBUG_ROUTERLIST routerlist_assert_ok(rl); @@ -2803,7 +2816,6 @@ extrainfo_insert(routerlist_t *rl, extrainfo_t *ei) extrainfo_t *ei_tmp; { - /* XXXX remove this code if it slows us down. */ extrainfo_t *ei_generated = router_get_my_extrainfo(); tor_assert(ei_generated != ei); } @@ -2849,8 +2861,7 @@ static void routerlist_insert_old(routerlist_t *rl, routerinfo_t *ri) { { - /* XXXX remove this code if it slows us down. */ - routerinfo_t *ri_generated = router_get_my_routerinfo(); + const routerinfo_t *ri_generated = router_get_my_routerinfo(); tor_assert(ri_generated != ri); } tor_assert(ri->cache_info.routerlist_index == -1); @@ -2890,6 +2901,8 @@ routerlist_remove(routerlist_t *rl, routerinfo_t *ri, int make_old, time_t now) tor_assert(0 <= idx && idx < smartlist_len(rl->routers)); tor_assert(smartlist_get(rl->routers, idx) == ri); + nodelist_remove_routerinfo(ri); + /* make sure the rephist module knows that it's not running */ rep_hist_note_router_unreachable(ri->cache_info.identity_digest, now); @@ -3000,8 +3013,7 @@ routerlist_replace(routerlist_t *rl, routerinfo_t *ri_old, routerinfo_t *ri_tmp; extrainfo_t *ei_tmp; { - /* XXXX Remove this if it turns out to slow us down. */ - routerinfo_t *ri_generated = router_get_my_routerinfo(); + const routerinfo_t *ri_generated = router_get_my_routerinfo(); tor_assert(ri_generated != ri_new); } tor_assert(ri_old != ri_new); @@ -3011,6 +3023,9 @@ routerlist_replace(routerlist_t *rl, routerinfo_t *ri_old, tor_assert(0 <= idx && idx < smartlist_len(rl->routers)); tor_assert(smartlist_get(rl->routers, idx) == ri_old); + nodelist_remove_routerinfo(ri_old); + nodelist_add_routerinfo(ri_new); + router_dir_info_changed(); if (idx >= 0) { smartlist_set(rl->routers, idx, ri_new); @@ -3147,28 +3162,27 @@ routerlist_reset_warnings(void) void router_set_status(const char *digest, int up) { - routerinfo_t *router; - routerstatus_t *status; + node_t *node; tor_assert(digest); SMARTLIST_FOREACH(trusted_dir_servers, trusted_dir_server_t *, d, if (!memcmp(d->digest, digest, DIGEST_LEN)) d->is_running = up); - router = router_get_by_digest(digest); - if (router) { - log_debug(LD_DIR,"Marking router '%s/%s' as %s.", - router->nickname, router->address, up ? "up" : "down"); - if (!up && router_is_me(router) && !we_are_hibernating()) + 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"); +#endif + if (!up && node_is_me(node) && !we_are_hibernating()) log_warn(LD_NET, "We just marked ourself as down. Are your external " "addresses reachable?"); - router->is_running = up; - } - status = router_get_consensus_status_by_id(digest); - if (status && status->is_running != up) { - status->is_running = up; - control_event_networkstatus_changed_single(status); + node->is_running = up; } + router_dir_info_changed(); } @@ -3211,7 +3225,7 @@ router_add_to_routerlist(routerinfo_t *router, const char **msg, id_digest = router->cache_info.identity_digest; - old_router = router_get_by_digest(id_digest); + old_router = router_get_mutable_by_digest(id_digest); /* Make sure that we haven't already got this exact descriptor. */ if (sdmap_get(routerlist->desc_digest_map, @@ -3234,12 +3248,12 @@ router_add_to_routerlist(routerinfo_t *router, const char **msg, if (authdir) { if (authdir_wants_to_reject_router(router, msg, - !from_cache && !from_fetch)) { + !from_cache && !from_fetch, + &authdir_believes_valid)) { tor_assert(*msg); routerinfo_free(router); return ROUTER_AUTHDIR_REJECTS; } - authdir_believes_valid = router->is_valid; } else if (from_fetch) { /* Only check the descriptor digest against the network statuses when * we are receiving in response to a fetch. */ @@ -3266,14 +3280,15 @@ router_add_to_routerlist(routerinfo_t *router, const char **msg, SMARTLIST_FOREACH(networkstatus_v2_list, networkstatus_v2_t *, ns, { routerstatus_t *rs = - networkstatus_v2_find_entry(ns, id_digest); + networkstatus_v2_find_mutable_entry(ns, id_digest); if (rs && !memcmp(rs->descriptor_digest, router->cache_info.signed_descriptor_digest, DIGEST_LEN)) rs->need_to_mirror = 0; }); if (consensus) { - routerstatus_t *rs = networkstatus_vote_find_entry(consensus, id_digest); + routerstatus_t *rs = networkstatus_vote_find_mutable_entry( + consensus, id_digest); if (rs && !memcmp(rs->descriptor_digest, router->cache_info.signed_descriptor_digest, DIGEST_LEN)) { @@ -3873,7 +3888,7 @@ router_load_extrainfo_from_string(const char *s, const char *eos, static int signed_desc_digest_is_recognized(signed_descriptor_t *desc) { - routerstatus_t *rs; + const routerstatus_t *rs; networkstatus_t *consensus = networkstatus_get_latest_consensus(); int caches = directory_caches_dir_info(get_options()); const smartlist_t *networkstatus_v2_list = networkstatus_get_v2_list(); @@ -3909,31 +3924,31 @@ routerlist_retry_directory_downloads(time_t now) update_microdesc_downloads(now); } -/** Return 1 if all running sufficiently-stable routers will reject +/** Return 1 if all running sufficiently-stable routers we can use will reject * addr:port, return 0 if any might accept it. */ int -router_exit_policy_all_routers_reject(uint32_t addr, uint16_t port, - int need_uptime) -{ +router_exit_policy_all_nodes_reject(uint32_t addr, uint16_t port, + int need_uptime) +{ /* XXXX MOVE */ addr_policy_result_t r; - if (!routerlist) return 1; - SMARTLIST_FOREACH(routerlist->routers, routerinfo_t *, router, - { - if (router->is_running && - !router_is_unreliable(router, need_uptime, 0, 0)) { - r = compare_addr_to_addr_policy(addr, port, router->exit_policy); + SMARTLIST_FOREACH_BEGIN(nodelist_get_list(), const node_t *, node) { + if (node->is_running && + !node_is_unreliable(node, need_uptime, 0, 0)) { + + r = compare_addr_to_node_policy(addr, port, node); + if (r != ADDR_POLICY_REJECTED && r != ADDR_POLICY_PROBABLY_REJECTED) return 0; /* this one could be ok. good enough. */ } - }); + } SMARTLIST_FOREACH_END(node); return 1; /* all will reject. */ } /** Return true iff <b>router</b> does not permit exit streams. */ int -router_exit_policy_rejects_all(routerinfo_t *router) +router_exit_policy_rejects_all(const routerinfo_t *router) { return router->policy_is_reject_star; } @@ -4128,7 +4143,7 @@ list_pending_microdesc_downloads(digestmap_t *result) * otherwise, download from an appropriate random directory server. */ static void -initiate_descriptor_downloads(routerstatus_t *source, +initiate_descriptor_downloads(const routerstatus_t *source, int purpose, smartlist_t *digests, int lo, int hi, int pds_flags) @@ -4192,7 +4207,7 @@ initiate_descriptor_downloads(routerstatus_t *source, static INLINE int client_would_use_router(routerstatus_t *rs, time_t now, or_options_t *options) { - if (!rs->is_running && !options->FetchUselessDescriptors) { + if (!rs->is_flagged_running && !options->FetchUselessDescriptors) { /* If we had this router descriptor, we wouldn't even bother using it. * But, if we want to have a complete list, fetch it anyway. */ return 0; @@ -4240,7 +4255,7 @@ client_would_use_router(routerstatus_t *rs, time_t now, or_options_t *options) void launch_descriptor_downloads(int purpose, smartlist_t *downloadable, - routerstatus_t *source, time_t now) + const routerstatus_t *source, time_t now) { int should_delay = 0, n_downloadable; or_options_t *options = get_options(); @@ -4517,15 +4532,14 @@ update_consensus_router_descriptor_downloads(time_t now, int is_vote, map = digestmap_new(); list_pending_descriptor_downloads(map, 0); - SMARTLIST_FOREACH(consensus->routerstatus_list, void *, rsp, - { + SMARTLIST_FOREACH_BEGIN(consensus->routerstatus_list, void *, rsp) { routerstatus_t *rs = is_vote ? &(((vote_routerstatus_t *)rsp)->status) : rsp; signed_descriptor_t *sd; if ((sd = router_get_by_descriptor_digest(rs->descriptor_digest))) { - routerinfo_t *ri; + const routerinfo_t *ri; ++n_have; - if (!(ri = router_get_by_digest(rs->identity_digest)) || + if (!(ri = router_get_by_id_digest(rs->identity_digest)) || memcmp(ri->cache_info.signed_descriptor_digest, sd->signed_descriptor_digest, DIGEST_LEN)) { /* We have a descriptor with this digest, but either there is no @@ -4558,7 +4572,8 @@ update_consensus_router_descriptor_downloads(time_t now, int is_vote, if (is_vote && source) { char time_bufnew[ISO_TIME_LEN+1]; char time_bufold[ISO_TIME_LEN+1]; - routerinfo_t *oldrouter = router_get_by_digest(rs->identity_digest); + const routerinfo_t *oldrouter; + oldrouter = router_get_by_id_digest(rs->identity_digest); format_iso_time(time_bufnew, rs->published_on); if (oldrouter) format_iso_time(time_bufold, oldrouter->cache_info.published_on); @@ -4568,7 +4583,7 @@ update_consensus_router_descriptor_downloads(time_t now, int is_vote, source->nickname, oldrouter ? "known" : "unknown"); } smartlist_add(downloadable, rs->descriptor_digest); - }); + } SMARTLIST_FOREACH_END(rsp); if (!authdir_mode_handles_descs(options, ROUTER_PURPOSE_GENERAL) && smartlist_len(no_longer_old)) { @@ -4679,7 +4694,7 @@ update_extrainfo_downloads(time_t now) sd = &((routerinfo_t*)smartlist_get(lst, i))->cache_info; if (sd->is_extrainfo) continue; /* This should never happen. */ - if (old_routers && !router_get_by_digest(sd->identity_digest)) + if (old_routers && !router_get_by_id_digest(sd->identity_digest)) continue; /* Couldn't check the signature if we got it. */ if (sd->extrainfo_is_bogus) continue; @@ -4780,7 +4795,7 @@ count_usable_descriptors(int *num_present, int *num_usable, SMARTLIST_FOREACH(consensus->routerstatus_list, routerstatus_t *, rs, { - if (in_set && ! routerset_contains_routerstatus(in_set, rs)) + if (in_set && ! routerset_contains_routerstatus(in_set, rs, -1)) continue; if (client_would_use_router(rs, now, options)) { ++*num_usable; /* the consensus says we want it. */ @@ -4943,7 +4958,7 @@ router_reset_descriptor_download_failures(void) * would not cause a recent (post 0.1.1.6) dirserver to republish. */ int -router_differences_are_cosmetic(routerinfo_t *r1, routerinfo_t *r2) +router_differences_are_cosmetic(const routerinfo_t *r1, const routerinfo_t *r2) { time_t r1pub, r2pub; long time_difference; @@ -4951,7 +4966,7 @@ router_differences_are_cosmetic(routerinfo_t *r1, routerinfo_t *r2) /* r1 should be the one that was published first. */ if (r1->cache_info.published_on > r2->cache_info.published_on) { - routerinfo_t *ri_tmp = r2; + const routerinfo_t *ri_tmp = r2; r2 = r1; r1 = ri_tmp; } @@ -5024,7 +5039,8 @@ router_differences_are_cosmetic(routerinfo_t *r1, routerinfo_t *r2) * incompatibility (if any). **/ int -routerinfo_incompatible_with_extrainfo(routerinfo_t *ri, extrainfo_t *ei, +routerinfo_incompatible_with_extrainfo(const routerinfo_t *ri, + extrainfo_t *ei, signed_descriptor_t *sd, const char **msg) { @@ -5032,7 +5048,7 @@ routerinfo_incompatible_with_extrainfo(routerinfo_t *ri, extrainfo_t *ei, tor_assert(ri); tor_assert(ei); if (!sd) - sd = &ri->cache_info; + sd = (signed_descriptor_t*)&ri->cache_info; if (ei->bad_sig) { if (msg) *msg = "Extrainfo signature was bad, or signed with wrong key."; @@ -5095,7 +5111,7 @@ routerinfo_incompatible_with_extrainfo(routerinfo_t *ri, extrainfo_t *ei, /** Assert that the internal representation of <b>rl</b> is * self-consistent. */ void -routerlist_assert_ok(routerlist_t *rl) +routerlist_assert_ok(const routerlist_t *rl) { routerinfo_t *r2; signed_descriptor_t *sd2; @@ -5185,7 +5201,7 @@ routerlist_assert_ok(routerlist_t *rl) * If <b>router</b> is NULL, it just frees its internal memory and returns. */ const char * -esc_router_info(routerinfo_t *router) +esc_router_info(const routerinfo_t *router) { static char *info=NULL; char *esc_contact, *esc_platform; @@ -5287,38 +5303,6 @@ routerset_get_countryname(const char *c) return country; } -#if 0 -/** Add the GeoIP database's integer index (+1) of a valid two-character - * country code to the routerset's <b>countries</b> bitarray. Return the - * integer index if the country code is valid, -1 otherwise.*/ -static int -routerset_add_country(const char *c) -{ - char country[3]; - country_t cc; - - /* XXXX: Country codes must be of the form \{[a-z\?]{2}\} but this accepts - \{[.]{2}\}. Do we need to be strict? -RH */ - /* Nope; if the country code is bad, we'll get 0 when we look it up. */ - - if (!geoip_is_loaded()) { - log(LOG_WARN, LD_CONFIG, "GeoIP database not loaded: Cannot add country" - "entry %s, ignoring.", c); - return -1; - } - - memcpy(country, c+1, 2); - country[2] = '\0'; - tor_strlower(country); - - if ((cc=geoip_get_country(country))==-1) { - log(LOG_WARN, LD_CONFIG, "Country code '%s' is not valid, ignoring.", - country); - } - return cc; -} -#endif - /** Update the routerset's <b>countries</b> bitarray_t. Called whenever * the GeoIP database is reloaded. */ @@ -5420,7 +5404,7 @@ refresh_all_country_info(void) if (options->_ExcludeExitNodesUnion) routerset_refresh_countries(options->_ExcludeExitNodesUnion); - routerlist_refresh_countries(); + nodelist_refresh_countries(); } /** Add all members of the set <b>source</b> to <b>target</b>. */ @@ -5470,11 +5454,10 @@ routerset_is_empty(const routerset_t *set) static int routerset_contains(const routerset_t *set, const tor_addr_t *addr, uint16_t orport, - const char *nickname, const char *id_digest, int is_named, + const char *nickname, const char *id_digest, country_t country) { if (!set || !set->list) return 0; - (void) is_named; /* not supported */ if (nickname && strmap_get_lc(set->names, nickname)) return 4; if (id_digest && digestmap_get(set->digests, id_digest)) @@ -5502,13 +5485,14 @@ routerset_contains_extendinfo(const routerset_t *set, const extend_info_t *ei) ei->port, ei->nickname, ei->identity_digest, - -1, /*is_named*/ -1 /*country*/); } -/** Return true iff <b>ri</b> is in <b>set</b>. */ +/** Return true iff <b>ri</b> is in <b>set</b>. If country is <b>-1</b>, we + * look up the country. */ int -routerset_contains_router(const routerset_t *set, routerinfo_t *ri) +routerset_contains_router(const routerset_t *set, const routerinfo_t *ri, + country_t country) { tor_addr_t addr; tor_addr_from_ipv4h(&addr, ri->addr); @@ -5517,13 +5501,15 @@ routerset_contains_router(const routerset_t *set, routerinfo_t *ri) ri->or_port, ri->nickname, ri->cache_info.identity_digest, - ri->is_named, - ri->country); + country); } -/** Return true iff <b>rs</b> is in <b>set</b>. */ +/** Return true iff <b>rs</b> is in <b>set</b>. If country is <b>-1</b>, we + * look up the country. */ int -routerset_contains_routerstatus(const routerset_t *set, routerstatus_t *rs) +routerset_contains_routerstatus(const routerset_t *set, + const routerstatus_t *rs, + country_t country) { tor_addr_t addr; tor_addr_from_ipv4h(&addr, rs->addr); @@ -5532,46 +5518,55 @@ routerset_contains_routerstatus(const routerset_t *set, routerstatus_t *rs) rs->or_port, rs->nickname, rs->identity_digest, - rs->is_named, - -1); + country); } -/** Add every known routerinfo_t that is a member of <b>routerset</b> to +/** Return true iff <b>node</b> is in <b>set</b>. */ +int +routerset_contains_node(const routerset_t *set, const node_t *node) +{ + if (node->rs) + return routerset_contains_routerstatus(set, node->rs, node->country); + else if (node->ri) + return routerset_contains_router(set, node->ri, node->country); + else + return 0; +} + +/** 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. */ void -routerset_get_all_routers(smartlist_t *out, const routerset_t *routerset, - int running_only) -{ +routerset_get_all_nodes(smartlist_t *out, const routerset_t *routerset, + int running_only) +{ /* XXXX MOVE */ tor_assert(out); if (!routerset || !routerset->list) return; - if (!warned_nicknames) - warned_nicknames = smartlist_create(); - if (routerset_is_list(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)). */ SMARTLIST_FOREACH(routerset->list, const char *, name, { - routerinfo_t *router = router_get_by_nickname(name, 1); - if (router) { - if (!running_only || router->is_running) - smartlist_add(out, router); + const node_t *node = node_get_by_nickname(name, 1); + if (node) { + if (!running_only || node->is_running) + smartlist_add(out, (void*)node); } }); } else { /* We need to iterate over the routerlist to get all the ones of the * right kind. */ - routerlist_t *rl = router_get_routerlist(); - SMARTLIST_FOREACH(rl->routers, routerinfo_t *, router, { - if (running_only && !router->is_running) + smartlist_t *nodes = nodelist_get_list(); + SMARTLIST_FOREACH(nodes, const node_t *, node, { + if (running_only && !node->is_running) continue; - if (routerset_contains_router(routerset, router)) - smartlist_add(out, router); + if (routerset_contains_node(routerset, node)) + smartlist_add(out, (void*)node); }); } } -/** Add to <b>target</b> every routerinfo_t from <b>source</b> except: +/** 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 * <b>include</b>; and @@ -5580,39 +5575,39 @@ routerset_get_all_routers(smartlist_t *out, const routerset_t *routerset, * 3) If <b>running_only</b>, don't add non-running routers. */ void -routersets_get_disjunction(smartlist_t *target, +routersets_get_node_disjunction(smartlist_t *target, const smartlist_t *source, const routerset_t *include, const routerset_t *exclude, int running_only) { - SMARTLIST_FOREACH(source, routerinfo_t *, router, { + SMARTLIST_FOREACH(source, const node_t *, node, { int include_result; - if (running_only && !router->is_running) + if (running_only && !node->is_running) continue; if (!routerset_is_empty(include)) - include_result = routerset_contains_router(include, router); + include_result = routerset_contains_node(include, node); else include_result = 1; if (include_result) { - int exclude_result = routerset_contains_router(exclude, router); + int exclude_result = routerset_contains_node(exclude, node); if (include_result >= exclude_result) - smartlist_add(target, router); + smartlist_add(target, (void*)node); } }); } -/** Remove every routerinfo_t from <b>lst</b> that is in <b>routerset</b>. */ +/** Remove every node_t from <b>lst</b> that is in <b>routerset</b>. */ void -routerset_subtract_routers(smartlist_t *lst, const routerset_t *routerset) -{ +routerset_subtract_nodes(smartlist_t *lst, const routerset_t *routerset) +{ /*XXXX MOVE ? */ tor_assert(lst); if (!routerset) return; - SMARTLIST_FOREACH(lst, routerinfo_t *, r, { - if (routerset_contains_router(routerset, r)) { + SMARTLIST_FOREACH(lst, const node_t *, node, { + if (routerset_contains_node(routerset, node)) { //log_debug(LD_DIR, "Subtracting %s",r->nickname); - SMARTLIST_DEL_CURRENT(lst, r); + SMARTLIST_DEL_CURRENT(lst, node); } }); } @@ -5673,18 +5668,23 @@ routerset_free(routerset_t *routerset) /** Refresh the country code of <b>ri</b>. This function MUST be called on * each router when the GeoIP database is reloaded, and on all new routers. */ void -routerinfo_set_country(routerinfo_t *ri) +node_set_country(node_t *node) { - ri->country = geoip_get_country_by_ip(ri->addr); + if (node->rs) + node->country = geoip_get_country_by_ip(node->rs->addr); + else if (node->ri) + node->country = geoip_get_country_by_ip(node->ri->addr); + else + node->country = -1; } /** Set the country code of all routers in the routerlist. */ void -routerlist_refresh_countries(void) +nodelist_refresh_countries(void) /* MOVE */ { - routerlist_t *rl = router_get_routerlist(); - SMARTLIST_FOREACH(rl->routers, routerinfo_t *, ri, - routerinfo_set_country(ri)); + smartlist_t *nodes = nodelist_get_list(); + SMARTLIST_FOREACH(nodes, node_t *, node, + node_set_country(node)); } /** Determine the routers that are responsible for <b>id</b> (binary) and @@ -5733,9 +5733,9 @@ hid_serv_get_responsible_directories(smartlist_t *responsible_dirs, int hid_serv_acting_as_directory(void) { - routerinfo_t *me = router_get_my_routerinfo(); + const routerinfo_t *me = router_get_my_routerinfo(); networkstatus_t *c; - routerstatus_t *rs; + const routerstatus_t *rs; if (!me) return 0; if (!get_options()->HidServDirectoryV2) { @@ -5767,7 +5767,7 @@ hid_serv_acting_as_directory(void) int hid_serv_responsible_for_desc_id(const char *query) { - routerinfo_t *me; + const routerinfo_t *me; routerstatus_t *last_rs; const char *my_id, *last_id; int result; diff --git a/src/or/routerlist.h b/src/or/routerlist.h index 804be2aba..b69ef70f6 100644 --- a/src/or/routerlist.h +++ b/src/or/routerlist.h @@ -27,37 +27,34 @@ int router_reload_router_list(void); int authority_cert_dl_looks_uncertain(const char *id_digest); smartlist_t *router_get_trusted_dir_servers(void); -routerstatus_t *router_pick_directory_server(authority_type_t type, int flags); +const routerstatus_t *router_pick_directory_server(authority_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); -routerstatus_t *router_pick_trusteddirserver(authority_type_t type, int flags); +const routerstatus_t *router_pick_trusteddirserver(authority_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, routerinfo_t *router); -int routers_in_same_family(routerinfo_t *r1, routerinfo_t *r2); +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); -void add_nickname_list_to_smartlist(smartlist_t *sl, const char *list, - int must_be_running); -int router_nickname_is_in_list(routerinfo_t *router, const char *list); -routerinfo_t *routerlist_find_my_routerinfo(void); -routerinfo_t *router_find_exact_exit_enclave(const char *address, +int router_nickname_is_in_list(const routerinfo_t *router, const char *list); +const routerinfo_t *routerlist_find_my_routerinfo(void); +const node_t *router_find_exact_exit_enclave(const char *address, uint16_t port); -int router_is_unreliable(routerinfo_t *router, int need_uptime, +int node_is_unreliable(const node_t *router, int need_uptime, int need_capacity, int need_guard); -uint32_t router_get_advertised_bandwidth(routerinfo_t *router); -uint32_t router_get_advertised_bandwidth_capped(routerinfo_t *router); +uint32_t router_get_advertised_bandwidth(const routerinfo_t *router); +uint32_t router_get_advertised_bandwidth_capped(const routerinfo_t *router); -routerinfo_t *routerlist_sl_choose_by_bandwidth(smartlist_t *sl, - bandwidth_weight_rule_t rule); -routerstatus_t *routerstatus_sl_choose_by_bandwidth(smartlist_t *sl, - bandwidth_weight_rule_t rule); +const node_t *node_sl_choose_by_bandwidth(smartlist_t *sl, + bandwidth_weight_rule_t rule); -routerinfo_t *router_choose_random_node(smartlist_t *excludedsmartlist, +const node_t *router_choose_random_node(smartlist_t *excludedsmartlist, struct routerset_t *excludedset, router_crn_flags_t flags); -routerinfo_t *router_get_by_nickname(const char *nickname, +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_digest_is_trusted_dir_type(const char *digest, @@ -67,13 +64,14 @@ int router_digest_is_trusted_dir_type(const char *digest, int router_addr_is_trusted_dir(uint32_t addr); int hexdigest_to_digest(const char *hexdigest, char *digest); -routerinfo_t *router_get_by_hexdigest(const char *hexdigest); -routerinfo_t *router_get_by_digest(const char *digest); +const routerinfo_t *router_get_by_hexdigest(const char *hexdigest); +const routerinfo_t *router_get_by_id_digest(const char *digest); +routerinfo_t *router_get_mutable_by_digest(const char *digest); signed_descriptor_t *router_get_by_descriptor_digest(const char *digest); signed_descriptor_t *router_get_by_extrainfo_digest(const char *digest); signed_descriptor_t *extrainfo_get_by_descriptor_digest(const char *digest); -const char *signed_descriptor_get_body(signed_descriptor_t *desc); -const char *signed_descriptor_get_annotations(signed_descriptor_t *desc); +const char *signed_descriptor_get_body(const signed_descriptor_t *desc); +const char *signed_descriptor_get_annotations(const signed_descriptor_t *desc); routerlist_t *router_get_routerlist(void); void routerinfo_free(routerinfo_t *router); void extrainfo_free(extrainfo_t *extrainfo); @@ -132,9 +130,10 @@ void router_load_extrainfo_from_string(const char *s, const char *eos, int descriptor_digests); void routerlist_retry_directory_downloads(time_t now); -int router_exit_policy_all_routers_reject(uint32_t addr, uint16_t port, - int need_uptime); -int router_exit_policy_rejects_all(routerinfo_t *router); +int router_exit_policy_all_nodes_reject(uint32_t addr, uint16_t port, + int need_uptime); + +int router_exit_policy_rejects_all(const routerinfo_t *router); trusted_dir_server_t *add_trusted_dir_server(const char *nickname, const char *address, uint16_t dir_port, uint16_t or_port, @@ -152,39 +151,43 @@ void router_dir_info_changed(void); const char *get_dir_info_status_string(void); int count_loading_descriptors_progress(void); void router_reset_descriptor_download_failures(void); -int router_differences_are_cosmetic(routerinfo_t *r1, routerinfo_t *r2); -int routerinfo_incompatible_with_extrainfo(routerinfo_t *ri, extrainfo_t *ei, +int router_differences_are_cosmetic(const routerinfo_t *r1, + const routerinfo_t *r2); +int routerinfo_incompatible_with_extrainfo(const routerinfo_t *ri, + extrainfo_t *ei, signed_descriptor_t *sd, const char **msg); -void routerlist_assert_ok(routerlist_t *rl); -const char *esc_router_info(routerinfo_t *router); +void routerlist_assert_ok(const routerlist_t *rl); +const char *esc_router_info(const routerinfo_t *router); void routers_sort_by_identity(smartlist_t *routers); routerset_t *routerset_new(void); +void routerset_refresh_countries(routerset_t *rs); int routerset_parse(routerset_t *target, const char *s, const char *description); 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_contains_router(const routerset_t *set, routerinfo_t *ri); +int routerset_contains_router(const routerset_t *set, const routerinfo_t *ri, + country_t country); int routerset_contains_routerstatus(const routerset_t *set, - routerstatus_t *rs); + const routerstatus_t *rs, + country_t country); int routerset_contains_extendinfo(const routerset_t *set, const extend_info_t *ei); -void routerset_get_all_routers(smartlist_t *out, const routerset_t *routerset, - int running_only); -void routersets_get_disjunction(smartlist_t *target, const smartlist_t *source, +int routerset_contains_node(const routerset_t *set, const node_t *node); +void routerset_get_all_nodes(smartlist_t *out, const routerset_t *routerset, + int running_only); +void routersets_get_node_disjunction(smartlist_t *target, + const smartlist_t *source, const routerset_t *include, const routerset_t *exclude, int running_only); -void routerset_subtract_routers(smartlist_t *out, - const routerset_t *routerset); +void routerset_subtract_nodes(smartlist_t *out, + const routerset_t *routerset); char *routerset_to_string(const routerset_t *routerset); -void routerset_refresh_countries(routerset_t *target); int routerset_equal(const routerset_t *old, const routerset_t *new); void routerset_free(routerset_t *routerset); -void routerinfo_set_country(routerinfo_t *ri); -void routerlist_refresh_countries(void); void refresh_all_country_info(void); int hid_serv_get_responsible_directories(smartlist_t *responsible_dirs, @@ -195,8 +198,13 @@ int hid_serv_responsible_for_desc_id(const char *id); void list_pending_microdesc_downloads(digestmap_t *result); void launch_descriptor_downloads(int purpose, smartlist_t *downloadable, - routerstatus_t *source, + const routerstatus_t *source, time_t now); +int hex_digest_nickname_decode(const char *hexdigest, + char *digest_out, + char *nickname_qualifier_out, + char *nickname_out); + #endif diff --git a/src/or/routerparse.c b/src/or/routerparse.c index f7e645e8f..2b82e9828 100644 --- a/src/or/routerparse.c +++ b/src/or/routerparse.c @@ -1344,7 +1344,6 @@ router_parse_entry_from_string(const char *s, const char *end, tor_assert(tok->n_args >= 5); router = tor_malloc_zero(sizeof(routerinfo_t)); - router->country = -1; router->cache_info.routerlist_index = -1; router->cache_info.annotations_len = s-start_of_annotations + prepend_len; router->cache_info.signed_descriptor_len = end-s; @@ -1543,8 +1542,6 @@ router_parse_entry_from_string(const char *s, const char *end, "router descriptor") < 0) goto err; - routerinfo_set_country(router); - if (!router->or_port) { log_warn(LD_DIR,"or_port unreadable or 0. Failing."); goto err; @@ -2030,7 +2027,7 @@ routerstatus_parse_entry_from_string(memarea_t *area, else if (!strcmp(tok->args[i], "Fast")) rs->is_fast = 1; else if (!strcmp(tok->args[i], "Running")) - rs->is_running = 1; + rs->is_flagged_running = 1; else if (!strcmp(tok->args[i], "Named")) rs->is_named = 1; else if (!strcmp(tok->args[i], "Valid")) @@ -4305,7 +4302,7 @@ microdescs_parse_from_string(const char *s, const char *eos, } if ((tok = find_opt_by_keyword(tokens, K_P))) { - md->exitsummary = tor_strdup(tok->args[0]); + md->exit_policy = parse_short_policy(tok->args[0]); } crypto_digest256(md->digest, md->body, md->bodylen, DIGEST_SHA256); diff --git a/src/test/Makefile.am b/src/test/Makefile.am index cfe330c74..16ea66583 100644 --- a/src/test/Makefile.am +++ b/src/test/Makefile.am @@ -1,6 +1,6 @@ TESTS = test -noinst_PROGRAMS = test +noinst_PROGRAMS = test test-child AM_CPPFLAGS = -DSHARE_DATADIR="\"$(datadir)\"" \ -DLOCALSTATEDIR="\"$(localstatedir)\"" \ @@ -19,6 +19,7 @@ test_SOURCES = \ test_dir.c \ test_containers.c \ test_util.c \ + test_microdesc.c \ tinytest.c if USE_BUFFEREVENTS diff --git a/src/test/test-child.c b/src/test/test-child.c new file mode 100644 index 000000000..ca52750c2 --- /dev/null +++ b/src/test/test-child.c @@ -0,0 +1,18 @@ +#include <stdio.h> + +/** Trivial test program which prints out its command line arguments so we can + * check if tor_spawn_background() works */ +int +main(int argc, char **argv) +{ + int i; + + fprintf(stdout, "OUT\n"); + fprintf(stderr, "ERR\n"); + for (i = 1; i < argc; i++) + fprintf(stdout, "%s\n", argv[i]); + fprintf(stdout, "DONE\n"); + + return 0; +} + diff --git a/src/test/test.c b/src/test/test.c index 8d8c46fca..3f014186a 100644 --- a/src/test/test.c +++ b/src/test/test.c @@ -113,30 +113,46 @@ get_fname(const char *name) return buf; } -/** Remove all files stored under the temporary directory, and the directory - * itself. Called by atexit(). */ +/* Remove a directory and all of its subdirectories */ static void -remove_directory(void) +rm_rf(const char *dir) { + struct stat st; smartlist_t *elements; - if (getpid() != temp_dir_setup_in_pid) { - /* Only clean out the tempdir when the main process is exiting. */ - return; - } - elements = tor_listdir(temp_dir); + + elements = tor_listdir(dir); if (elements) { SMARTLIST_FOREACH(elements, const char *, cp, { - size_t len = strlen(cp)+strlen(temp_dir)+16; - char *tmp = tor_malloc(len); - tor_snprintf(tmp, len, "%s"PATH_SEPARATOR"%s", temp_dir, cp); - unlink(tmp); + char *tmp = NULL; + tor_asprintf(&tmp, "%s"PATH_SEPARATOR"%s", dir, cp); + if (0 == stat(tmp,&st) && (st.st_mode & S_IFDIR)) { + rm_rf(tmp); + } else { + if (unlink(tmp)) { + fprintf(stderr, "Error removing %s: %s\n", tmp, strerror(errno)); + } + } tor_free(tmp); }); SMARTLIST_FOREACH(elements, char *, cp, tor_free(cp)); smartlist_free(elements); } - rmdir(temp_dir); + if (rmdir(dir)) + fprintf(stderr, "Error removing directory %s: %s\n", dir, strerror(errno)); +} + +/** Remove all files stored under the temporary directory, and the directory + * itself. Called by atexit(). */ +static void +remove_directory(void) +{ + if (getpid() != temp_dir_setup_in_pid) { + /* Only clean out the tempdir when the main process is exiting. */ + return; + } + + rm_rf(temp_dir); } /** Define this if unit tests spend too much time generating public keys*/ @@ -560,6 +576,7 @@ test_policy_summary_helper(const char *policy_str, smartlist_t *policy = smartlist_create(); char *summary = NULL; int r; + short_policy_t *short_policy = NULL; line.key = (char*)"foo"; line.value = (char *)policy_str; @@ -572,10 +589,14 @@ test_policy_summary_helper(const char *policy_str, test_assert(summary != NULL); test_streq(summary, expected_summary); + short_policy = parse_short_policy(summary); + tt_assert(short_policy); + done: tor_free(summary); if (policy) addr_policy_list_free(policy); + short_policy_free(short_policy); } /** Run unit tests for generating summary lines of exit policies */ @@ -1180,6 +1201,7 @@ extern struct testcase_t crypto_tests[]; extern struct testcase_t container_tests[]; extern struct testcase_t util_tests[]; extern struct testcase_t dir_tests[]; +extern struct testcase_t microdesc_tests[]; static struct testgroup_t testgroups[] = { { "", test_array }, @@ -1188,6 +1210,7 @@ static struct testgroup_t testgroups[] = { { "container/", container_tests }, { "util/", util_tests }, { "dir/", dir_tests }, + { "dir/md/", microdesc_tests }, END_OF_GROUPS }; diff --git a/src/test/test_dir.c b/src/test/test_dir.c index 80d2379de..3c660a757 100644 --- a/src/test/test_dir.c +++ b/src/test/test_dir.c @@ -801,7 +801,7 @@ test_dir_v3_networkstatus(void) rs->or_port = 443; rs->dir_port = 8000; /* all flags but running cleared */ - rs->is_running = 1; + rs->is_flagged_running = 1; smartlist_add(vote->routerstatus_list, vrs); test_assert(router_add_to_routerlist(generate_ri_from_rs(vrs), &msg,0,0)>=0); @@ -816,7 +816,7 @@ test_dir_v3_networkstatus(void) rs->addr = 0x99009901; rs->or_port = 443; rs->dir_port = 0; - rs->is_exit = rs->is_stable = rs->is_fast = rs->is_running = + rs->is_exit = rs->is_stable = rs->is_fast = rs->is_flagged_running = rs->is_valid = rs->is_v2_dir = rs->is_possible_guard = 1; smartlist_add(vote->routerstatus_list, vrs); test_assert(router_add_to_routerlist(generate_ri_from_rs(vrs), &msg,0,0)>=0); @@ -833,7 +833,8 @@ test_dir_v3_networkstatus(void) rs->or_port = 400; rs->dir_port = 9999; rs->is_authority = rs->is_exit = rs->is_stable = rs->is_fast = - rs->is_running = rs->is_valid = rs->is_v2_dir = rs->is_possible_guard = 1; + rs->is_flagged_running = rs->is_valid = rs->is_v2_dir = + rs->is_possible_guard = 1; smartlist_add(vote->routerstatus_list, vrs); test_assert(router_add_to_routerlist(generate_ri_from_rs(vrs), &msg,0,0)>=0); @@ -1073,7 +1074,8 @@ test_dir_v3_networkstatus(void) test_assert(!rs->is_fast); test_assert(!rs->is_possible_guard); test_assert(!rs->is_stable); - test_assert(rs->is_running); /* If it wasn't running it wouldn't be here */ + /* (If it wasn't running it wouldn't be here) */ + test_assert(rs->is_flagged_running); test_assert(!rs->is_v2_dir); test_assert(!rs->is_valid); test_assert(!rs->is_named); @@ -1095,7 +1097,7 @@ test_dir_v3_networkstatus(void) test_assert(rs->is_fast); test_assert(rs->is_possible_guard); test_assert(rs->is_stable); - test_assert(rs->is_running); + test_assert(rs->is_flagged_running); test_assert(rs->is_v2_dir); test_assert(rs->is_valid); test_assert(!rs->is_named); diff --git a/src/test/test_microdesc.c b/src/test/test_microdesc.c new file mode 100644 index 000000000..57e894e2e --- /dev/null +++ b/src/test/test_microdesc.c @@ -0,0 +1,233 @@ +/* Copyright (c) 2010, The Tor Project, Inc. */ +/* See LICENSE for licensing information */ + +#include "orconfig.h" +#include "or.h" + +#include "config.h" +#include "microdesc.h" + +#include "test.h" + +#ifdef MS_WINDOWS +/* For mkdir() */ +#include <direct.h> +#else +#include <dirent.h> +#endif + +static const char test_md1[] = + "onion-key\n" + "-----BEGIN RSA PUBLIC KEY-----\n" + "MIGJAoGBAMjlHH/daN43cSVRaHBwgUfnszzAhg98EvivJ9Qxfv51mvQUxPjQ07es\n" + "gV/3n8fyh3Kqr/ehi9jxkdgSRfSnmF7giaHL1SLZ29kA7KtST+pBvmTpDtHa3ykX\n" + "Xorc7hJvIyTZoc1HU+5XSynj3gsBE5IGK1ZRzrNS688LnuZMVp1tAgMBAAE=\n" + "-----END RSA PUBLIC KEY-----\n"; + +static const char test_md2[] = + "onion-key\n" + "-----BEGIN RSA PUBLIC KEY-----\n" + "MIGJAoGBAMIixIowh2DyPmDNMDwBX2DHcYcqdcH1zdIQJZkyV6c6rQHnvbcaDoSg\n" + "jgFSLJKpnGmh71FVRqep+yVB0zI1JY43kuEnXry2HbZCD9UDo3d3n7t015X5S7ON\n" + "bSSYtQGPwOr6Epf96IF6DoQxy4iDnPUAlejuhAG51s1y6/rZQ3zxAgMBAAE=\n" + "-----END RSA PUBLIC KEY-----\n"; + +static const char test_md3[] = + "@last-listed 2009-06-22\n" + "onion-key\n" + "-----BEGIN RSA PUBLIC KEY-----\n" + "MIGJAoGBAMH3340d4ENNGrqx7UxT+lB7x6DNUKOdPEOn4teceE11xlMyZ9TPv41c\n" + "qj2fRZzfxlc88G/tmiaHshmdtEpklZ740OFqaaJVj4LjPMKFNE+J7Xc1142BE9Ci\n" + "KgsbjGYe2RY261aADRWLetJ8T9QDMm+JngL4288hc8pq1uB/3TAbAgMBAAE=\n" + "-----END RSA PUBLIC KEY-----\n" + "p accept 1-700,800-1000\n" + "family nodeX nodeY nodeZ\n"; + +static void +test_md_cache(void *data) +{ + or_options_t *options = NULL; + microdesc_cache_t *mc = NULL ; + smartlist_t *added = NULL, *wanted = NULL; + microdesc_t *md1, *md2, *md3; + char d1[DIGEST256_LEN], d2[DIGEST256_LEN], d3[DIGEST256_LEN]; + const char *test_md3_noannotation = strchr(test_md3, '\n')+1; + time_t time1, time2, time3; + char *fn = NULL, *s = NULL; + (void)data; + + options = get_options(); + tt_assert(options); + + time1 = time(NULL); + time2 = time(NULL) - 2*24*60*60; + time3 = time(NULL) - 15*24*60*60; + + /* Possibly, turn this into a test setup/cleanup pair */ + tor_free(options->DataDirectory); + options->DataDirectory = tor_strdup(get_fname("md_datadir_test")); +#ifdef MS_WINDOWS + tt_int_op(0, ==, mkdir(options->DataDirectory)); +#else + tt_int_op(0, ==, mkdir(options->DataDirectory, 0700)); +#endif + + tt_assert(!strcmpstart(test_md3_noannotation, "onion-key")); + + crypto_digest256(d1, test_md1, strlen(test_md1), DIGEST_SHA256); + crypto_digest256(d2, test_md2, strlen(test_md1), DIGEST_SHA256); + crypto_digest256(d3, test_md3_noannotation, strlen(test_md3_noannotation), + DIGEST_SHA256); + + mc = get_microdesc_cache(); + + added = microdescs_add_to_cache(mc, test_md1, NULL, SAVED_NOWHERE, 0, + time1, NULL); + tt_int_op(1, ==, smartlist_len(added)); + md1 = smartlist_get(added, 0); + smartlist_free(added); + added = NULL; + + wanted = smartlist_create(); + added = microdescs_add_to_cache(mc, test_md2, NULL, SAVED_NOWHERE, 0, + time2, wanted); + /* Should fail, since we didn't list test_md2's digest in wanted */ + tt_int_op(0, ==, smartlist_len(added)); + smartlist_free(added); + added = NULL; + + smartlist_add(wanted, tor_memdup(d2, DIGEST256_LEN)); + smartlist_add(wanted, tor_memdup(d3, DIGEST256_LEN)); + added = microdescs_add_to_cache(mc, test_md2, NULL, SAVED_NOWHERE, 0, + time2, wanted); + /* Now it can work. md2 should have been added */ + tt_int_op(1, ==, smartlist_len(added)); + md2 = smartlist_get(added, 0); + /* And it should have gotten removed from 'wanted' */ + tt_int_op(smartlist_len(wanted), ==, 1); + test_mem_op(smartlist_get(wanted, 0), ==, d3, DIGEST256_LEN); + smartlist_free(added); + added = NULL; + + added = microdescs_add_to_cache(mc, test_md3, NULL, + SAVED_NOWHERE, 0, -1, NULL); + /* Must fail, since SAVED_NOWHERE precludes annotations */ + tt_int_op(0, ==, smartlist_len(added)); + smartlist_free(added); + added = NULL; + + added = microdescs_add_to_cache(mc, test_md3_noannotation, NULL, + SAVED_NOWHERE, 0, time3, NULL); + /* Now it can work */ + tt_int_op(1, ==, smartlist_len(added)); + md3 = smartlist_get(added, 0); + smartlist_free(added); + added = NULL; + + /* Okay. We added 1...3. Let's poke them to see how they look, and make + * sure they're really in the journal. */ + 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(md3, ==, microdesc_cache_lookup_by_digest256(mc, d3)); + + tt_int_op(md1->last_listed, ==, time1); + tt_int_op(md2->last_listed, ==, time2); + tt_int_op(md3->last_listed, ==, time3); + + tt_int_op(md1->saved_location, ==, SAVED_IN_JOURNAL); + tt_int_op(md2->saved_location, ==, SAVED_IN_JOURNAL); + tt_int_op(md3->saved_location, ==, SAVED_IN_JOURNAL); + + tt_int_op(md1->bodylen, ==, strlen(test_md1)); + tt_int_op(md2->bodylen, ==, strlen(test_md2)); + tt_int_op(md3->bodylen, ==, strlen(test_md3_noannotation)); + test_mem_op(md1->body, ==, test_md1, strlen(test_md1)); + test_mem_op(md2->body, ==, test_md2, strlen(test_md2)); + test_mem_op(md3->body, ==, test_md3_noannotation, + strlen(test_md3_noannotation)); + + tor_asprintf(&fn, "%s"PATH_SEPARATOR"cached-microdescs.new", + options->DataDirectory); + s = read_file_to_str(fn, RFTS_BIN, NULL); + tt_assert(s); + test_mem_op(md1->body, ==, s + md1->off, md1->bodylen); + test_mem_op(md2->body, ==, s + md2->off, md2->bodylen); + test_mem_op(md3->body, ==, s + md3->off, md3->bodylen); + + tt_ptr_op(md1->family, ==, NULL); + tt_ptr_op(md3->family, !=, NULL); + tt_int_op(smartlist_len(md3->family), ==, 3); + tt_str_op(smartlist_get(md3->family, 0), ==, "nodeX"); + + /* Now rebuild the cache! */ + tt_int_op(microdesc_cache_rebuild(mc), ==, 0); + + tt_int_op(md1->saved_location, ==, SAVED_IN_CACHE); + tt_int_op(md2->saved_location, ==, SAVED_IN_CACHE); + tt_int_op(md3->saved_location, ==, SAVED_IN_CACHE); + + /* The journal should be empty now */ + tor_free(s); + s = read_file_to_str(fn, RFTS_BIN, NULL); + tt_str_op(s, ==, ""); + tor_free(s); + tor_free(fn); + + /* read the cache. */ + tor_asprintf(&fn, "%s"PATH_SEPARATOR"cached-microdescs", + options->DataDirectory); + s = read_file_to_str(fn, RFTS_BIN, NULL); + test_mem_op(md1->body, ==, s + md1->off, strlen(test_md1)); + test_mem_op(md2->body, ==, s + md2->off, strlen(test_md2)); + test_mem_op(md3->body, ==, s + md3->off, strlen(test_md3_noannotation)); + + /* Okay, now we are going to forget about the cache entirely, and reload it + * from the disk. */ + microdesc_free_all(); + mc = get_microdesc_cache(); + md1 = microdesc_cache_lookup_by_digest256(mc, d1); + md2 = microdesc_cache_lookup_by_digest256(mc, d2); + md3 = microdesc_cache_lookup_by_digest256(mc, d3); + test_assert(md1); + test_assert(md2); + test_assert(md3); + test_mem_op(md1->body, ==, s + md1->off, strlen(test_md1)); + test_mem_op(md2->body, ==, s + md2->off, strlen(test_md2)); + test_mem_op(md3->body, ==, s + md3->off, strlen(test_md3_noannotation)); + + tt_int_op(md1->last_listed, ==, time1); + tt_int_op(md2->last_listed, ==, time2); + tt_int_op(md3->last_listed, ==, time3); + + /* Okay, now we are going to clear out everything older than a week old. + * In practice, that means md3 */ + microdesc_cache_clean(mc, time(NULL)-7*24*60*60, 1/*force*/); + 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)); + md3 = NULL; /* it's history now! */ + + /* rebuild again, make sure it stays gone. */ + microdesc_cache_rebuild(mc); + 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)); + + done: + if (options) + tor_free(options->DataDirectory); + microdesc_free_all(); + + smartlist_free(added); + if (wanted) + SMARTLIST_FOREACH(wanted, char *, cp, tor_free(cp)); + smartlist_free(wanted); + tor_free(s); + tor_free(fn); +} + +struct testcase_t microdesc_tests[] = { + { "cache", test_md_cache, TT_FORK, NULL, NULL }, + END_OF_TESTCASES +}; + diff --git a/src/test/test_util.c b/src/test/test_util.c index 68a0ca298..c4428f5ea 100644 --- a/src/test/test_util.c +++ b/src/test/test_util.c @@ -833,6 +833,18 @@ test_util_sscanf(void) test_eq(u2, 3u); test_eq(u3, 99u); + /* %x should work. */ + r = tor_sscanf("1234 02aBcdEf", "%x %x", &u1, &u2); + test_eq(r, 2); + test_eq(u1, 0x1234); + test_eq(u2, 0x2ABCDEF); + /* Width works on %x */ + r = tor_sscanf("f00dcafe444", "%4x%4x%u", &u1, &u2, &u3); + test_eq(r, 3); + test_eq(u1, 0xf00d); + test_eq(u2, 0xcafe); + test_eq(u3, 444); + r = tor_sscanf("99% fresh", "%3u%% fresh", &u1); /* percents are scannable.*/ test_eq(r, 1); test_eq(u1, 99); @@ -1212,14 +1224,13 @@ test_util_load_win_lib(void *ptr) static void clear_hex_errno(char *hex_errno) { - memset(hex_errno, ' ', HEX_ERRNO_SIZE - 2); - hex_errno[HEX_ERRNO_SIZE - 1] = '\n'; - hex_errno[HEX_ERRNO_SIZE] = '\0'; + memset(hex_errno, '\0', HEX_ERRNO_SIZE + 1); } static void test_util_exit_status(void *ptr) { + /* Leave an extra byte for a \0 so we can do string comparison */ char hex_errno[HEX_ERRNO_SIZE + 1]; (void)ptr; @@ -1248,6 +1259,164 @@ test_util_exit_status(void *ptr) ; } +#ifndef MS_WINDOWS +/** Check that fgets waits until a full line, and not return a partial line, on + * a EAGAIN with a non-blocking pipe */ +static void +test_util_fgets_eagain(void *ptr) +{ + int test_pipe[2] = {-1, -1}; + int retval; + ssize_t retlen; + char *retptr; + FILE *test_stream = NULL; + char buf[10]; + + (void)ptr; + + /* Set up a pipe to test on */ + retval = pipe(test_pipe); + tt_int_op(retval, >=, 0); + + /* Set up the read-end to be non-blocking */ + retval = fcntl(test_pipe[0], F_SETFL, O_NONBLOCK); + tt_int_op(retval, >=, 0); + + /* Open it as a stdio stream */ + test_stream = fdopen(test_pipe[0], "r"); + tt_ptr_op(test_stream, !=, NULL); + + /* Send in a partial line */ + retlen = write(test_pipe[1], "A", 1); + tt_int_op(retlen, ==, 1); + retptr = fgets(buf, sizeof(buf), test_stream); + tt_want(retptr == NULL); + tt_int_op(errno, ==, EAGAIN); + + /* Send in the rest */ + retlen = write(test_pipe[1], "B\n", 2); + tt_int_op(retlen, ==, 2); + retptr = fgets(buf, sizeof(buf), test_stream); + tt_ptr_op(retptr, ==, buf); + tt_str_op(buf, ==, "AB\n"); + + /* Send in a full line */ + retlen = write(test_pipe[1], "CD\n", 3); + tt_int_op(retlen, ==, 3); + retptr = fgets(buf, sizeof(buf), test_stream); + tt_ptr_op(retptr, ==, buf); + tt_str_op(buf, ==, "CD\n"); + + /* Send in a partial line */ + retlen = write(test_pipe[1], "E", 1); + tt_int_op(retlen, ==, 1); + retptr = fgets(buf, sizeof(buf), test_stream); + tt_ptr_op(retptr, ==, NULL); + tt_int_op(errno, ==, EAGAIN); + + /* Send in the rest */ + retlen = write(test_pipe[1], "F\n", 2); + tt_int_op(retlen, ==, 2); + retptr = fgets(buf, sizeof(buf), test_stream); + tt_ptr_op(retptr, ==, buf); + tt_str_op(buf, ==, "EF\n"); + + /* Send in a full line and close */ + retlen = write(test_pipe[1], "GH", 2); + tt_int_op(retlen, ==, 2); + retval = close(test_pipe[1]); + test_pipe[1] = -1; + tt_int_op(retval, ==, 0); + retptr = fgets(buf, sizeof(buf), test_stream); + tt_ptr_op(retptr, ==, buf); + tt_str_op(buf, ==, "GH"); + + /* Check for EOF */ + retptr = fgets(buf, sizeof(buf), test_stream); + tt_ptr_op(retptr, ==, NULL); + tt_int_op(feof(test_stream), >, 0); + + done: + if (test_stream != NULL) + fclose(test_stream); + if (test_pipe[0] != -1) + close(test_pipe[0]); + if (test_pipe[1] != -1) + close(test_pipe[1]); +} +#endif + +#ifndef MS_WINDOWS +/** Helper function for testing tor_spawn_background */ +static void +run_util_spawn_background(const char *argv[], const char *expected_out, + const char *expected_err, int expected_exit) +{ + int stdout_pipe=-1, stderr_pipe=-1; + int retval, stat_loc; + pid_t pid; + ssize_t pos; + char stdout_buf[100], stderr_buf[100]; + + /* Start the program */ + retval = tor_spawn_background(argv[0], &stdout_pipe, &stderr_pipe, argv); + tt_int_op(retval, >, 0); + tt_int_op(stdout_pipe, >, 0); + tt_int_op(stderr_pipe, >, 0); + pid = retval; + + /* Check stdout */ + pos = read(stdout_pipe, stdout_buf, sizeof(stdout_buf) - 1); + stdout_buf[pos] = '\0'; + tt_int_op(pos, ==, strlen(expected_out)); + tt_str_op(stdout_buf, ==, expected_out); + + /* Check it terminated correctly */ + retval = waitpid(pid, &stat_loc, 0); + tt_int_op(retval, ==, pid); + tt_assert(WIFEXITED(stat_loc)); + tt_int_op(WEXITSTATUS(stat_loc), ==, expected_exit); + tt_assert(!WIFSIGNALED(stat_loc)); + tt_assert(!WIFSTOPPED(stat_loc)); + + /* Check stderr */ + pos = read(stderr_pipe, stderr_buf, sizeof(stderr_buf) - 1); + stderr_buf[pos] = '\0'; + tt_int_op(pos, ==, strlen(expected_err)); + tt_str_op(stderr_buf, ==, expected_err); + + done: + ; +} + +/** Check that we can launch a process and read the output */ +static void +test_util_spawn_background_ok(void *ptr) +{ + const char *argv[] = {BUILDDIR "/src/test/test-child", "--test", NULL}; + const char *expected_out = "OUT\n--test\nDONE\n"; + const char *expected_err = "ERR\n"; + + (void)ptr; + + run_util_spawn_background(argv, expected_out, expected_err, 0); +} + +/** Check that failing to find the executable works as expected */ +static void +test_util_spawn_background_fail(void *ptr) +{ + const char *argv[] = {BUILDDIR "/src/test/no-such-file", "--test", NULL}; + const char *expected_out = "ERR: Failed to spawn background process " + "- code 9/2\n"; + const char *expected_err = ""; + + (void)ptr; + + run_util_spawn_background(argv, expected_out, expected_err, 255); +} +#endif + #define UTIL_LEGACY(name) \ { #name, legacy_test_helper, 0, &legacy_setup, test_util_ ## name } @@ -1275,6 +1444,11 @@ struct testcase_t util_tests[] = { UTIL_TEST(load_win_lib, 0), #endif UTIL_TEST(exit_status, 0), +#ifndef MS_WINDOWS + UTIL_TEST(fgets_eagain, TT_SKIP), + UTIL_TEST(spawn_background_ok, 0), + UTIL_TEST(spawn_background_fail, 0), +#endif END_OF_TESTCASES }; |