summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.appveyor.yml3
-rw-r--r--.gitignore7
-rw-r--r--.travis.yml273
-rw-r--r--ChangeLog495
-rw-r--r--INSTALL34
-rw-r--r--LICENSE30
-rw-r--r--Makefile.am41
-rw-r--r--ReleaseNotes254
-rw-r--r--changes/272864
-rw-r--r--changes/bug155186
-rw-r--r--changes/bug186425
-rw-r--r--changes/bug208747
-rw-r--r--changes/bug243124
-rw-r--r--changes/bug255525
-rw-r--r--changes/bug262233
-rw-r--r--changes/bug264373
-rw-r--r--changes/bug265023
-rw-r--r--changes/bug268825
-rw-r--r--changes/bug268926
-rw-r--r--changes/bug268963
-rw-r--r--changes/bug269794
-rw-r--r--changes/bug269863
-rw-r--r--changes/bug270346
-rw-r--r--changes/bug270963
-rw-r--r--changes/bug272374
-rw-r--r--changes/bug273455
-rw-r--r--changes/doc265883
-rw-r--r--changes/feature195063
-rw-r--r--changes/ticket204245
-rw-r--r--changes/ticket213496
-rw-r--r--changes/ticket264475
-rw-r--r--changes/ticket2648112
-rw-r--r--changes/ticket264924
-rw-r--r--changes/ticket265264
-rw-r--r--changes/ticket26526_extra3
-rw-r--r--changes/ticket266633
-rw-r--r--changes/ticket267033
-rw-r--r--changes/ticket269473
-rw-r--r--changes/ticket272113
-rw-r--r--changes/ticket272159
-rw-r--r--changes/ticket3569_part16
-rw-r--r--changes/ticket37233
-rw-r--r--configure.ac344
-rw-r--r--doc/HACKING/CodeStructure.md129
-rw-r--r--doc/HACKING/CodingStandards.md22
-rw-r--r--doc/HACKING/CodingStandardsRust.md2
-rw-r--r--doc/HACKING/GettingStartedRust.md8
-rw-r--r--doc/HACKING/HelpfulTools.md26
-rw-r--r--doc/HACKING/Module.md4
-rw-r--r--doc/HACKING/ReleasingTor.md2
-rw-r--r--doc/include.am7
-rw-r--r--doc/tor-print-ed-signing-cert.1.txt32
-rw-r--r--doc/tor.1.txt17
-rw-r--r--scripts/README6
-rwxr-xr-xscripts/codegen/fuzzing_include_am.py9
-rwxr-xr-xscripts/maint/checkIncludes.py28
-rw-r--r--scripts/maint/fallback.blacklist232
-rwxr-xr-xscripts/maint/updateFallbackDirs.py157
-rw-r--r--scripts/test/appveyor-irc-notify.py83
-rwxr-xr-xscripts/test/chutney-git-bisect.sh62
-rw-r--r--src/app/config/auth_dirs.inc4
-rw-r--r--src/app/config/config.c58
-rw-r--r--src/app/config/confparse.c2
-rw-r--r--src/app/config/confparse.h6
-rw-r--r--src/app/config/or_options_st.h6
-rw-r--r--src/app/config/or_state_st.h6
-rw-r--r--src/app/config/statefile.c1
-rw-r--r--src/app/config/statefile.h6
-rw-r--r--src/config/geoip14291
-rw-r--r--src/config/geoip6974
-rw-r--r--src/core/crypto/onion_ntor.c2
-rw-r--r--src/core/include.am6
-rw-r--r--src/core/mainloop/main.c10
-rw-r--r--src/core/mainloop/periodic.c8
-rw-r--r--src/core/or/addr_policy_st.h4
-rw-r--r--src/core/or/channeltls.c3
-rw-r--r--src/core/or/connection_edge.c7
-rw-r--r--src/core/or/connection_or.c14
-rw-r--r--src/core/or/or.h6
-rw-r--r--src/core/or/policies.c8
-rw-r--r--src/core/or/relay.c11
-rw-r--r--src/core/or/scheduler.c4
-rw-r--r--src/core/or/socks_request_st.h2
-rw-r--r--src/core/proto/proto_ext_or.h4
-rw-r--r--src/core/proto/proto_socks.c1127
-rw-r--r--src/ext/getdelim.c78
-rw-r--r--src/ext/include.am2
-rw-r--r--src/ext/tinytest.c2
-rw-r--r--src/feature/api/tor_api.c7
-rw-r--r--src/feature/api/tor_api.h18
-rw-r--r--src/feature/client/entrynodes.c324
-rw-r--r--src/feature/control/control.c16
-rw-r--r--src/feature/dirauth/dirvote.c102
-rw-r--r--src/feature/dirauth/dirvote.h3
-rw-r--r--src/feature/dirauth/keypin.c2
-rw-r--r--src/feature/dircache/directory.c3
-rw-r--r--src/feature/dircache/dirserv.c69
-rw-r--r--src/feature/dircache/dirserv.h14
-rw-r--r--src/feature/dircommon/voting_schedule.c2
-rw-r--r--src/feature/hs/hs_circuit.c20
-rw-r--r--src/feature/hs/hs_common.c9
-rw-r--r--src/feature/hs/hs_config.c24
-rw-r--r--src/feature/hs/hs_service.c396
-rw-r--r--src/feature/hs/hs_service.h22
-rw-r--r--src/feature/hs_common/shared_random_client.c55
-rw-r--r--src/feature/hs_common/shared_random_client.h3
-rw-r--r--src/feature/nodelist/networkstatus.c7
-rw-r--r--src/feature/nodelist/networkstatus_st.h3
-rw-r--r--src/feature/nodelist/nodelist.c157
-rw-r--r--src/feature/nodelist/parsecommon.c2
-rw-r--r--src/feature/nodelist/routerlist.c1
-rw-r--r--src/feature/nodelist/torcert.c2
-rw-r--r--src/feature/relay/dns.c41
-rw-r--r--src/feature/relay/dns.h2
-rw-r--r--src/feature/relay/router.c29
-rw-r--r--src/feature/relay/routerkeys.c21
-rw-r--r--src/feature/relay/routerkeys.h3
-rw-r--r--src/feature/rend/rendservice.c24
-rw-r--r--src/feature/rend/rendservice.h1
-rw-r--r--src/lib/cc/compat_compiler.h6
-rw-r--r--src/lib/cc/torint.h19
-rw-r--r--src/lib/compress/compress.c4
-rw-r--r--src/lib/compress/compress_lzma.c4
-rw-r--r--src/lib/compress/compress_none.c2
-rw-r--r--src/lib/compress/compress_zlib.c2
-rw-r--r--src/lib/compress/compress_zstd.c6
-rw-r--r--src/lib/container/bitarray.h2
-rw-r--r--src/lib/container/bloomfilt.c2
-rw-r--r--src/lib/container/buffers.c4
-rw-r--r--src/lib/container/handles.h2
-rw-r--r--src/lib/container/map.c2
-rw-r--r--src/lib/container/smartlist.c29
-rw-r--r--src/lib/container/smartlist.h3
-rw-r--r--src/lib/crypt_ops/aes.c2
-rw-r--r--src/lib/crypt_ops/aes.h2
-rw-r--r--src/lib/crypt_ops/crypto.c2
-rw-r--r--src/lib/crypt_ops/crypto_curve25519.c2
-rw-r--r--src/lib/crypt_ops/crypto_curve25519.h5
-rw-r--r--src/lib/crypt_ops/crypto_dh.c2
-rw-r--r--src/lib/crypt_ops/crypto_digest.c2
-rw-r--r--src/lib/crypt_ops/crypto_digest.h2
-rw-r--r--src/lib/crypt_ops/crypto_ed25519.c2
-rw-r--r--src/lib/crypt_ops/crypto_ed25519.h5
-rw-r--r--src/lib/crypt_ops/crypto_format.c2
-rw-r--r--src/lib/crypt_ops/crypto_format.h5
-rw-r--r--src/lib/crypt_ops/crypto_hkdf.c4
-rw-r--r--src/lib/crypt_ops/crypto_ope.c185
-rw-r--r--src/lib/crypt_ops/crypto_ope.h46
-rw-r--r--src/lib/crypt_ops/crypto_openssl_mgt.c2
-rw-r--r--src/lib/crypt_ops/crypto_openssl_mgt.h4
-rw-r--r--src/lib/crypt_ops/crypto_rand.c4
-rw-r--r--src/lib/crypt_ops/crypto_rsa.c2
-rw-r--r--src/lib/crypt_ops/crypto_rsa.h2
-rw-r--r--src/lib/crypt_ops/crypto_util.c2
-rw-r--r--src/lib/crypt_ops/include.am2
-rw-r--r--src/lib/ctime/di_ops.c2
-rw-r--r--src/lib/defs/dh_sizes.h9
-rw-r--r--src/lib/defs/x25519_sizes.h9
-rw-r--r--src/lib/encoding/binascii.c4
-rw-r--r--src/lib/encoding/confline.c4
-rw-r--r--src/lib/encoding/cstring.c4
-rw-r--r--src/lib/encoding/keyval.c2
-rw-r--r--src/lib/encoding/time_fmt.c6
-rw-r--r--src/lib/evloop/compat_libevent.c2
-rw-r--r--src/lib/evloop/compat_libevent.h7
-rw-r--r--src/lib/evloop/procmon.c4
-rw-r--r--src/lib/evloop/procmon.h2
-rw-r--r--src/lib/evloop/timers.c4
-rw-r--r--src/lib/evloop/timers.h6
-rw-r--r--src/lib/evloop/token_bucket.h5
-rw-r--r--src/lib/evloop/workqueue.c2
-rw-r--r--src/lib/evloop/workqueue.h5
-rw-r--r--src/lib/fs/.may_include3
-rw-r--r--src/lib/fs/conffile.c4
-rw-r--r--src/lib/fs/dir.c4
-rw-r--r--src/lib/fs/files.c8
-rw-r--r--src/lib/fs/files.h39
-rw-r--r--src/lib/fs/lockfile.c4
-rw-r--r--src/lib/fs/mmap.c4
-rw-r--r--src/lib/fs/path.c4
-rw-r--r--src/lib/fs/storagedir.c4
-rw-r--r--src/lib/fs/userdb.c4
-rw-r--r--src/lib/lock/compat_mutex.c2
-rw-r--r--src/lib/lock/compat_mutex.h2
-rw-r--r--src/lib/log/escape.c7
-rw-r--r--src/lib/log/escape.h5
-rw-r--r--src/lib/log/git_revision.c (renamed from src/core/or/git_revision.c)10
-rw-r--r--src/lib/log/git_revision.h (renamed from src/core/or/git_revision.h)2
-rw-r--r--src/lib/log/include.am13
-rw-r--r--src/lib/log/log.c (renamed from src/lib/log/torlog.c)31
-rw-r--r--src/lib/log/log.h (renamed from src/lib/log/torlog.h)2
-rw-r--r--src/lib/log/ratelim.c7
-rw-r--r--src/lib/log/ratelim.h5
-rw-r--r--src/lib/log/util_bug.c8
-rw-r--r--src/lib/log/util_bug.h7
-rw-r--r--src/lib/log/win32err.c7
-rw-r--r--src/lib/log/win32err.h5
-rw-r--r--src/lib/malloc/include.am4
-rw-r--r--src/lib/malloc/malloc.c (renamed from src/lib/malloc/util_malloc.c)4
-rw-r--r--src/lib/malloc/malloc.h (renamed from src/lib/malloc/util_malloc.h)2
-rw-r--r--src/lib/memarea/memarea.c4
-rw-r--r--src/lib/meminfo/meminfo.c4
-rw-r--r--src/lib/net/address.c227
-rw-r--r--src/lib/net/address.h9
-rw-r--r--src/lib/net/buffers_net.c7
-rw-r--r--src/lib/net/gethostname.c5
-rw-r--r--src/lib/net/gethostname.h5
-rw-r--r--src/lib/net/inaddr.c (renamed from src/lib/net/ipv6.c)56
-rw-r--r--src/lib/net/inaddr.h (renamed from src/lib/net/ipv4.h)14
-rw-r--r--src/lib/net/inaddr_st.h (renamed from src/lib/net/ipv6.h)30
-rw-r--r--src/lib/net/include.am7
-rw-r--r--src/lib/net/ipv4.c52
-rw-r--r--src/lib/net/nettypes.h5
-rw-r--r--src/lib/net/resolve.c190
-rw-r--r--src/lib/net/resolve.h13
-rw-r--r--src/lib/net/socket.c8
-rw-r--r--src/lib/net/socket.h5
-rw-r--r--src/lib/net/socks5_status.h10
-rw-r--r--src/lib/osinfo/uname.c5
-rw-r--r--src/lib/osinfo/uname.h9
-rw-r--r--src/lib/process/daemon.c7
-rw-r--r--src/lib/process/daemon.h5
-rw-r--r--src/lib/process/env.c11
-rw-r--r--src/lib/process/env.h5
-rw-r--r--src/lib/process/pidfile.c7
-rw-r--r--src/lib/process/pidfile.h5
-rw-r--r--src/lib/process/restrict.c7
-rw-r--r--src/lib/process/restrict.h4
-rw-r--r--src/lib/process/setuid.c9
-rw-r--r--src/lib/process/setuid.h5
-rw-r--r--src/lib/process/subprocess.c9
-rw-r--r--src/lib/process/subprocess.h5
-rw-r--r--src/lib/process/waitpid.c10
-rw-r--r--src/lib/sandbox/sandbox.c6
-rw-r--r--src/lib/smartlist_core/smartlist_core.c2
-rw-r--r--src/lib/smartlist_core/smartlist_core.h5
-rw-r--r--src/lib/smartlist_core/smartlist_foreach.h5
-rw-r--r--src/lib/smartlist_core/smartlist_split.c7
-rw-r--r--src/lib/smartlist_core/smartlist_split.h5
-rw-r--r--src/lib/string/compat_ctype.c5
-rw-r--r--src/lib/string/compat_ctype.h5
-rw-r--r--src/lib/string/compat_string.c6
-rw-r--r--src/lib/string/compat_string.h5
-rw-r--r--src/lib/string/parse_int.c5
-rw-r--r--src/lib/string/parse_int.h5
-rw-r--r--src/lib/string/printf.c9
-rw-r--r--src/lib/string/printf.h5
-rw-r--r--src/lib/string/scanf.c5
-rw-r--r--src/lib/string/scanf.h5
-rw-r--r--src/lib/string/util_string.c5
-rw-r--r--src/lib/string/util_string.h5
-rw-r--r--src/lib/term/getpass.c7
-rw-r--r--src/lib/term/getpass.h5
-rw-r--r--src/lib/testsupport/testsupport.h15
-rw-r--r--src/lib/thread/compat_pthreads.c2
-rw-r--r--src/lib/thread/compat_threads.c6
-rw-r--r--src/lib/thread/compat_winthreads.c2
-rw-r--r--src/lib/thread/numcpus.c7
-rw-r--r--src/lib/thread/numcpus.h5
-rw-r--r--src/lib/thread/threads.h23
-rw-r--r--src/lib/time/compat_time.c2
-rw-r--r--src/lib/time/tvdiff.c7
-rw-r--r--src/lib/time/tvdiff.h5
-rw-r--r--src/lib/tls/buffers_tls.c7
-rw-r--r--src/lib/tls/buffers_tls.h6
-rw-r--r--src/lib/tls/tortls.c12
-rw-r--r--src/lib/trace/debug.h7
-rw-r--r--src/lib/trace/trace.c8
-rw-r--r--src/lib/trace/trace.h6
-rw-r--r--src/lib/wallclock/approx_time.c5
-rw-r--r--src/lib/wallclock/approx_time.h5
-rw-r--r--src/lib/wallclock/include.am4
-rw-r--r--src/lib/wallclock/time_to_tm.c (renamed from src/lib/wallclock/tm_cvt.c)7
-rw-r--r--src/lib/wallclock/time_to_tm.h (renamed from src/lib/wallclock/tm_cvt.h)9
-rw-r--r--src/lib/wallclock/timeval.c0
-rw-r--r--src/lib/wallclock/timeval.h7
-rw-r--r--src/lib/wallclock/tor_gettimeofday.c6
-rw-r--r--src/lib/wallclock/tor_gettimeofday.h5
-rw-r--r--src/rust/.rustfmt.toml14
-rw-r--r--src/rust/Cargo.toml9
-rw-r--r--src/rust/build.rs47
-rw-r--r--src/rust/crypto/Cargo.toml4
-rw-r--r--src/rust/crypto/digests/sha2.rs42
-rw-r--r--src/rust/crypto/lib.rs5
-rw-r--r--src/rust/crypto/rand/rng.rs29
-rw-r--r--src/rust/external/crypto_digest.rs118
-rw-r--r--src/rust/external/crypto_rand.rs7
-rw-r--r--src/rust/external/external.rs9
-rw-r--r--src/rust/protover/errors.rs38
-rw-r--r--src/rust/protover/ffi.rs59
-rw-r--r--src/rust/protover/lib.rs7
-rw-r--r--src/rust/protover/protoset.rs91
-rw-r--r--src/rust/protover/protover.rs149
-rw-r--r--src/rust/protover/tests/protover.rs24
-rw-r--r--src/rust/smartlist/smartlist.rs10
-rw-r--r--src/rust/tor_allocate/tor_allocate.rs26
-rw-r--r--src/rust/tor_log/tor_log.rs35
-rw-r--r--src/rust/tor_rust/include.am2
-rw-r--r--src/rust/tor_rust/lib.rs4
-rw-r--r--src/rust/tor_util/ffi.rs4
-rw-r--r--src/rust/tor_util/strings.rs4
-rw-r--r--src/test/fuzz/fuzz_http.c2
-rw-r--r--src/test/fuzz/fuzz_http_connect.c2
-rw-r--r--src/test/fuzz/fuzz_socks.c50
-rw-r--r--src/test/fuzz/include.am105
-rw-r--r--src/test/include.am5
-rw-r--r--src/test/log_test_helpers.c2
-rw-r--r--src/test/ope_ref.py40
-rw-r--r--src/test/test-memwipe.c2
-rw-r--r--src/test/test.c11
-rw-r--r--src/test/test.h1
-rw-r--r--src/test/test_addr.c62
-rw-r--r--src/test/test_address.c32
-rwxr-xr-xsrc/test/test_bt.sh2
-rw-r--r--src/test/test_bt_cl.c2
-rw-r--r--src/test/test_bwmgt.c35
-rw-r--r--src/test/test_config.c113
-rw-r--r--src/test/test_connection.c2
-rw-r--r--src/test/test_controller.c1
-rw-r--r--src/test/test_crypto_ope.c152
-rw-r--r--src/test/test_crypto_openssl.c2
-rw-r--r--src/test/test_dir.c422
-rw-r--r--src/test/test_helpers.c1
-rw-r--r--src/test/test_hs_cell.c4
-rw-r--r--src/test/test_hs_common.c12
-rw-r--r--src/test/test_hs_intropoint.c4
-rw-r--r--src/test/test_hs_service.c84
-rwxr-xr-xsrc/test/test_key_expiration.sh8
-rwxr-xr-xsrc/test/test_keygen.sh8
-rw-r--r--src/test/test_logging.c2
-rw-r--r--src/test/test_options.c35
-rw-r--r--src/test/test_periodic_event.c8
-rw-r--r--src/test/test_policy.c2
-rw-r--r--src/test/test_pt.c1
-rw-r--r--src/test/test_routerkeys.c36
-rwxr-xr-xsrc/test/test_rust.sh5
-rw-r--r--src/test/test_shared_random.c48
-rw-r--r--src/test/test_socks.c11
-rw-r--r--src/test/test_status.c2
-rw-r--r--src/test/test_tortls.c123
-rw-r--r--src/test/test_util.c125
-rw-r--r--src/test/test_util_slow.c2
-rw-r--r--src/tools/Makefile.nmake5
-rw-r--r--src/tools/include.am11
-rw-r--r--src/tools/tor-gencert.c24
-rw-r--r--src/tools/tor-print-ed-signing-cert.c65
-rw-r--r--src/tools/tor-resolve.c27
-rw-r--r--src/tools/tor_runner.c7
-rw-r--r--src/trunnel/include.am9
-rw-r--r--src/trunnel/socks5.c3978
-rw-r--r--src/trunnel/socks5.h995
-rw-r--r--src/trunnel/socks5.trunnel94
-rw-r--r--src/trunnel/trunnel-local.h2
353 files changed, 20663 insertions, 9032 deletions
diff --git a/.appveyor.yml b/.appveyor.yml
index 197097d1fd..d1d8d7c45b 100644
--- a/.appveyor.yml
+++ b/.appveyor.yml
@@ -54,9 +54,6 @@ test_script:
Execute-Bash "VERBOSE=1 make -j2 check"
}
-on_success:
-- cmd: C:\Python27\python.exe %APPVEYOR_BUILD_FOLDER%\scripts\test\appveyor-irc-notify.py irc.oftc.net:6697 tor-ci success
-
on_failure:
- cmd: C:\Python27\python.exe %APPVEYOR_BUILD_FOLDER%\scripts\test\appveyor-irc-notify.py irc.oftc.net:6697 tor-ci failure
diff --git a/.gitignore b/.gitignore
index 80c039a684..1cd99dfd38 100644
--- a/.gitignore
+++ b/.gitignore
@@ -116,6 +116,11 @@ uptime-*.json
/doc/torify.html
/doc/torify.html.in
/doc/torify.1.xml
+/doc/tor-print-ed-signing-cert.1
+/doc/tor-print-ed-signing-cert.1.in
+/doc/tor-print-ed-signing-cert.html
+/doc/tor-print-ed-signing-cert.html.in
+/doc/tor-print-ed-signing-cert.1.xml
# /doc/spec/
/doc/spec/Makefile
@@ -258,6 +263,8 @@ uptime-*.json
/src/tools/tor-resolve
/src/tools/tor-cov-resolve
/src/tools/tor-gencert
+/src/tools/tor-print-ed-signing-cert
+/src/tools/tor-print-ed-signing-cert.exe
/src/tools/tor-cov-gencert
/src/tools/tor-checkkey.exe
/src/tools/tor-resolve.exe
diff --git a/.travis.yml b/.travis.yml
index cb00b0393c..7db7577856 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,40 +1,97 @@
language: c
-## Comment out the compiler list for now to allow an explicit build
-## matrix.
-# compiler:
-# - gcc
-# - clang
+cache:
+ ccache: true
+ ## cargo: true
+ directories:
+ - $HOME/.cargo
+ ## where we point CARGO_TARGET_DIR in all our cargo invocations
+ - $TRAVIS_BUILD_DIR/src/rust/target
-notifications:
- irc:
- channels:
- - "irc.oftc.net#tor-ci"
- template:
- - "%{repository} %{branch} %{commit} - %{author}: %{commit_subject}"
- - "Build #%{build_number} %{result}. Details: %{build_url}"
- on_success: change
- on_failure: change
- email:
- on_success: never
- on_failure: change
+compiler:
+ - gcc
+ - clang
os:
- linux
- ## Uncomment the following line to also run the entire build matrix on OSX.
- ## This will make your CI builds take roughly ten times longer to finish.
- # - osx
+ - osx
-## Use the Ubuntu Trusty images.
-dist: trusty
+## The build matrix in the following stanza expands into builds for each
+## OS and compiler.
+env:
+ global:
+ ## The Travis CI environment allows us two cores, so let's use both.
+ - MAKEFLAGS="-j 2"
+ ## We turn on hardening by default
+ ## Also known as --enable-fragile-hardening in 0.3.0.3-alpha and later
+ - HARDENING_OPTIONS="--enable-expensive-hardening"
+ ## We turn off asciidoc by default, because it's slow
+ - ASCIIDOC_OPTIONS="--disable-asciidoc"
+ matrix:
+ ## We want to use each build option at least once
+ ##
+ ## We don't list default variable values, because we set the defaults
+ ## in global (or the default is unset)
+ -
+ ## We turn off hardening for Rust builds, because they are incompatible,
+ ## and it's going to take a while for them to be fixed. See:
+ ## https:/trac.torproject.org/projects/tor/ticket/25386
+ ## https:/trac.torproject.org/projects/tor/ticket/26398
+ - RUST_OPTIONS="--enable-rust --enable-cargo-online-mode" HARDENING_OPTIONS=""
+
+matrix:
+ ## include creates builds with gcc, linux, sudo: false
+ include:
+ ## We include a single coverage build with the best options for coverage
+ - env: COVERAGE_OPTIONS="--enable-coverage" HARDENING_OPTIONS=""
+ ## We only want to check these build option combinations once
+ ## (they shouldn't vary by compiler or OS)
+ ## We run rust and coverage with hardening off, which seems like enough
+ # - env: HARDENING_OPTIONS=""
+ ## We check asciidoc with distcheck, to make sure we remove doc products
+ - env: DISTCHECK="yes" ASCIIDOC_OPTIONS=""
+ ## Check rust offline with distcheck, to make sure we remove rust products
+ ## But without hardening (see above)
+ - env: DISTCHECK="yes" RUST_OPTIONS="--enable-rust" TOR_RUST_DEPENDENCIES=true HARDENING_OPTIONS=""
+ ## Check disable module dirauth with rust, and without rust but with distcheck
+ - env: MODULES_OPTIONS="--disable-module-dirauth" RUST_OPTIONS="--enable-rust" TOR_RUST_DEPENDENCIES=true HARDENING_OPTIONS=""
+ - env: DISTCHECK="yes" MODULES_OPTIONS="--disable-module-dirauth"
+
+ ## Uncomment to allow the build to report success (with non-required
+ ## sub-builds continuing to run) if all required sub-builds have
+ ## succeeded. This is somewhat buggy currently: it can cause
+ ## duplicate notifications and prematurely report success if a
+ ## single sub-build has succeeded. See
+ ## https://github.com/travis-ci/travis-ci/issues/1696
+ # fast_finish: true
-## We don't need sudo. (The "apt:" stanza after this allows us to not need sudo;
-## otherwise, we would need it for getting dependencies.)
+ ## Careful! We use global envs, which makes it hard to exclude or
+ ## allow failures by env:
+ ## https://docs.travis-ci.com/user/customizing-the-build#matching-jobs-with-allow_failures
+ exclude:
+ ## Clang doesn't work in containerized builds, see below.
+ - compiler: clang
+ sudo: false
+ ## We also exclude non-containerized gcc, because they're slow and redundant.
+ - compiler: gcc
+ sudo: required
+
+## We don't need sudo. (The "apt:" stanza after this allows us to not need
+## sudo; otherwise, we would need it for getting dependencies.)
##
-## We override this in the explicit build matrix to work around a
-## Travis CI environment regression
+## But we use "sudo: required" to force non-containerized builds, working
+## around a Travis CI environment issue: clang LeakAnalyzer fails
+## because it requires ptrace and the containerized environment no
+## longer allows ptrace.
## https://github.com/travis-ci/travis-ci/issues/9033
-sudo: false
+##
+## In the matrix above, we exclude redundant combinations.
+sudo:
+ - false
+ - required
+
+## (Linux only) Use the latest Linux image (Ubuntu Trusty)
+dist: trusty
## (Linux only) Download our dependencies
addons:
@@ -50,122 +107,81 @@ addons:
- libseccomp-dev
## zstd doesn't exist in Ubuntu Trusty
#- libzstd
+ ## Conditional dependencies
+ ## Always installed, so we don't need sudo
+ - asciidoc
+ - docbook-xsl
+ - docbook-xml
+ - xmlto
-## The build matrix in the following two stanzas expands into four builds (per OS):
-##
-## * with GCC, with Rust
-## * with GCC, without Rust
-## * with Clang, with Rust
-## * with Clang, without Rust
-env:
- global:
- ## The Travis CI environment allows us two cores, so let's use both.
- - MAKEFLAGS="-j 2"
- - HARDENING_OPTIONS="--enable-fragile-hardening"
- matrix:
- ## Leave at least one entry here or Travis seems to generate a
- ## matrix entry with empty matrix environment variables. Leaving
- ## more than one entry causes unwanted matrix entries with
- ## unspecified compilers.
- - RUST_OPTIONS="--enable-rust --enable-cargo-online-mode"
- # - RUST_OPTIONS="--enable-rust" TOR_RUST_DEPENDENCIES=true
- # - RUST_OPTIONS=""
-
-matrix:
- ## Uncomment to allow the build to report success (with non-required
- ## sub-builds continuing to run) if all required sub-builds have
- ## succeeded. This is somewhat buggy currently: it can cause
- ## duplicate notifications and prematurely report success if a
- ## single sub-build has succeeded. See
- ## https://github.com/travis-ci/travis-ci/issues/1696
- # fast_finish: true
-
- ## Uncomment the appropriate lines below to allow the build to
- ## report success even if some less-critical sub-builds fail and it
- ## seems likely to take a while for someone to fix it. Currently
- ## Travis CI doesn't distinguish "all builds succeeded" from "some
- ## non-required sub-builds failed" except on the individual build's
- ## page, which makes it somewhat annoying to detect from the
- ## branches and build history pages. See
- ## https://github.com/travis-ci/travis-ci/issues/8716
- allow_failures:
- - env: RUST_OPTIONS="--enable-rust" TOR_RUST_DEPENDENCIES=true
- - env: RUST_OPTIONS="--enable-rust --enable-cargo-online-mode"
- - env: DISTCHECK="yes" RUST_OPTIONS="--enable-rust --enable-cargo-online-mode"
- # - compiler: clang
-
- ## Create explicit matrix entries to work around a Travis CI
- ## environment issue. Missing keys inherit from the first list
- ## entry under that key outside the "include" clause.
- include:
- - compiler: gcc
- - compiler: gcc
- env: RUST_OPTIONS="--enable-rust" TOR_RUST_DEPENDENCIES=true
- - compiler: gcc
- env: RUST_OPTIONS=""
- - compiler: gcc
- env: COVERAGE_OPTIONS="--enable-coverage"
- - compiler: gcc
- env: DISTCHECK="yes" RUST_OPTIONS=""
- - compiler: gcc
- env: DISTCHECK="yes" RUST_OPTIONS="--enable-rust --enable-cargo-online-mode"
- - compiler: gcc
- env: MODULES_OPTIONS="--disable-module-dirauth"
- - compiler: gcc
- env: HARDENING_OPTIONS="" RUST_OPTIONS="--enable-rust" TOR_RUST_DEPENDENCIES=true
- - compiler: gcc
- env: DISTCHECK="yes" HARDENING_OPTIONS="" RUST_OPTIONS="--enable-rust --enable-cargo-online-mode"
- ## The "sudo: required" forces non-containerized builds, working
- ## around a Travis CI environment issue: clang LeakAnalyzer fails
- ## because it requires ptrace and the containerized environment no
- ## longer allows ptrace.
- - compiler: clang
- sudo: required
- - compiler: clang
- sudo: required
- env: RUST_OPTIONS="--enable-rust" TOR_RUST_DEPENDENCIES=true
- - compiler: clang
- sudo: required
- env: RUST_OPTIONS=""
- - compiler: clang
- sudo: required
- env: MODULES_OPTIONS="--disable-module-dirauth"
+## (OSX only) Use the default OSX image
+## See https://docs.travis-ci.com/user/reference/osx#os-x-version
+## Default is Xcode 9.4 on macOS 10.13 as of August 2018
+#osx_image: xcode9.4
before_install:
- ## If we're on OSX, homebrew usually needs to updated first
- - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew update ; fi
- ## Download rustup
- - if [[ "$RUST_OPTIONS" != "" ]]; then curl -Ssf -o rustup.sh https://sh.rustup.rs; fi
- - if [[ "$COVERAGE_OPTIONS" != "" ]]; then pip install --user cpp-coveralls; fi
+ ## If we're on OSX, homebrew usually needs to be updated first
+ - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew update; fi
+ ## We might be upgrading some useless packages, but that's better than missing an upgrade
+ - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew upgrade; fi
+ ## Create empty rust directories for non-Rust builds, so caching succeeds
+ - if [[ "$RUST_OPTIONS" == "" ]]; then mkdir -p $HOME/.cargo $TRAVIS_BUILD_DIR/src/rust/target; fi
install:
+ ## If we're on OSX use brew to install ccache (ccache is automatically installed on Linux)
+ - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew install ccache; fi
+ - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then export PATH="/usr/local/opt/ccache/libexec:$PATH"; fi
## If we're on OSX use brew to install required dependencies (for Linux, see the "apt:" section above)
- - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then { brew outdated openssl || brew upgrade openssl; }; fi
- - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then { brew outdated libevent || brew upgrade libevent; }; fi
- - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then { brew outdated pkg-config || brew upgrade pkg-config; }; fi
+ - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew install libevent; fi
+ - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew install openssl; fi
+ - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew install pkg-config; fi
+ ## macOS comes with zlib by default, so the homebrew install is keg-only
+ # - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew install zlib; fi
## If we're on OSX also install the optional dependencies
- - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then { brew outdated xz || brew upgrade xz; }; fi
- - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then { brew outdated libscrypt || brew upgrade libscrypt; }; fi
- - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then { brew outdated zstd || brew upgrade zstd; }; fi
+ - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew install libscrypt; fi
+ - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew install xz; fi
+ - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew install zstd; fi
+ ## If we're on OSX, OpenSSL is keg-only, so tor 0.2.9 and later need to be configured --with-openssl-dir= to build
+ - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then OPENSSL_OPTIONS=--with-openssl-dir=`brew --prefix openssl`; fi
+ ## Install conditional features
+ ## Install coveralls
+ - if [[ "$COVERAGE_OPTIONS" != "" ]]; then pip install --user cpp-coveralls; fi
+ ## If we're on OSX, and using asciidoc, install asciidoc
+ - if [[ "$ASCIIDOC_OPTIONS" == "" ]] && [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew install asciidoc; fi
+ - if [[ "$ASCIIDOC_OPTIONS" == "" ]] && [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew install xmlto; fi
+ - if [[ "$ASCIIDOC_OPTIONS" == "" ]] && [[ "$TRAVIS_OS_NAME" == "osx" ]]; then export XML_CATALOG_FILES="/usr/local/etc/xml/catalog"; fi
+ ## If we're using Rust, download rustup
+ - if [[ "$RUST_OPTIONS" != "" ]]; then curl -Ssf -o rustup.sh https://sh.rustup.rs; fi
## Install the stable channels of rustc and cargo and setup our toolchain environment
- if [[ "$RUST_OPTIONS" != "" ]]; then sh rustup.sh -y --default-toolchain stable; fi
- if [[ "$RUST_OPTIONS" != "" ]]; then source $HOME/.cargo/env; fi
- ## Get some info about rustc and cargo
+ ## If we're testing rust builds in offline-mode, then set up our vendored dependencies
+ - if [[ "$TOR_RUST_DEPENDENCIES" == "true" ]]; then export TOR_RUST_DEPENDENCIES=$PWD/src/ext/rust/crates; fi
+ ##
+ ## Finally, list installed package versions
+ - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then dpkg-query --show; fi
+ - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew list --versions; fi
+ ## Get some info about rustup, rustc and cargo
+ - if [[ "$RUST_OPTIONS" != "" ]]; then which rustup; fi
- if [[ "$RUST_OPTIONS" != "" ]]; then which rustc; fi
- if [[ "$RUST_OPTIONS" != "" ]]; then which cargo; fi
+ - if [[ "$RUST_OPTIONS" != "" ]]; then rustup --version; fi
- if [[ "$RUST_OPTIONS" != "" ]]; then rustc --version; fi
- if [[ "$RUST_OPTIONS" != "" ]]; then cargo --version; fi
- ## If we're testing rust builds in offline-mode, then set up our vendored dependencies
- - if [[ "$TOR_RUST_DEPENDENCIES" == "true" ]]; then export TOR_RUST_DEPENDENCIES=$PWD/src/ext/rust/crates; fi
script:
- ./autogen.sh
- - ./configure $RUST_OPTIONS $COVERAGE_OPTIONS $MODULES_OPTIONS --disable-asciidoc --enable-fatal-warnings --disable-silent-rules $HARDENING_OPTIONS
+ - CONFIGURE_FLAGS="$ASCIIDOC_OPTIONS $COVERAGE_OPTIONS $HARDENING_OPTIONS $MODULES_OPTIONS $OPENSSL_OPTIONS $RUST_OPTIONS --enable-fatal-warnings --disable-silent-rules"
+ - echo $CONFIGURE_FLAGS
+ - ./configure $CONFIGURE_FLAGS
## We run `make check` because that's what https://jenkins.torproject.org does.
- if [[ "$DISTCHECK" == "" ]]; then make check; fi
- - if [[ "$DISTCHECK" != "" ]]; then make distcheck DISTCHECK_CONFIGURE_FLAGS="$RUST_OPTIONS $COVERAGE_OPTIONS --disable-asciidoc --enable-fatal-warnings --disable-silent-rules $HARDENING_OPTIONS"; fi
+ - if [[ "$DISTCHECK" != "" ]]; then make distcheck DISTCHECK_CONFIGURE_FLAGS="$CONFIGURE_FLAGS"; fi
after_failure:
+ ## configure will leave a log file with more details of config failures.
+ ## But the log is too long for travis' rendered view, so tail it.
+ - tail -1000 config.log
## `make check` will leave a log file with more details of test failures.
- if [[ "$DISTCHECK" == "" ]]; then cat test-suite.log; fi
## `make distcheck` puts it somewhere different.
@@ -174,3 +190,16 @@ after_failure:
after_success:
## If this build was one that produced coverage, upload it.
- if [[ "$COVERAGE_OPTIONS" != "" ]]; then coveralls -b . --exclude src/test --exclude src/trunnel --gcov-options '\-p'; fi
+
+notifications:
+ irc:
+ channels:
+ - "irc.oftc.net#tor-ci"
+ template:
+ - "%{repository} %{branch} %{commit} - %{author}: %{commit_subject}"
+ - "Build #%{build_number} %{result}. Details: %{build_url}"
+ on_success: change
+ on_failure: change
+ email:
+ on_success: never
+ on_failure: change
diff --git a/ChangeLog b/ChangeLog
index 55a62d5a25..25ddebc8c5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,18 +1,121 @@
-Changes in version 0.3.3.8 - 2018-07-09
- Tor 0.3.3.8 backports several changes from the 0.3.4.x series, including
- fixes for a memory leak affecting directory authorities.
+Changes in version 0.3.4.7-rc - 2018-08-24
+ Tor 0.3.4.7-rc fixes several small compilation, portability, and
+ correctness issues in previous versions of Tor. This version is a
+ release candidate: if no serious bugs are found, we expect that the
+ stable 0.3.4 release will be (almost) the same as this release.
- o Major bugfixes (directory authority, backport from 0.3.4.3-alpha):
- - Stop leaking memory on directory authorities when planning to
- vote. This bug was crashing authorities by exhausting their
- memory. Fixes bug 26435; bugfix on 0.3.3.6.
+ o Minor features (bug workaround):
+ - Compile correctly on systems that provide the C11 stdatomic.h
+ header, but where C11 atomic functions don't actually compile.
+ Closes ticket 26779; workaround for Debian issue 903709.
- o Major bugfixes (rust, testing, backport from 0.3.4.3-alpha):
- - Make sure that failing tests in Rust will actually cause the build
- to fail: previously, they were ignored. Fixes bug 26258; bugfix
- on 0.3.3.4-alpha.
+ o Minor features (continuous integration):
+ - Backport Travis rust distcheck to 0.3.3. Closes ticket 24629.
+ - Enable macOS builds in our Travis CI configuration. Closes
+ ticket 24629.
+ - Install libcap-dev and libseccomp2-dev so these optional
+ dependencies get tested on Travis CI. Closes ticket 26560.
+ - Only post Appveyor IRC notifications when the build fails.
+ Implements ticket 27275.
+ - Run asciidoc during Travis CI. Implements ticket 27087.
+ - Use ccache in our Travis CI configuration. Closes ticket 26952.
+
+ o Minor features (continuous integration, rust):
+ - Use cargo cache in our Travis CI configuration. Closes
+ ticket 26952.
- o Minor features (compilation, backport from 0.3.4.4-rc):
+ o Minor features (directory authorities):
+ - Authorities no longer vote to make the subprotocol version
+ "LinkAuth=1" a requirement: it is unsupportable with NSS, and
+ hasn't been needed since Tor 0.3.0.1-alpha. Closes ticket 27286.
+
+ o Minor features (geoip):
+ - Update geoip and geoip6 to the August 7 2018 Maxmind GeoLite2
+ Country database. Closes ticket 27089.
+
+ o Minor bugfixes (compilation, windows):
+ - Don't link or search for pthreads when building for Windows, even
+ if we are using build environment (like mingw) that provides a
+ pthreads library. Fixes bug 27081; bugfix on 0.1.0.1-rc.
+
+ o Minor bugfixes (continuous integration):
+ - Improve Appveyor CI IRC logging. Generate correct branches and
+ URLs for pull requests and tags. Use unambiguous short commits.
+ Fixes bug 26979; bugfix on master.
+ - Build with zstd on macOS. Fixes bug 27090; bugfix on 0.3.1.5-alpha.
+ - Pass the module flags to distcheck configure, and log the flags
+ before running configure. (Backported to 0.2.9 and later as a
+ precaution.) Fixes bug 27088; bugfix on 0.3.4.1-alpha.
+
+ o Minor bugfixes (in-process restart):
+ - Always call tor_free_all() when leaving tor_run_main(). When we
+ did not, restarting tor in-process would cause an assertion
+ failure. Fixes bug 26948; bugfix on 0.3.3.1-alpha.
+
+ o Minor bugfixes (linux seccomp2 sandbox):
+ - Fix a bug in out sandboxing rules for the openat() syscall.
+ Previously, no openat() call would be permitted, which would break
+ filesystem operations on recent glibc versions. Fixes bug 25440;
+ bugfix on 0.2.9.15. Diagnosis and patch from Daniel Pinto.
+
+ o Minor bugfixes (onion services):
+ - Fix bug that causes services to not ever rotate their descriptors
+ if they were getting SIGHUPed often. Fixes bug 26932; bugfix
+ on 0.3.2.1-alpha.
+
+ o Minor bugfixes (portability):
+ - Fix compilation of the unit tests on GNU/Hurd, which does not
+ define PATH_MAX. Fixes bug 26873; bugfix on 0.3.3.1-alpha. Patch
+ from "paulusASol".
+
+ o Minor bugfixes (rust):
+ - Backport test_rust.sh from master. Fixes bug 26497; bugfix
+ on 0.3.1.5-alpha.
+ - Consistently use ../../.. as a fallback for $abs_top_srcdir in
+ test_rust.sh. Fixes bug 27093; bugfix on 0.3.4.3-alpha.
+ - Protover parsing was accepting the presence of whitespace in
+ version strings, which the C implementation would choke on, e.g.
+ "Desc=1\t,2". Fixes bug 27177; bugfix on 0.3.3.5-rc.
+ - Protover parsing was ignoring a 2nd hyphen and everything after
+ it, accepting entries like "Link=1-5-foo". Fixes bug 27164; bugfix
+ on 0.3.3.1-alpha.
+ - Stop setting $CARGO_HOME. cargo will use the user's $CARGO_HOME, or
+ $HOME/.cargo by default. Fixes bug 26497; bugfix on 0.3.1.5-alpha.
+ - cd to ${abs_top_builddir}/src/rust before running cargo in
+ src/test/test_rust.sh. This makes the working directory consistent
+ between builds and tests. Fixes bug 26497; bugfix on 0.3.3.2-alpha.
+
+ o Minor bugfixes (testing, bootstrap):
+ - When calculating bootstrap progress, check exit policies and the
+ exit flag. Previously, Tor would only check the exit flag, which
+ caused race conditions in small and fast networks like chutney.
+ Fixes bug 27236; bugfix on 0.2.6.3-alpha.
+
+ o Minor bugfixes (testing, openssl compatibility):
+ - Our "tortls/cert_matches_key" unit test no longer relies on
+ OpenSSL internals. Previously, it relied on unsupported OpenSSL
+ behavior in a way that caused it to crash with OpenSSL 1.0.2p.
+ Fixes bug 27226; bugfix on 0.2.5.1-alpha.
+
+ o Minor bugfixes (Windows, compilation):
+ - Silence a compilation warning on MSVC 2017 and clang-cl. Fixes bug
+ 27185; bugfix on 0.2.2.2-alpha.
+
+
+Changes in version 0.3.4.6-rc - 2018-08-06
+ Tor 0.3.4.6-rc fixes several small compilation, portability, and
+ correctness issues in previous versions of Tor. This version is a
+ release candidate: if no serious bugs are found, we expect that the
+ stable 0.3.4 release will be (almost) the same as this release.
+
+ o Major bugfixes (event scheduler):
+ - When we enable a periodic event, schedule it in the event loop
+ rather than running it immediately. Previously, we would re-run
+ periodic events immediately in the middle of (for example)
+ changing our options, with unpredictable effects. Fixes bug 27003;
+ bugfix on 0.3.4.1-alpha.
+
+ o Minor features (compilation):
- When building Tor, prefer to use Python 3 over Python 2, and more
recent (contemplated) versions over older ones. Closes
ticket 26372.
@@ -21,17 +124,149 @@ Changes in version 0.3.3.8 - 2018-07-09
- Update geoip and geoip6 to the July 3 2018 Maxmind GeoLite2
Country database. Closes ticket 26674.
+ o Minor features (Rust, portability):
+ - Rust cross-compilation is now supported. Closes ticket 25895.
+
+ o Minor bugfixes (compilation):
+ - Fix a compilation warning on some versions of GCC when building
+ code that calls routerinfo_get_my_routerinfo() twice, assuming
+ that the second call will succeed if the first one did. Fixes bug
+ 26269; bugfix on 0.2.8.2-alpha.
+
+ o Minor bugfixes (controller):
+ - Report the port correctly when a port is configured to bind to
+ "auto". Fixes bug 26568; bugfix on 0.3.4.1-alpha.
+ - Parse the "HSADDRESS=" parameter in HSPOST commands properly.
+ Previously, it was misparsed and ignored. Fixes bug 26523; bugfix
+ on 0.3.3.1-alpha. Patch by "akwizgran".
+
+ o Minor bugfixes (correctness, flow control):
+ - Upon receiving a stream-level SENDME cell, verify that our window
+ has not grown too large. Fixes bug 26214; bugfix on svn
+ r54 (pre-0.0.1)
+
+ o Minor bugfixes (memory, correctness):
+ - Fix a number of small memory leaks identified by coverity. Fixes
+ bug 26467; bugfix on numerous Tor versions.
+
+ o Minor bugfixes (portability):
+ - Avoid a compilation error in test_bwmgt.c on Solaris 10. Fixes bug
+ 26994; bugfix on 0.3.4.1-alpha.
+
+ o Minor bugfixes (testing, compatibility):
+ - When running the ntor_ref.py and hs_ntor_ref.py tests, make sure
+ only to pass strings (rather than "bytes" objects) to the Python
+ subprocess module. Python 3 on Windows seems to require this.
+ Fixes bug 26535; bugfix on 0.2.5.5-alpha (for ntor_ref.py) and
+ 0.3.1.1-alpha (for hs_ntor_ref.py).
+
+
+Changes in version 0.3.4.5-rc - 2018-07-13
+ Tor 0.3.4.5-rc moves to a new bridge authority, meaning people running
+ bridge relays should upgrade.
+
+ o Directory authority changes:
+ - The "Bifroest" bridge authority has been retired; the new bridge
+ authority is "Serge", and it is operated by George from the
+ TorBSD project. Closes ticket 26771.
+
+
+Changes in version 0.3.3.9 - 2018-07-13
+ Tor 0.3.3.9 moves to a new bridge authority, meaning people running
+ bridge relays should upgrade.
+
+ o Directory authority changes:
+ - The "Bifroest" bridge authority has been retired; the new bridge
+ authority is "Serge", and it is operated by George from the
+ TorBSD project. Closes ticket 26771.
+
+
+Changes in version 0.3.2.11 - 2018-07-13
+ Tor 0.3.2.11 moves to a new bridge authority, meaning people running
+ bridge relays should upgrade. We also take this opportunity to backport
+ other minor fixes.
+
+ o Directory authority changes:
+ - The "Bifroest" bridge authority has been retired; the new bridge
+ authority is "Serge", and it is operated by George from the
+ TorBSD project. Closes ticket 26771.
+
+ o Directory authority changes (backport from 0.3.3.7):
+ - Add an IPv6 address for the "dannenberg" directory authority.
+ Closes ticket 26343.
+
+ o Major bugfixes (directory authorities, backport from 0.3.4.1-alpha):
+ - When directory authorities read a zero-byte bandwidth file, they
+ would previously log a warning with the contents of an
+ uninitialised buffer. They now log a warning about the empty file
+ instead. Fixes bug 26007; bugfix on 0.2.2.1-alpha.
+
+ o Major bugfixes (onion service, backport from 0.3.4.1-alpha):
+ - Correctly detect when onion services get disabled after HUP. Fixes
+ bug 25761; bugfix on 0.3.2.1.
+
+ o Minor features (sandbox, backport from 0.3.3.4-alpha):
+ - Explicitly permit the poll() system call when the Linux
+ seccomp2-based sandbox is enabled: apparently, some versions of
+ libc use poll() when calling getpwnam(). Closes ticket 25313.
+
+ o Minor feature (continuous integration, backport from 0.3.3.5-rc):
+ - Update the Travis CI configuration to use the stable Rust channel,
+ now that we have decided to require that. Closes ticket 25714.
+
+ o Minor features (continuous integration, backport from 0.3.4.1-alpha):
+ - Our .travis.yml configuration now includes support for testing the
+ results of "make distcheck". (It's not uncommon for "make check"
+ to pass but "make distcheck" to fail.) Closes ticket 25814.
+ - Our Travis CI configuration now integrates with the Coveralls
+ coverage analysis tool. Closes ticket 25818.
+
o Minor features (relay, diagnostic, backport from 0.3.4.3-alpha):
- Add several checks to detect whether Tor relays are uploading
their descriptors without specifying why they regenerated them.
Diagnostic for ticket 25686.
- o Minor bugfixes (circuit path selection, backport from 0.3.4.1-alpha):
- - Don't count path selection failures as circuit build failures.
- This change should eliminate cases where Tor blames its guard or
- the network for situations like insufficient microdescriptors
- and/or overly restrictive torrc settings. Fixes bug 25705; bugfix
- on 0.3.3.1-alpha.
+ o Minor features (compilation, backport from 0.3.4.4-rc):
+ - When building Tor, prefer to use Python 3 over Python 2, and more
+ recent (contemplated) versions over older ones. Closes
+ ticket 26372.
+
+ o Minor features (geoip):
+ - Update geoip and geoip6 to the July 3 2018 Maxmind GeoLite2
+ Country database. Closes ticket 26674.
+
+ o Minor bugfixes (correctness, client, backport from 0.3.4.1-alpha):
+ - Upon receiving a malformed connected cell, stop processing the
+ cell immediately. Previously we would mark the connection for
+ close, but continue processing the cell as if the connection were
+ open. Fixes bug 26072; bugfix on 0.2.4.7-alpha.
+
+ o Minor bugfixes (Linux seccomp2 sandbox, backport from 0.3.4.1-alpha):
+ - Allow the nanosleep() system call, which glibc uses to implement
+ sleep() and usleep(). Fixes bug 24969; bugfix on 0.2.5.1-alpha.
+
+ o Minor bugfixes (testing, compatibility, backport from 0.3.4.4-rc):
+ - When running the hs_ntor_ref.py test, make sure only to pass
+ strings (rather than "bytes" objects) to the Python subprocess
+ module. Python 3 on Windows seems to require this. Fixes bug
+ 26535; bugfix on 0.3.1.1-alpha.
+ - When running the ntor_ref.py test, make sure only to pass strings
+ (rather than "bytes" objects) to the Python subprocess module.
+ Python 3 on Windows seems to require this. Fixes bug 26535; bugfix
+ on 0.2.5.5-alpha.
+
+ o Minor bugfixes (compatibility, openssl, backport from 0.3.4.2-alpha):
+ - Work around a change in OpenSSL 1.1.1 where return values that
+ would previously indicate "no password" now indicate an empty
+ password. Without this workaround, Tor instances running with
+ OpenSSL 1.1.1 would accept descriptors that other Tor instances
+ would reject. Fixes bug 26116; bugfix on 0.2.5.16.
+
+ o Minor bugfixes (documentation, backport from 0.3.3.5-rc):
+ - Document that the PerConnBW{Rate,Burst} options will fall back to
+ their corresponding consensus parameters only if those parameters
+ are set. Previously we had claimed that these values would always
+ be set in the consensus. Fixes bug 25296; bugfix on 0.2.2.7-alpha.
o Minor bugfixes (compilation, backport from 0.3.4.4-rc):
- Fix a compilation warning on some versions of GCC when building
@@ -39,14 +274,27 @@ Changes in version 0.3.3.8 - 2018-07-09
that the second call will succeed if the first one did. Fixes bug
26269; bugfix on 0.2.8.2-alpha.
- o Minor bugfixes (control port, backport from 0.3.4.4-rc):
- - Handle the HSADDRESS= argument to the HSPOST command properly.
- (Previously, this argument was misparsed and thus ignored.) Fixes
- bug 26523; bugfix on 0.3.3.1-alpha. Patch by "akwizgran".
+ o Minor bugfixes (client, backport from 0.3.4.1-alpha):
+ - Don't consider Tor running as a client if the ControlPort is open,
+ but no actual client ports are open. Fixes bug 26062; bugfix
+ on 0.2.9.4-alpha.
- o Minor bugfixes (memory, correctness, backport from 0.3.4.4-rc):
- - Fix a number of small memory leaks identified by coverity. Fixes
- bug 26467; bugfix on numerous Tor versions.
+ o Minor bugfixes (hardening, backport from 0.3.4.2-alpha):
+ - Prevent a possible out-of-bounds smartlist read in
+ protover_compute_vote(). Fixes bug 26196; bugfix on 0.2.9.4-alpha.
+
+ o Minor bugfixes (C correctness, backport from 0.3.3.4-alpha):
+ - Fix a very unlikely (impossible, we believe) null pointer
+ dereference. Fixes bug 25629; bugfix on 0.2.9.15. Found by
+ Coverity; this is CID 1430932.
+
+ o Minor bugfixes (onion service, backport from 0.3.4.1-alpha):
+ - Fix a memory leak when a v3 onion service is configured and gets a
+ SIGHUP signal. Fixes bug 25901; bugfix on 0.3.2.1-alpha.
+ - When parsing the descriptor signature, look for the token plus an
+ extra white-space at the end. This is more correct but also will
+ allow us to support new fields that might start with "signature".
+ Fixes bug 26069; bugfix on 0.3.0.1-alpha.
o Minor bugfixes (relay, backport from 0.3.4.3-alpha):
- Relays now correctly block attempts to re-extend to the previous
@@ -54,21 +302,126 @@ Changes in version 0.3.3.8 - 2018-07-09
case, but not actually reject the attempt. Fixes bug 26158; bugfix
on 0.3.0.1-alpha.
- o Minor bugfixes (restart-in-process, backport from 0.3.4.1-alpha):
- - When shutting down, Tor now clears all the flags in the control.c
- module. This should prevent a bug where authentication cookies are
- not generated on restart. Fixes bug 25512; bugfix on 0.3.3.1-alpha.
+ o Minor bugfixes (relay, crash, backport from 0.3.4.1-alpha):
+ - Avoid a crash when running with DirPort set but ORPort turned off.
+ Fixes a case of bug 23693; bugfix on 0.3.1.1-alpha.
+
+ o Minor bugfixes (compilation, backport from 0.3.4.2-alpha):
+ - Silence unused-const-variable warnings in zstd.h with some GCC
+ versions. Fixes bug 26272; bugfix on 0.3.1.1-alpha.
+
+ o Minor bugfixes (testing, backport from 0.3.3.4-alpha):
+ - Avoid intermittent test failures due to a test that had relied on
+ onion service introduction point creation finishing within 5
+ seconds of real clock time. Fixes bug 25450; bugfix
+ on 0.3.1.3-alpha.
+
+ o Minor bugfixes (compilation, backport from 0.3.3.4-alpha):
+ - Fix a C99 compliance issue in our configuration script that caused
+ compilation issues when compiling Tor with certain versions of
+ xtools. Fixes bug 25474; bugfix on 0.3.2.5-alpha.
+
+ o Minor bugfixes (memory, correctness, backport from 0.3.4.4-rc):
+ - Fix a number of small memory leaks identified by coverity. Fixes
+ bug 26467; bugfix on numerous Tor versions.
+
+ o Code simplification and refactoring (backport from 0.3.3.5-rc):
+ - Move the list of default directory authorities to its own file.
+ Closes ticket 24854. Patch by "beastr0".
+
+
+Changes in version 0.2.9.16 - 2018-07-13
+ Tor 0.2.9.16 moves to a new bridge authority, meaning people running
+ bridge relays should upgrade. We also take this opportunity to backport
+ other minor fixes.
+
+ o Directory authority changes:
+ - The "Bifroest" bridge authority has been retired; the new bridge
+ authority is "Serge", and it is operated by George from the
+ TorBSD project. Closes ticket 26771.
+
+ o Directory authority changes (backport from 0.3.3.7):
+ - Add an IPv6 address for the "dannenberg" directory authority.
+ Closes ticket 26343.
+
+ o Major bugfixes (directory authorities, backport from 0.3.4.1-alpha):
+ - When directory authorities read a zero-byte bandwidth file, they
+ would previously log a warning with the contents of an
+ uninitialised buffer. They now log a warning about the empty file
+ instead. Fixes bug 26007; bugfix on 0.2.2.1-alpha.
+
+ o Minor features (sandbox, backport from 0.3.3.4-alpha):
+ - Explicitly permit the poll() system call when the Linux
+ seccomp2-based sandbox is enabled: apparently, some versions of
+ libc use poll() when calling getpwnam(). Closes ticket 25313.
+
+ o Minor features (continuous integration, backport from 0.3.4.1-alpha):
+ - Our .travis.yml configuration now includes support for testing the
+ results of "make distcheck". (It's not uncommon for "make check"
+ to pass but "make distcheck" to fail.) Closes ticket 25814.
+ - Our Travis CI configuration now integrates with the Coveralls
+ coverage analysis tool. Closes ticket 25818.
+
+ o Minor features (compilation, backport from 0.3.4.4-rc):
+ - When building Tor, prefer to use Python 3 over Python 2, and more
+ recent (contemplated) versions over older ones. Closes
+ ticket 26372.
+
+ o Minor features (geoip):
+ - Update geoip and geoip6 to the July 3 2018 Maxmind GeoLite2
+ Country database. Closes ticket 26674.
+
+ o Minor bugfixes (correctness, client, backport from 0.3.4.1-alpha):
+ - Upon receiving a malformed connected cell, stop processing the
+ cell immediately. Previously we would mark the connection for
+ close, but continue processing the cell as if the connection were
+ open. Fixes bug 26072; bugfix on 0.2.4.7-alpha.
+
+ o Minor bugfixes (Linux seccomp2 sandbox, backport from 0.3.4.1-alpha):
+ - Allow the nanosleep() system call, which glibc uses to implement
+ sleep() and usleep(). Fixes bug 24969; bugfix on 0.2.5.1-alpha.
o Minor bugfixes (testing, compatibility, backport from 0.3.4.4-rc):
- - When running the hs_ntor_ref.py test, make sure only to pass
- strings (rather than "bytes" objects) to the Python subprocess
- module. Python 3 on Windows seems to require this. Fixes bug
- 26535; bugfix on 0.3.1.1-alpha.
- When running the ntor_ref.py test, make sure only to pass strings
(rather than "bytes" objects) to the Python subprocess module.
Python 3 on Windows seems to require this. Fixes bug 26535; bugfix
on 0.2.5.5-alpha.
+ o Minor bugfixes (compatibility, openssl, backport from 0.3.4.2-alpha):
+ - Work around a change in OpenSSL 1.1.1 where return values that
+ would previously indicate "no password" now indicate an empty
+ password. Without this workaround, Tor instances running with
+ OpenSSL 1.1.1 would accept descriptors that other Tor instances
+ would reject. Fixes bug 26116; bugfix on 0.2.5.16.
+
+ o Minor bugfixes (compilation, backport from 0.3.4.4-rc):
+ - Fix a compilation warning on some versions of GCC when building
+ code that calls routerinfo_get_my_routerinfo() twice, assuming
+ that the second call will succeed if the first one did. Fixes bug
+ 26269; bugfix on 0.2.8.2-alpha.
+
+ o Minor bugfixes (client, backport from 0.3.4.1-alpha):
+ - Don't consider Tor running as a client if the ControlPort is open,
+ but no actual client ports are open. Fixes bug 26062; bugfix
+ on 0.2.9.4-alpha.
+
+ o Minor bugfixes (hardening, backport from 0.3.4.2-alpha):
+ - Prevent a possible out-of-bounds smartlist read in
+ protover_compute_vote(). Fixes bug 26196; bugfix on 0.2.9.4-alpha.
+
+ o Minor bugfixes (C correctness, backport from 0.3.3.4-alpha):
+ - Fix a very unlikely (impossible, we believe) null pointer
+ dereference. Fixes bug 25629; bugfix on 0.2.9.15. Found by
+ Coverity; this is CID 1430932.
+
+ o Minor bugfixes (memory, correctness, backport from 0.3.4.4-rc):
+ - Fix a number of small memory leaks identified by coverity. Fixes
+ bug 26467; bugfix on numerous Tor versions.
+
+ o Code simplification and refactoring (backport from 0.3.3.5-rc):
+ - Move the list of default directory authorities to its own file.
+ Closes ticket 24854. Patch by "beastr0".
+
Changes in version 0.3.4.4-rc - 2018-07-09
Tor 0.3.4.4-rc fixes several small compilation, portability, and
@@ -121,6 +474,78 @@ Changes in version 0.3.4.4-rc - 2018-07-09
on 0.2.5.5-alpha.
+Changes in version 0.3.3.8 - 2018-07-09
+ Tor 0.3.3.8 backports several changes from the 0.3.4.x series, including
+ fixes for a memory leak affecting directory authorities.
+
+ o Major bugfixes (directory authority, backport from 0.3.4.3-alpha):
+ - Stop leaking memory on directory authorities when planning to
+ vote. This bug was crashing authorities by exhausting their
+ memory. Fixes bug 26435; bugfix on 0.3.3.6.
+
+ o Major bugfixes (rust, testing, backport from 0.3.4.3-alpha):
+ - Make sure that failing tests in Rust will actually cause the build
+ to fail: previously, they were ignored. Fixes bug 26258; bugfix
+ on 0.3.3.4-alpha.
+
+ o Minor features (compilation, backport from 0.3.4.4-rc):
+ - When building Tor, prefer to use Python 3 over Python 2, and more
+ recent (contemplated) versions over older ones. Closes
+ ticket 26372.
+
+ o Minor features (geoip):
+ - Update geoip and geoip6 to the July 3 2018 Maxmind GeoLite2
+ Country database. Closes ticket 26674.
+
+ o Minor features (relay, diagnostic, backport from 0.3.4.3-alpha):
+ - Add several checks to detect whether Tor relays are uploading
+ their descriptors without specifying why they regenerated them.
+ Diagnostic for ticket 25686.
+
+ o Minor bugfixes (circuit path selection, backport from 0.3.4.1-alpha):
+ - Don't count path selection failures as circuit build failures.
+ This change should eliminate cases where Tor blames its guard or
+ the network for situations like insufficient microdescriptors
+ and/or overly restrictive torrc settings. Fixes bug 25705; bugfix
+ on 0.3.3.1-alpha.
+
+ o Minor bugfixes (compilation, backport from 0.3.4.4-rc):
+ - Fix a compilation warning on some versions of GCC when building
+ code that calls routerinfo_get_my_routerinfo() twice, assuming
+ that the second call will succeed if the first one did. Fixes bug
+ 26269; bugfix on 0.2.8.2-alpha.
+
+ o Minor bugfixes (control port, backport from 0.3.4.4-rc):
+ - Handle the HSADDRESS= argument to the HSPOST command properly.
+ (Previously, this argument was misparsed and thus ignored.) Fixes
+ bug 26523; bugfix on 0.3.3.1-alpha. Patch by "akwizgran".
+
+ o Minor bugfixes (memory, correctness, backport from 0.3.4.4-rc):
+ - Fix a number of small memory leaks identified by coverity. Fixes
+ bug 26467; bugfix on numerous Tor versions.
+
+ o Minor bugfixes (relay, backport from 0.3.4.3-alpha):
+ - Relays now correctly block attempts to re-extend to the previous
+ relay by Ed25519 identity. Previously they would warn in this
+ case, but not actually reject the attempt. Fixes bug 26158; bugfix
+ on 0.3.0.1-alpha.
+
+ o Minor bugfixes (restart-in-process, backport from 0.3.4.1-alpha):
+ - When shutting down, Tor now clears all the flags in the control.c
+ module. This should prevent a bug where authentication cookies are
+ not generated on restart. Fixes bug 25512; bugfix on 0.3.3.1-alpha.
+
+ o Minor bugfixes (testing, compatibility, backport from 0.3.4.4-rc):
+ - When running the hs_ntor_ref.py test, make sure only to pass
+ strings (rather than "bytes" objects) to the Python subprocess
+ module. Python 3 on Windows seems to require this. Fixes bug
+ 26535; bugfix on 0.3.1.1-alpha.
+ - When running the ntor_ref.py test, make sure only to pass strings
+ (rather than "bytes" objects) to the Python subprocess module.
+ Python 3 on Windows seems to require this. Fixes bug 26535; bugfix
+ on 0.2.5.5-alpha.
+
+
Changes in version 0.3.4.3-alpha - 2018-06-26
Tor 0.3.4.3-alpha fixes several bugs in earlier versions, including
one that was causing stability issues on directory authorities.
@@ -388,7 +813,7 @@ Changes in version 0.3.3.6 - 2018-05-22
Fixes bug 26069; bugfix on 0.3.0.1-alpha.
o Minor bugfixes (relay, crash, backport from 0.3.4.1-alpha):
- - Avoid a crash when running with DirPort set but ORPort tuned off.
+ - Avoid a crash when running with DirPort set but ORPort turned off.
Fixes a case of bug 23693; bugfix on 0.3.1.1-alpha.
o Documentation (backport from 0.3.4.1-alpha):
@@ -691,7 +1116,7 @@ Changes in version 0.3.4.1-alpha - 2018-05-17
here.) Fixes bug 24910; bugfix on 0.2.4.17-rc.
o Minor bugfixes (relay, crash):
- - Avoid a crash when running with DirPort set but ORPort tuned off.
+ - Avoid a crash when running with DirPort set but ORPort turned off.
Fixes a case of bug 23693; bugfix on 0.3.1.1-alpha.
o Minor bugfixes (restart-in-process):
diff --git a/INSTALL b/INSTALL
index ddb790b0b1..f493f4ed3d 100644
--- a/INSTALL
+++ b/INSTALL
@@ -16,37 +16,3 @@ If it doesn't build for you:
./configure --with-libevent-dir=/usr/local
rather than simply ./configure.
- If you have mysterious autoconf failures while linking openssl,
- consider setting your LD_LIBRARY_PATH to the openssl lib directory.
- For example, "setenv LD_LIBRARY_PATH /usr/athena/lib".
-
- Lastly, check out
- https://www.torproject.org/docs/faq#DoesntWork
-
-How to do static builds of tor:
-
-Tor supports linking each of the libraries it needs statically. Use the
---enable-static-X ./configure option in conjunction with the --with-X-dir
-option for libevent, zlib, and openssl. For this to work sanely, libevent
-should be built with --disable-shared --enable-static --with-pic, and
-OpenSSL should be built with no-shared no-dso.
-
-If you need to build tor so that system libraries are also statically linked,
-use the --enable-static-tor ./configure option. This won't work on OS X
-unless you build the required crt0.o yourself. It is also incompatible with
-the --enable-gcc-hardening option.
-
-An example of how to build a mostly static tor:
-./configure --enable-static-libevent \
- --enable-static-openssl \
- --enable-static-zlib \
- --with-libevent-dir=/tmp/static-tor/libevent-1.4.14b-stable \
- --with-openssl-dir=/tmp/static-tor/openssl-0.9.8r/ \
- --with-zlib-dir=/tmp/static-tor/zlib-1.2.5
-
-An example of how to build an entirely static tor:
-./configure --enable-static-tor \
- --with-libevent-dir=/tmp/static-tor/libevent-1.4.14b-stable \
- --with-openssl-dir=/tmp/static-tor/openssl-0.9.8r/ \
- --with-zlib-dir=/tmp/static-tor/zlib-1.2.5
-
diff --git a/LICENSE b/LICENSE
index 057ae57652..9e2709aea6 100644
--- a/LICENSE
+++ b/LICENSE
@@ -156,6 +156,36 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
===============================================================================
+getdelim.c is distributed under this license:
+
+ Copyright (c) 2011 The NetBSD Foundation, Inc.
+ All rights reserved.
+
+ This code is derived from software contributed to The NetBSD Foundation
+ by Christos Zoulas.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+
+===============================================================================
src/config/geoip is licensed under the following license:
OPEN DATA LICENSE (GeoLite Country and GeoLite City databases)
diff --git a/Makefile.am b/Makefile.am
index 0f934cf0f2..35f9841e61 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -66,6 +66,7 @@ TOR_UTIL_LIBS = \
# Variants of the above for linking the testing variant of tor (for coverage
# and tests)
+if UNITTESTS_ENABLED
TOR_UTIL_TESTING_LIBS = \
src/lib/libtor-process-testing.a \
src/lib/libtor-time-testing.a \
@@ -90,6 +91,7 @@ TOR_UTIL_TESTING_LIBS = \
src/lib/libtor-err-testing.a \
src/lib/libtor-intmath.a \
src/lib/libtor-ctime-testing.a
+endif
# Internal crypto libraries used in Tor
TOR_CRYPTO_LIBS = \
@@ -100,11 +102,13 @@ TOR_CRYPTO_LIBS = \
# Variants of the above for linking the testing variant of tor (for coverage
# and tests)
+if UNITTESTS_ENABLED
TOR_CRYPTO_TESTING_LIBS = \
src/lib/libtor-tls-testing.a \
src/lib/libtor-crypt-ops-testing.a \
$(LIBKECCAK_TINY) \
$(LIBDONNA)
+endif
# All static libraries used to link tor.
TOR_INTERNAL_LIBS = \
@@ -118,6 +122,7 @@ TOR_INTERNAL_LIBS = \
# Variants of the above for linking the testing variant of tor (for coverage
# and tests)
+if UNITTESTS_ENABLED
TOR_INTERNAL_TESTING_LIBS = \
src/core/libtor-app-testing.a \
src/lib/libtor-compress-testing.a \
@@ -126,6 +131,7 @@ TOR_INTERNAL_TESTING_LIBS = \
$(TOR_UTIL_TESTING_LIBS) \
src/trunnel/libor-trunnel-testing.a \
src/lib/libtor-trace.a
+endif
# All libraries used to link tor-cov
@@ -197,7 +203,7 @@ doxygen:
test: all
$(top_builddir)/src/test/test
-check-local: check-spaces check-changes
+check-local: check-spaces check-changes check-includes
need-chutney-path:
@if test ! -d "$$CHUTNEY_PATH"; then \
@@ -314,7 +320,7 @@ endif
check-includes:
if USEPYTHON
- $(top_srcdir)/scripts/maint/checkIncludes.py
+ $(PYTHON) $(top_srcdir)/scripts/maint/checkIncludes.py
endif
check-docs: all
@@ -344,6 +350,37 @@ check-typos:
echo "You can install the latest version of misspell here: https://github.com/client9/misspell#install"; \
fi
+.PHONY: rustfmt
+rustfmt:
+if USE_RUST
+ @if test -x "`which cargo-fmt 2>&1;true`"; then \
+ echo "Formatting Rust code ..."; \
+ (cd "$(top_srcdir)/src/rust" && cargo fmt --all --); \
+ else \
+ echo "Tor uses rustfmt (via cargo-fmt) to format Rust code."; \
+ echo "However, it seems that you don't have rustfmt installed."; \
+ printf "You can install rustfmt by following the directions here:"; \
+ echo " https://github.com/rust-lang-nursery/rustfmt"; \
+ fi
+endif
+
+.PHONY: check-rustfmt
+check-rustfmt:
+if USE_RUST
+ @if test -x "`which cargo-fmt 2>&1;true`"; then \
+ printf "Running rustfmt..."; \
+ (cd "$(top_srcdir)/src/rust" && cargo fmt --all -- --check && echo "done.") || \
+ (echo "**************** check-rustfmt failed. ****************"; \
+ echo " Run \`make rustfmt\` to apply the above changes."; \
+ exit 1); \
+ else \
+ echo "Tor uses rustfmt (via cargo-fmt) to format Rust code."; \
+ echo "However, it seems that you don't have rustfmt installed."; \
+ printf "You can install rustfmt by following the directions here:"; \
+ echo " https://github.com/rust-lang-nursery/rustfmt"; \
+ fi
+endif
+
.PHONY: clippy
clippy:
if USE_RUST
diff --git a/ReleaseNotes b/ReleaseNotes
index 600b3c5e0a..d9272a880e 100644
--- a/ReleaseNotes
+++ b/ReleaseNotes
@@ -2,6 +2,258 @@ This document summarizes new features and bugfixes in each stable
release of Tor. If you want to see more detailed descriptions of the
changes in each development snapshot, see the ChangeLog file.
+Changes in version 0.3.3.9 - 2018-07-13
+ Tor 0.3.3.9 moves to a new bridge authority, meaning people running
+ bridge relays should upgrade.
+
+ o Directory authority changes:
+ - The "Bifroest" bridge authority has been retired; the new bridge
+ authority is "Serge", and it is operated by George from the
+ TorBSD project. Closes ticket 26771.
+
+
+Changes in version 0.3.2.11 - 2018-07-13
+ Tor 0.3.2.11 moves to a new bridge authority, meaning people running
+ bridge relays should upgrade. We also take this opportunity to backport
+ other minor fixes.
+
+ o Directory authority changes:
+ - The "Bifroest" bridge authority has been retired; the new bridge
+ authority is "Serge", and it is operated by George from the
+ TorBSD project. Closes ticket 26771.
+
+ o Directory authority changes (backport from 0.3.3.7):
+ - Add an IPv6 address for the "dannenberg" directory authority.
+ Closes ticket 26343.
+
+ o Major bugfixes (directory authorities, backport from 0.3.4.1-alpha):
+ - When directory authorities read a zero-byte bandwidth file, they
+ would previously log a warning with the contents of an
+ uninitialised buffer. They now log a warning about the empty file
+ instead. Fixes bug 26007; bugfix on 0.2.2.1-alpha.
+
+ o Major bugfixes (onion service, backport from 0.3.4.1-alpha):
+ - Correctly detect when onion services get disabled after HUP. Fixes
+ bug 25761; bugfix on 0.3.2.1.
+
+ o Minor features (sandbox, backport from 0.3.3.4-alpha):
+ - Explicitly permit the poll() system call when the Linux
+ seccomp2-based sandbox is enabled: apparently, some versions of
+ libc use poll() when calling getpwnam(). Closes ticket 25313.
+
+ o Minor feature (continuous integration, backport from 0.3.3.5-rc):
+ - Update the Travis CI configuration to use the stable Rust channel,
+ now that we have decided to require that. Closes ticket 25714.
+
+ o Minor features (continuous integration, backport from 0.3.4.1-alpha):
+ - Our .travis.yml configuration now includes support for testing the
+ results of "make distcheck". (It's not uncommon for "make check"
+ to pass but "make distcheck" to fail.) Closes ticket 25814.
+ - Our Travis CI configuration now integrates with the Coveralls
+ coverage analysis tool. Closes ticket 25818.
+
+ o Minor features (relay, diagnostic, backport from 0.3.4.3-alpha):
+ - Add several checks to detect whether Tor relays are uploading
+ their descriptors without specifying why they regenerated them.
+ Diagnostic for ticket 25686.
+
+ o Minor features (compilation, backport from 0.3.4.4-rc):
+ - When building Tor, prefer to use Python 3 over Python 2, and more
+ recent (contemplated) versions over older ones. Closes
+ ticket 26372.
+
+ o Minor features (geoip):
+ - Update geoip and geoip6 to the July 3 2018 Maxmind GeoLite2
+ Country database. Closes ticket 26674.
+
+ o Minor bugfixes (correctness, client, backport from 0.3.4.1-alpha):
+ - Upon receiving a malformed connected cell, stop processing the
+ cell immediately. Previously we would mark the connection for
+ close, but continue processing the cell as if the connection were
+ open. Fixes bug 26072; bugfix on 0.2.4.7-alpha.
+
+ o Minor bugfixes (Linux seccomp2 sandbox, backport from 0.3.4.1-alpha):
+ - Allow the nanosleep() system call, which glibc uses to implement
+ sleep() and usleep(). Fixes bug 24969; bugfix on 0.2.5.1-alpha.
+
+ o Minor bugfixes (testing, compatibility, backport from 0.3.4.4-rc):
+ - When running the hs_ntor_ref.py test, make sure only to pass
+ strings (rather than "bytes" objects) to the Python subprocess
+ module. Python 3 on Windows seems to require this. Fixes bug
+ 26535; bugfix on 0.3.1.1-alpha.
+ - When running the ntor_ref.py test, make sure only to pass strings
+ (rather than "bytes" objects) to the Python subprocess module.
+ Python 3 on Windows seems to require this. Fixes bug 26535; bugfix
+ on 0.2.5.5-alpha.
+
+ o Minor bugfixes (compatibility, openssl, backport from 0.3.4.2-alpha):
+ - Work around a change in OpenSSL 1.1.1 where return values that
+ would previously indicate "no password" now indicate an empty
+ password. Without this workaround, Tor instances running with
+ OpenSSL 1.1.1 would accept descriptors that other Tor instances
+ would reject. Fixes bug 26116; bugfix on 0.2.5.16.
+
+ o Minor bugfixes (documentation, backport from 0.3.3.5-rc):
+ - Document that the PerConnBW{Rate,Burst} options will fall back to
+ their corresponding consensus parameters only if those parameters
+ are set. Previously we had claimed that these values would always
+ be set in the consensus. Fixes bug 25296; bugfix on 0.2.2.7-alpha.
+
+ o Minor bugfixes (compilation, backport from 0.3.4.4-rc):
+ - Fix a compilation warning on some versions of GCC when building
+ code that calls routerinfo_get_my_routerinfo() twice, assuming
+ that the second call will succeed if the first one did. Fixes bug
+ 26269; bugfix on 0.2.8.2-alpha.
+
+ o Minor bugfixes (client, backport from 0.3.4.1-alpha):
+ - Don't consider Tor running as a client if the ControlPort is open,
+ but no actual client ports are open. Fixes bug 26062; bugfix
+ on 0.2.9.4-alpha.
+
+ o Minor bugfixes (hardening, backport from 0.3.4.2-alpha):
+ - Prevent a possible out-of-bounds smartlist read in
+ protover_compute_vote(). Fixes bug 26196; bugfix on 0.2.9.4-alpha.
+
+ o Minor bugfixes (C correctness, backport from 0.3.3.4-alpha):
+ - Fix a very unlikely (impossible, we believe) null pointer
+ dereference. Fixes bug 25629; bugfix on 0.2.9.15. Found by
+ Coverity; this is CID 1430932.
+
+ o Minor bugfixes (onion service, backport from 0.3.4.1-alpha):
+ - Fix a memory leak when a v3 onion service is configured and gets a
+ SIGHUP signal. Fixes bug 25901; bugfix on 0.3.2.1-alpha.
+ - When parsing the descriptor signature, look for the token plus an
+ extra white-space at the end. This is more correct but also will
+ allow us to support new fields that might start with "signature".
+ Fixes bug 26069; bugfix on 0.3.0.1-alpha.
+
+ o Minor bugfixes (relay, backport from 0.3.4.3-alpha):
+ - Relays now correctly block attempts to re-extend to the previous
+ relay by Ed25519 identity. Previously they would warn in this
+ case, but not actually reject the attempt. Fixes bug 26158; bugfix
+ on 0.3.0.1-alpha.
+
+ o Minor bugfixes (relay, crash, backport from 0.3.4.1-alpha):
+ - Avoid a crash when running with DirPort set but ORPort turned off.
+ Fixes a case of bug 23693; bugfix on 0.3.1.1-alpha.
+
+ o Minor bugfixes (compilation, backport from 0.3.4.2-alpha):
+ - Silence unused-const-variable warnings in zstd.h with some GCC
+ versions. Fixes bug 26272; bugfix on 0.3.1.1-alpha.
+
+ o Minor bugfixes (testing, backport from 0.3.3.4-alpha):
+ - Avoid intermittent test failures due to a test that had relied on
+ onion service introduction point creation finishing within 5
+ seconds of real clock time. Fixes bug 25450; bugfix
+ on 0.3.1.3-alpha.
+
+ o Minor bugfixes (compilation, backport from 0.3.3.4-alpha):
+ - Fix a C99 compliance issue in our configuration script that caused
+ compilation issues when compiling Tor with certain versions of
+ xtools. Fixes bug 25474; bugfix on 0.3.2.5-alpha.
+
+ o Minor bugfixes (memory, correctness, backport from 0.3.4.4-rc):
+ - Fix a number of small memory leaks identified by coverity. Fixes
+ bug 26467; bugfix on numerous Tor versions.
+
+ o Code simplification and refactoring (backport from 0.3.3.5-rc):
+ - Move the list of default directory authorities to its own file.
+ Closes ticket 24854. Patch by "beastr0".
+
+
+Changes in version 0.2.9.16 - 2018-07-13
+ Tor 0.2.9.16 moves to a new bridge authority, meaning people running
+ bridge relays should upgrade. We also take this opportunity to backport
+ other minor fixes.
+
+ o Directory authority changes:
+ - The "Bifroest" bridge authority has been retired; the new bridge
+ authority is "Serge", and it is operated by George from the
+ TorBSD project. Closes ticket 26771.
+
+ o Directory authority changes (backport from 0.3.3.7):
+ - Add an IPv6 address for the "dannenberg" directory authority.
+ Closes ticket 26343.
+
+ o Major bugfixes (directory authorities, backport from 0.3.4.1-alpha):
+ - When directory authorities read a zero-byte bandwidth file, they
+ would previously log a warning with the contents of an
+ uninitialised buffer. They now log a warning about the empty file
+ instead. Fixes bug 26007; bugfix on 0.2.2.1-alpha.
+
+ o Minor features (sandbox, backport from 0.3.3.4-alpha):
+ - Explicitly permit the poll() system call when the Linux
+ seccomp2-based sandbox is enabled: apparently, some versions of
+ libc use poll() when calling getpwnam(). Closes ticket 25313.
+
+ o Minor features (continuous integration, backport from 0.3.4.1-alpha):
+ - Our .travis.yml configuration now includes support for testing the
+ results of "make distcheck". (It's not uncommon for "make check"
+ to pass but "make distcheck" to fail.) Closes ticket 25814.
+ - Our Travis CI configuration now integrates with the Coveralls
+ coverage analysis tool. Closes ticket 25818.
+
+ o Minor features (compilation, backport from 0.3.4.4-rc):
+ - When building Tor, prefer to use Python 3 over Python 2, and more
+ recent (contemplated) versions over older ones. Closes
+ ticket 26372.
+
+ o Minor features (geoip):
+ - Update geoip and geoip6 to the July 3 2018 Maxmind GeoLite2
+ Country database. Closes ticket 26674.
+
+ o Minor bugfixes (correctness, client, backport from 0.3.4.1-alpha):
+ - Upon receiving a malformed connected cell, stop processing the
+ cell immediately. Previously we would mark the connection for
+ close, but continue processing the cell as if the connection were
+ open. Fixes bug 26072; bugfix on 0.2.4.7-alpha.
+
+ o Minor bugfixes (Linux seccomp2 sandbox, backport from 0.3.4.1-alpha):
+ - Allow the nanosleep() system call, which glibc uses to implement
+ sleep() and usleep(). Fixes bug 24969; bugfix on 0.2.5.1-alpha.
+
+ o Minor bugfixes (testing, compatibility, backport from 0.3.4.4-rc):
+ - When running the ntor_ref.py test, make sure only to pass strings
+ (rather than "bytes" objects) to the Python subprocess module.
+ Python 3 on Windows seems to require this. Fixes bug 26535; bugfix
+ on 0.2.5.5-alpha.
+
+ o Minor bugfixes (compatibility, openssl, backport from 0.3.4.2-alpha):
+ - Work around a change in OpenSSL 1.1.1 where return values that
+ would previously indicate "no password" now indicate an empty
+ password. Without this workaround, Tor instances running with
+ OpenSSL 1.1.1 would accept descriptors that other Tor instances
+ would reject. Fixes bug 26116; bugfix on 0.2.5.16.
+
+ o Minor bugfixes (compilation, backport from 0.3.4.4-rc):
+ - Fix a compilation warning on some versions of GCC when building
+ code that calls routerinfo_get_my_routerinfo() twice, assuming
+ that the second call will succeed if the first one did. Fixes bug
+ 26269; bugfix on 0.2.8.2-alpha.
+
+ o Minor bugfixes (client, backport from 0.3.4.1-alpha):
+ - Don't consider Tor running as a client if the ControlPort is open,
+ but no actual client ports are open. Fixes bug 26062; bugfix
+ on 0.2.9.4-alpha.
+
+ o Minor bugfixes (hardening, backport from 0.3.4.2-alpha):
+ - Prevent a possible out-of-bounds smartlist read in
+ protover_compute_vote(). Fixes bug 26196; bugfix on 0.2.9.4-alpha.
+
+ o Minor bugfixes (C correctness, backport from 0.3.3.4-alpha):
+ - Fix a very unlikely (impossible, we believe) null pointer
+ dereference. Fixes bug 25629; bugfix on 0.2.9.15. Found by
+ Coverity; this is CID 1430932.
+
+ o Minor bugfixes (memory, correctness, backport from 0.3.4.4-rc):
+ - Fix a number of small memory leaks identified by coverity. Fixes
+ bug 26467; bugfix on numerous Tor versions.
+
+ o Code simplification and refactoring (backport from 0.3.3.5-rc):
+ - Move the list of default directory authorities to its own file.
+ Closes ticket 24854. Patch by "beastr0".
+
+
Changes in version 0.3.3.8 - 2018-07-09
Tor 0.3.3.8 backports several changes from the 0.3.4.x series, including
fixes for a memory leak affecting directory authorities.
@@ -634,7 +886,7 @@ Changes in version 0.3.3.6 - 2018-05-22
hop. Fixes bug 23100; bugfix on 0.2.2.2-alpha.
o Minor bugfixes (relay, crash, backport from 0.3.4.1-alpha):
- - Avoid a crash when running with DirPort set but ORPort tuned off.
+ - Avoid a crash when running with DirPort set but ORPort turned off.
Fixes a case of bug 23693; bugfix on 0.3.1.1-alpha.
o Minor bugfixes (Rust FFI):
diff --git a/changes/27286 b/changes/27286
new file mode 100644
index 0000000000..5f5f7a4ae7
--- /dev/null
+++ b/changes/27286
@@ -0,0 +1,4 @@
+ o Minor features (directory authorities):
+ - Authorities no longer vote to make the subprotocol version "LinkAuth=1"
+ a requirement: it is unsupportable with NSS, and hasn't been needed
+ since Tor 0.3.0.1-alpha. Closes ticket 27286.
diff --git a/changes/bug15518 b/changes/bug15518
new file mode 100644
index 0000000000..13ed4f527e
--- /dev/null
+++ b/changes/bug15518
@@ -0,0 +1,6 @@
+ o Minor bugfixes (ipv6):
+ - In addrs_in_same_network_family(), we choose the subnet size based
+ on the IP version (IPv4 or IPv6). Previously, we chose a fixed subnet
+ size of /16 for both IPv4 and IPv6 addresses. Fixes bug 15518; bugfix
+ on 0.3.5.1-alpha. Patch by Neel Chauhan.
+
diff --git a/changes/bug18642 b/changes/bug18642
new file mode 100644
index 0000000000..6b71f3c6dd
--- /dev/null
+++ b/changes/bug18642
@@ -0,0 +1,5 @@
+ o Minor features (denial-of-service avoidance):
+ - Make our OOM handler aware of the DNS cache so that it doesn't fill up
+ the memory. This check is important for our DoS mitigation subsystem.
+ Closes ticket 18642. Patch by Neel Chauhan
+
diff --git a/changes/bug20874 b/changes/bug20874
new file mode 100644
index 0000000000..ebec999224
--- /dev/null
+++ b/changes/bug20874
@@ -0,0 +1,7 @@
+ o Minor bugfixes (client, reachableaddresses):
+ - Instead of adding an "reject *:*" line to ReachableAddresses when
+ loading the configuration, add one to the policy after parsing it
+ in parse_reachable_addresses(). This prevents extra "reject *.*"
+ lines from accumulating on reloads. Fixes bug 20874; bugfix on
+ 0.3.5.1-alpha. Patch by Neel Chauhan.
+
diff --git a/changes/bug24312 b/changes/bug24312
new file mode 100644
index 0000000000..f049c0e7e6
--- /dev/null
+++ b/changes/bug24312
@@ -0,0 +1,4 @@
+ o Minor bugfixes (relays):
+ - Since 0.3.3.5-rc, authorities require DirCache (V2Dir) for the Guard
+ flag. Update the message logged on relays when DirCache is disabled.
+ Fixes bug 24312; bugfix on 0.3.3.5-rc.
diff --git a/changes/bug25552 b/changes/bug25552
new file mode 100644
index 0000000000..8d0488a462
--- /dev/null
+++ b/changes/bug25552
@@ -0,0 +1,5 @@
+ o Major feature (onion services):
+ - Improve revision counter generation in next-gen onion services. Onion
+ services can now scale by hosting multiple instances on different hosts
+ without synchronization between them, which was previously impossible
+ because descriptors would get rejected by HSDirs. Addresses ticket 25552.
diff --git a/changes/bug26223 b/changes/bug26223
new file mode 100644
index 0000000000..e17b0529e3
--- /dev/null
+++ b/changes/bug26223
@@ -0,0 +1,3 @@
+ o Minor features (directory authority):
+ - There is no longer an artificial upper limit on the length of bandwidth
+ lines. Closes ticket 26223.
diff --git a/changes/bug26437 b/changes/bug26437
new file mode 100644
index 0000000000..da4879b6d0
--- /dev/null
+++ b/changes/bug26437
@@ -0,0 +1,3 @@
+ o Testing:
+ - Fix forking tests on Windows when there is a space somewhere in the path.
+ Fixes bug 26437; bugfix on 0.2.2.4-alpha.
diff --git a/changes/bug26502 b/changes/bug26502
new file mode 100644
index 0000000000..16d19095d3
--- /dev/null
+++ b/changes/bug26502
@@ -0,0 +1,3 @@
+ o Code simplification and refactoring:
+ - 'updateFallbackDirs.py' now ignores the blacklist file as it's not longer needed
+ Closes ticket 26502.
diff --git a/changes/bug26882 b/changes/bug26882
new file mode 100644
index 0000000000..adfe0e2f35
--- /dev/null
+++ b/changes/bug26882
@@ -0,0 +1,5 @@
+ o Minor bugfixes (logging, documentation):
+ - When SafeLogging is enabled, scrub IP address in
+ channel_tls_process_netinfo_cell(). Also, add a note
+ to manpage that scrubbing is not guaranteed on loglevels
+ below Notice. Fixes bug 26882; bugfix on 0.2.4.10-alpha.
diff --git a/changes/bug26892 b/changes/bug26892
new file mode 100644
index 0000000000..6fc8a03204
--- /dev/null
+++ b/changes/bug26892
@@ -0,0 +1,6 @@
+ o Minor bugfixes (logging):
+ - As a precaution, do an early return from
+ log_addr_has_changed() if Tor is running as client. Also,
+ log a stack trace for debugging as this function should only
+ be called when Tor runs as server. Fixes bug 26892;
+ bugfix on 0.1.1.9-alpha.
diff --git a/changes/bug26896 b/changes/bug26896
new file mode 100644
index 0000000000..9762dc7fac
--- /dev/null
+++ b/changes/bug26896
@@ -0,0 +1,3 @@
+ o Minor bugfixes (directory connection shutdown):
+ - Avoid a double-close when shutting down a stalled directory connection.
+ Fixes bug 26896; bugfix on 0.3.4.1-alpha.
diff --git a/changes/bug26979 b/changes/bug26979
new file mode 100644
index 0000000000..e615207b74
--- /dev/null
+++ b/changes/bug26979
@@ -0,0 +1,4 @@
+ o Minor bugfixes (appveyor ci):
+ - Improve Appveyor CI IRC logging. Generate correct branches and URLs for
+ pull requests and tags. Use unambiguous short commits.
+ Fixes bug 26979; bugfix on master.
diff --git a/changes/bug26986 b/changes/bug26986
new file mode 100644
index 0000000000..a3ab9ff25d
--- /dev/null
+++ b/changes/bug26986
@@ -0,0 +1,3 @@
+ o Minor bugfixes (compilation):
+ - Use Windows-compatible format strings in tor-print-ed-signing-cert.c.
+ Fixes bug 26986; bugfix on master.
diff --git a/changes/bug27034 b/changes/bug27034
new file mode 100644
index 0000000000..bdb7d29c11
--- /dev/null
+++ b/changes/bug27034
@@ -0,0 +1,6 @@
+ o Minor bugfixes (controller):
+ - Consider all routerinfo errors other than "not a server"
+ to be transient for the purpose of "GETINFO exit-policy/*"
+ controller request. Print stacktrace in the unlikely case
+ of failing to recompute routerinfo digest. Fixes bug 27034;
+ bugfix on 0.3.4.1-alpha.
diff --git a/changes/bug27096 b/changes/bug27096
new file mode 100644
index 0000000000..d1c139549d
--- /dev/null
+++ b/changes/bug27096
@@ -0,0 +1,3 @@
+ o Minor bugfixes (testing):
+ - Fix two unit tests to work when HOME environment variable is not
+ set. Fixes bug 27096; bugfix on 0.2.8.1-alpha.
diff --git a/changes/bug27237 b/changes/bug27237
new file mode 100644
index 0000000000..6fa70d785c
--- /dev/null
+++ b/changes/bug27237
@@ -0,0 +1,4 @@
+ o Minor bugfixes (bootstrap):
+ - Try harder to get descriptors in non-exit test networks, by
+ using the mid weight for the third hop when there are no exits.
+ Fixes bug 27237; bugfix on 0.2.6.2-alpha.
diff --git a/changes/bug27345 b/changes/bug27345
new file mode 100644
index 0000000000..d98f4afbcc
--- /dev/null
+++ b/changes/bug27345
@@ -0,0 +1,5 @@
+ o Minor bugfixes (testing):
+ - When running make test-network-all, use the mixed+hs-v2 network.
+ (A previous fix to chutney removed v3 onion services from the
+ mixed+hs-v23 network, so seeing "mixed+hs-v23" in tests is
+ confusing.) Fixes bug 27345; bugfix on 0.3.2.1-alpha.
diff --git a/changes/doc26588 b/changes/doc26588
new file mode 100644
index 0000000000..4b67bdb035
--- /dev/null
+++ b/changes/doc26588
@@ -0,0 +1,3 @@
+ o Documentation:
+ - Remove old instructions from INSTALL document. Closes
+ ticket 26588.
diff --git a/changes/feature19506 b/changes/feature19506
new file mode 100644
index 0000000000..83ba9e245f
--- /dev/null
+++ b/changes/feature19506
@@ -0,0 +1,3 @@
+ o Minor features (admin tools):
+ - Add new tool that prints expiration date of signing cert
+ in ed25519_signing_cert. Resolves issue 19506.
diff --git a/changes/ticket20424 b/changes/ticket20424
new file mode 100644
index 0000000000..b3b6f1afa5
--- /dev/null
+++ b/changes/ticket20424
@@ -0,0 +1,5 @@
+ o Minor features (compilation):
+ - Tor's configure script now supports a --with-malloc= option to select
+ your malloc implementation. Supported options are "tcmalloc",
+ "jemalloc", "openbsd" (deprecated), and "system" (the default).
+ Addresses part of ticket 20424. Based on a patch from Alex Xu.
diff --git a/changes/ticket21349 b/changes/ticket21349
new file mode 100644
index 0000000000..c072884062
--- /dev/null
+++ b/changes/ticket21349
@@ -0,0 +1,6 @@
+ o Code simplification and refactoring:
+ - Split sampled_guards_update_from_consensus() and
+ select_entry_guard_for_circuit() into subfunctions.
+ In entry_guards_update_primary() unite
+ three smartlist enumerations into one and move smartlist
+ comparison code out of the function. Closes ticket 21349.
diff --git a/changes/ticket26447 b/changes/ticket26447
new file mode 100644
index 0000000000..757a4022ff
--- /dev/null
+++ b/changes/ticket26447
@@ -0,0 +1,5 @@
+ o Minor features (code correctness, testing):
+ - Tor's build process now includes a "check-includes" make target
+ to verify that no module of Tor relies on any headers from a
+ higher-level module. We hope to use this feature over time to
+ help refactor our codebase. Closes ticket 26447.
diff --git a/changes/ticket26481 b/changes/ticket26481
new file mode 100644
index 0000000000..84d219ed86
--- /dev/null
+++ b/changes/ticket26481
@@ -0,0 +1,12 @@
+ o Major features (new code layout):
+ - Nearly all of Tor's source code has been moved around into more logical
+ places. The "common" directory is now divided into a set of libraries
+ in "lib", and files in the "or" directory have been split into "core"
+ (logic absolutely needed for onion routing), "feature" (independent
+ modules in Tor), and "app" (to configure and invoke the rest of Tor).
+ See doc/HACKING/CodeStructure.md for more information. Closes ticket
+ 26481.
+
+ This refactoring is not complete: although the libraries have been
+ refactored to be acyclic, the main body of Tor is still too
+ interconnected. We will attempt to improve this in the future.
diff --git a/changes/ticket26492 b/changes/ticket26492
new file mode 100644
index 0000000000..c6ab292d17
--- /dev/null
+++ b/changes/ticket26492
@@ -0,0 +1,4 @@
+ o Minor features (rust, code quality):
+ - Improve rust code quality in the Rust protover implementation by
+ making it more idiomatic. Includes changing an internal API to
+ take &str instead of &String. Closes ticket 26492.
diff --git a/changes/ticket26526 b/changes/ticket26526
new file mode 100644
index 0000000000..447b581df8
--- /dev/null
+++ b/changes/ticket26526
@@ -0,0 +1,4 @@
+ o Code simplification and refactoring:
+ - Utility functions that can perform a DNS lookup are now wholly
+ separated from those that can't, in separate headers and C
+ modules. Closes ticket 26526.
diff --git a/changes/ticket26526_extra b/changes/ticket26526_extra
new file mode 100644
index 0000000000..5495962ff7
--- /dev/null
+++ b/changes/ticket26526_extra
@@ -0,0 +1,3 @@
+ o Minor features (tor-resolve):
+ - The tor-resolve utility can now be used with IPv6 SOCKS proxies.
+ Side-effect of the refactoring for ticket 26526.
diff --git a/changes/ticket26663 b/changes/ticket26663
new file mode 100644
index 0000000000..2e1b8db1f5
--- /dev/null
+++ b/changes/ticket26663
@@ -0,0 +1,3 @@
+ o Minor features(config):
+ - The "auto" keyword in torrc is now case insensitive.
+ Closes ticket 26663.
diff --git a/changes/ticket26703 b/changes/ticket26703
new file mode 100644
index 0000000000..764b98b826
--- /dev/null
+++ b/changes/ticket26703
@@ -0,0 +1,3 @@
+ o Code simplification and refactoring:
+ - Low log level of "Scheduler type KIST has been enabled" to INFO.
+ Ticket 26703
diff --git a/changes/ticket26947 b/changes/ticket26947
new file mode 100644
index 0000000000..620a3a5591
--- /dev/null
+++ b/changes/ticket26947
@@ -0,0 +1,3 @@
+ o Minor features (in-process API):
+ - The tor_api now has a function that returns the name and version
+ of the backend implementing the API. Closes ticket 26947.
diff --git a/changes/ticket27211 b/changes/ticket27211
new file mode 100644
index 0000000000..c3d661a01d
--- /dev/null
+++ b/changes/ticket27211
@@ -0,0 +1,3 @@
+ o Minor features (testing):
+ - Add scripts/test/chutney-git-bisect.sh, for bisecting using chutney.
+ Implements ticket 27211.
diff --git a/changes/ticket27215 b/changes/ticket27215
new file mode 100644
index 0000000000..dcb67900ea
--- /dev/null
+++ b/changes/ticket27215
@@ -0,0 +1,9 @@
+ o Major feature (hidden service):
+ - For a newly created hidden service, the default version is now 3. Tor
+ still supports version 2 service but the operator now needs to
+ specifically set "HiddenServiceVersion 2" in order to create a new
+ service.
+
+ For existing services, tor now learns the version by reading the key
+ file so the HiddenServiceVersion is not mandatory in that case. Closes
+ ticket 27215.
diff --git a/changes/ticket3569_part1 b/changes/ticket3569_part1
new file mode 100644
index 0000000000..4032aff4d2
--- /dev/null
+++ b/changes/ticket3569_part1
@@ -0,0 +1,6 @@
+ o Code simplification and refactoring:
+ - Rework Tor SOCKS server code to use Trunnel and benefit from
+ autogenerated functions for parsing and generating SOCKS wire
+ format. New implementation is cleaner, more maintainable and
+ should be less prone to heartbleed-style vulnerabilities.
+ Implements a significant fraction of ticket 3569.
diff --git a/changes/ticket3723 b/changes/ticket3723
new file mode 100644
index 0000000000..3deefe27b0
--- /dev/null
+++ b/changes/ticket3723
@@ -0,0 +1,3 @@
+ o Minor features (directory authority):
+ - When a bandwidth file is used to obtain the bandwidth measurements,
+ include this bandwidth file headers in the votes. Closes ticket 3723.
diff --git a/configure.ac b/configure.ac
index fea617708c..518d105a12 100644
--- a/configure.ac
+++ b/configure.ac
@@ -22,7 +22,7 @@ AC_CANONICAL_HOST
PKG_PROG_PKG_CONFIG
AC_ARG_ENABLE(openbsd-malloc,
- AS_HELP_STRING(--enable-openbsd-malloc, [use malloc code from OpenBSD. Linux only]))
+ AS_HELP_STRING(--enable-openbsd-malloc, [use malloc code from OpenBSD. Linux only. Deprecated: see --with-malloc]))
AC_ARG_ENABLE(static-openssl,
AS_HELP_STRING(--enable-static-openssl, [link against a static openssl library. Requires --with-openssl-dir]))
AC_ARG_ENABLE(static-libevent,
@@ -82,8 +82,6 @@ if test "$enable_memory_sentinels" = "no"; then
[Defined if we're turning off memory safety code to look for bugs])
fi
-AM_CONDITIONAL(USE_OPENBSD_MALLOC, test "x$enable_openbsd_malloc" = "xyes")
-
AC_ARG_ENABLE(asciidoc,
AS_HELP_STRING(--disable-asciidoc, [don't use asciidoc (disables building of manpages)]),
[case "${enableval}" in
@@ -558,71 +556,101 @@ if test "$LIBS" != "$saved_LIBS"; then
have_rt=yes
fi
-AC_SEARCH_LIBS(pthread_create, [pthread])
-AC_SEARCH_LIBS(pthread_detach, [pthread])
+if test "$bwin32" = "false"; then
+ AC_SEARCH_LIBS(pthread_create, [pthread])
+ AC_SEARCH_LIBS(pthread_detach, [pthread])
+fi
AM_CONDITIONAL(THREADS_WIN32, test "$bwin32" = "true")
AM_CONDITIONAL(THREADS_PTHREADS, test "$bwin32" = "false")
AC_CHECK_FUNCS(
- _NSGetEnviron \
+ _NSGetEnviron \
RtlSecureZeroMemory \
SecureZeroMemory \
- accept4 \
- backtrace \
- backtrace_symbols_fd \
+ accept4 \
+ backtrace \
+ backtrace_symbols_fd \
eventfd \
explicit_bzero \
timingsafe_memcmp \
- flock \
- ftime \
- get_current_dir_name \
- getaddrinfo \
- getifaddrs \
- getpass \
- getrlimit \
- gettimeofday \
- gmtime_r \
+ flock \
+ ftime \
+ get_current_dir_name \
+ getaddrinfo \
+ getdelim \
+ getifaddrs \
+ getline \
+ getpass \
+ getrlimit \
+ gettimeofday \
+ gmtime_r \
gnu_get_libc_version \
htonll \
- inet_aton \
- ioctl \
- issetugid \
- llround \
- localtime_r \
- lround \
- mach_approximate_time \
- memmem \
- memset_s \
- mmap \
+ inet_aton \
+ ioctl \
+ issetugid \
+ llround \
+ localtime_r \
+ lround \
+ memmem \
+ memset_s \
+ mmap \
pipe \
pipe2 \
- prctl \
+ prctl \
readpassphrase \
- rint \
- sigaction \
- socketpair \
+ rint \
+ sigaction \
+ socketpair \
statvfs \
- strncasecmp \
- strcasecmp \
- strlcat \
- strlcpy \
+ strncasecmp \
+ strcasecmp \
+ strlcat \
+ strlcpy \
strnlen \
- strptime \
- strtok_r \
- strtoull \
- sysconf \
+ strptime \
+ strtok_r \
+ strtoull \
+ sysconf \
sysctl \
truncate \
- uname \
+ uname \
usleep \
- vasprintf \
+ vasprintf \
_vscprintf
)
-# Apple messed up when they added two functions functions in Sierra: they
+# Apple messed up when they added some functions: they
# forgot to decorate them with appropriate AVAILABLE_MAC_OS_VERSION
-# checks. So we should only probe for those functions if we are sure that we
+# checks.
+
+# We should only probe for these functions if we are sure that we
+# are not targeting OS X 10.9 or earlier.
+AC_MSG_CHECKING([for a pre-Yosemite OS X build target])
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+#ifdef __APPLE__
+# include <AvailabilityMacros.h>
+# ifndef MAC_OS_X_VERSION_10_10
+# define MAC_OS_X_VERSION_10_10 101000
+# endif
+# if defined(MAC_OS_X_VERSION_MIN_REQUIRED)
+# if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_10
+# error "Running on Mac OS X 10.9 or earlier"
+# endif
+# endif
+#endif
+]], [[]])],
+ [on_macos_pre_10_10=no ; AC_MSG_RESULT([no])],
+ [on_macos_pre_10_10=yes; AC_MSG_RESULT([yes])])
+
+if test "$on_macos_pre_10_10" = "no"; then
+ AC_CHECK_FUNCS(
+ mach_approximate_time \
+ )
+fi
+
+# We should only probe for these functions if we are sure that we
# are not targeting OSX 10.11 or earlier.
AC_MSG_CHECKING([for a pre-Sierra OSX build target])
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
@@ -893,6 +921,7 @@ AC_CHECK_MEMBERS([struct ssl_method_st.get_cipher_by_char], , ,
])
AC_CHECK_FUNCS([ \
+ ERR_load_KDF_strings \
SSL_SESSION_get_master_key \
SSL_get_server_random \
SSL_get_client_ciphers \
@@ -1358,57 +1387,57 @@ dnl Make sure to enable support for large off_t if available.
AC_SYS_LARGEFILE
AC_CHECK_HEADERS([errno.h \
- fcntl.h \
- signal.h \
- string.h \
- sys/capability.h \
- sys/fcntl.h \
- sys/stat.h \
- sys/time.h \
- sys/types.h \
- time.h \
- unistd.h \
- arpa/inet.h \
- crt_externs.h \
- execinfo.h \
- gnu/libc-version.h \
- grp.h \
- ifaddrs.h \
- inttypes.h \
- limits.h \
- linux/types.h \
- machine/limits.h \
- malloc.h \
- malloc/malloc.h \
- malloc_np.h \
- netdb.h \
- netinet/in.h \
- netinet/in6.h \
- pwd.h \
- readpassphrase.h \
- stdatomic.h \
- sys/eventfd.h \
- sys/file.h \
- sys/ioctl.h \
- sys/limits.h \
- sys/mman.h \
- sys/param.h \
- sys/prctl.h \
+ fcntl.h \
+ signal.h \
+ string.h \
+ sys/capability.h \
+ sys/fcntl.h \
+ sys/stat.h \
+ sys/time.h \
+ sys/types.h \
+ time.h \
+ unistd.h \
+ arpa/inet.h \
+ crt_externs.h \
+ execinfo.h \
+ gnu/libc-version.h \
+ grp.h \
+ ifaddrs.h \
+ inttypes.h \
+ limits.h \
+ linux/types.h \
+ machine/limits.h \
+ malloc.h \
+ malloc/malloc.h \
+ malloc_np.h \
+ netdb.h \
+ netinet/in.h \
+ netinet/in6.h \
+ pwd.h \
+ readpassphrase.h \
+ stdatomic.h \
+ sys/eventfd.h \
+ sys/file.h \
+ sys/ioctl.h \
+ sys/limits.h \
+ sys/mman.h \
+ sys/param.h \
+ sys/prctl.h \
sys/random.h \
- sys/resource.h \
- sys/select.h \
- sys/socket.h \
- sys/statvfs.h \
- sys/syscall.h \
- sys/sysctl.h \
- sys/syslimits.h \
- sys/time.h \
- sys/types.h \
- sys/un.h \
- sys/utime.h \
- sys/wait.h \
- syslog.h \
- utime.h])
+ sys/resource.h \
+ sys/select.h \
+ sys/socket.h \
+ sys/statvfs.h \
+ sys/syscall.h \
+ sys/sysctl.h \
+ sys/syslimits.h \
+ sys/time.h \
+ sys/types.h \
+ sys/un.h \
+ sys/utime.h \
+ sys/wait.h \
+ syslog.h \
+ utime.h])
AC_CHECK_HEADERS(sys/param.h)
@@ -1624,6 +1653,26 @@ AC_CHECK_SIZEOF(socklen_t, , [AC_INCLUDES_DEFAULT()
AC_CHECK_SIZEOF(cell_t)
+# Let's see if stdatomic works. (There are some debian clangs that screw it
+# up; see Tor bug #26779 and debian bug 903709.)
+AC_CACHE_CHECK([whether C11 stdatomic.h actually works],
+ tor_cv_stdatomic_works,
+[AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
+#include <stdatomic.h>
+struct x { atomic_size_t y; };
+void try_atomic_init(struct x *xx)
+{
+ atomic_init(&xx->y, 99);
+ atomic_fetch_add(&xx->y, 1);
+}
+]])], [tor_cv_stdatomic_works=yes], [tor_cv_stdatomic_works=no])])
+
+if test "$tor_cv_stdatomic_works" = "yes"; then
+ AC_DEFINE(STDATOMIC_WORKS, 1, [Set to 1 if we can compile a simple stdatomic example.])
+elif test "$ac_cv_header_stdatomic_h" = "yes"; then
+ AC_MSG_WARN([Your compiler provides the stdatomic.h header, but it doesn't seem to work. I'll pretend it isn't there. If you are using Clang on Debian, maybe this is because of https://bugs.debian.org/903709 ])
+fi
+
# Now make sure that NULL can be represented as zero bytes.
AC_CACHE_CHECK([whether memset(0) sets pointers to NULL], tor_cv_null_is_zero,
[AC_RUN_IFELSE([AC_LANG_SOURCE(
@@ -1754,22 +1803,78 @@ if test "$tor_cv_uint8_uchar" = "no"; then
fi
AC_ARG_WITH(tcmalloc,
-AS_HELP_STRING(--with-tcmalloc, [use tcmalloc memory allocation library]),
+AS_HELP_STRING(--with-tcmalloc, [use tcmalloc memory allocation library. Deprecated; see --with-malloc]),
[ tcmalloc=yes ], [ tcmalloc=no ])
-if test "x$tcmalloc" = "xyes"; then
- LDFLAGS="-ltcmalloc $LDFLAGS"
-fi
+default_malloc=system
-using_custom_malloc=no
-if test "x$enable_openbsd_malloc" = "xyes"; then
- using_custom_malloc=yes
+if test "x$enable_openbsd_malloc" = "xyes" ; then
+ AC_MSG_NOTICE([The --enable-openbsd-malloc argument is deprecated; use --with-malloc=openbsd instead.])
+ default_malloc=openbsd
fi
+
if test "x$tcmalloc" = "xyes"; then
- using_custom_malloc=yes
+ AC_MSG_NOTICE([The --with-tcmalloc argument is deprecated; use --with-malloc=tcmalloc instead.])
+ default_malloc=tcmalloc
fi
-if test "$using_custom_malloc" = "no"; then
- AC_CHECK_FUNCS(mallinfo)
+
+AC_ARG_WITH(malloc,
+ AS_HELP_STRING([--with-malloc=[system,jemalloc,tcmalloc,openbsd]],
+ [select special malloc implementation [system]]),
+ [ malloc="$with_malloc" ], [ malloc="$default_malloc" ])
+
+AS_CASE([$malloc],
+ [tcmalloc], [
+ PKG_CHECK_MODULES([TCMALLOC],
+ [libtcmalloc],
+ have_tcmalloc=yes,
+ have_tcmalloc=no)
+
+ if test "x$have_tcmalloc" = "xno" ; then
+ AC_MSG_ERROR([Unable to find tcmalloc requested by --with-malloc.])
+ fi
+
+ CFLAGS="$CFLAGS $TCMALLOC_CFLAGS"
+ LIBS="$TCMALLOC_LIBS $LIBS"
+ ],
+
+ [jemalloc], [
+ PKG_CHECK_MODULES([JEMALLOC],
+ [jemalloc],
+ have_jemalloc=yes,
+ have_jemalloc=no)
+
+ if test "x$have_tcmalloc" = "xno" ; then
+ AC_MSG_ERROR([Unable to find jemalloc requested by --with-malloc.])
+ fi
+
+ CFLAGS="$CFLAGS $JEMALLOC_CFLAGS"
+ LIBS="$JEMALLOC_LIBS $LIBS"
+ using_custom_malloc=yes
+ ],
+
+ [openbsd], [
+ AC_MSG_WARN([The openbsd malloc port is deprecated in Tor 0.3.5 and will be removed in a future version.])
+ enable_openbsd_malloc=yes
+ ],
+
+ [system], [
+ # handle this later, including the jemalloc fallback
+ AC_CHECK_FUNCS(mallinfo)
+ ],
+
+ [AC_MSG_ERROR([--with-malloc=`$with_malloc' not supported, see --help])
+])
+
+AM_CONDITIONAL(USE_OPENBSD_MALLOC, test "x$enable_openbsd_malloc" = "xyes")
+
+if test "$malloc" != "system"; then
+ # Tell the C compiler not to use the system allocator functions.
+ TOR_CHECK_CFLAGS([-fno-builtin-malloc -fno-builtin-realloc -fno-builtin-calloc -fno-builtin-free])
+fi
+if test "$using_custom_malloc" = "yes"; then
+ # Tell the C compiler not to use the system allocator functions.
+ TOR_CHECK_CFLAGS([-fno-builtin-malloc -fno-builtin-realloc -fno-builtin-calloc -fno-builtin-free])
fi
# By default, we're going to assume we don't have mlockall()
@@ -2243,6 +2348,9 @@ dnl -Wthread-safety-precise
if test "$tor_cv_cflags__Woverlength_strings" = "yes"; then
AC_DEFINE([HAVE_CFLAG_WOVERLENGTH_STRINGS], 1, [True if we have -Woverlength-strings])
fi
+ if test "$tor_cv_cflags__warn_unused_const_variable_2" = "yes"; then
+ AC_DEFINE([HAVE_CFLAG_WUNUSED_CONST_VARIABLE], 1, [True if we have -Wunused-const-variable])
+ fi
if test "x$enable_fatal_warnings" = "xyes"; then
# I'd like to use TOR_CHECK_CFLAGS here, but I can't, since the
@@ -2262,20 +2370,20 @@ fi
CPPFLAGS="$CPPFLAGS $TOR_CPPFLAGS_libevent $TOR_CPPFLAGS_openssl $TOR_CPPFLAGS_zlib"
AC_CONFIG_FILES([
- Doxyfile
- Makefile
- config.rust
- link_rust.sh
- contrib/dist/suse/tor.sh
- contrib/operator-tools/tor.logrotate
- contrib/dist/tor.sh
- contrib/dist/torctl
- contrib/dist/tor.service
- src/config/torrc.sample
- src/config/torrc.minimal
- src/rust/.cargo/config
- scripts/maint/checkOptionDocs.pl
- scripts/maint/updateVersions.pl
+ Doxyfile
+ Makefile
+ config.rust
+ link_rust.sh
+ contrib/dist/suse/tor.sh
+ contrib/operator-tools/tor.logrotate
+ contrib/dist/tor.sh
+ contrib/dist/torctl
+ contrib/dist/tor.service
+ src/config/torrc.sample
+ src/config/torrc.minimal
+ src/rust/.cargo/config
+ scripts/maint/checkOptionDocs.pl
+ scripts/maint/updateVersions.pl
])
if test "x$asciidoc" = "xtrue" && test "$ASCIIDOC" = "none"; then
diff --git a/doc/HACKING/CodeStructure.md b/doc/HACKING/CodeStructure.md
new file mode 100644
index 0000000000..736d6cd484
--- /dev/null
+++ b/doc/HACKING/CodeStructure.md
@@ -0,0 +1,129 @@
+
+TODO: revise this to talk about how things are, rather than how things
+have changed.
+
+TODO: Make this into good markdown.
+
+
+
+For quite a while now, the program "tor" has been built from source
+code in just two directories: src/common and src/or.
+
+This has become more-or-less untenable, for a few reasons -- most
+notably of which is that it has led our code to become more
+spaghetti-ish than I can endorse with a clean conscience.
+
+So to fix that, we've gone and done a huge code movement in our git
+master branch, which will land in a release once Tor 0.3.5.1-alpha is
+out.
+
+Here's what we did:
+
+ * src/common has been turned into a set of static libraries. These
+all live in the "src/lib/*" directories. The dependencies between
+these libraries should have no cycles. The libraries are:
+
+ arch -- Headers to handle architectural differences
+ cc -- headers to handle differences among compilers
+ compress -- wraps zlib, zstd, lzma
+ container -- high-level container types
+ crypt_ops -- Cryptographic operations. Planning to split this into
+a higher and lower level library
+ ctime -- Operations that need to run in constant-time. (Properly,
+data-invariant time)
+ defs -- miscelaneous definitions needed throughout Tor.
+ encoding -- transforming one data type into another, and various
+data types into strings.
+ err -- lowest-level error handling, in cases where we can't use
+the logs because something that the logging system needs has broken.
+ evloop -- Generic event-loop handling logic
+ fdio -- Low-level IO wrapper functions for file descriptors.
+ fs -- Operations on the filesystem
+ intmath -- low-level integer math and misc bit-twiddling hacks
+ lock -- low-level locking code
+ log -- Tor's logging module. This library sits roughly halfway up
+the library dependency diagram, since everything it depends on has to
+be carefully crafted to *not* log.
+ malloc -- Low-level wrappers for the platform memory allocation functions.
+ math -- Higher-level mathematical functions, and floating-point math
+ memarea -- An arena allocator
+ meminfo -- Functions for querying the current process's memory
+status and resources
+ net -- Networking compatibility and convenience code
+ osinfo -- Querying information about the operating system
+ process -- Launching and querying the status of other processes
+ sandbox -- Backend for the linux seccomp2 sandbox
+ smartlist_core -- The lowest-level of the smartlist_t data type.
+Separated from the rest of the containers library because the logging
+subsystem depends on it.
+ string -- Compatibility and convenience functions for manipulating
+C strings.
+ term -- Terminal-related functions (currently limited to a getpass
+function).
+ testsupport -- Macros for mocking, unit tests, etc.
+ thread -- Higher-level thread compatibility code
+ time -- Higher-level time management code, including format
+conversions and monotonic time
+ tls -- Our wrapper around our TLS library
+ trace -- Formerly src/trace -- a generic event tracing API
+ wallclock -- Low-level time code, used by the log module.
+
+ * To ensure that the dependency graph in src/common remains under
+control, there is a tool that you can run called "make
+check-includes". It verifies that each module in Tor only includes
+the headers that it is permitted to include, using a per-directory
+".may_include" file.
+
+ * The src/or/or.h header has been split into numerous smaller
+headers. Notably, many important structures are now declared in a
+header called foo_st.h, where "foo" is the name of the structure.
+
+ * The src/or directory, which had most of Tor's code, had been split
+up into several directories. This is still a work in progress: This
+code has not itself been refactored, and its dependency graph is still
+a tangled web. I hope we'll be working on that over the coming
+releases, but it will take a while to do.
+
+ The new top-level source directories are:
+
+ src/core -- Code necessary to actually perform or use onion routing.
+ src/feature -- Code used only by some onion routing
+configurations, or only for a special purpose.
+ src/app -- Top-level code to run, invoke, and configure the
+lower-level code
+
+ The new second-level source directories are:
+ src/core/crypto -- High-level cryptographic protocols used in Tor
+ src/core/mainloop -- Tor's event loop, connection-handling, and
+traffic-routing code.
+ src/core/or -- Parts related to handling onion routing itself
+ src/core/proto -- support for encoding and decoding different
+wire protocols
+
+ src/feature/api -- Support for making Tor embeddable
+ src/feature/client -- Functionality which only Tor clients need
+ src/feature/control -- Controller implementation
+ src/feature/dirauth -- Directory authority
+ src/feature/dircache -- Directory cache
+ src/feature/dirclient -- Directory client
+ src/feature/dircommon -- Shared code between the other directory modules
+ src/feature/hibernate -- Hibernating when Tor is out of bandwidth
+or shutting down
+ src/feature/hs -- v3 onion service implementation
+ src/feature/hs_common -- shared code between both onion service
+implementations
+ src/feature/nodelist -- storing and accessing the list of relays on
+the network.
+ src/feature/relay -- code that only relay servers and exit servers need.
+ src/feature/rend -- v2 onion service implementation
+ src/feature/stats -- statistics and history
+
+ src/app/config -- configuration and state for Tor
+ src/app/main -- Top-level functions to invoke the rest or Tor.
+
+ * The "tor" executable is now built in src/app/tor rather than src/or/tor.
+
+ * There are more static libraries than before that you need to build
+into your application if you want to embed Tor. Rather than
+maintaining this list yourself, I recommend that you run "make
+show-libs" to have Tor emit a list of what you need to link.
diff --git a/doc/HACKING/CodingStandards.md b/doc/HACKING/CodingStandards.md
index b830ecea93..4f229348e4 100644
--- a/doc/HACKING/CodingStandards.md
+++ b/doc/HACKING/CodingStandards.md
@@ -200,8 +200,8 @@ We have some wrapper functions like `tor_malloc`, `tor_free`, `tor_strdup`, and
always succeed or exit.)
You can get a full list of the compatibility functions that Tor provides by
-looking through `src/common/util*.h` and `src/common/compat*.h`. You can see the
-available containers in `src/common/containers*.h`. You should probably
+looking through `src/lib/*/*.h`. You can see the
+available containers in `src/lib/containers/*.h`. You should probably
familiarize yourself with these modules before you write too much code, or
else you'll wind up reinventing the wheel.
@@ -214,6 +214,24 @@ We don't call `memcmp()` directly. Use `fast_memeq()`, `fast_memneq()`,
Also see a longer list of functions to avoid in:
https://people.torproject.org/~nickm/tor-auto/internal/this-not-that.html
+What code can use what other code?
+----------------------------------
+
+We're trying to simplify Tor's structure over time. In the long run, we want
+Tor to be structured as a set of modules with *no circular dependencies*.
+
+This property is currently provided by the modules in src/lib, but not
+throughout the rest of Tor. In general, higher-level libraries may use
+lower-level libraries, but never the reverse.
+
+To prevent new circular dependencies from landing, we have a tool that
+you can invoke with `make check-includes`, and which is run
+automatically as part of `make check`. This tool will verify that, for
+every source directory with a `.may_include` file, no local headers are
+included except those specifically permitted by the `.may_include` file.
+When editing one of these files, please make sure that you are not
+introducing any cycles into Tor's dependency graph.
+
Floating point math is hard
---------------------------
diff --git a/doc/HACKING/CodingStandardsRust.md b/doc/HACKING/CodingStandardsRust.md
index d9496c08f7..fc562816db 100644
--- a/doc/HACKING/CodingStandardsRust.md
+++ b/doc/HACKING/CodingStandardsRust.md
@@ -104,7 +104,7 @@ repo.
Documentation
---------------
-You MUST include `#[deny(missing_docs)]` in your crate.
+You MUST include `#![deny(missing_docs)]` in your crate.
For function/method comments, you SHOULD include a one-sentence, "first person"
description of function behaviour (see requirements for documentation as
diff --git a/doc/HACKING/GettingStartedRust.md b/doc/HACKING/GettingStartedRust.md
index a533ba8a27..aa29c097da 100644
--- a/doc/HACKING/GettingStartedRust.md
+++ b/doc/HACKING/GettingStartedRust.md
@@ -122,9 +122,10 @@ the module calls. Modules which call fewer other modules are better targets.
Strive to change the C API as little as possible.
-We are currently targeting Rust nightly, *for now*. We expect this to
-change moving forward, as we understand more about which nightly
-features we need. It is on our TODO list to try to cultivate good
+We are currently targetting Rust stable. (See CodingStandardsRust.md for more
+details.)
+
+It is on our TODO list to try to cultivate good
standing with various distro maintainers of `rustc` and `cargo`, in
order to ensure that whatever version we solidify on is readily
available.
@@ -139,6 +140,7 @@ Where <name_of_c_object> can be an enum, struct, constant, etc. Then,
do the same in the C code, to note that rust will need to be changed
when the C does.
+
Adding your Rust module to Tor's build system
-----------------------------------------------
diff --git a/doc/HACKING/HelpfulTools.md b/doc/HACKING/HelpfulTools.md
index 13d1c4b0d7..d499238526 100644
--- a/doc/HACKING/HelpfulTools.md
+++ b/doc/HACKING/HelpfulTools.md
@@ -4,9 +4,16 @@ Useful tools
These aren't strictly necessary for hacking on Tor, but they can help track
down bugs.
-Travis CI
----------
-It's CI. Looks like this: https://travis-ci.org/torproject/tor.
+Travis/Appveyor CI
+------------------
+It's CI.
+
+Looks like this:
+* https://travis-ci.org/torproject/tor
+* https://ci.appveyor.com/project/torproject/tor
+
+Travis builds and runs tests on Linux, and eventually macOS (#24629).
+Appveyor builds and runs tests on Windows (using Windows Services for Linux).
Runs automatically on Pull Requests sent to torproject/tor. You can set it up
for your fork to build commits outside of PRs too:
@@ -16,6 +23,8 @@ for your fork to build commits outside of PRs too:
https://help.github.com/articles/fork-a-repo/
3. follow https://docs.travis-ci.com/user/getting-started/#To-get-started-with-Travis-CI.
skip steps involving `.travis.yml` (we already have one).
+4. go to https://ci.appveyor.com/login , log in with github, and select
+ "NEW PROJECT"
Builds should show up on the web at travis-ci.com and on IRC at #tor-ci on
OFTC. If they don't, ask #tor-dev (also on OFTC).
@@ -23,7 +32,16 @@ OFTC. If they don't, ask #tor-dev (also on OFTC).
Jenkins
-------
- https://jenkins.torproject.org
+It's CI/builders. Looks like this: https://jenkins.torproject.org
+
+Runs automatically on commits merged to git.torproject.org. We CI the
+master branch and all supported tor versions. We also build nightly debian
+packages from master.
+
+Builds Linux and Windows cross-compilation. Runs Linux tests.
+
+Builds should show up on the web at jenkins.torproject.org and on IRC at
+#tor-bots on OFTC. If they don't, ask #tor-dev (also on OFTC).
Valgrind
--------
diff --git a/doc/HACKING/Module.md b/doc/HACKING/Module.md
index 6684e258df..9cf36090b4 100644
--- a/doc/HACKING/Module.md
+++ b/doc/HACKING/Module.md
@@ -96,8 +96,8 @@ There are couples of "rules" you want to follow:
filename as the one in the module. For example, this is a bad idea and
should never be done:
- - `src/or/shared_random.c`
- - `src/or/dirauth/shared_random.c`
+ - `src/feature/dirclient/shared_random.c`
+ - `src/feature/dirauth/shared_random.c`
* When you include headers from the module, **always** use the full module
path in your statement. Example:
diff --git a/doc/HACKING/ReleasingTor.md b/doc/HACKING/ReleasingTor.md
index e70416c354..55a40fc89b 100644
--- a/doc/HACKING/ReleasingTor.md
+++ b/doc/HACKING/ReleasingTor.md
@@ -7,7 +7,7 @@ new Tor release:
=== 0. Preliminaries
-1. Get at least three of weasel/arma/Sebastian/Sina to put the new
+1. Get at least two of weasel/arma/Sebastian to put the new
version number in their approved versions list. Give them a few
days to do this if you can.
diff --git a/doc/include.am b/doc/include.am
index e429d05a49..0a123aae11 100644
--- a/doc/include.am
+++ b/doc/include.am
@@ -12,7 +12,7 @@
# part of the source distribution, so that people without asciidoc can
# just use the .1 and .html files.
-all_mans = doc/tor doc/tor-gencert doc/tor-resolve doc/torify
+all_mans = doc/tor doc/tor-gencert doc/tor-resolve doc/torify doc/tor-print-ed-signing-cert
if USE_ASCIIDOC
nodist_man1_MANS = $(all_mans:=.1)
@@ -36,6 +36,7 @@ EXTRA_DIST+= doc/asciidoc-helper.sh \
doc/HACKING/README.1st.md \
doc/HACKING/CodingStandards.md \
doc/HACKING/CodingStandardsRust.md \
+ doc/HACKING/CodeStructure.md \
doc/HACKING/Fuzzing.md \
doc/HACKING/GettingStarted.md \
doc/HACKING/GettingStartedRust.md \
@@ -64,11 +65,13 @@ doc/tor.1.in: doc/tor.1.txt
doc/torify.1.in: doc/torify.1.txt
doc/tor-gencert.1.in: doc/tor-gencert.1.txt
doc/tor-resolve.1.in: doc/tor-resolve.1.txt
+doc/tor-print-ed-signing-cert.1.in: doc/tor-print-ed-signing-cert.1.txt
doc/tor.html.in: doc/tor.1.txt
doc/torify.html.in: doc/torify.1.txt
doc/tor-gencert.html.in: doc/tor-gencert.1.txt
doc/tor-resolve.html.in: doc/tor-resolve.1.txt
+doc/tor-print-ed-signing-cert.html.in: doc/tor-print-ed-signing-cert.1.txt
# use config.status to swap all machine-specific magic strings
# in the asciidoc with their replacements.
@@ -82,11 +85,13 @@ $(asciidoc_product) :
doc/tor.html: doc/tor.html.in
doc/tor-gencert.html: doc/tor-gencert.html.in
doc/tor-resolve.html: doc/tor-resolve.html.in
+doc/tor-print-ed-signing-cert.html: doc/tor-print-ed-signing-cert.html.in
doc/torify.html: doc/torify.html.in
doc/tor.1: doc/tor.1.in
doc/tor-gencert.1: doc/tor-gencert.1.in
doc/tor-resolve.1: doc/tor-resolve.1.in
+doc/tor-print-ed-signing-cert.1: doc/tor-print-ed-signing-cert.1.in
doc/torify.1: doc/torify.1.in
CLEANFILES+= $(asciidoc_product)
diff --git a/doc/tor-print-ed-signing-cert.1.txt b/doc/tor-print-ed-signing-cert.1.txt
new file mode 100644
index 0000000000..1a3109df95
--- /dev/null
+++ b/doc/tor-print-ed-signing-cert.1.txt
@@ -0,0 +1,32 @@
+// Copyright (c) The Tor Project, Inc.
+// See LICENSE for licensing information
+// This is an asciidoc file used to generate the manpage/html reference.
+// Learn asciidoc on http://www.methods.co.nz/asciidoc/userguide.html
+:man source: Tor
+:man manual: Tor Manual
+tor-print-ed-signing-cert(1)
+============================
+Tor Project, Inc.
+
+NAME
+----
+tor-print-ed-signing-cert - print expiration date of ed25519 signing certificate
+
+SYNOPSIS
+--------
+**tor-print-ed-signing-cert** __<path to ed25519_signing_cert file>__
+
+DESCRIPTION
+-----------
+**tor-print-ed-signing-cert** is utility program for Tor relay operators to
+check expiration date of ed25519 signing certificate.
+
+SEE ALSO
+--------
+**tor**(1) +
+
+https://spec.torproject.org/cert-spec
+
+AUTHORS
+-------
+Roger Dingledine <arma@mit.edu>, Nick Mathewson <nickm@alum.mit.edu>.
diff --git a/doc/tor.1.txt b/doc/tor.1.txt
index f16d9c370c..e149a951c9 100644
--- a/doc/tor.1.txt
+++ b/doc/tor.1.txt
@@ -754,7 +754,9 @@ GENERAL OPTIONS
If this option is set to 0, Tor will not perform any scrubbing, if it is
set to 1, all potentially sensitive strings are replaced. If it is set to
relay, all log messages generated when acting as a relay are sanitized, but
- all messages generated when acting as a client are not. (Default: 1)
+ all messages generated when acting as a client are not.
+ Note: Tor may not heed this option when logging at log levels below Notice.
+ (Default: 1)
[[User]] **User** __Username__::
On startup, setuid to this user and setgid to their primary group.
@@ -1705,9 +1707,10 @@ The following options are useful only for clients (that is, if
[[ClientUseIPv6]] **ClientUseIPv6** **0**|**1**::
If this option is set to 1, Tor might connect to directory servers or
- entry nodes over IPv6. Note that clients configured with an IPv6 address
- in a **Bridge**, proxy, or pluggable transport line will try connecting
- over IPv6 even if **ClientUseIPv6** is set to 0. (Default: 0)
+ entry nodes over IPv6. For IPv6 only hosts, you need to also set
+ **ClientUseIPv4** to 0 to disable IPv4. Note that clients configured with
+ an IPv6 address in a **Bridge**, proxy, or pluggable transportline will
+ try connecting over IPv6 even if **ClientUseIPv6** is set to 0. (Default: 0)
[[ClientPreferIPv6DirPort]] **ClientPreferIPv6DirPort** **0**|**1**|**auto**::
If this option is set to 1, Tor prefers a directory port with an IPv6
@@ -2721,7 +2724,9 @@ on the public Tor network.
[[V3BandwidthsFile]] **V3BandwidthsFile** __FILENAME__::
V3 authoritative directories only. Configures the location of the
bandwidth-authority generated file storing information on relays' measured
- bandwidth capacities. (Default: unset)
+ bandwidth capacities. To avoid inconsistent reads, bandwidth data should
+ be written to temporary file, then renamed to the configured filename.
+ (Default: unset)
[[V3AuthUseLegacyKey]] **V3AuthUseLegacyKey** **0**|**1**::
If set, the directory authority will sign consensuses not only with its
@@ -2796,7 +2801,7 @@ The following options are used to configure a hidden service.
[[HiddenServiceVersion]] **HiddenServiceVersion** **2**|**3**::
A list of rendezvous service descriptor versions to publish for the hidden
- service. Currently, versions 2 and 3 are supported. (Default: 2)
+ service. Currently, versions 2 and 3 are supported. (Default: 3)
[[HiddenServiceAuthorizeClient]] **HiddenServiceAuthorizeClient** __auth-type__ __client-name__,__client-name__,__...__::
If configured, the hidden service is accessible for authorized clients
diff --git a/scripts/README b/scripts/README
index 02faabe06b..9cd6e74ac7 100644
--- a/scripts/README
+++ b/scripts/README
@@ -30,6 +30,12 @@ orconfig.h files.
Testing scripts
---------------
+test/chutney-git-bisect.sh -- a git bisect run script that bisects using
+chutney. The script builds tor and tor-gencert, then runs chutney. The script
+takes optional arguments for out-of-tree builds, and specific chutney network
+flavours. You should copy this script before using it with git bisect, so that
+it doesn't change (or disappear) during bisection.
+
test/cov-blame -- Mash up the results of gcov with git blame. Mainly useful
to find out who has been writing untested code.
diff --git a/scripts/codegen/fuzzing_include_am.py b/scripts/codegen/fuzzing_include_am.py
index 42a61876e8..3c948d87cf 100755
--- a/scripts/codegen/fuzzing_include_am.py
+++ b/scripts/codegen/fuzzing_include_am.py
@@ -12,6 +12,7 @@ FUZZERS = """
http-connect
iptsv2
microdesc
+ socks
vrs
"""
@@ -83,6 +84,7 @@ def get_id_name(s):
for fuzzer in FUZZERS:
idname = get_id_name(fuzzer)
print("""\
+if UNITTESTS_ENABLED
src_test_fuzz_fuzz_{name}_SOURCES = \\
src/test/fuzz/fuzzing_common.c \\
src/test/fuzz/fuzz_{name}.c
@@ -90,11 +92,14 @@ src_test_fuzz_fuzz_{name}_CPPFLAGS = $(FUZZING_CPPFLAGS)
src_test_fuzz_fuzz_{name}_CFLAGS = $(FUZZING_CFLAGS)
src_test_fuzz_fuzz_{name}_LDFLAGS = $(FUZZING_LDFLAG)
src_test_fuzz_fuzz_{name}_LDADD = $(FUZZING_LIBS)
+endif
""".format(name=idname))
+print("if UNITTESTS_ENABLED")
print("FUZZERS = \\")
print(" \\\n".join("\tsrc/test/fuzz/fuzz-{name}".format(name=fuzzer)
for fuzzer in FUZZERS))
+print("endif")
print("\n# ===== libfuzzer")
print("\nif LIBFUZZER_ENABLED")
@@ -102,12 +107,14 @@ print("\nif LIBFUZZER_ENABLED")
for fuzzer in FUZZERS:
idname = get_id_name(fuzzer)
print("""\
+if UNITTESTS_ENABLED
src_test_fuzz_lf_fuzz_{name}_SOURCES = \\
$(src_test_fuzz_fuzz_{name}_SOURCES)
src_test_fuzz_lf_fuzz_{name}_CPPFLAGS = $(LIBFUZZER_CPPFLAGS)
src_test_fuzz_lf_fuzz_{name}_CFLAGS = $(LIBFUZZER_CFLAGS)
src_test_fuzz_lf_fuzz_{name}_LDFLAGS = $(LIBFUZZER_LDFLAG)
src_test_fuzz_lf_fuzz_{name}_LDADD = $(LIBFUZZER_LIBS)
+endif
""".format(name=idname))
print("LIBFUZZER_FUZZERS = \\")
@@ -125,10 +132,12 @@ print("if OSS_FUZZ_ENABLED")
for fuzzer in FUZZERS:
idname = get_id_name(fuzzer)
print("""\
+if UNITTESTS_ENABLED
src_test_fuzz_liboss_fuzz_{name}_a_SOURCES = \\
$(src_test_fuzz_fuzz_{name}_SOURCES)
src_test_fuzz_liboss_fuzz_{name}_a_CPPFLAGS = $(LIBOSS_FUZZ_CPPFLAGS)
src_test_fuzz_liboss_fuzz_{name}_a_CFLAGS = $(LIBOSS_FUZZ_CFLAGS)
+endif
""".format(name=idname))
print("OSS_FUZZ_FUZZERS = \\")
diff --git a/scripts/maint/checkIncludes.py b/scripts/maint/checkIncludes.py
index 9da15a2b9c..d13ff565cb 100755
--- a/scripts/maint/checkIncludes.py
+++ b/scripts/maint/checkIncludes.py
@@ -1,25 +1,48 @@
#!/usr/bin/python3
# Copyright 2018 The Tor Project, Inc. See LICENSE file for licensing info.
+"""This script looks through all the directories for files matching *.c or
+ *.h, and checks their #include directives to make sure that only "permitted"
+ headers are included.
+
+ Any #include directives with angle brackets (like #include <stdio.h>) are
+ ignored -- only directives with quotes (like #include "foo.h") are
+ considered.
+
+ To decide what includes are permitted, this script looks at a .may_include
+ file in each directory. This file contains empty lines, #-prefixed
+ comments, filenames (like "lib/foo/bar.h") and file globs (like lib/*/*.h)
+ for files that are permitted.
+"""
+
+
+from __future__ import print_function
+
import fnmatch
import os
import re
import sys
+# Global: Have there been any errors?
trouble = False
def err(msg):
+ """ Declare that an error has happened, and remember that there has
+ been an error. """
global trouble
trouble = True
print(msg, file=sys.stderr)
def fname_is_c(fname):
+ """ Return true iff 'fname' is the name of a file that we should
+ search for possibly disallowed #include directives. """
return fname.endswith(".h") or fname.endswith(".c")
INCLUDE_PATTERN = re.compile(r'\s*#\s*include\s+"([^"]*)"')
RULES_FNAME = ".may_include"
class Rules(object):
+ """ A 'Rules' object is the parsed version of a .may_include file. """
def __init__(self, dirpath):
self.dirpath = dirpath
self.patterns = []
@@ -57,6 +80,7 @@ class Rules(object):
print("Pattern {} in {} was never used.".format(p, self.dirpath))
def load_include_rules(fname):
+ """ Read a rules file from 'fname', and return it as a Rules object. """
result = Rules(os.path.split(fname)[0])
with open(fname, 'r') as f:
for line in f:
@@ -79,6 +103,6 @@ for dirpath, dirnames, fnames in os.walk("src"):
if trouble:
err(
-"""To change which includes are allowed in a C file, edit the {} files in its
-enclosing directory.""".format(RULES_FNAME))
+"""To change which includes are allowed in a C file, edit the {}
+files in its enclosing directory.""".format(RULES_FNAME))
sys.exit(1)
diff --git a/scripts/maint/fallback.blacklist b/scripts/maint/fallback.blacklist
deleted file mode 100644
index a118cb5919..0000000000
--- a/scripts/maint/fallback.blacklist
+++ /dev/null
@@ -1,232 +0,0 @@
-# updateFallbackDirs.py directory mirror blacklist
-#
-# Format:
-# [ IPv4[:DirPort] ] [ orport=<ORPort> ] [ id=<ID> ] ...
-# [ ipv6=<IPv6>[:<IPv6 ORPort>] ]
-# or use:
-# scripts/maint/generateFallbackDirLine.py fingerprint ...
-#
-# If a sufficiently specific group of attributes matches, the directory mirror
-# will be excluded: (each group is listed on its own line)
-# <IPv4>, <DirPort>
-# <IPv4>, <ORPort>
-# <ID>
-# <IPv6>, <DirPort>
-# <IPv6>, <IPv6 ORPort>
-# If DirPort and ORPort are not present, the entire IP address is blacklisted.
-# (The blacklist overrides the whitelist.)
-
-# If a relay operator doesn't want their relay to be a FallbackDir,
-# enter the following information here:
-# <IPv4>:<DirPort> orport=<ORPort> id=<ID> ipv6=<IPv6>:<IPv6 ORPort>
-
-# https://lists.torproject.org/pipermail/tor-relays/2015-December/008364.html
-87.181.248.227:9030 orport=443 id=8827944C4BDCBDAC9079803F47823403C11A9B7A
-
-# https://lists.torproject.org/pipermail/tor-relays/2015-December/008368.html
-149.18.2.82:9030 orport=9001 id=953DB709F2A2DECC8D7560661F934E64411444F7
-
-# https://lists.torproject.org/pipermail/tor-relays/2015-December/008384.html
-80.82.215.199:80 orport=443 id=3BEFAB76461B6B99DCF34C285E933562F5712AE4 ipv6=[2001:4ba0:cafe:a18::1]:443
-
-# Email sent directly to teor, verified using relay contact info
-5.34.183.168:80 orport=443 id=601C92108A568742A7A6D9473FE3A414F7149070
-217.12.199.208:8080 orport=22 id=BCFB0933367D626715DA32A147F417194A5D48D6
-
-# https://lists.torproject.org/pipermail/tor-relays/2016-January/008555.html
-62.210.207.124:9030 orport=9001 id=58938B1A5C4029B4415D38A4F36B7724273F4755 ipv6=[2001:bc8:31eb:100::1]:9001
-62.210.207.124:9130 orport=9101 id=338D0AB6DBAB7B529B9C91B2FD770658000693C4 ipv6=[2001:bc8:31eb:100::1]:9101
-
-# Email sent directly to teor, verified using relay contact info
-216.17.99.183:80 orport=443 id=D52CD431CEF28E01B11F545A84347EE45524BCA7
-216.17.99.183:8080 orport=9001 id=EE21F83AB6F76E3B3FFCBA5C2496F789CB84E7C6
-65.19.167.130:80 orport=443 id=890E2EA65455FBF0FAAB4159FAC4412BDCB24295
-65.19.167.131:80 orport=443 id=0DA9BD201766EDB19F57F49F1A013A8A5432C008
-65.19.167.132:80 orport=443 id=12B80ABF019354A9D25EE8BE85EB3C0AD8F7DFC1
-65.19.167.133:80 orport=443 id=C170AE5A886C5A09D6D1CF5CF284653632EEF25D
-
-# Email sent directly to teor, verified using relay contact info
-213.136.83.225:80 orport=443 id=B411027C926A9BFFCF7DA91E3CAF1856A321EFFD
-195.154.126.78:80 orport=443 id=F6556156E2B3837248E03FDB770441CF64DBBFBE
-
-# Email sent directly to teor, verified using relay contact info
-178.63.198.113:80 orport=443 id=872B18761953254914F77C71846E8A2623C52591
-
-# Email sent directly to teor, verified using relay contact info
-63.141.226.34:80 orport=9001 id=5EF131C0C82270F40B756987FDB5D54D9C966238
-185.75.56.103:80 orport=9001 id=3763CE5C3F574670D4296573744F821C0FFFB98E
-
-# Email sent directly to teor, verified using relay contact info
-81.7.14.227:9030 orport=9001 id=BCA197C43A44B7B9D14509637F96A45B13C233D0
-
-# Email sent directly to teor, verified using relay contact info
-84.245.32.195:9030 orport=9001 id=4CD4DFFEF3971C902A22100D911CAC639BE2EF5C
-
-# Email sent directly to teor, verified using relay contact info
-185.21.217.10:9030 orport=9001 id=41537E1D3DD3CAE86F5A3F0882F1C647FE8FC0A0
-
-# Email sent directly to teor, verified using relay contact info
-185.21.216.140:9030 orport=9001 id=921DA852C95141F8964B359F774B35502E489869
-
-# Email sent directly to teor, verified using relay contact info
-46.101.220.161:80 orport=443 id=7DDFE5B2C306B19A79832FBE581EAA245BAE90C6 ipv6=[2a03:b0c0:3:d0::8b:3001]:443
-
-# Email sent directly to teor, verified using relay contact info
-195.154.107.23:80 orport=443 id=A1F89F26E82209169E4037B035AE7B6C94A49AEB ipv6=[2001:bc8:3829:300::1]:443
-195.154.92.70:80 orport=443 id=E7FF4ECEEFCFE3A40A6D3594898A4A3DE018BBF5 ipv6=[2001:bc8:3829:500::1]:443
-195.154.113.200:80 orport=443 id=D1A4763FA0BD71978901B1951FEE1DC29777F95A ipv6=[2001:bc8:3829:600::1]:443
-195.154.92.155:110 orport=993 id=4477D3466FE136B7FE6F7FF8EBD0D6E2FFE3288B ipv6=[2001:bc8:3829:100::1]:993
-195.154.117.182:110 orport=993 id=B1A0F1143789466AADD5FAE5948C8138548EECEC ipv6=[2001:bc8:3829:400::1]:993
-195.154.97.163:80 orport=443 id=8A2994A63B20813B7724817A8FB8C444D10BA2E2
-
-# Email sent directly to teor, verified using relay contact info
-5.135.154.206:9030 orport=9001 id=7D67B342DC1158F4CFFEE8BC530A2448848026E3
-
-# Email sent directly to teor, verified using relay contact info
-85.24.215.117:9030 orport=9001 id=5989521A85C94EE101E88B8DB2E68321673F9405 ipv6=[2001:9b0:20:2106:21a:4aff:fea5:ad05]:9001
-
-# Email sent directly to teor, verified using relay contact info
-62.210.137.230:8888 orport=8843 id=CD6B850159CFF4C068A8D0F1BA5296AE4EDCAB39 ipv6=[2001:bc8:31d3:100::1]:3443
-62.210.137.230:8080 orport=8443 id=F596E1B1EF98E1DDBBDC934DB722AF54069868F6 ipv6=[2001:bc8:31d3:100::1]:8443
-
-# Email sent directly to teor, verified using relay contact info
-195.154.99.80:80 orport=443 id=6E7CB6E783C1B67B79D0EBBE7D48BC09BD441201
-195.154.127.60:80 orport=443 id=D74ABE34845190E242EC74BA28B8C89B0A480D4B
-
-# Email sent directly to teor, verified using relay contact info
-212.51.143.20:80 orport=443 id=62DA0256BBC28992D41CBAFB549FFD7C9B846A99
-
-# Email sent directly to teor, verified using relay contact info
-195.154.90.122:80 orport=443 id=3A0D88024A30152E6F6372CFDF8F9B725F984362
-
-# Email sent directly to teor, verified using relay contact info
-188.166.118.215:9030 orport=443 id=FB5FF60F5EBA010F8A45AC6ED31A4393718A2C31 ipv6=[2a03:b0c0:2:d0::72:9001]:443
-
-# Email sent directly to teor, verified using relay contact info
-185.87.185.245:40001 orport=40000 id=2A499AEEA95FB10F07544383D562368E49BE32CA
-
-# Email sent directly to teor, verified using relay contact info
-82.161.109.71:9030 orport=9001 id=BD9CE352648B940E788A8E45393C5400CC3E87E7
-
-# Email sent directly to teor, verified using relay contact info
-212.83.40.239:9030 orport=9001 id=6DC5616BD3FC463329DCE87DD7AAAEA112C264B5
-
-# Email sent directly to teor, verified using relay contact info
-178.32.53.53:80 orport=443 id=10582C360E972EE76B0DB1C246F4E892A6BF5465
-
-# Email sent directly to teor, verified using relay contact info
-85.114.135.20:9030 orport=9001 id=ED8A9291A3139E34BBD35037B082081EC6C26C80 ipv6=[2001:4ba0:fff5:2d::8]:9001
-148.251.128.156:9030 orport=9001 id=E382042E06A0A68AFC533E5AD5FB6867A12DF9FF ipv6=[2a01:4f8:210:238a::8]:9001
-62.210.115.147:9030 orport=9001 id=7F1D94E2C36F8CC595C2AB00022A5AE38171D50B ipv6=[2001:bc8:3182:101::8]:9001
-
-# Email sent directly to teor, verified using relay contact info
-74.208.220.222:60000 orport=59999 id=4AA22235F0E9B3795A33930343CBB3EDAC60C5B0
-
-# Email sent directly to teor, verified using relay contact info
-89.163.140.168:9030 orport=9001 id=839C1212DB15723263BE96C83DA7E1B24FA395E8
-
-# Email sent directly to teor, verified using relay contact info
-212.47.246.211:9030 orport=9001 id=AA34219475E41282095DD3C088009EE562AF14E5
-
-# Email sent directly to teor, verified using relay contact info
-85.195.235.148:9030 orport=9001 id=103336165A0D2EFCAD3605339843A0A7710B8B92
-85.195.235.148:19030 orport=19001 id=713235638AB6C64715EAFD1B4772685E38AFD52A
-
-# Email sent directly to teor, verified using relay contact info
-163.172.7.30:9030 orport=9001 id=E2EACD4752B2583202F374A34CACC844A3AECAC4
-
-# Email sent directly to teor, verified using relay contact info
-178.62.90.111:22 orport=25 id=3254D1DC1F1531D9C07C535E4991F38EE99B99E1
-
-# Email sent directly to teor, verified using relay contact info
-213.200.106.131:9030 orport=4443 id=B07CE79FD215129C381F6645B16E76DCA0845CAB
-
-# Email sent directly to teor, verified using relay contact info
-198.51.75.165:80 orport=9001 id=DABCB84A524A22FDDD3AFCB090E3090CC12D9770
-
-# Email sent directly to teor, verified using relay contact info
-204.194.29.4:80 orport=9001 id=78C7C299DB4C4BD119A22B87B57D5AF5F3741A79
-
-# Email sent directly to teor, verified using relay contact info
-104.207.132.109:9030 orport=9001 id=12D5737383C23E756A7AA1A90BB24413BA428DA7 ipv6=[2001:19f0:300:2261::1]:9001
-
-# Email sent directly to teor, verified using relay contact info
-46.252.25.249:9030 orport=443 id=80DCBB6EF4E86A7CD4FBCBDEE64979645509A610
-
-# Email sent directly to teor, verified using relay contact info
-176.10.99.200:8080 orport=443 id=2B44FD1742D26E4F28D4CACF1F0CF8A686270E45
-176.10.99.200:8000 orport=22 id=EB79F07792A065D3C534063773E83268E069F5EB
-176.10.99.201:667 orport=666 id=3EAAAB35932610411E24FA4317603CB5780B80BC
-176.10.99.201:990 orport=989 id=7C3A4CFF09C1981D41173CDE2A2ADD4A5CA109FD
-176.10.99.202:992 orport=991 id=615EBC4B48F03858FA50A3E23E5AF569D0D2308A
-176.10.99.202:994 orport=993 id=E34E25D958D46DDE5092385B14117C9B301DC0E9
-176.10.99.203:1194 orport=995 id=AD368442E9FF33C08C7407DF2DA7DB958F406CE2
-176.10.99.203:43 orport=53 id=79CF377F0ACEC5F0002D85335E4192B34202A269
-176.10.99.204:1755 orport=1723 id=69DF3CDA1CDA460C17ECAD9D6F0C117A42384FA0
-176.10.99.204:1293 orport=4321 id=3F061400B6FB1F55E7F19BB3C713884D677E55B7
-176.10.99.205:426 orport=425 id=C30B284784BF11D0D58C6A250240EE58D2084AD0
-176.10.99.205:109 orport=110 id=12D17D9F9E30FA901DE68806950A0EA278716CED
-176.10.99.206:24 orport=23 id=2C804AAB0C02F971A4386B3A1F2AC00F9E080679
-176.10.99.206:20 orport=21 id=237588726AB6BEA37FF23CA00F5BD178586CA68E
-176.10.99.207:3390 orport=3389 id=A838D5B8890B10172429ECE92EB5677DF93DC4DD
-176.10.99.207:1415 orport=1414 id=377E5E817A84FAE0F4DC3427805DB2E8A6CBBFC0
-176.10.99.208:390 orport=389 id=7C288587BA0D99CC6B8537CDC2C4639FA827B907
-176.10.99.208:3307 orport=3306 id=1F0D2A44C56F42816DED2022EFD631878C29905B
-176.10.99.209:1434 orport=1433 id=BDA7A91FF3806DE5109FDAE74CFEFB3BABB9E10F
-176.10.99.209:220 orport=219 id=B8C2030001D832066A648269CFBA94171951D34B
-
-# Email sent directly to teor, verified using relay contact info
-78.193.40.205:8080 orport=8443 id=C91450840E75AC1B654A3096744338A573A239C6
-
-# Email sent directly to teor, verified using relay contact info
-37.187.22.172:9030 orport=9035 id=335E4117BD9A4966403C2AFA31CFDD1BC13BD46A
-
-# https://lists.torproject.org/pipermail/tor-relays/2015-December/008367.html
-# Email sent directly to teor to opt-out
-88.198.38.226:22 orport=443 id=4B9E2C56FB42B891794FE2CD2FCAD08A320CC3BB ipv6=[2a01:4f8:a0:1351::2]:80
-213.239.210.204:22 orport=443 id=5BFDECCE9B4A23AE14EC767C5A2C1E10558B00B9 ipv6=[2a01:4f8:a0:9474::2]:80
-213.239.220.25:22 orport=443 id=BEE2317AE127EB681C5AE1551C1EA0630580638A ipv6=[2a01:4f8:a0:710c::2]:80
-85.10.201.38:22 orport=443 id=F6279A203C1950ACF592322A235647A05BFBCF91 ipv6=[2a01:4f8:a0:43cc::2]:80
-
-# Email sent directly to teor, verified using relay contact info
-88.190.208.4:30555 orport=30556 id=030A6EB24725C05D8E0FCE21923CBA5223E75E0E
-
-# Fallback was on 0.2.8.2-alpha list, but opted-out before 0.2.8.6
-37.187.1.149:9030 orport=9001 id=08DC0F3C6E3D9C527C1FC8745D35DD1B0DE1875D ipv6=[2001:41d0:a:195::1]:9001
-
-# Email sent directly to teor, verified using relay contact info
-195.154.15.227:9030 orport=9001 id=6C3E3AB2F5F03CD71B637D433BAD924A1ECC5796
-
-# Fallback was on 0.2.8.6 list, but opted-out before 0.2.9
-144.76.73.140:9030 orport=9001 id=6A640018EABF3DA9BAD9321AA37C2C87BBE1F907
-
-# https://lists.torproject.org/pipermail/tor-relays/2016-December/011114.html
-# no dirport
-86.107.110.34:0 orport=9001 id=A0E3D30A660DB70CA0B6D081BA54D094DED6F28D
-94.242.59.147:80 orport=9001 id=674DCBB0D9C1C4C4DBFB4A9AE024AF59FE4E7F46 ipv6=[2a00:1838:35:42::b648]:9001
-
-# Email sent directly to teor, verified using relay contact info
-167.114.152.100:9030 orport=443 id=0EF5E5FFC5D1EABCBDA1AFF6F6D6325C5756B0B2 ipv6=[2607:5300:100:200::1608]:443
-
-# Email sent directly to teor, verified using relay contact info
-163.172.35.245:80 orport=443 id=B771AA877687F88E6F1CA5354756DF6C8A7B6B24
-
-# Email sent directly to teor, verified using relay contact info
-104.243.35.196:9030 orport=9001 id=FA3415659444AE006E7E9E5375E82F29700CFDFD
-
-# Emails sent directly to teor, verified using relay contact info
-217.12.199.208:80 orport=443 id=DF3AED4322B1824BF5539AE54B2D1B38E080FF05 ipv6=[2a02:27a8:0:2::7e]:443
-
-# Emails sent directly to teor, verified using relay contact info
-195.154.75.84:9030 orport=9001 id=F80FDE27EFCB3F6A7B4E2CC517133DBFFA78BA2D
-195.154.127.246:9030 orport=9001 id=4FEE77AFFD157BBCF2D896AE417FBF647860466C
-
-# Email sent directly to teor, verified using relay contact info
-5.35.251.247:9030 orport=9001 id=9B1F5187DFBA89DC24B37EA7BF896C12B43A27AE
-
-#https://lists.torproject.org/pipermail/tor-relays/2017-May/012281.html
-62.210.124.124:9030 orport=9001 id=86E78DD3720C78DA8673182EF96C54B162CD660C ipv6=[2001:bc8:3f23:100::1]:9001
-62.210.124.124:9130 orport=9101 id=2EBD117806EE43C3CC885A8F1E4DC60F207E7D3E ipv6=[2001:bc8:3f23:100::1]:9101
-
-# Email sent directly to teor
-212.51.156.193:995 orport=110 id=32E7AAF1F602814D699BEF6761AD03E387758D49 ipv6=[2a02:168:4a01::49]:110
diff --git a/scripts/maint/updateFallbackDirs.py b/scripts/maint/updateFallbackDirs.py
index 355dc027df..0ea3992d8f 100755
--- a/scripts/maint/updateFallbackDirs.py
+++ b/scripts/maint/updateFallbackDirs.py
@@ -117,10 +117,9 @@ CONSENSUS_EXPIRY_TOLERANCE = 0
# Output fallback name, flags, bandwidth, and ContactInfo in a C comment?
OUTPUT_COMMENTS = True if OUTPUT_CANDIDATES else False
-# Output matching ContactInfo in fallbacks list or the blacklist?
+# Output matching ContactInfo in fallbacks list?
# Useful if you're trying to contact operators
CONTACT_COUNT = True if OUTPUT_CANDIDATES else False
-CONTACT_BLACKLIST_COUNT = True if OUTPUT_CANDIDATES else False
# How the list should be sorted:
# fingerprint: is useful for stable diffs of fallback lists
@@ -141,26 +140,12 @@ LOCAL_FILES_ONLY = False
# The whitelist contains entries that are included if all attributes match
# (IPv4, dirport, orport, id, and optionally IPv6 and IPv6 orport)
-# The blacklist contains (partial) entries that are excluded if any
-# sufficiently specific group of attributes matches:
-# IPv4 & DirPort
-# IPv4 & ORPort
-# ID
-# IPv6 & DirPort
-# IPv6 & IPv6 ORPort
-# If neither port is included in the blacklist, the entire IP address is
-# blacklisted.
-
-# What happens to entries in neither list?
+
+# What happens to entries not in whitelist?
# When True, they are included, when False, they are excluded
INCLUDE_UNLISTED_ENTRIES = True if OUTPUT_CANDIDATES else False
-# If an entry is in both lists, what happens?
-# When True, it is excluded, when False, it is included
-BLACKLIST_EXCLUDES_WHITELIST_ENTRIES = True
-
WHITELIST_FILE_NAME = 'scripts/maint/fallback.whitelist'
-BLACKLIST_FILE_NAME = 'scripts/maint/fallback.blacklist'
FALLBACK_FILE_NAME = 'src/app/config/fallback_dirs.inc'
# The number of bytes we'll read from a filter file before giving up
@@ -984,78 +969,6 @@ class Candidate(object):
return True
return False
- def is_in_blacklist(self, relaylist):
- """ A fallback matches a blacklist line if a sufficiently specific group
- of attributes matches:
- ipv4 & dirport
- ipv4 & orport
- id
- ipv6 & dirport
- ipv6 & ipv6 orport
- If the fallback and the blacklist line both have an ipv6 key,
- their values will be compared, otherwise, they will be ignored.
- If there is no dirport and no orport, the entry matches all relays on
- that ip. """
- for entry in relaylist:
- for key in entry:
- value = entry[key]
- if key == 'id' and value == self._fpr:
- log_excluded('%s is in the blacklist: fingerprint matches',
- self._fpr)
- return True
- if key == 'ipv4' and value == self.dirip:
- # if the dirport is present, check it too
- if entry.has_key('dirport'):
- if int(entry['dirport']) == self.dirport:
- log_excluded('%s is in the blacklist: IPv4 (%s) and ' +
- 'DirPort (%d) match', self._fpr, self.dirip,
- self.dirport)
- return True
- # if the orport is present, check it too
- elif entry.has_key('orport'):
- if int(entry['orport']) == self.orport:
- log_excluded('%s is in the blacklist: IPv4 (%s) and ' +
- 'ORPort (%d) match', self._fpr, self.dirip,
- self.orport)
- return True
- else:
- log_excluded('%s is in the blacklist: IPv4 (%s) matches, and ' +
- 'entry has no DirPort or ORPort', self._fpr,
- self.dirip)
- return True
- ipv6 = None
- if self.has_ipv6():
- ipv6 = '%s:%d'%(self.ipv6addr, self.ipv6orport)
- if (key == 'ipv6' and self.has_ipv6()):
- # if both entry and fallback have an ipv6 address, compare them,
- # otherwise, disregard ipv6 addresses
- if value == ipv6:
- # if the dirport is present, check it too
- if entry.has_key('dirport'):
- if int(entry['dirport']) == self.dirport:
- log_excluded('%s is in the blacklist: IPv6 (%s) and ' +
- 'DirPort (%d) match', self._fpr, ipv6,
- self.dirport)
- return True
- # we've already checked the ORPort, it's part of entry['ipv6']
- else:
- log_excluded('%s is in the blacklist: IPv6 (%s) matches, and' +
- 'entry has no DirPort', self._fpr, ipv6)
- return True
- elif (key == 'ipv6' or self.has_ipv6()):
- # only log if the fingerprint matches but the IPv6 doesn't
- if entry.has_key('id') and entry['id'] == self._fpr:
- log_excluded('%s skipping IPv6 blacklist comparison: relay ' +
- 'has%s IPv6%s, but entry has%s IPv6%s', self._fpr,
- '' if self.has_ipv6() else ' no',
- (' (' + ipv6 + ')') if self.has_ipv6() else '',
- '' if key == 'ipv6' else ' no',
- (' (' + value + ')') if key == 'ipv6' else '')
- logging.warning('Has %s %s IPv6 address %s?', self._fpr,
- 'gained an' if self.has_ipv6() else 'lost its former',
- ipv6 if self.has_ipv6() else value)
- return False
-
def cw_to_bw_factor(self):
# any relays with a missing or zero consensus weight are not candidates
# any relays with a missing advertised bandwidth have it set to zero
@@ -1317,26 +1230,12 @@ class Candidate(object):
s += '\n'
if self._data['contact'] is not None:
s += cleanse_c_multiline_comment(self._data['contact'])
- if CONTACT_COUNT or CONTACT_BLACKLIST_COUNT:
+ if CONTACT_COUNT:
fallback_count = len([f for f in fallbacks
if f._data['contact'] == self._data['contact']])
if fallback_count > 1:
s += '\n'
s += '%d identical contacts listed' % (fallback_count)
- if CONTACT_BLACKLIST_COUNT:
- prefilter_count = len([f for f in prefilter_fallbacks
- if f._data['contact'] == self._data['contact']])
- filter_count = prefilter_count - fallback_count
- if filter_count > 0:
- if fallback_count > 1:
- s += ' '
- else:
- s += '\n'
- s += '%d blacklisted' % (filter_count)
- s += '\n'
- s += '*/'
- s += '\n'
- return s
# output the fallback info C string for this fallback
# this is the text that would go after FallbackDir in a torrc
@@ -1544,48 +1443,32 @@ class CandidateList(dict):
relaylist.append(relay_entry)
return relaylist
- # apply the fallback whitelist and blacklist
- def apply_filter_lists(self, whitelist_obj, blacklist_obj):
+ # apply the fallback whitelist
+ def apply_filter_lists(self, whitelist_obj):
excluded_count = 0
- logging.debug('Applying whitelist and blacklist.')
- # parse the whitelist and blacklist
+ logging.debug('Applying whitelist')
+ # parse the whitelist
whitelist = self.load_relaylist(whitelist_obj)
- blacklist = self.load_relaylist(blacklist_obj)
filtered_fallbacks = []
for f in self.fallbacks:
in_whitelist = f.is_in_whitelist(whitelist)
- in_blacklist = f.is_in_blacklist(blacklist)
- if in_whitelist and in_blacklist:
- if BLACKLIST_EXCLUDES_WHITELIST_ENTRIES:
- # exclude
- excluded_count += 1
- logging.warning('Excluding %s: in both blacklist and whitelist.',
- f._fpr)
- else:
- # include
- filtered_fallbacks.append(f)
- elif in_whitelist:
+ if in_whitelist:
# include
filtered_fallbacks.append(f)
- elif in_blacklist:
- # exclude
- excluded_count += 1
- log_excluded('Excluding %s: in blacklist.', f._fpr)
- else:
- if INCLUDE_UNLISTED_ENTRIES:
+ elif INCLUDE_UNLISTED_ENTRIES:
# include
filtered_fallbacks.append(f)
- else:
+ else:
# exclude
excluded_count += 1
- log_excluded('Excluding %s: in neither blacklist nor whitelist.',
+ log_excluded('Excluding %s: not in whitelist.',
f._fpr)
self.fallbacks = filtered_fallbacks
return excluded_count
@staticmethod
def summarise_filters(initial_count, excluded_count):
- return '/* Whitelist & blacklist excluded %d of %d candidates. */'%(
+ return '/* Whitelist excluded %d of %d candidates. */'%(
excluded_count, initial_count)
# calculate each fallback's measured bandwidth based on the median
@@ -2181,18 +2064,14 @@ def process_existing():
logging.getLogger('stem').setLevel(logging.INFO)
whitelist = {'data': parse_fallback_file(FALLBACK_FILE_NAME),
'name': FALLBACK_FILE_NAME}
- blacklist = {'data': read_from_file(BLACKLIST_FILE_NAME, MAX_LIST_FILE_SIZE),
- 'name': BLACKLIST_FILE_NAME}
- list_fallbacks(whitelist, blacklist)
+ list_fallbacks(whitelist)
def process_default():
logging.basicConfig(level=logging.WARNING)
logging.getLogger('stem').setLevel(logging.WARNING)
whitelist = {'data': read_from_file(WHITELIST_FILE_NAME, MAX_LIST_FILE_SIZE),
'name': WHITELIST_FILE_NAME}
- blacklist = {'data': read_from_file(BLACKLIST_FILE_NAME, MAX_LIST_FILE_SIZE),
- 'name': BLACKLIST_FILE_NAME}
- list_fallbacks(whitelist, blacklist)
+ list_fallbacks(whitelist)
## Main Function
def main():
@@ -2213,7 +2092,7 @@ def log_excluded(msg, *args):
else:
logging.info(msg, *args)
-def list_fallbacks(whitelist, blacklist):
+def list_fallbacks(whitelist):
""" Fetches required onionoo documents and evaluates the
fallback directory criteria for each of the relays """
@@ -2250,13 +2129,13 @@ def list_fallbacks(whitelist, blacklist):
candidates.compute_fallbacks()
prefilter_fallbacks = copy.copy(candidates.fallbacks)
- # filter with the whitelist and blacklist
+ # filter with the whitelist
# if a relay has changed IPv4 address or ports recently, it will be excluded
# as ineligible before we call apply_filter_lists, and so there will be no
# warning that the details have changed from those in the whitelist.
# instead, there will be an info-level log during the eligibility check.
initial_count = len(candidates.fallbacks)
- excluded_count = candidates.apply_filter_lists(whitelist, blacklist)
+ excluded_count = candidates.apply_filter_lists(whitelist)
print candidates.summarise_filters(initial_count, excluded_count)
eligible_count = len(candidates.fallbacks)
diff --git a/scripts/test/appveyor-irc-notify.py b/scripts/test/appveyor-irc-notify.py
index 4ffea52684..cfe0afe7ae 100644
--- a/scripts/test/appveyor-irc-notify.py
+++ b/scripts/test/appveyor-irc-notify.py
@@ -22,6 +22,12 @@
# - Accept UTF-8
# - only guess github URLs
# - stop using ANSI colors
+#
+# Modified by teor in 2018:
+# - fix github provider detection ('gitHub' or 'gitHubEnterprise', apparently)
+# - make short commits 10 hexdigits long (that's what git does for tor)
+# - generate correct branches and URLs for pull requests and tags
+# - switch to one URL per line
# This program is free software; you can redistribute it and/or modify it under the
# terms of the GNU General Public License as published by the Free Software Foundation;
@@ -45,19 +51,19 @@ delineate multiple messages.
Example:
-export APPVEYOR_URL=https://ci.appveyor.com
+export APPVEYOR_ACCOUNT_NAME=isislovecruft
+export APPVEYOR_BUILD_VERSION=1
export APPVEYOR_PROJECT_NAME=tor
-export APPVEYOR_REPO_COMMIT_AUTHOR=isislovecruft
-export APPVEYOR_REPO_COMMIT_TIMESTAMP=2018-04-23
-export APPVEYOR_REPO_PROVIDER=gihub
-export APPVEYOR_REPO_BRANCH=repo_branch
+export APPVEYOR_PULL_REQUEST_NUMBER=pull_request_number
export APPVEYOR_PULL_REQUEST_TITLE=pull_request_title
-export APPVEYOR_BUILD_VERSION=1
+export APPVEYOR_REPO_BRANCH=repo_branch
export APPVEYOR_REPO_COMMIT=22c95b72e29248dc4de9b85e590ee18f6f587de8
+export APPVEYOR_REPO_COMMIT_AUTHOR=isislovecruft
export APPVEYOR_REPO_COMMIT_MESSAGE="some IRC test"
-export APPVEYOR_ACCOUNT_NAME=isislovecruft
-export APPVEYOR_PULL_REQUEST_NUMBER=pull_request_number
+export APPVEYOR_REPO_COMMIT_TIMESTAMP=2018-04-23
export APPVEYOR_REPO_NAME=isislovecruft/tor
+export APPVEYOR_REPO_PROVIDER=github
+export APPVEYOR_URL=https://ci.appveyor.com
python ./appveyor-irc-notify.py irc.oftc.net:6697 tor-ci '{repo_name} {repo_branch} {short_commit} - {repo_commit_author}: {repo_commit_message}','Build #{build_version} passed. Details: {build_url} | Commit: {commit_url}
See also https://github.com/gridsync/gridsync/blob/master/appveyor.yml for examples
@@ -82,7 +88,7 @@ import time
def appveyor_vars():
"""
- Return a dict of key value carfted from appveyor environment variables.
+ Return a dict of key value crafted from appveyor environment variables.
"""
vars = dict([
@@ -90,33 +96,52 @@ def appveyor_vars():
v.replace('APPVEYOR_', '').lower(),
os.getenv(v, '').decode('utf-8')
) for v in [
- 'APPVEYOR_URL',
- 'APPVEYOR_REPO_COMMIT_MESSAGE_EXTENDED',
+ 'APPVEYOR_ACCOUNT_NAME',
+ 'APPVEYOR_BUILD_VERSION',
+ 'APPVEYOR_PROJECT_NAME',
+ 'APPVEYOR_PULL_REQUEST_HEAD_COMMIT',
+ 'APPVEYOR_PULL_REQUEST_HEAD_REPO_BRANCH',
+ 'APPVEYOR_PULL_REQUEST_HEAD_REPO_NAME',
+ 'APPVEYOR_PULL_REQUEST_NUMBER',
+ 'APPVEYOR_PULL_REQUEST_TITLE',
'APPVEYOR_REPO_BRANCH',
+ 'APPVEYOR_REPO_COMMIT',
'APPVEYOR_REPO_COMMIT_AUTHOR',
'APPVEYOR_REPO_COMMIT_AUTHOR_EMAIL',
+ 'APPVEYOR_REPO_COMMIT_MESSAGE',
+ 'APPVEYOR_REPO_COMMIT_MESSAGE_EXTENDED',
'APPVEYOR_REPO_COMMIT_TIMESTAMP',
+ 'APPVEYOR_REPO_NAME',
'APPVEYOR_REPO_PROVIDER',
- 'APPVEYOR_PROJECT_NAME',
- 'APPVEYOR_PULL_REQUEST_TITLE',
- 'APPVEYOR_BUILD_VERSION',
- 'APPVEYOR_REPO_COMMIT',
- 'APPVEYOR_REPO_COMMIT_MESSAGE',
- 'APPVEYOR_ACCOUNT_NAME',
- 'APPVEYOR_PULL_REQUEST_NUMBER',
- 'APPVEYOR_REPO_NAME'
+ 'APPVEYOR_REPO_TAG_NAME',
+ 'APPVEYOR_URL',
]
])
BUILD_FMT = u'{url}/project/{account_name}/{project_name}/build/{build_version}'
- if vars["repo_provider"] == 'github':
- COMMIT_FMT = u'https://{repo_provider}.com/{repo_name}/commit/{repo_commit}'
+ if vars["repo_tag_name"]:
+ BRANCH_FMT = u'{repo_name} {repo_tag_name} {short_commit}'
+ else:
+ BRANCH_FMT = u'{repo_name} {repo_branch} {short_commit}'
+
+ vars.update(head_commit=vars["repo_commit"])
+
+ if vars["repo_provider"].lower().startswith('github'):
+ COMMIT_FMT = u'https://github.com/{repo_name}/commit/{repo_commit}'
+ if vars["pull_request_number"]:
+ vars.update(head_commit=vars["pull_request_head_commit"])
+ BRANCH_FMT = u'{repo_name} {repo_branch} pull {pull_request_head_repo_name} {pull_request_head_repo_branch} {short_commit}'
+ COMMIT_FMT = u'https://github.com/{pull_request_head_repo_name}/commit/{pull_request_head_commit}'
+ PULL_FMT = u'https://github.com/{repo_name}/pull/{pull_request_number}'
+ vars.update(pull_url=PULL_FMT.format(**vars))
vars.update(commit_url=COMMIT_FMT.format(**vars))
+ vars.update(short_commit=vars["head_commit"][:10])
+
vars.update(
build_url=BUILD_FMT.format(**vars),
- short_commit=vars["repo_commit"][:7],
+ branch_detail=BRANCH_FMT.format(**vars),
)
return vars
@@ -134,17 +159,19 @@ def notify():
if success or failure:
messages = []
- messages.append(u"{repo_name} {repo_branch} {short_commit} - {repo_commit_author}: {repo_commit_message}")
+ messages.append(u"{branch_detail} - {repo_commit_author}: {repo_commit_message}")
if success:
- m = u"Build #{build_version} passed. Details: {build_url}"
+ messages.append(u"Build #{build_version} passed. Details: {build_url}")
if failure:
- m = u"Build #{build_version} failed. Details: {build_url}"
+ messages.append(u"Build #{build_version} failed. Details: {build_url}")
if "commit_url" in apvy_vars:
- m += " Commit: {commit_url}"
-
- messages.append(m)
+ messages.append(u"Commit: {commit_url}")
+
+ if "pull_url" in apvy_vars:
+ messages.append(u"Pull: {pull_url}")
+
else:
messages = sys.argv[3:]
messages = ' '.join(messages)
diff --git a/scripts/test/chutney-git-bisect.sh b/scripts/test/chutney-git-bisect.sh
new file mode 100755
index 0000000000..8a3f2c70c8
--- /dev/null
+++ b/scripts/test/chutney-git-bisect.sh
@@ -0,0 +1,62 @@
+#!/usr/bin/env bash
+
+# Compile tor and run chutney to find out if the current commit works
+#
+# Usage:
+# # Copy the script, so it doesn't change during bisection
+# cp scripts/test/chutney-git-bisect.sh .
+# git bisect run \
+# ./chutney-git-bisect.sh [tries [build-dir [flavour [skip-flavour]]]]
+#
+# Runs chutney up to <tries> times (default 3), because some bugs involve race
+# conditions.
+# Changes to <build-dir> (default no cd) before running tests.
+# Runs chutney network <flavour> (default make test-network-all) as the test.
+# Skips the test if <skip-flavour> fails (default no skip).
+
+CHUTNEY_TRIES=3
+if [ ! -z "$1" ]; then
+ CHUTNEY_TRIES="$1"
+fi
+
+if [ ! -z "$2" ]; then
+ cd "$2"
+fi
+
+CHUTNEY_TEST_CMD="make test-network-all"
+if [ ! -z "$3" ]; then
+ CHUTNEY_TEST_CMD="$CHUTNEY_PATH/tools/test-network.sh --flavour $3"
+fi
+
+CHUTNEY_SKIP_ON_FAIL_CMD="true"
+if [ ! -z "$4" ]; then
+ CHUTNEY_SKIP_ON_FAIL_CMD="$CHUTNEY_PATH/tools/test-network.sh --flavour $4"
+fi
+
+CHUTNEY_BUILD_CMD_OR="make src/or/tor src/tools/tor-gencert"
+CHUTNEY_BUILD_CMD_APP="make src/app/tor src/tools/tor-gencert"
+if ! ( $CHUTNEY_BUILD_CMD_APP || $CHUTNEY_BUILD_CMD_OR ) ; then
+ echo "building '$CHUTNEY_BUILD_CMD_APP || $CHUTNEY_BUILD_CMD_OR' failed, skip"
+ exit 125
+fi
+
+if ! $CHUTNEY_SKIP_ON_FAIL_CMD ; then
+ echo "pre-condition '$CHUTNEY_SKIP_ON_FAIL_CMD' failed, skip"
+ exit 125
+fi
+
+i=1
+while [ "$i" -le "$CHUTNEY_TRIES" ]; do
+ echo
+ echo "Round $i/$CHUTNEY_TRIES:"
+ echo
+ if $CHUTNEY_TEST_CMD ; then
+ echo "test '$CHUTNEY_TEST_CMD' succeeded after $i/$CHUTNEY_TRIES attempts, good"
+ exit 0
+ fi
+ i=$[$i+1]
+done
+
+i=$[$i-1]
+echo "test '$CHUTNEY_TEST_CMD' failed $i/$CHUTNEY_TRIES attempts, bad"
+exit 1
diff --git a/src/app/config/auth_dirs.inc b/src/app/config/auth_dirs.inc
index e0937541ea..08a919b053 100644
--- a/src/app/config/auth_dirs.inc
+++ b/src/app/config/auth_dirs.inc
@@ -8,8 +8,8 @@
"dizum orport=443 "
"v3ident=E8A9C45EDE6D711294FADF8E7951F4DE6CA56B58 "
"194.109.206.212:80 7EA6 EAD6 FD83 083C 538F 4403 8BBF A077 587D D755",
-"Bifroest orport=443 bridge "
- "37.218.247.217:80 1D8F 3A91 C37C 5D1C 4C19 B1AD 1D0C FBE8 BF72 D8E1",
+"Serge orport=9001 bridge "
+ "66.111.2.131:9030 BA44 A889 E64B 93FA A2B1 14E0 2C2A 279A 8555 C533",
"gabelmoo orport=443 "
"v3ident=ED03BB616EB2F60BEC80151114BB25CEF515B226 "
"ipv6=[2001:638:a000:4140::ffff:189]:443 "
diff --git a/src/app/config/config.c b/src/app/config/config.c
index 95d6ce354a..339f8e2475 100644
--- a/src/app/config/config.c
+++ b/src/app/config/config.c
@@ -85,7 +85,7 @@
#include "feature/relay/dns.h"
#include "core/or/dos.h"
#include "feature/client/entrynodes.h"
-#include "core/or/git_revision.h"
+#include "lib/log/git_revision.h"
#include "feature/stats/geoip.h"
#include "feature/hibernate/hibernate.h"
#include "core/mainloop/main.h"
@@ -106,6 +106,7 @@
#include "feature/client/transports.h"
#include "feature/relay/ext_orport.h"
#include "feature/dircommon/voting_schedule.h"
+#include "lib/net/resolve.h"
#ifdef _WIN32
#include <shlobj.h>
#endif
@@ -3322,7 +3323,6 @@ STATIC int
options_validate(or_options_t *old_options, or_options_t *options,
or_options_t *default_options, int from_setconf, char **msg)
{
- int i;
config_line_t *cl;
const char *uname = get_uname();
int n_ports=0;
@@ -3507,6 +3507,16 @@ options_validate(or_options_t *old_options, or_options_t *options,
!options->RecommendedServerVersions))
REJECT("Versioning authoritative dir servers must set "
"Recommended*Versions.");
+
+#ifdef HAVE_MODULE_DIRAUTH
+ char *t;
+ /* Call these functions to produce warnings only. */
+ t = format_recommended_version_list(options->RecommendedClientVersions, 1);
+ tor_free(t);
+ t = format_recommended_version_list(options->RecommendedServerVersions, 1);
+ tor_free(t);
+#endif
+
if (options->UseEntryGuards) {
log_info(LD_CONFIG, "Authoritative directory servers can't set "
"UseEntryGuards. Disabling.");
@@ -3523,7 +3533,7 @@ options_validate(or_options_t *old_options, or_options_t *options,
"(Bridge/V3)AuthoritativeDir is set.");
/* If we have a v3bandwidthsfile and it's broken, complain on startup */
if (options->V3BandwidthsFile && !old_options) {
- dirserv_read_measured_bandwidths(options->V3BandwidthsFile, NULL);
+ dirserv_read_measured_bandwidths(options->V3BandwidthsFile, NULL, NULL);
}
/* same for guardfraction file */
if (options->GuardfractionFile && !old_options) {
@@ -3633,30 +3643,6 @@ options_validate(or_options_t *old_options, or_options_t *options,
}
}
- /* Terminate Reachable*Addresses with reject *
- */
- for (i=0; i<3; i++) {
- config_line_t **linep =
- (i==0) ? &options->ReachableAddresses :
- (i==1) ? &options->ReachableORAddresses :
- &options->ReachableDirAddresses;
- if (!*linep)
- continue;
- /* We need to end with a reject *:*, not an implicit accept *:* */
- for (;;) {
- linep = &((*linep)->next);
- if (!*linep) {
- *linep = tor_malloc_zero(sizeof(config_line_t));
- (*linep)->key = tor_strdup(
- (i==0) ? "ReachableAddresses" :
- (i==1) ? "ReachableORAddresses" :
- "ReachableDirAddresses");
- (*linep)->value = tor_strdup("reject *:*");
- break;
- }
- }
- }
-
if ((options->ReachableAddresses ||
options->ReachableORAddresses ||
options->ReachableDirAddresses ||
@@ -4647,8 +4633,7 @@ have_enough_mem_for_dircache(const or_options_t *options, size_t total_mem,
} else {
if (total_mem >= DIRCACHE_MIN_MEM_BYTES) {
*msg = tor_strdup("DirCache is disabled and we are configured as a "
- "relay. This may disqualify us from becoming a guard in the "
- "future.");
+ "relay. We will not become a Guard.");
}
}
return *msg == NULL ? 0 : -1;
@@ -6403,26 +6388,17 @@ parse_dir_authority_line(const char *line, dirinfo_type_t required_type,
addrport = smartlist_get(items, 0);
smartlist_del_keeporder(items, 0);
- const char *addrport_sep = strchr(addrport, ':');
- if (!addrport_sep) {
- log_warn(LD_CONFIG, "Error parsing DirAuthority address '%s' "
- "(':' not found)", addrport);
+ if (tor_addr_port_split(LOG_WARN, addrport, &address, &dir_port) < 0) {
+ log_warn(LD_CONFIG, "Error parsing DirAuthority address '%s'.", addrport);
goto err;
}
- address = tor_strndup(addrport, addrport_sep - addrport);
if (!string_is_valid_ipv4_address(address)) {
log_warn(LD_CONFIG, "Error parsing DirAuthority address '%s' "
"(invalid IPv4 address)", address);
goto err;
}
- tor_free(address);
-
- if (addr_port_lookup(LOG_WARN, addrport, &address, NULL, &dir_port)<0) {
- log_warn(LD_CONFIG, "Error parsing DirAuthority address '%s'", addrport);
- goto err;
- }
if (!dir_port) {
log_warn(LD_CONFIG, "Missing port in DirAuthority address '%s'",addrport);
goto err;
@@ -6953,7 +6929,7 @@ parse_port_config(smartlist_t *out,
port = 0;
else
port = 1;
- } else if (!strcmp(addrport, "auto")) {
+ } else if (!strcasecmp(addrport, "auto")) {
port = CFG_AUTO_PORT;
int af = tor_addr_parse(&addr, defaultaddr);
tor_assert(af >= 0);
diff --git a/src/app/config/confparse.c b/src/app/config/confparse.c
index 5b7f54bc65..6fa4fd1ea8 100644
--- a/src/app/config/confparse.c
+++ b/src/app/config/confparse.c
@@ -267,7 +267,7 @@ config_assign_value(const config_format_t *fmt, void *options,
break;
case CONFIG_TYPE_AUTOBOOL:
- if (!strcmp(c->value, "auto"))
+ if (!strcasecmp(c->value, "auto"))
*(int *)lvalue = -1;
else if (!strcmp(c->value, "0"))
*(int *)lvalue = 0;
diff --git a/src/app/config/confparse.h b/src/app/config/confparse.h
index cbd2ea88e2..570428c904 100644
--- a/src/app/config/confparse.h
+++ b/src/app/config/confparse.h
@@ -4,6 +4,12 @@
* Copyright (c) 2007-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file confparse.h
+ *
+ * \brief Header for confparse.c.
+ */
+
#ifndef TOR_CONFPARSE_H
#define TOR_CONFPARSE_H
diff --git a/src/app/config/or_options_st.h b/src/app/config/or_options_st.h
index 32b6bc746f..8ef01f80e7 100644
--- a/src/app/config/or_options_st.h
+++ b/src/app/config/or_options_st.h
@@ -4,6 +4,12 @@
* Copyright (c) 2007-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file or_options_st.h
+ *
+ * \brief The or_options_t structure, which represents Tor's configuration.
+ */
+
#ifndef TOR_OR_OPTIONS_ST_H
#define TOR_OR_OPTIONS_ST_H
diff --git a/src/app/config/or_state_st.h b/src/app/config/or_state_st.h
index f1d5f981f1..d95df6236b 100644
--- a/src/app/config/or_state_st.h
+++ b/src/app/config/or_state_st.h
@@ -4,6 +4,12 @@
* Copyright (c) 2007-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file or_state_t
+ *
+ * \brief The or_state_t structure, which represents Tor's state file.
+ */
+
#ifndef TOR_OR_STATE_ST_H
#define TOR_OR_STATE_ST_H
diff --git a/src/app/config/statefile.c b/src/app/config/statefile.c
index 8eeef45026..656dc2eec3 100644
--- a/src/app/config/statefile.c
+++ b/src/app/config/statefile.c
@@ -43,6 +43,7 @@
#include "lib/sandbox/sandbox.h"
#include "app/config/statefile.h"
#include "lib/encoding/confline.h"
+#include "lib/net/resolve.h"
#include "app/config/or_state_st.h"
diff --git a/src/app/config/statefile.h b/src/app/config/statefile.h
index e996d5b6e6..6433affa62 100644
--- a/src/app/config/statefile.h
+++ b/src/app/config/statefile.h
@@ -4,6 +4,12 @@
* Copyright (c) 2007-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file statefile.h
+ *
+ * \brief Header for statefile.c
+ */
+
#ifndef TOR_STATEFILE_H
#define TOR_STATEFILE_H
diff --git a/src/config/geoip b/src/config/geoip
index 07c11d6852..d8dabfc4ec 100644
--- a/src/config/geoip
+++ b/src/config/geoip
@@ -1,4 +1,4 @@
-# Last updated based on July 3 2018 Maxmind GeoLite2 Country
+# Last updated based on August 7 2018 Maxmind GeoLite2 Country
# wget https://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.mmdb.gz
# gunzip GeoLite2-Country.mmdb.gz
# python mmdb-convert.py GeoLite2-Country.mmdb
@@ -101,6 +101,7 @@
34636800,34637311,DE
34646528,34647551,DE
34648576,34649087,GR
+34651136,34651647,BR
34659328,34660351,GR
34673664,34674687,DE
34733056,34734079,DE
@@ -177,7 +178,13 @@
48234496,49283071,IT
49283072,49807359,DE
49807360,50329599,SE
-50331648,58195967,US
+50331648,50331648,US
+50331649,50462719,SG
+50462720,50855935,US
+50855936,51118079,GB
+51118080,57671679,US
+57671680,57933823,JP
+57933824,58195967,US
58195968,58458111,DE
58458112,68169727,US
68169728,68171775,CA
@@ -185,11 +192,7 @@
68194816,68194879,CA
68194880,68200447,US
68200448,68200703,CA
-68200704,68204031,US
-68204032,68204036,CU
-68204037,68204037,US
-68204038,68204159,CU
-68204160,68305407,US
+68200704,68305407,US
68305408,68305919,MX
68305920,68978687,US
68978688,68980735,CA
@@ -278,7 +281,9 @@
84557824,84566015,NL
84566016,84574207,GB
84574208,84576255,FR
-84576256,84582399,GB
+84576256,84578167,GB
+84578168,84578175,SE
+84578176,84582399,GB
84582400,84590591,DE
84590592,84591103,NL
84591104,84591359,SG
@@ -577,7 +582,9 @@
86453320,86453327,FR
86453328,86453339,ES
86453340,86453343,PT
-86453344,86453435,FR
+86453344,86453423,FR
+86453424,86453431,DE
+86453432,86453435,FR
86453436,86453439,ES
86453440,86453836,FR
86453837,86453838,PT
@@ -646,8 +653,8 @@
86457400,86457407,ES
86457408,86457455,FR
86457456,86457456,DE
-86457457,86457471,FR
-86457472,86457519,ES
+86457457,86457503,FR
+86457504,86457519,ES
86457520,86457703,FR
86457704,86457707,ES
86457708,86457759,FR
@@ -757,8 +764,8 @@
86487040,86489087,GB
86489088,86491135,NL
86491136,86493183,PL
-86493184,86493439,CZ
-86493440,86495231,RU
+86493184,86493695,CZ
+86493696,86495231,RU
86495232,86497279,ES
86497280,86499327,NL
86499328,86503423,FR
@@ -1800,7 +1807,7 @@
90719232,90719487,AT
90719488,90719999,SE
90720000,90720255,GB
-90720256,90721279,RU
+90720256,90721279,TR
90721280,90722303,DE
90722304,90724351,FI
90724352,90726399,CH
@@ -2050,7 +2057,9 @@
92744124,92744127,GB
92744128,92744319,FR
92744320,92744323,GB
-92744324,92744551,FR
+92744324,92744383,FR
+92744384,92744399,GB
+92744400,92744551,FR
92744552,92744555,ES
92744556,92744951,FR
92744952,92744959,ES
@@ -2123,9 +2132,7 @@
92753648,92753663,ES
92753664,92754031,FR
92754032,92754047,PT
-92754048,92754367,FR
-92754368,92754431,GB
-92754432,92754447,FR
+92754048,92754447,FR
92754448,92754463,GB
92754464,92754551,FR
92754552,92754555,DE
@@ -2140,9 +2147,7 @@
92755776,92755839,GB
92755840,92757311,FR
92757312,92757375,ES
-92757376,92758207,FR
-92758208,92758223,ES
-92758224,92758367,FR
+92757376,92758367,FR
92758368,92758383,ES
92758384,92758915,FR
92758916,92758919,GB
@@ -2162,7 +2167,9 @@
92761152,92761215,PT
92761216,92761375,FR
92761376,92761391,FI
-92761392,92762127,FR
+92761392,92761471,FR
+92761472,92761503,IE
+92761504,92762127,FR
92762128,92762135,ES
92762136,92762279,FR
92762280,92762283,GB
@@ -2657,7 +2664,9 @@
95420175,95420415,DE
95420416,95551487,TR
95551488,95555583,AZ
-95555584,95557631,GB
+95555584,95557159,GB
+95557160,95557167,NL
+95557168,95557631,GB
95557632,95559679,RU
95559680,95561727,NL
95561728,95563007,IT
@@ -2668,9 +2677,7 @@
95569920,95571967,SE
95571968,95574015,RU
95574016,95576063,IT
-95576064,95578624,GB
-95578625,95578879,US
-95578880,95580159,GB
+95576064,95580159,GB
95580160,95582207,NL
95582208,95584255,IT
95584256,95617023,GE
@@ -2708,8 +2715,7 @@
96224768,96225279,JP
96225280,96228863,RU
96228864,96229119,IE
-96229120,96229375,RU
-96229376,96230399,NL
+96229120,96230399,RU
96230400,96231423,LU
96231424,96234495,RU
96234496,96235519,LU
@@ -2736,9 +2742,7 @@
96261120,96261375,NL
96261376,96262143,RU
96262144,96262399,NL
-96262400,96264191,RU
-96264192,96265215,NL
-96265216,96265983,RU
+96262400,96265983,RU
96265984,96266495,NL
96266496,96266751,RU
96266752,96267007,NL
@@ -2890,7 +2894,9 @@
96764320,96764383,FR
96764384,96764399,FI
96764400,96764415,CZ
-96764416,96764859,FR
+96764416,96764639,FR
+96764640,96764655,PT
+96764656,96764859,FR
96764860,96764863,CZ
96764864,96765327,FR
96765328,96765335,NL
@@ -3127,7 +3133,10 @@
97452032,97517567,UA
97517568,98566143,IR
98566144,98697215,ES
-98697216,98701311,FR
+98697216,98697471,GB
+98697472,98697727,FR
+98697728,98699263,GB
+98699264,98701311,FR
98701312,98705407,ES
98705408,98707455,SE
98707456,98709503,NL
@@ -3140,11 +3149,12 @@
98738176,98740223,NO
98740224,98740479,ES
98740480,98740735,US
-98740736,98741247,DE
-98741248,98741503,ES
+98740736,98741503,ES
98741504,98741759,US
-98741760,98742271,DE
-98742272,98744319,GB
+98741760,98742271,ES
+98742272,98743807,GB
+98743808,98744063,US
+98744064,98744319,GB
98744320,98746367,ES
98746368,98762751,TR
98762752,98893823,RU
@@ -3415,9 +3425,9 @@
136713984,136714031,GB
136714032,136714047,US
136714048,136714239,GB
-136714240,136810503,US
-136810504,136810504,DE
-136810505,139954241,US
+136714240,136810495,US
+136810496,136810751,DE
+136810752,139954241,US
139954242,139954242,ES
139954243,142606335,US
142606336,146800639,SG
@@ -3455,7 +3465,9 @@
214698312,214699007,US
214699008,214700031,VI
214700032,214777855,US
-214777856,214781951,PR
+214777856,214778879,PR
+214778880,214779903,US
+214779904,214781951,PR
214781952,214783487,US
214783488,214783999,PR
214784000,214786047,US
@@ -4011,14 +4023,52 @@
338018304,338026495,AU
338026496,338051071,CH
338051072,338059263,IE
-338059264,338073599,US
+338059264,338060799,US
+338060800,338061311,IE
+338061312,338061823,US
+338061824,338062335,GB
+338062336,338062847,NL
+338062848,338063359,US
+338063360,338063871,AU
+338063872,338073599,US
338073600,338081791,CH
338081792,338082815,US
338082816,338083839,FR
338083840,338100223,CH
-338100224,338120703,US
+338100224,338118655,US
+338118656,338120703,AU
338120704,338124799,FR
-338124800,344260607,US
+338124800,338132991,AU
+338132992,338137087,CA
+338137088,338143231,GB
+338143232,338145279,KR
+338145280,338147327,JP
+338147328,338153471,KR
+338153472,338159615,GB
+338159616,338165759,FR
+338165760,338169855,IN
+338169856,338175999,BR
+338176000,338182143,IN
+338182144,338188287,AU
+338188288,338192383,JP
+338192384,338194431,GB
+338194432,338196479,BR
+338196480,338198527,AU
+338198528,338206719,FR
+338206720,338214911,AU
+338214912,338247679,US
+338247680,338264063,KR
+338264064,338280447,US
+338280448,338296831,IN
+338296832,338345983,US
+338345984,338362367,AU
+338362368,338370559,CA
+338370560,338378751,FR
+338378752,338386943,JP
+338386944,338393087,US
+338393088,338395135,IN
+338395136,338411519,SG
+338411520,344260607,US
344260608,344260863,GB
344260864,344261119,US
344261120,344261778,GB
@@ -4151,21 +4201,25 @@
386465792,386469887,NL
386469888,386498559,US
386498560,386502655,NL
-386502656,386656255,US
+386502656,386547711,US
+386547712,386551807,NL
+386551808,386656255,US
386656256,386656511,NL
386656512,386662399,US
386662400,386666495,NL
386666496,386682879,US
386682880,386691071,NL
-386691072,386736127,US
-386736128,386740223,NL
-386740224,386774527,US
+386691072,386695167,US
+386695168,386699263,NL
+386699264,386736127,US
+386736128,386744319,NL
+386744320,386774527,US
386774528,386775039,NL
386775040,386789375,US
386789376,386797567,NL
386797568,386816511,US
-386816512,386818047,NL
-386818048,386826751,US
+386816512,386826239,NL
+386826240,386826751,US
386826752,386827263,NL
386827264,386828287,US
386828288,386829311,NL
@@ -4179,8 +4233,13 @@
386893312,386923519,US
386923520,386924543,NL
386924544,387055615,CA
-387055616,387121151,PR
-387121152,387648767,US
+387055616,387063807,US
+387063808,387096575,PR
+387096576,387100671,US
+387100672,387121151,PR
+387121152,387132143,US
+387132144,387132151,CA
+387132152,387648767,US
387648768,387649023,DE
387649024,387707903,US
387707904,387708159,CH
@@ -4360,9 +4419,7 @@
389447680,389451775,NL
389451776,389455359,US
389455360,389455615,NL
-389455616,389495295,US
-389495296,389495807,NL
-389495808,389517311,US
+389455616,389517311,US
389517312,389521407,NL
389521408,389554175,US
389554176,389562367,NL
@@ -4428,8 +4485,7 @@
389979190,389979190,AU
389979191,389988351,US
389988352,389992447,NL
-389992448,389996543,US
-389996544,389996799,NL
+389992448,389996799,US
389996800,389996800,SG
389996801,390026751,US
390026752,390029311,NL
@@ -4581,20 +4637,26 @@
392662144,392662207,IN
392662208,392662399,US
392662400,392662463,KR
-392662464,392663039,US
+392662464,392662495,US
+392662496,392662511,HK
+392662512,392663039,US
392663040,392663071,FI
392663072,392663103,US
392663104,392663135,IE
392663136,392663167,US
392663168,392663199,NL
-392663200,392663359,US
+392663200,392663295,US
+392663296,392663327,IE
+392663328,392663359,US
392663360,392663391,IE
392663392,392663487,US
392663488,392663519,IE
392663520,392664383,US
392664384,392664415,IE
392664416,392664431,NL
-392664432,392665855,US
+392664432,392664479,US
+392664480,392664495,IE
+392664496,392665855,US
392665856,392665887,HK
392665888,392665983,US
392665984,392666015,HK
@@ -4832,31 +4894,30 @@
394567680,394567935,CA
394575872,394576383,CA
394584064,394584319,US
-394592256,394593279,US
+394592256,394592511,US
+394592512,394592767,GB
+394592768,394593279,US
394600448,394600703,US
394608640,394608703,CA
394608704,394608711,US
394608712,394608895,CA
394616832,394617087,US
-394625024,394665983,US
+394625024,394658047,US
394665984,394666239,CA
-394666240,394698751,US
+394674176,394690815,US
394698752,394699007,CA
-394699008,394747903,US
+394706944,394739967,US
394747904,394748159,CA
-394748160,394756351,US
-394764288,394764543,US
+394756096,394772479,US
394772480,394772735,CA
394780672,394780927,US
-394788864,394797055,US
394797056,394797311,CA
-394797312,394813439,US
+394805248,394805503,US
394813440,394813695,VG
-394813696,394854399,US
+394821632,394854399,US
394854400,394854655,CA
394862592,394862847,US
-394870784,394887423,US
-394895360,394895615,US
+394870784,394903551,US
394903552,394903807,CA
394911744,394911999,US
394919936,394936319,US
@@ -4866,15 +4927,19 @@
394960896,394961151,US
394969088,395018239,US
395018240,395018495,CA
-395034624,395034879,US
+395026432,395026687,US
+395034624,395051007,US
395051008,395051263,CA
-395067392,395067647,US
-395083776,395149311,US
+395059200,395059455,US
+395067392,395084031,US
+395091968,395092223,CA
+395100160,395149311,US
395149312,395149567,CA
-395165696,395165951,US
+395157504,395157759,US
+395165696,395182079,US
395182080,395182335,CA
-395198464,395198719,US
-395214848,395345919,US
+395190272,395190527,US
+395198464,395345919,US
395345920,395346175,CA
395362304,395362559,US
395378688,395477247,US
@@ -4903,7 +4968,6 @@
396083200,396083711,US
396099584,396263423,US
396263424,396263679,CA
-396279808,396280063,US
396296192,396427519,US
396443648,396443903,CA
396460032,396493055,US
@@ -4997,9 +5061,7 @@
399020032,399028223,NL
399028224,399032319,US
399032320,399036415,NL
-399036416,399055871,US
-399055872,399056639,NL
-399056640,399076095,US
+399036416,399076095,US
399076096,399076863,NL
399076864,399087615,US
399087616,399088639,NL
@@ -5173,8 +5235,8 @@
400805888,400809983,CA
400809984,400883711,US
400883712,400883759,CA
-400883760,400883767,US
-400883768,400883799,CA
+400883760,400883775,US
+400883776,400883799,CA
400883800,400883807,US
400883808,400883823,CA
400883824,400883831,US
@@ -5184,18 +5246,13 @@
400883888,400883895,BG
400883896,400883919,CA
400883920,400883927,GB
-400883928,400884231,CA
-400884232,400884239,US
-400884240,400884255,CA
+400883928,400884255,CA
400884256,400884287,US
-400884288,400884319,CA
-400884320,400884359,US
-400884360,400884415,CA
-400884416,400884431,US
-400884432,400884455,CA
+400884288,400884335,CA
+400884336,400884351,US
+400884352,400884455,CA
400884456,400884463,US
-400884464,400884471,CA
-400884472,400884479,US
+400884464,400884479,CA
400884480,400884735,TR
400884736,400884991,GB
400884992,400885007,US
@@ -5203,313 +5260,193 @@
400885096,400885103,US
400885104,400885111,CA
400885112,400885119,US
-400885120,400885223,CA
-400885224,400885227,US
-400885228,400885279,CA
+400885120,400885239,CA
+400885240,400885247,US
+400885248,400885279,CA
400885280,400885311,US
400885312,400885407,CA
400885408,400885439,US
-400885440,400885783,CA
-400885784,400885791,US
-400885792,400885887,CA
-400885888,400885919,US
-400885920,400885999,CA
-400886000,400886015,US
-400886016,400886031,CA
+400885440,400886031,CA
400886032,400886047,US
-400886048,400886095,CA
-400886096,400886111,US
-400886112,400886119,CA
-400886120,400886135,US
-400886136,400886151,CA
-400886152,400886159,US
-400886160,400886175,CA
-400886176,400886183,US
-400886184,400886191,CA
-400886192,400886199,US
-400886200,400886303,CA
-400886304,400886335,US
-400886336,400886351,CA
-400886352,400886399,US
-400886400,400886407,CA
+400886048,400886351,CA
+400886352,400886383,US
+400886384,400886407,CA
400886408,400886415,US
-400886416,400886455,CA
-400886456,400886463,SE
-400886464,400886527,US
-400886528,400886583,CA
-400886584,400886591,US
-400886592,400886623,CA
-400886624,400886639,US
-400886640,400886695,CA
-400886696,400886703,FI
-400886704,400886719,CA
+400886416,400886495,CA
+400886496,400886527,US
+400886528,400886719,CA
400886720,400886767,US
400886768,400887039,CA
400887040,400887135,US
400887136,400887151,CA
-400887152,400887175,US
-400887176,400887231,CA
+400887152,400887167,US
+400887168,400887231,CA
400887232,400887263,US
-400887264,400887311,CA
-400887312,400887327,US
-400887328,400887335,CA
-400887336,400887343,US
+400887264,400887343,CA
400887344,400887351,SE
400887352,400887503,CA
-400887504,400887543,US
-400887544,400887551,CA
+400887504,400887535,US
+400887536,400887551,CA
400887552,400887807,GB
-400887808,400887831,CA
-400887832,400887839,US
-400887840,400887895,CA
-400887896,400887911,US
-400887912,400887935,CA
-400887936,400887959,US
-400887960,400887975,CA
-400887976,400887983,US
-400887984,400888031,CA
+400887808,400887871,CA
+400887872,400887879,US
+400887880,400888031,CA
400888032,400888039,US
400888040,400888063,CA
400888064,400888319,US
400888320,400888575,CA
400888576,400888831,GB
-400888832,400889343,CA
-400889344,400889367,US
-400889368,400889407,CA
-400889408,400889503,US
-400889504,400889511,CA
-400889512,400889599,US
-400889600,400889647,CA
-400889648,400889679,US
-400889680,400889711,CA
-400889712,400889743,US
-400889744,400889775,CA
-400889776,400889807,US
-400889808,400889855,CA
+400888832,400889439,CA
+400889440,400889503,US
+400889504,400889519,CA
+400889520,400889567,US
+400889568,400889647,CA
+400889648,400889663,US
+400889664,400889855,CA
400889856,400890111,US
-400890112,400890143,CA
-400890144,400890151,US
-400890152,400890159,CA
-400890160,400890223,US
-400890224,400890263,CA
+400890112,400890159,CA
+400890160,400890167,US
+400890168,400890175,CA
+400890176,400890207,US
+400890208,400890263,CA
400890264,400890271,US
400890272,400890335,CA
400890336,400890367,US
-400890368,400890383,CA
-400890384,400890391,US
-400890392,400890399,CA
-400890400,400890407,US
-400890408,400890447,CA
-400890448,400890495,US
-400890496,400890527,CA
+400890368,400890527,CA
400890528,400890543,US
-400890544,400890559,CA
-400890560,400890623,US
-400890624,400890639,CA
-400890640,400890655,US
-400890656,400890783,CA
-400890784,400890831,US
-400890832,400890847,CA
-400890848,400890863,US
-400890864,400891263,CA
+400890544,400890591,CA
+400890592,400890623,US
+400890624,400890815,CA
+400890816,400890831,US
+400890832,400891263,CA
400891264,400891343,US
-400891344,400891359,CA
-400891360,400891375,US
-400891376,400891383,CA
-400891384,400891407,US
-400891408,400891415,CA
-400891416,400891487,US
+400891344,400891391,CA
+400891392,400891407,US
+400891408,400891423,CA
+400891424,400891455,US
+400891456,400891471,CA
+400891472,400891487,US
400891488,400891535,CA
-400891536,400891647,US
-400891648,400891695,CA
-400891696,400891703,US
-400891704,400891775,CA
-400891776,400891807,US
-400891808,400891887,CA
-400891888,400892159,US
-400892160,400892479,CA
+400891536,400891551,US
+400891552,400891615,CA
+400891616,400891631,US
+400891632,400891791,CA
+400891792,400891807,US
+400891808,400891903,CA
+400891904,400892159,US
+400892160,400892215,CA
+400892216,400892223,US
+400892224,400892479,CA
400892480,400892543,US
-400892544,400892567,CA
-400892568,400892575,US
-400892576,400892591,CA
+400892544,400892591,CA
400892592,400892607,US
-400892608,400892639,CA
-400892640,400892655,US
-400892656,400892671,CA
-400892672,400892783,US
-400892784,400892863,CA
-400892864,400892927,US
-400892928,400893055,CA
+400892608,400892671,CA
+400892672,400892767,US
+400892768,400893055,CA
400893056,400893087,US
-400893088,400893095,CA
-400893096,400893311,US
+400893088,400893103,CA
+400893104,400893151,US
+400893152,400893183,CA
+400893184,400893311,US
400893312,400893695,CA
400893696,400893983,US
-400893984,400893991,CA
-400893992,400894047,US
+400893984,400893999,CA
+400894000,400894047,US
400894048,400894079,CA
400894080,400894335,US
400894336,400894463,CA
-400894464,400894767,US
-400894768,400894783,CA
-400894784,400894815,US
-400894816,400894847,CA
-400894848,400894879,US
-400894880,400894903,CA
-400894904,400894911,US
-400894912,400894975,CA
-400894976,400895295,US
+400894464,400894719,US
+400894720,400895231,CA
+400895232,400895295,US
400895296,400895359,CA
400895360,400895407,US
-400895408,400895455,CA
-400895456,400895567,US
-400895568,400895663,CA
+400895408,400895487,CA
+400895488,400895551,US
+400895552,400895663,CA
400895664,400895679,US
-400895680,400895711,CA
-400895712,400896511,US
-400896512,400896591,CA
-400896592,400896599,US
-400896600,400896767,CA
-400896768,400896775,US
-400896776,400896823,CA
-400896824,400896831,US
-400896832,400896911,CA
-400896912,400896919,US
-400896920,400896927,CA
-400896928,400896935,US
-400896936,400896951,CA
-400896952,400896959,US
-400896960,400897023,CA
+400895680,400895743,CA
+400895744,400896511,US
+400896512,400897023,CA
400897024,400897279,US
-400897280,400897311,CA
-400897312,400897327,US
-400897328,400897423,CA
+400897280,400897423,CA
400897424,400897439,US
-400897440,400897471,CA
-400897472,400897519,US
+400897440,400897503,CA
+400897504,400897519,US
400897520,400897535,CA
400897536,400897791,US
-400897792,400897847,CA
-400897848,400897855,US
-400897856,400897887,CA
+400897792,400897887,CA
400897888,400897903,US
-400897904,400897919,CA
-400897920,400897967,US
+400897904,400897935,CA
+400897936,400897967,US
400897968,400897983,CA
-400897984,400898047,US
-400898048,400898063,CA
+400897984,400898015,US
+400898016,400898063,CA
400898064,400898079,US
-400898080,400898159,CA
-400898160,400898303,US
-400898304,400898311,CA
-400898312,400898319,US
-400898320,400898447,CA
-400898448,400898495,US
-400898496,400898527,CA
-400898528,400898559,US
-400898560,400898575,CA
-400898576,400898591,US
-400898592,400898687,CA
-400898688,400898735,US
-400898736,400898751,CA
-400898752,400898799,US
-400898800,400898807,CA
-400898808,400898815,US
-400898816,400898879,CA
-400898880,400898887,SE
-400898888,400898911,CA
-400898912,400899039,US
-400899040,400899047,CA
-400899048,400899327,US
-400899328,400899591,CA
-400899592,400899599,US
-400899600,400899623,CA
-400899624,400899631,US
-400899632,400899711,CA
+400898080,400898175,CA
+400898176,400898303,US
+400898304,400898703,CA
+400898704,400898735,US
+400898736,400898943,CA
+400898944,400899039,US
+400899040,400899071,CA
+400899072,400899327,US
+400899328,400899711,CA
400899712,400899743,US
400899744,400899759,CA
400899760,400899807,US
400899808,400899815,CA
-400899816,400899839,US
-400899840,400899847,CA
+400899816,400899823,US
+400899824,400899847,CA
400899848,400899855,US
400899856,400899967,CA
400899968,400899999,US
400900000,400900031,CA
400900032,400900255,US
-400900256,400900263,CA
-400900264,400900351,US
-400900352,400900391,CA
-400900392,400900399,US
-400900400,400900415,CA
-400900416,400900479,US
-400900480,400900487,CA
-400900488,400900495,US
-400900496,400900527,CA
-400900528,400901119,US
-400901120,400901487,CA
-400901488,400901495,US
-400901496,400901567,CA
-400901568,400901631,US
+400900256,400900287,CA
+400900288,400900319,US
+400900320,400900559,CA
+400900560,400900575,US
+400900576,400900607,CA
+400900608,400901119,US
+400901120,400901567,CA
+400901568,400901583,US
+400901584,400901615,CA
+400901616,400901631,US
400901632,400901759,CA
-400901760,400901887,US
+400901760,400901807,US
+400901808,400901823,CA
+400901824,400901887,US
400901888,400902143,CA
400902144,400902399,US
400902400,400902431,CA
-400902432,400902495,US
-400902496,400902527,CA
+400902432,400902479,US
+400902480,400902527,CA
400902528,400902623,US
400902624,400902639,CA
400902640,400902655,US
-400902656,400902663,CA
-400902664,400902671,US
-400902672,400902719,CA
+400902656,400902719,CA
400902720,400902783,US
400902784,400902911,CA
-400902912,400902975,US
-400902976,400903183,CA
-400903184,400903199,US
-400903200,400903231,CA
-400903232,400903247,US
-400903248,400903271,CA
-400903272,400903279,US
-400903280,400903935,CA
+400902912,400902943,US
+400902944,400903935,CA
400903936,400904479,US
400904480,400904487,CA
-400904488,400904591,US
-400904592,400904599,CA
-400904600,400904687,US
-400904688,400905271,CA
+400904488,400904575,US
+400904576,400905271,CA
400905272,400905279,US
-400905280,400905335,CA
-400905336,400905343,US
-400905344,400905359,CA
-400905360,400905367,US
-400905368,400905399,CA
-400905400,400905407,US
-400905408,400905455,CA
-400905456,400905463,FI
-400905464,400906111,CA
-400906112,400906143,US
-400906144,400906175,CA
+400905280,400905439,CA
+400905440,400905447,US
+400905448,400906175,CA
400906176,400906207,US
-400906208,400906215,CA
-400906216,400906223,US
-400906224,400906231,CA
-400906232,400906239,US
-400906240,400906255,CA
+400906208,400906255,CA
400906256,400906263,US
-400906264,400906367,CA
-400906368,400906383,US
-400906384,400906399,CA
+400906264,400906399,CA
400906400,400906463,US
-400906464,400906471,CA
-400906472,400906815,US
+400906464,400906479,CA
+400906480,400906815,US
400906816,400906831,CA
400906832,400906879,US
-400906880,400906959,CA
-400906960,400907007,US
-400907008,400907263,CA
+400906880,400907263,CA
400907264,400907519,US
400907520,400907775,CA
400907776,400908031,US
@@ -5610,17 +5547,12 @@
401375536,401375543,US
401375544,401375743,CA
401375744,401376095,US
-401376096,401376103,SE
-401376104,401376111,CA
-401376112,401376191,US
-401376192,401376223,CA
-401376224,401376255,US
-401376256,401376327,CA
-401376328,401376335,US
-401376336,401376351,CA
-401376352,401376415,US
-401376416,401376447,CA
-401376448,401376511,US
+401376096,401376111,CA
+401376112,401376143,US
+401376144,401376447,CA
+401376448,401376479,US
+401376480,401376495,CA
+401376496,401376511,US
401376512,401377791,CA
401377792,401378303,US
401378304,401378559,EG
@@ -5628,47 +5560,45 @@
401378688,401378815,CA
401378816,401379071,US
401379072,401380351,CA
-401380352,401380447,US
+401380352,401380367,US
+401380368,401380431,CA
+401380432,401380447,US
401380448,401380479,CA
-401380480,401380503,US
-401380504,401380527,CA
+401380480,401380495,US
+401380496,401380527,CA
401380528,401380543,US
401380544,401380607,CA
401380608,401380863,US
401380864,401381119,CA
401381120,401381247,US
401381248,401381375,CA
-401381376,401381887,US
-401381888,401381951,CA
-401381952,401381959,US
-401381960,401382015,CA
-401382016,401382023,US
-401382024,401382063,CA
-401382064,401382087,US
-401382088,401382463,CA
+401381376,401381407,US
+401381408,401381423,CA
+401381424,401381887,US
+401381888,401382463,CA
401382464,401382471,US
401382472,401382479,CA
401382480,401382527,US
-401382528,401382543,CA
-401382544,401382575,US
-401382576,401382591,CA
-401382592,401382655,US
-401382656,401384423,CA
-401384424,401384431,US
-401384432,401384799,CA
+401382528,401382559,CA
+401382560,401382575,US
+401382576,401384799,CA
401384800,401384831,US
401384832,401384959,CA
401384960,401385215,US
-401385216,401385295,CA
-401385296,401385375,US
+401385216,401385343,CA
+401385344,401385375,US
401385376,401385391,CA
-401385392,401385983,US
+401385392,401385407,US
+401385408,401385423,CA
+401385424,401385439,US
+401385440,401385471,CA
+401385472,401385983,US
401385984,401386303,CA
401386304,401386399,US
401386400,401386415,CA
401386416,401386463,US
-401386464,401386471,CA
-401386472,401386495,US
+401386464,401386479,CA
+401386480,401386495,US
401386496,401387007,SE
401387008,401387263,US
401387264,401387519,CA
@@ -5683,123 +5613,89 @@
401388672,401388687,US
401388688,401389567,CA
401389568,401390079,US
-401390080,401390335,CA
-401390336,401390847,US
+401390080,401390591,CA
+401390592,401390847,US
401390848,401393151,CA
401393152,401393407,US
-401393408,401393663,CA
-401393664,401393919,US
-401393920,401394527,CA
-401394528,401394559,US
-401394560,401395455,CA
+401393408,401395455,CA
401395456,401395711,US
-401395712,401395727,CA
-401395728,401395743,US
-401395744,401395807,CA
-401395808,401395839,US
-401395840,401396239,CA
-401396240,401396255,US
-401396256,401396287,CA
-401396288,401396319,CN
-401396320,401396383,US
-401396384,401396391,CA
-401396392,401396447,US
-401396448,401396463,CA
-401396464,401396479,US
-401396480,401397247,CA
+401395712,401396287,CA
+401396288,401396351,CN
+401396352,401396383,US
+401396384,401396415,CA
+401396416,401396447,US
+401396448,401397247,CA
401397248,401397311,US
401397312,401397327,CA
401397328,401397359,US
-401397360,401397407,CA
-401397408,401397439,US
-401397440,401397487,CA
-401397488,401397503,US
-401397504,401399063,CA
-401399064,401399135,US
+401397360,401399103,CA
+401399104,401399135,US
401399136,401399167,CA
401399168,401399199,US
401399200,401399215,CA
401399216,401399263,US
401399264,401399279,CA
401399280,401399295,US
-401399296,401399551,CA
-401399552,401399599,US
-401399600,401399607,CA
-401399608,401399647,US
+401399296,401399583,CA
+401399584,401399599,US
+401399600,401399615,CA
+401399616,401399647,US
401399648,401399663,CA
401399664,401399679,US
401399680,401399711,CA
-401399712,401399775,US
-401399776,401400063,CA
+401399712,401399743,US
+401399744,401400063,CA
401400064,401400319,US
-401400320,401400623,CA
-401400624,401400671,US
+401400320,401400655,CA
+401400656,401400671,US
401400672,401400703,CA
401400704,401400735,US
401400736,401400751,CA
-401400752,401400799,US
-401400800,401400815,CA
+401400752,401400783,US
+401400784,401400815,CA
401400816,401400863,US
401400864,401400871,CA
401400872,401400879,NO
-401400880,401400927,US
-401400928,401400959,CA
-401400960,401400991,US
-401400992,401401023,CA
-401401024,401401055,US
-401401056,401401071,CA
-401401072,401401103,US
-401401104,401401111,CA
-401401112,401401215,US
+401400880,401400895,US
+401400896,401401039,CA
+401401040,401401055,US
+401401056,401401119,CA
+401401120,401401135,US
+401401136,401401151,CA
+401401152,401401215,US
401401216,401401247,CA
401401248,401401279,US
-401401280,401401295,CA
-401401296,401401343,US
-401401344,401401359,CA
-401401360,401401439,US
-401401440,401401455,CA
-401401456,401401463,US
-401401464,401401471,CA
+401401280,401401359,CA
+401401360,401401375,US
+401401376,401401471,CA
401401472,401401503,US
-401401504,401401511,CA
-401401512,401401567,US
-401401568,401401583,CA
-401401584,401401599,US
-401401600,401401615,CA
-401401616,401401623,US
-401401624,401401647,CA
-401401648,401401679,US
-401401680,401401687,CA
-401401688,401401695,US
-401401696,401401727,CA
+401401504,401401535,CA
+401401536,401401567,US
+401401568,401401663,CA
+401401664,401401679,US
+401401680,401401727,CA
401401728,401401855,US
-401401856,401401903,CA
-401401904,401401919,US
-401401920,401401935,CA
+401401856,401401935,CA
401401936,401401983,US
-401401984,401401999,CA
-401402000,401402095,US
+401401984,401402079,CA
+401402080,401402095,US
401402096,401402111,CA
401402112,401402207,US
401402208,401402223,CA
401402224,401402239,US
401402240,401402287,CA
401402288,401402303,US
-401402304,401402335,CA
-401402336,401402343,US
-401402344,401402623,CA
+401402304,401402623,CA
401402624,401402879,US
-401402880,401403391,CA
-401403392,401403423,US
-401403424,401403455,CA
-401403456,401403503,US
+401402880,401403407,CA
+401403408,401403423,US
+401403424,401403487,CA
+401403488,401403503,US
401403504,401403583,CA
401403584,401403615,US
-401403616,401403647,CA
-401403648,401403679,US
-401403680,401403695,CA
-401403696,401403775,US
-401403776,401403807,CA
+401403616,401403695,CA
+401403696,401403743,US
+401403744,401403807,CA
401403808,401403839,US
401403840,401403903,CA
401403904,401413887,US
@@ -5887,7 +5783,11 @@
402177536,402178047,JP
402178048,402223103,US
402223104,402227199,CA
-402227200,402231295,PR
+402227200,402227711,US
+402227712,402229247,PR
+402229248,402229503,US
+402229504,402230271,PR
+402230272,402231295,US
402235392,402239301,US
402239302,402239302,CA
402239303,402239473,US
@@ -5901,315 +5801,241 @@
402255872,402259967,US
402259968,402260031,CA
402260032,402260039,FI
-402260040,402260127,CA
-402260128,402260143,US
-402260144,402260159,CA
-402260160,402260167,US
-402260168,402260199,CA
-402260200,402260231,US
-402260232,402260271,CA
+402260040,402260055,CA
+402260056,402260063,US
+402260064,402260271,CA
402260272,402260279,GB
-402260280,402260295,CA
-402260296,402260303,US
-402260304,402260367,CA
-402260368,402260383,US
-402260384,402260431,CA
-402260432,402260439,US
-402260440,402260479,CA
+402260280,402260479,CA
402260480,402260511,US
-402260512,402260527,CA
-402260528,402260543,US
-402260544,402260575,CA
-402260576,402260655,US
-402260656,402260751,CA
-402260752,402260831,US
-402260832,402260863,CA
+402260512,402260575,CA
+402260576,402260607,US
+402260608,402260639,CA
+402260640,402260655,US
+402260656,402260767,CA
+402260768,402260783,US
+402260784,402260799,CA
+402260800,402260815,US
+402260816,402260863,CA
402260864,402260895,US
402260896,402260911,CA
402260912,402260959,US
-402260960,402260967,CA
-402260968,402260991,US
-402260992,402260999,CA
-402261000,402261087,US
+402260960,402260975,CA
+402260976,402260991,US
+402260992,402261007,CA
+402261008,402261087,US
402261088,402261119,CA
-402261120,402261247,US
-402261248,402262015,CA
+402261120,402261151,US
+402261152,402261183,CA
+402261184,402261215,US
+402261216,402262015,CA
402262016,402262271,US
-402262272,402262351,CA
-402262352,402262359,US
-402262360,402262431,CA
-402262432,402262439,SE
-402262440,402262447,CA
+402262272,402262447,CA
402262448,402262455,US
402262456,402262463,FI
402262464,402262479,US
-402262480,402262519,CA
-402262520,402262527,US
-402262528,402262575,CA
-402262576,402262599,US
-402262600,402262663,CA
-402262664,402262671,US
-402262672,402262695,CA
-402262696,402262703,US
-402262704,402262751,CA
-402262752,402262759,US
-402262760,402262847,CA
-402262848,402262855,US
-402262856,402262871,CA
+402262480,402262871,CA
402262872,402262879,US
-402262880,402262927,CA
-402262928,402262935,US
-402262936,402262943,CA
-402262944,402262951,US
-402262952,402262975,CA
-402262976,402262983,US
-402262984,402263023,CA
-402263024,402263039,US
-402263040,402263295,CA
-402263296,402263311,US
-402263312,402263335,CA
+402262880,402263335,CA
402263336,402263343,US
-402263344,402263359,CA
-402263360,402263391,US
-402263392,402263423,CA
-402263424,402263487,US
+402263344,402263423,CA
+402263424,402263455,US
+402263456,402263471,CA
+402263472,402263487,US
402263488,402263807,CA
402263808,402264063,US
402264064,402264079,CA
402264080,402264095,US
402264096,402264111,CA
-402264112,402264319,US
-402264320,402264367,CA
-402264368,402264383,US
-402264384,402264447,CA
-402264448,402264575,US
-402264576,402265415,CA
-402265416,402265423,SE
-402265424,402265471,CA
-402265472,402265583,US
-402265584,402265599,CA
-402265600,402265631,US
-402265632,402265663,CA
+402264112,402264127,US
+402264128,402264191,CA
+402264192,402264319,US
+402264320,402264447,CA
+402264448,402264559,US
+402264560,402265471,CA
+402265472,402265535,US
+402265536,402265551,CA
+402265552,402265583,US
+402265584,402265663,CA
402265664,402265690,US
402265691,402265691,BD
-402265692,402265791,US
-402265792,402265879,CA
+402265692,402265759,US
+402265760,402265879,CA
402265880,402265887,US
402265888,402265919,CA
-402265920,402266143,US
-402266144,402266159,CA
-402266160,402266215,US
-402266216,402266287,CA
+402265920,402265951,US
+402265952,402265967,CA
+402265968,402266143,US
+402266144,402266175,CA
+402266176,402266191,US
+402266192,402266287,CA
402266288,402266303,US
-402266304,402266311,CA
-402266312,402266319,US
-402266320,402266335,CA
-402266336,402266343,US
-402266344,402266351,CA
-402266352,402266359,US
-402266360,402266367,CA
-402266368,402266703,US
+402266304,402266367,CA
+402266368,402266655,US
+402266656,402266671,CA
+402266672,402266703,US
402266704,402266727,CA
402266728,402266735,NO
402266736,402266751,US
-402266752,402266815,CA
-402266816,402266847,US
-402266848,402267391,CA
+402266752,402267391,CA
402267392,402267423,US
402267424,402267439,CA
-402267440,402267487,US
+402267440,402267455,US
+402267456,402267471,CA
+402267472,402267487,US
402267488,402267519,CA
402267520,402267647,US
-402267648,402267903,CA
-402267904,402268159,US
-402268160,402269199,CA
+402267648,402269199,CA
402269200,402269207,US
-402269208,402269215,CA
-402269216,402269223,US
-402269224,402269231,CA
-402269232,402269247,US
-402269248,402269263,CA
-402269264,402269455,US
-402269456,402269471,CA
-402269472,402269503,US
-402269504,402269519,CA
-402269520,402269535,US
-402269536,402269551,CA
-402269552,402269567,US
-402269568,402269583,CA
-402269584,402269591,US
-402269592,402269599,CA
-402269600,402269647,US
-402269648,402269663,CA
-402269664,402269679,US
-402269680,402269983,CA
+402269208,402269263,CA
+402269264,402269279,US
+402269280,402269311,CA
+402269312,402269343,US
+402269344,402269375,CA
+402269376,402269455,US
+402269456,402269631,CA
+402269632,402269647,US
+402269648,402269983,CA
402269984,402270031,US
-402270032,402270047,CA
-402270048,402270207,US
-402270208,402270223,CA
-402270224,402270239,US
-402270240,402270255,CA
-402270256,402270303,US
-402270304,402270335,CA
+402270032,402270079,CA
+402270080,402270207,US
+402270208,402270335,CA
402270336,402270463,US
402270464,402270719,CA
-402270720,402270783,US
-402270784,402270879,CA
-402270880,402270943,US
-402270944,402270975,CA
+402270720,402270751,US
+402270752,402270879,CA
+402270880,402270895,US
+402270896,402270911,CA
+402270912,402270927,US
+402270928,402270975,CA
402270976,402271103,US
402271104,402271119,CA
402271120,402271135,US
402271136,402271167,CA
402271168,402271199,US
402271200,402271231,CA
-402271232,402271423,US
-402271424,402271439,CA
+402271232,402271391,US
+402271392,402271439,CA
402271440,402271455,US
402271456,402271487,CA
-402271488,402271615,US
+402271488,402271519,US
+402271520,402271551,CA
+402271552,402271615,US
402271616,402271631,CA
-402271632,402271735,US
-402271736,402271999,CA
+402271632,402271647,US
+402271648,402271679,CA
+402271680,402271727,US
+402271728,402271999,CA
402272000,402272127,US
402272128,402272255,CA
402272256,402272639,US
-402272640,402272663,CA
-402272664,402272671,US
-402272672,402272703,CA
+402272640,402272703,CA
402272704,402272895,US
402272896,402273279,CA
-402273280,402273407,US
-402273408,402273423,CA
-402273424,402273439,US
-402273440,402273471,CA
+402273280,402273311,US
+402273312,402273375,CA
+402273376,402273391,US
+402273392,402273471,CA
402273472,402273503,US
402273504,402273519,CA
402273520,402273535,US
-402273536,402273543,CA
-402273544,402273551,FI
-402273552,402273599,CA
-402273600,402273791,US
-402273792,402273927,CA
-402273928,402273951,US
+402273536,402273599,CA
+402273600,402273631,US
+402273632,402273663,CA
+402273664,402273791,US
+402273792,402273935,CA
+402273936,402273951,US
402273952,402273983,CA
402273984,402273999,US
402274000,402274015,CA
402274016,402274047,US
-402274048,402274239,CA
-402274240,402274287,US
-402274288,402274295,CA
-402274296,402274463,US
+402274048,402274271,CA
+402274272,402274287,US
+402274288,402274303,CA
+402274304,402274463,US
402274464,402274479,CA
-402274480,402274559,US
-402274560,402275351,CA
-402275352,402275359,US
-402275360,402275391,CA
-402275392,402275839,US
+402274480,402274543,US
+402274544,402275423,CA
+402275424,402275839,US
402275840,402276095,CA
402276096,402276223,US
402276224,402277375,CA
402277376,402277631,US
402277632,402278015,CA
-402278016,402278127,US
+402278016,402278047,US
+402278048,402278079,CA
+402278080,402278127,US
402278128,402278399,CA
402278400,402278655,US
-402278656,402279959,CA
-402279960,402279967,US
-402279968,402280063,CA
+402278656,402280063,CA
402280064,402280191,US
402280192,402280207,CA
402280208,402280223,US
402280224,402280319,CA
-402280320,402280415,US
-402280416,402280959,CA
+402280320,402280383,US
+402280384,402280959,CA
402280960,402281087,US
402281088,402281199,CA
402281200,402281471,US
-402281472,402281603,CA
-402281604,402281607,US
-402281608,402281687,CA
-402281688,402281691,US
-402281692,402281727,CA
+402281472,402281727,CA
402281728,402281823,US
-402281824,402281991,CA
-402281992,402281999,US
-402282000,402282111,CA
+402281824,402282111,CA
402282112,402282239,US
-402282240,402282815,CA
-402282816,402282847,US
-402282848,402282879,CA
+402282240,402282879,CA
402282880,402282911,US
402282912,402282927,CA
-402282928,402282975,US
+402282928,402282943,US
+402282944,402282959,CA
+402282960,402282975,US
402282976,402283263,CA
402283264,402283519,US
-402283520,402284039,CA
-402284040,402284047,US
-402284048,402284159,CA
+402283520,402284159,CA
402284160,402284287,US
-402284288,402284799,CA
+402284288,402284351,CA
+402284352,402284415,CN
+402284416,402284799,CA
402284800,402285055,US
-402285056,402285311,CA
-402285312,402285343,US
-402285344,402285375,CA
-402285376,402285391,US
-402285392,402285407,CA
+402285056,402285407,CA
402285408,402285439,US
402285440,402285567,CA
402285568,402285823,US
-402285824,402286095,CA
-402286096,402286143,US
-402286144,402286319,CA
-402286320,402286895,US
+402285824,402286335,CA
+402286336,402286847,US
+402286848,402286863,CA
+402286864,402286895,US
402286896,402286911,CA
402286912,402286927,US
402286928,402286935,CA
402286936,402286975,US
-402286976,402286983,CA
-402286984,402286991,US
-402286992,402287207,CA
-402287208,402287215,US
-402287216,402287263,CA
+402286976,402287263,CA
402287264,402287279,US
-402287280,402287295,CA
-402287296,402287391,US
-402287392,402287423,CA
+402287280,402287423,CA
402287424,402287487,US
402287488,402287551,CA
402287552,402287583,US
402287584,402287743,CA
-402287744,402287799,US
-402287800,402287807,CA
-402287808,402287839,US
-402287840,402287871,CA
-402287872,402287903,US
-402287904,402288007,CA
-402288008,402288015,US
-402288016,402288031,CA
-402288032,402288063,US
-402288064,402288135,CA
-402288136,402288143,US
-402288144,402288159,CA
-402288160,402288191,US
-402288192,402288223,CA
-402288224,402288287,US
+402287744,402287791,US
+402287792,402288031,CA
+402288032,402288047,US
+402288048,402288159,CA
+402288160,402288175,US
+402288176,402288223,CA
+402288224,402288255,US
+402288256,402288271,CA
+402288272,402288287,US
402288288,402288319,CA
402288320,402288383,US
-402288384,402288391,CA
-402288392,402288399,US
-402288400,402288431,CA
+402288384,402288431,CA
402288432,402288447,US
-402288448,402288511,CA
-402288512,402288591,US
+402288448,402288543,CA
+402288544,402288591,US
402288592,402288607,CA
402288608,402288623,US
-402288624,402288631,CA
-402288632,402288895,US
+402288624,402288639,CA
+402288640,402288895,US
402288896,402288927,CA
402288928,402288935,US
402288936,402289063,CA
-402289064,402289071,CN
+402289064,402289071,US
402289072,402289119,CA
402289120,402289151,US
402289152,402289407,CA
@@ -6224,13 +6050,15 @@
402289744,402289759,US
402289760,402289775,CA
402289776,402289791,US
-402289792,402289919,CA
-402289920,402290047,US
-402290048,402290175,CA
-402290176,402290255,US
+402289792,402289983,CA
+402289984,402290047,US
+402290048,402290239,CA
+402290240,402290255,US
402290256,402290271,CA
402290272,402290287,US
-402290288,402290399,CA
+402290288,402290295,CA
+402290296,402290303,US
+402290304,402290399,CA
402290400,402290407,US
402290408,402290479,CA
402290480,402290511,US
@@ -6252,7 +6080,9 @@
402291136,402291199,US
402291200,402291231,CA
402291232,402291263,US
-402291264,402291327,CA
+402291264,402291279,CA
+402291280,402291287,US
+402291288,402291327,CA
402291328,402291359,US
402291360,402291391,CA
402291392,402291423,US
@@ -6261,8 +6091,8 @@
402292000,402292095,CA
402292096,402292103,US
402292104,402292143,CA
-402292144,402292151,US
-402292152,402292351,CA
+402292144,402292159,US
+402292160,402292351,CA
402292352,402353663,US
402353664,402353919,JP
402353920,402354175,ID
@@ -6291,33 +6121,35 @@
402409472,402410495,US
402410496,402410751,TR
402410752,402522111,US
-402522112,402522175,CA
-402522176,402522183,US
-402522184,402522223,CA
+402522112,402522223,CA
402522224,402522231,US
402522232,402522271,CA
-402522272,402522287,US
-402522288,402522327,CA
-402522328,402522335,US
-402522336,402522399,CA
+402522272,402522279,US
+402522280,402522399,CA
402522400,402522407,US
402522408,402522479,CA
-402522480,402522575,US
-402522576,402522591,CA
-402522592,402522655,US
-402522656,402522679,CA
-402522680,402522911,US
-402522912,402522943,CA
-402522944,402522975,US
-402522976,402522991,CA
-402522992,402523103,US
-402523104,402523111,CA
-402523112,402523135,US
+402522480,402522559,US
+402522560,402522591,CA
+402522592,402522607,US
+402522608,402522623,CA
+402522624,402522655,US
+402522656,402522719,CA
+402522720,402522895,US
+402522896,402522991,CA
+402522992,402523007,US
+402523008,402523023,CA
+402523024,402523039,US
+402523040,402523071,CA
+402523072,402523103,US
+402523104,402523119,CA
+402523120,402523135,US
402523136,402523167,CA
-402523168,402523391,US
+402523168,402523199,US
+402523200,402523231,CA
+402523232,402523391,US
402523392,402523423,CA
-402523424,402523447,US
-402523448,402523455,CA
+402523424,402523439,US
+402523440,402523455,CA
402523456,402523487,US
402523488,402523503,CA
402523504,402523647,US
@@ -6329,17 +6161,17 @@
402524192,402524255,US
402524256,402524263,CA
402524264,402524271,FI
-402524272,402524279,CA
-402524280,402524367,US
-402524368,402524383,CA
-402524384,402524447,US
-402524448,402524479,CA
+402524272,402524287,CA
+402524288,402524319,US
+402524320,402524383,CA
+402524384,402524415,US
+402524416,402524479,CA
402524480,402524575,US
402524576,402524591,CA
402524592,402524607,US
402524608,402524639,CA
-402524640,402524663,US
-402524664,402524671,CA
+402524640,402524655,US
+402524656,402524671,CA
402524672,402524799,US
402524800,402524831,CA
402524832,402524895,US
@@ -6348,158 +6180,139 @@
402524960,402524991,CA
402524992,402525007,US
402525008,402525023,CA
-402525024,402525103,US
+402525024,402525055,US
+402525056,402525087,CA
+402525088,402525103,US
402525104,402525119,CA
-402525120,402525375,US
-402525376,402525415,CA
-402525416,402525423,NO
-402525424,402525439,CA
+402525120,402525151,US
+402525152,402525183,CA
+402525184,402525215,US
+402525216,402525247,CA
+402525248,402525279,US
+402525280,402525295,CA
+402525296,402525327,US
+402525328,402525343,CA
+402525344,402525375,US
+402525376,402525439,CA
402525440,402525695,US
402525696,402525951,CA
402525952,402526079,US
402526080,402526207,CA
-402526208,402526559,US
-402526560,402526655,CA
+402526208,402526527,US
+402526528,402526655,CA
402526656,402526671,US
402526672,402526687,CA
402526688,402526719,US
402526720,402526975,CA
402526976,402527359,US
402527360,402527391,CA
-402527392,402527647,US
-402527648,402528255,CA
-402528256,402528415,US
-402528416,402528511,CA
-402528512,402529535,US
+402527392,402527615,US
+402527616,402528255,CA
+402528256,402528383,US
+402528384,402528767,CA
+402528768,402529535,US
402529536,402529791,CA
402529792,402530047,US
402530048,402530303,CA
402530304,402530559,US
402530560,402531583,CA
402531584,402531839,US
-402531840,402531935,CA
-402531936,402532031,US
-402532032,402532063,CA
-402532064,402532095,US
-402532096,402532159,CA
-402532160,402532231,US
-402532232,402532247,CA
+402531840,402532247,CA
402532248,402532255,US
-402532256,402532271,CA
-402532272,402532287,US
-402532288,402532351,CA
+402532256,402532351,CA
402532352,402532607,US
-402532608,402532887,CA
-402532888,402532895,US
-402532896,402532967,CA
-402532968,402532975,US
-402532976,402532983,CA
+402532608,402532983,CA
402532984,402532991,US
-402532992,402533015,CA
-402533016,402533023,US
-402533024,402533031,CA
-402533032,402533039,SE
-402533040,402533055,US
-402533056,402533111,CA
+402532992,402532999,CA
+402533000,402533007,US
+402533008,402533039,CA
+402533040,402533047,US
+402533048,402533111,CA
402533112,402533279,US
402533280,402533295,CA
-402533296,402533343,US
-402533344,402533375,CA
-402533376,402533759,US
+402533296,402533311,US
+402533312,402533327,CA
+402533328,402533343,US
+402533344,402533631,CA
+402533632,402533759,US
402533760,402533791,CA
402533792,402533887,US
402533888,402533903,CA
-402533904,402534015,US
+402533904,402533919,US
+402533920,402533935,CA
+402533936,402534015,US
402534016,402534079,CA
402534080,402534095,US
402534096,402534111,CA
402534112,402534143,US
402534144,402534175,CA
-402534176,402534335,US
-402534336,402534399,CA
+402534176,402534255,US
+402534256,402534271,CA
+402534272,402534319,US
+402534320,402534399,CA
402534400,402534479,US
-402534480,402534487,CA
-402534488,402534655,US
-402534656,402535167,CA
-402535168,402535423,US
-402535424,402535935,CA
+402534480,402534495,CA
+402534496,402534655,US
+402534656,402535935,CA
402535936,402536191,US
402536192,402536255,CA
-402536256,402536351,US
+402536256,402536287,US
+402536288,402536303,CA
+402536304,402536351,US
402536352,402536367,CA
402536368,402536383,US
-402536384,402536391,CA
-402536392,402536399,US
-402536400,402536431,CA
-402536432,402536447,US
-402536448,402536455,CA
-402536456,402536463,US
-402536464,402536479,CA
+402536384,402536479,CA
402536480,402536527,US
402536528,402536543,CA
402536544,402536575,US
402536576,402536639,CA
-402536640,402536703,US
-402536704,402536959,CA
+402536640,402536687,US
+402536688,402536959,CA
402536960,402537215,US
-402537216,402537279,CA
-402537280,402537367,US
-402537368,402537375,CA
-402537376,402537391,US
-402537392,402538495,CA
-402538496,402538687,US
-402538688,402538727,CA
-402538728,402538751,US
-402538752,402538759,CA
-402538760,402538767,US
-402538768,402538815,CA
-402538816,402538895,US
+402537216,402537359,CA
+402537360,402537367,US
+402537368,402538495,CA
+402538496,402538511,US
+402538512,402538591,CA
+402538592,402538687,US
+402538688,402538735,CA
+402538736,402538751,US
+402538752,402538815,CA
+402538816,402538863,US
+402538864,402538879,CA
+402538880,402538895,US
402538896,402538911,CA
402538912,402538927,US
-402538928,402538943,CA
-402538944,402538975,US
-402538976,402539071,CA
-402539072,402539087,US
-402539088,402539095,SE
-402539096,402539135,CA
-402539136,402539199,US
-402539200,402539327,CA
-402539328,402539455,US
-402539456,402539535,CA
-402539536,402539551,US
-402539552,402539567,CA
-402539568,402539583,US
+402538928,402538959,CA
+402538960,402538975,US
+402538976,402539079,CA
+402539080,402539087,US
+402539088,402539583,CA
402539584,402539647,CN
402539648,402539775,CA
402539776,402540031,US
-402540032,402541119,CA
-402541120,402541247,US
-402541248,402541311,CA
+402540032,402541311,CA
402541312,402541567,US
402541568,402541823,CA
402541824,402542079,US
402542080,402542335,CA
402542336,402542591,US
402542592,402542847,CA
-402542848,402543135,US
-402543136,402543167,CA
-402543168,402543295,US
-402543296,402543303,CA
-402543304,402543311,US
-402543312,402543327,CA
+402542848,402543119,US
+402543120,402543167,CA
+402543168,402543231,US
+402543232,402543327,CA
402543328,402543343,US
-402543344,402543367,CA
-402543368,402543375,US
-402543376,402543391,CA
+402543344,402543391,CA
402543392,402543487,US
402543488,402543551,CA
-402543552,402543599,US
-402543600,402543607,CA
-402543608,402544415,US
+402543552,402543583,US
+402543584,402543615,CA
+402543616,402544415,US
402544416,402544423,CA
-402544424,402544511,US
-402544512,402544551,CA
-402544552,402544591,US
+402544424,402544479,US
+402544480,402544559,CA
+402544560,402544591,US
402544592,402544607,CA
402544608,402546687,US
402546688,402546943,CA
@@ -6957,9 +6770,11 @@
461111296,461127679,IN
461127680,461131775,PH
461131776,461135871,ID
-461135872,461143329,AU
+461135872,461143295,AU
+461143296,461143329,GB
461143330,461143331,US
-461143332,461144063,AU
+461143332,461143551,GB
+461143552,461144063,AU
461144064,461209599,KR
461209600,461225983,SG
461225984,461227007,WF
@@ -7137,7 +6952,7 @@
520888320,520896511,DE
520896512,520898303,BE
520898304,520898559,US
-520898560,520900607,RU
+520898560,520900607,JP
520900608,520902655,GB
520902656,520902784,NL
520902785,520912895,GB
@@ -7170,10 +6985,12 @@
520994048,520994303,US
520994304,520994559,DE
520994560,520994815,SE
-520994816,521011199,BG
+520994816,520999423,BG
+520999424,520999935,DE
+520999936,521011199,BG
521011200,521013247,FR
521013248,521013503,RO
-521013504,521013759,PL
+521013504,521013759,US
521013760,521014015,RO
521014016,521014271,NL
521014272,521018367,RO
@@ -7202,14 +7019,15 @@
521030400,521030655,TR
521030656,521031679,FR
521031680,521035775,IR
-521035776,521037567,RO
+521035776,521036799,NL
+521036800,521037567,RO
521037568,521037823,TH
521037824,521039871,RO
521039872,521043967,IR
521043968,521048063,IT
521048064,521052159,IR
521052160,521052671,RO
-521052672,521052927,PL
+521052672,521052927,US
521052928,521053183,RO
521053184,521054207,SY
521054208,521056255,GR
@@ -7219,7 +7037,9 @@
521060352,521062399,RO
521062400,521064447,ES
521064448,521066495,GR
-521066496,521072639,RO
+521066496,521071103,RO
+521071104,521071615,NL
+521071616,521072639,RO
521072640,521074687,GR
521074688,521075711,GB
521075712,521076479,RO
@@ -7241,7 +7061,7 @@
521404416,521535487,NL
521535488,521537535,GB
521537536,521538559,DE
-521538560,521539583,RU
+521538560,521539583,IN
521539584,521541631,BE
521541632,521543679,DE
521543680,521545727,RU
@@ -7406,7 +7226,11 @@
522870784,522874879,RU
522874880,522878975,UA
522878976,522887167,RO
-522887168,522895359,UA
+522887168,522891263,UA
+522891264,522892287,US
+522892288,522893311,UA
+522893312,522894335,US
+522894336,522895359,UA
522895360,522911743,RU
522911744,522960895,UA
522960896,522969087,RU
@@ -7465,7 +7289,9 @@
528523264,528531455,UA
528531456,528539647,RU
528539648,528547839,UA
-528547840,528564223,RU
+528547840,528556031,RU
+528556032,528562175,US
+528562176,528564223,NL
528564224,528572415,UA
528572416,528588799,RU
528588800,528596991,UA
@@ -7481,7 +7307,7 @@
528664576,528666623,BY
528666624,528668671,RU
528668672,528670719,PL
-528670720,528674815,CA
+528670720,528674815,TH
528674816,528676863,RO
528676864,528678911,RU
528678912,528680959,MD
@@ -7527,7 +7353,7 @@
528836608,528838655,RU
528838656,528840703,PL
528840704,528842751,RU
-528842752,528859135,CA
+528842752,528859135,TH
528859136,528861183,RO
528861184,528863231,RU
528863232,528867327,KZ
@@ -7636,8 +7462,7 @@
531193856,531195903,IE
531195904,531197951,IT
531197952,531199999,GB
-531200000,531201023,DE
-531201024,531202047,BG
+531200000,531202047,DE
531202048,531234815,CZ
531234816,531236863,IE
531236864,531238911,FR
@@ -7673,33 +7498,29 @@
531351552,531355647,NL
531355648,531357695,IR
531357696,531361791,HU
-531361792,531367935,CH
+531361792,531365887,CH
531367936,531369983,DE
-531369984,531372031,CH
+531369984,531371007,CH
531372032,531372287,DE
-531372288,531372543,CH
531372544,531372799,DE
-531372800,531373055,CH
531373056,531374144,DE
-531374145,531376127,CH
531376128,531377151,DE
-531377152,531382271,CH
531382272,531390463,DE
-531390464,531392511,CH
531392512,531398655,DE
531398656,531400703,RU
531400704,531402751,UA
531402752,531404799,LU
531404800,531406847,FI
531406848,531408895,FR
-531408896,531409407,DE
-531409408,531409919,NL
+531408896,531409919,PL
531409920,531410943,FR
531410944,531415039,PL
531415040,531423231,RU
531423232,531424255,LT
-531424256,531427327,FR
-531427328,531427503,GB
+531424256,531425279,FR
+531425280,531426559,GB
+531426560,531426815,FR
+531426816,531427503,GB
531427504,531427511,IT
531427512,531427967,GB
531427968,531427983,IT
@@ -7771,7 +7592,8 @@
532303872,532305919,PL
532305920,532307967,NO
532307968,532310015,RU
-532310016,532312063,GR
+532310016,532311039,GR
+532311040,532312063,BG
532312064,532312983,JE
532312984,532312991,GB
532312992,532314111,JE
@@ -7789,7 +7611,8 @@
532344320,532344371,FR
532344372,532344372,GB
532344373,532344575,FR
-532344576,532346367,GB
+532344576,532344831,NL
+532344832,532346367,GB
532346368,532346623,NL
532346624,532347391,GB
532347392,532347903,DE
@@ -7833,9 +7656,7 @@
532692992,532700927,CZ
532700928,532701183,SK
532701184,532703231,GB
-532703232,532704511,RU
-532704512,532704767,NL
-532704768,532705279,RU
+532703232,532705279,RU
532705280,532709375,NL
532709376,532725759,RU
532725760,532729855,SE
@@ -8255,19 +8076,29 @@
598999040,599064575,FR
599064576,599130111,US
599130112,599261183,CA
-599261184,599608829,US
+599261184,599359487,US
+599359488,599375871,SG
+599375872,599429472,US
+599429473,599429473,SG
+599429474,599608829,US
599608830,599608830,GB
599608831,599609659,US
599609660,599609660,GB
599609661,599615125,US
599615126,599615126,GB
-599615127,600164504,US
+599615127,599621631,US
+599621632,599638015,SG
+599638016,600153368,US
+600153369,600153369,SG
+600153370,600164504,US
600164505,600164505,IE
600164506,600169106,US
600169107,600169107,GB
600169108,600171164,US
600171165,600171165,GB
-600171166,600342898,US
+600171166,600243604,US
+600243605,600243605,SG
+600243606,600342898,US
600342899,600342899,IN
600342900,600356283,US
600356284,600356284,IN
@@ -8275,7 +8106,11 @@
600374234,600374234,IN
600374235,600376938,US
600376939,600376939,AU
-600376940,603979775,US
+600376940,602574473,US
+602574474,602574474,GB
+602574475,602992238,US
+602992239,602992239,SG
+602992240,603979775,US
603979776,603980799,CN
603980800,603981823,NP
603981824,604110847,CN
@@ -8309,6 +8144,7 @@
620703744,620704767,AU
620704768,620705791,BD
620705792,620706815,HK
+620706816,620707839,PH
620707840,620708863,IN
620708864,620709887,HK
620709888,620711935,AU
@@ -8318,7 +8154,8 @@
620716288,620716543,PH
620716544,620716799,BE
620716800,620718079,PK
-620718080,620720127,IN
+620718080,620718591,MV
+620718592,620720127,IN
620720128,620721151,AU
620721152,620722175,CN
620722176,620723199,JP
@@ -8342,7 +8179,10 @@
620743936,620744191,AU
620744192,620744703,JP
620744704,620745727,IN
-620745728,620746751,PK
+620745728,620745983,SG
+620745984,620746239,TH
+620746240,620746495,PH
+620746496,620746751,SK
620746752,620747775,JP
620747776,620748799,CN
620748800,620751871,IN
@@ -8649,7 +8489,6 @@
623790080,623792127,ES
623792128,623794175,CZ
623794176,623796223,ES
-623796224,623798271,GB
623798272,623800319,GE
623800320,623800575,NL
623800576,623800831,LU
@@ -8715,9 +8554,7 @@
624640640,624640703,ES
624640704,624640751,FR
624640752,624640755,GB
-624640756,624640783,FR
-624640784,624640787,ES
-624640788,624640811,FR
+624640756,624640811,FR
624640812,624640815,GB
624640816,624640823,FR
624640824,624640827,GB
@@ -8726,17 +8563,13 @@
624640936,624641183,FR
624641184,624641187,CZ
624641188,624641191,ES
-624641192,624641295,FR
-624641296,624641299,CZ
-624641300,624641375,FR
+624641192,624641375,FR
624641376,624641407,LT
624641408,624641535,FR
624641536,624641551,IE
624641552,624641855,FR
624641856,624641887,GB
-624641888,624641983,FR
-624641984,624642015,ES
-624642016,624642035,FR
+624641888,624642035,FR
624642036,624642039,ES
624642040,624642299,FR
624642300,624642303,ES
@@ -8748,9 +8581,7 @@
624642816,624642831,LT
624642832,624642911,FR
624642912,624642943,IE
-624642944,624643091,FR
-624643092,624643095,FI
-624643096,624643107,FR
+624642944,624643107,FR
624643108,624643111,GB
624643112,624643211,FR
624643212,624643215,CH
@@ -8803,9 +8634,7 @@
624646672,624646687,GB
624646688,624646719,FR
624646720,624646735,ES
-624646736,624646791,FR
-624646792,624646795,IE
-624646796,624646911,FR
+624646736,624646911,FR
624646912,624646927,LT
624646928,624647171,FR
624647172,624647183,ES
@@ -8921,9 +8750,7 @@
624664068,624664071,ES
624664072,624664351,FR
624664352,624664367,ES
-624664368,624664495,FR
-624664496,624664511,ES
-624664512,624664527,FR
+624664368,624664527,FR
624664528,624664531,ES
624664532,624664599,FR
624664600,624664603,GB
@@ -8949,7 +8776,9 @@
624665904,624665919,FI
624665920,624665999,FR
624666000,624666015,GB
-624666016,624666167,FR
+624666016,624666079,FR
+624666080,624666111,CZ
+624666112,624666167,FR
624666168,624666175,GB
624666176,624666219,FR
624666220,624666223,DE
@@ -8992,9 +8821,7 @@
624668928,624668931,GB
624668932,624669459,FR
624669460,624669463,FI
-624669464,624669711,FR
-624669712,624669727,ES
-624669728,624669795,FR
+624669464,624669795,FR
624669796,624669799,ES
624669800,624669959,FR
624669960,624669963,ES
@@ -9017,9 +8844,7 @@
624671292,624671295,PL
624671296,624671455,FR
624671456,624671471,ES
-624671472,624672095,FR
-624672096,624672127,CZ
-624672128,624672547,FR
+624671472,624672547,FR
624672548,624672551,ES
624672552,624672951,FR
624672952,624672959,ES
@@ -9044,7 +8869,8 @@
624674480,624675019,FR
624675020,624675023,DE
624675024,624675027,BE
-624675028,624675047,FR
+624675028,624675031,DE
+624675032,624675047,FR
624675048,624675055,ES
624675056,624675647,FR
624675648,624675651,FI
@@ -9116,9 +8942,7 @@
624680752,624680767,FR
624680768,624680783,CZ
624680784,624680799,GB
-624680800,624680895,FR
-624680896,624680927,ES
-624680928,624681023,FR
+624680800,624681023,FR
624681024,624681055,ES
624681056,624681083,FR
624681084,624681087,ES
@@ -9182,7 +9006,9 @@
624684800,624684803,DE
624684804,624684907,FR
624684908,624684911,ES
-624684912,624685375,FR
+624684912,624685035,FR
+624685036,624685039,IT
+624685040,624685375,FR
624685376,624685439,ES
624685440,624685535,FR
624685536,624685539,PT
@@ -9374,7 +9200,7 @@
627218432,627220479,TJ
627220480,627228671,RU
627228672,627230719,GR
-627230720,627232767,IR
+627230720,627232767,ES
627232768,627236863,PL
627236864,627238911,IQ
627240192,627240447,US
@@ -9643,7 +9469,7 @@
630982400,630982655,RO
630982656,630988799,IR
630988800,630989311,RO
-630989312,630989567,PL
+630989312,630989567,US
630989568,630990335,RO
630990336,630990847,JE
630990848,630992895,RO
@@ -9675,7 +9501,8 @@
631027712,631027967,KR
631027968,631028223,US
631028224,631028351,GB
-631028352,631028735,US
+631028352,631028479,US
+631028480,631028735,CZ
631028736,631029759,ES
631029760,631033855,SE
631033856,631034879,IT
@@ -9953,8 +9780,7 @@
635871488,635871743,UA
635871744,635873279,RU
635873280,635873535,LU
-635873536,635873791,US
-635873792,635874047,SE
+635873536,635874047,US
635874048,635874303,AR
635874304,635874815,SG
635874816,635875071,FR
@@ -9972,7 +9798,7 @@
635878400,635878655,RU
635878656,635878911,US
635878912,635879167,FI
-635879168,635879423,AT
+635879168,635879423,US
635879424,635894527,RU
635894528,635894783,KZ
635894784,635895807,RU
@@ -10466,9 +10292,19 @@
666894336,671088639,ID
671088640,675381247,US
675381248,675397631,SG
-675397632,675422207,US
+675397632,675416063,US
+675416064,675416575,AU
+675416576,675417599,US
+675417600,675418111,AU
+675418112,675422207,US
675422208,675430399,FR
-675430400,675447167,US
+675430400,675430407,US
+675430408,675430415,NL
+675430416,675430423,HK
+675430424,675430431,JP
+675430432,675431423,US
+675431424,675431935,AE
+675431936,675447167,US
675447168,675447295,HK
675447296,675447423,US
675447424,675447551,BR
@@ -10552,7 +10388,9 @@
676179872,676179903,IE
676179904,676181599,US
676181600,676181631,IE
-676181632,676192767,US
+676181632,676184063,US
+676184064,676185087,HK
+676185088,676192767,US
676192768,676192895,HK
676192896,676193023,IE
676193024,676193535,US
@@ -10562,7 +10400,9 @@
676194976,676195007,IE
676195008,676195327,US
676195328,676195359,IE
-676195360,676249599,US
+676195360,676199423,US
+676199424,676199935,HK
+676199936,676249599,US
676249600,676251647,IN
676251648,676254207,US
676254208,676254463,NL
@@ -10762,7 +10602,8 @@
677057536,677058559,IE
677058560,677059583,US
677059584,677060607,NL
-677060608,677101567,US
+677060608,677061631,IE
+677061632,677101567,US
677101568,677117951,NL
677117952,677134335,US
677134336,677134591,IE
@@ -11105,8 +10946,8 @@
677840448,677840463,NL
677840464,677840495,IE
677840496,677840511,AT
-677840512,677840543,NL
-677840544,677840559,IE
+677840512,677840527,NL
+677840528,677840559,IE
677840560,677840575,AT
677840576,677840591,NL
677840592,677840623,IE
@@ -11235,7 +11076,8 @@
677848320,677848335,FI
677848336,677848351,US
677848352,677848367,IE
-677848368,677848399,US
+677848368,677848383,US
+677848384,677848399,FI
677848400,677848415,NL
677848416,677848431,IE
677848432,677848447,AT
@@ -11318,13 +11160,13 @@
677853728,677853743,FI
677853744,677853759,NL
677853760,677853775,AT
-677853776,677853791,MY
+677853776,677853791,IE
677853792,677853807,FI
677853808,677853823,NL
677853824,677853839,AT
677853840,677853855,IE
677853856,677853871,FI
-677853872,677853887,US
+677853872,677853887,NL
677853888,677853903,AT
677853904,677853919,IE
677853920,677853935,FI
@@ -11347,8 +11189,8 @@
678102528,678102783,IE
678102784,678103039,FI
678103040,678103295,AT
-678103296,678103807,FR
-678103808,678104063,GB
+678103296,678103551,FR
+678103552,678104063,GB
678104064,678104319,FR
678104320,678104575,FI
678104576,678104831,AT
@@ -11556,12 +11398,23 @@
691650560,691666943,GH
691666944,691732479,NG
691732480,691798015,TZ
-691798016,691806207,ZM
+691798016,691804159,ZM
+691804160,691805183,CD
+691805184,691806207,KE
691806208,691830783,ZW
-691830784,691832319,ZM
+691830784,691832063,ZM
+691832064,691832319,KE
691832320,691832831,ZA
-691832832,691857407,ZM
-691857408,691857919,KE
+691832832,691834879,KE
+691834880,691848703,ZM
+691848704,691849215,KE
+691849216,691851263,ZW
+691851264,691855615,ZM
+691855616,691856397,KE
+691856398,691856398,ZM
+691856399,691856639,KE
+691856640,691857151,ZM
+691857152,691857919,KE
691857920,691858175,MU
691858176,691858431,KE
691858432,691859455,MU
@@ -11733,7 +11586,6 @@
693019648,693020671,ZA
693020672,693021695,TZ
693021696,693022719,NG
-693022720,693023743,KE
693024768,693026815,ZA
693026816,693028863,CD
693028864,693029887,ZA
@@ -11767,7 +11619,6 @@
693065728,693066751,MW
693066752,693067775,ZA
693067776,693068799,GH
-693068800,693069823,TZ
693069824,693071871,ZA
693071872,693072895,ZW
693072896,693073919,NG
@@ -11805,7 +11656,9 @@
693107712,693239807,KE
693239808,693370879,SN
693370880,693403647,ZA
-693403648,693411839,KE
+693403648,693405695,KE
+693405696,693406207,MU
+693406208,693411839,KE
693420032,693423103,UG
693423104,693424127,KE
693424128,693428223,UG
@@ -11855,8 +11708,7 @@
696958976,696963071,TZ
696963072,696967167,UG
696967168,696971263,MZ
-696971264,696974335,KE
-696974336,696975359,LU
+696971264,696975359,KE
696975360,696991743,GH
696991744,697008127,NG
697008128,697040895,KE
@@ -12625,7 +12477,23 @@
736536576,736537599,CN
736537600,736538623,IN
736538624,736539647,AU
-736539648,736540671,SG
+736539648,736540007,SG
+736540008,736540011,HK
+736540012,736540015,MY
+736540016,736540019,JP
+736540020,736540023,IN
+736540024,736540027,CN
+736540028,736540031,AU
+736540032,736540035,PH
+736540036,736540263,SG
+736540264,736540267,HK
+736540268,736540271,MY
+736540272,736540275,JP
+736540276,736540279,IN
+736540280,736540283,CN
+736540284,736540287,AU
+736540288,736540291,PH
+736540292,736540671,SG
736540672,736541695,IN
736541696,736542719,HK
736542720,736543743,KH
@@ -12663,7 +12531,7 @@
736606208,736607231,HK
736607232,736608255,JP
736608256,736609279,NZ
-736609280,736610303,CN
+736609280,736610303,HK
736610304,736611327,AU
736611328,736612351,IN
736612352,736613375,NP
@@ -12732,7 +12600,7 @@
737173504,737174527,AU
737174528,737175551,BD
737175552,737177599,TW
-737177600,737178623,AU
+737177600,737178623,TH
737178624,737179647,HK
737179648,737180671,AU
737180672,737184767,CN
@@ -13133,8 +13001,8 @@
737882112,737883135,JP
737883136,737884159,AU
737884160,737886207,TW
-737886208,737886975,PH
-737886976,737887231,HK
+737886208,737886719,PH
+737886720,737887231,HK
737887232,737888255,KR
737888256,737889279,IN
737889280,737890303,HK
@@ -13166,7 +13034,7 @@
737918976,737919999,CN
737920000,737921023,HK
737921024,737922047,AU
-737922048,737923071,NZ
+737922048,737923071,TH
737923072,737924095,MY
737924096,737927167,IN
737927168,737929215,HK
@@ -13538,7 +13406,9 @@
757696512,757697535,DE
757697536,757699327,US
757699328,757699583,TW
-757699584,757711871,US
+757699584,757700607,US
+757700608,757702655,PR
+757702656,757711871,US
757711872,757712127,AU
757712128,757714175,US
757714176,757714431,JP
@@ -13644,7 +13514,9 @@
757803008,757807871,US
757807872,757808127,RU
757808128,757808383,JP
-757808384,757809151,US
+757808384,757808639,US
+757808640,757808895,DE
+757808896,757809151,US
757809152,757809407,CA
757809408,757809663,RO
757809664,757809919,GB
@@ -13687,22 +13559,28 @@
758684672,758684927,BR
758684928,758685183,IN
758685184,758685695,AU
-758685696,758691839,US
-758691840,758692863,DE
-758692864,758700031,US
+758685696,758700031,US
758700032,758702079,CA
758702080,758704127,GR
758704128,758706175,NL
758706176,758710271,GR
758710272,758743039,US
-758743040,758745087,CA
+758743040,758744679,CA
+758744680,758744687,US
+758744688,758744751,CA
+758744752,758744767,US
+758744768,758744879,CA
+758744880,758744887,US
+758744888,758745087,CA
758745088,758745727,US
758745728,758745791,CA
758745792,758745823,US
-758745824,758745831,CA
-758745832,758745855,US
+758745824,758745839,CA
+758745840,758745855,US
758745856,758747135,CA
-758747136,758747231,US
+758747136,758747199,US
+758747200,758747215,CA
+758747216,758747231,US
758747232,758747327,CA
758747328,758747375,US
758747376,758747903,CA
@@ -13716,78 +13594,55 @@
758748928,758749439,CA
758749440,758749519,US
758749520,758749535,CA
-758749536,758749567,US
-758749568,758749695,CA
+758749536,758749551,US
+758749552,758749695,CA
758749696,758749951,US
758749952,758750207,CA
-758750208,758750975,US
-758750976,758751039,CA
-758751040,758751167,US
-758751168,758751487,CA
+758750208,758750463,US
+758750464,758750719,CA
+758750720,758750975,US
+758750976,758751487,CA
758751488,758751999,US
-758752000,758752031,CA
-758752032,758752063,US
-758752064,758752095,CA
-758752096,758752191,US
+758752000,758752127,CA
+758752128,758752191,US
758752192,758752199,CA
758752200,758752207,FI
-758752208,758752255,US
+758752208,758752223,US
+758752224,758752239,CA
+758752240,758752255,US
758752256,758752511,CA
758752512,758752671,US
758752672,758752687,CA
758752688,758752735,US
-758752736,758752831,CA
-758752832,758752895,US
-758752896,758752927,CA
-758752928,758752959,US
-758752960,758753279,CA
+758752736,758753279,CA
758753280,758753535,US
-758753536,758754303,CA
-758754304,758754431,US
-758754432,758754559,CA
-758754560,758755071,US
-758755072,758755327,CA
+758753536,758754047,CA
+758754048,758754431,US
+758754432,758755327,CA
758755328,758755839,US
758755840,758756351,CA
758756352,758756863,US
-758756864,758756927,CA
-758756928,758757055,US
-758757056,758757183,CA
-758757184,758757311,US
-758757312,758757375,CA
-758757376,758758143,US
-758758144,758759487,CA
-758759488,758759615,US
-758759616,758759743,CA
-758759744,758759807,US
-758759808,758759839,CA
-758759840,758759903,US
-758759904,758759935,CA
+758756864,758757375,CA
+758757376,758757631,US
+758757632,758757887,CA
+758757888,758758143,US
+758758144,758759935,CA
758759936,758760191,US
758760192,758760447,CA
758760448,758760703,US
-758760704,758760799,CA
-758760800,758760895,US
-758760896,758762495,CA
+758760704,758762495,CA
758762496,758762751,US
758762752,758764031,CA
758764032,758764287,US
758764288,758764679,CA
-758764680,758764759,US
-758764760,758764767,CA
+758764680,758764703,US
+758764704,758764719,CA
+758764720,758764751,US
+758764752,758764767,CA
758764768,758764799,US
-758764800,758764863,CA
-758764864,758764927,US
-758764928,758765183,CA
-758765184,758765247,US
-758765248,758765279,CA
-758765280,758765311,US
-758765312,758765375,CA
-758765376,758765471,US
-758765472,758765503,CA
+758764800,758765503,CA
758765504,758765567,CN
-758765568,758765583,US
-758765584,758765631,CA
+758765568,758765631,CA
758765632,758765647,US
758765648,758765663,CA
758765664,758765695,US
@@ -13795,11 +13650,7 @@
758765952,758765975,US
758765976,758765983,CA
758765984,758766015,US
-758766016,758766047,CA
-758766048,758766063,US
-758766064,758766103,CA
-758766104,758766111,US
-758766112,758766143,CA
+758766016,758766143,CA
758766144,758766303,US
758766304,758766319,CA
758766320,758766335,US
@@ -13809,30 +13660,24 @@
758766528,758766575,US
758766576,758766583,CA
758766584,758766847,US
-758766848,758767615,CA
-758767616,758767871,US
-758767872,758769279,CA
+758766848,758769279,CA
758769280,758769359,US
758769360,758769367,CA
758769368,758769375,US
-758769376,758769391,CA
-758769392,758769407,US
-758769408,758769663,CA
+758769376,758769663,CA
758769664,758769751,US
-758769752,758769759,CA
-758769760,758769855,US
+758769752,758769791,CA
+758769792,758769855,US
758769856,758769919,CA
758769920,758770175,US
-758770176,758770271,CA
-758770272,758770303,US
-758770304,758770335,CA
-758770336,758770367,US
-758770368,758770431,CA
-758770432,758770719,US
-758770720,758770751,CA
+758770176,758770431,CA
+758770432,758770687,US
+758770688,758770751,CA
758770752,758770847,US
758770848,758770863,CA
-758770864,758771199,US
+758770864,758770927,US
+758770928,758770943,CA
+758770944,758771199,US
758771200,758771711,CA
758771712,758772991,US
758772992,758773759,CA
@@ -13840,7 +13685,9 @@
758774272,758775807,CA
758775808,758779903,US
758779904,758783999,CA
-758784000,758796287,US
+758784000,758785023,US
+758785024,758785535,CA
+758785536,758796287,US
758796288,758804479,CA
758804480,758811017,US
758811018,758811018,NL
@@ -13951,10 +13798,24 @@
759054336,759062527,CA
759062528,759068671,US
759068672,759069695,NL
-759069696,759086079,US
-759086080,759086591,HK
-759086592,759086847,SG
-759086848,759087103,US
+759069696,759086335,US
+759086336,759086847,CA
+759086848,759086863,PR
+759086864,759086879,VI
+759086880,759086895,VG
+759086896,759086911,BS
+759086912,759086927,JM
+759086928,759086943,KY
+759086944,759086959,DM
+759086960,759086975,BB
+759086976,759086991,GD
+759086992,759087007,GP
+759087008,759087023,MQ
+759087024,759087039,MS
+759087040,759087055,TC
+759087056,759087071,MF
+759087072,759087087,VC
+759087088,759087103,PM
759087104,759100278,CA
759100279,759100279,NL
759100280,759103487,CA
@@ -14129,17 +13990,15 @@
759694208,759694303,US
759694304,759694319,CA
759694320,759695231,US
-759695232,759696143,CA
-759696144,759696159,US
-759696160,759696223,CA
-759696224,759696255,US
-759696256,759696263,CA
+759695232,759696263,CA
759696264,759696335,US
759696336,759696351,CA
-759696352,759696463,US
+759696352,759696415,US
+759696416,759696447,CA
+759696448,759696463,US
759696464,759696479,CA
-759696480,759696591,US
-759696592,759696599,CA
+759696480,759696575,US
+759696576,759696599,CA
759696600,759696607,US
759696608,759699263,CA
759699264,759699279,US
@@ -14155,9 +14014,7 @@
759700064,759700223,US
759700224,759700479,CA
759700480,759700607,US
-759700608,759700623,CA
-759700624,759700639,US
-759700640,759700735,CA
+759700608,759700735,CA
759700736,759700863,US
759700864,759701759,CA
759701760,759702015,US
@@ -14184,13 +14041,13 @@
759711360,759711615,CA
759711616,759711647,US
759711648,759711655,CA
-759711656,759711711,US
-759711712,759711775,CA
-759711776,759711807,US
-759711808,759711839,CA
-759711840,759711855,US
-759711856,759711871,CA
-759711872,759712095,US
+759711656,759711679,US
+759711680,759711695,CA
+759711696,759711711,US
+759711712,759711871,CA
+759711872,759712015,US
+759712016,759712063,CA
+759712064,759712095,US
759712096,759712111,CA
759712112,759712127,US
759712128,759712255,CA
@@ -14201,16 +14058,17 @@
759712896,759713023,US
759713024,759721215,CA
759721216,759721231,US
-759721232,759721263,CA
-759721264,759721375,US
-759721376,759725823,CA
-759725824,759725855,US
-759725856,759791615,CA
+759721232,759721279,CA
+759721280,759721343,US
+759721344,759791615,CA
759791616,759802367,US
759802368,759803391,CA
759803392,759803903,US
759803904,759804927,GB
-759804928,759824639,US
+759804928,759807487,US
+759807488,759807743,ES
+759807744,759807999,AU
+759808000,759824639,US
759824640,759824895,SA
759824896,759825151,CR
759825152,759825407,US
@@ -14261,7 +14119,9 @@
759835648,759835903,SE
759835904,759836159,US
759836160,759836415,SE
-759836416,759839999,US
+759836416,759839231,US
+759839232,759839487,GB
+759839488,759839999,US
759840000,759840255,CA
759840256,759840511,GB
759840512,759840767,US
@@ -14271,8 +14131,10 @@
759889920,759922687,JP
759922688,759955455,GB
759955456,759963647,US
-759963648,759966079,NL
-759966080,759966207,US
+759963648,759966135,NL
+759966136,759966143,US
+759966144,759966159,NL
+759966160,759966207,US
759966208,759966719,NL
759966720,759966915,FR
759966916,759966916,TF
@@ -14357,7 +14219,6 @@
762368000,762372095,CN
762372096,762373119,FJ
762373120,762376191,CN
-762376192,762377215,HK
762377216,762377471,US
762377472,762378239,AU
762378240,762380287,IN
@@ -14375,8 +14236,7 @@
762397696,762398719,CA
762398720,762399743,CN
762399744,762400767,IN
-762400768,762401023,HK
-762401024,762401279,US
+762400768,762401279,HK
762401280,762401791,KR
762401792,762402815,TH
762402816,762403839,IN
@@ -14456,7 +14316,7 @@
762499072,762500095,JP
762500096,762502143,IN
762502144,762503167,AU
-762503168,762504191,IN
+762503168,762504191,CA
762504192,762505215,CN
762505216,762506239,BD
762507264,762510335,IN
@@ -14667,7 +14527,7 @@
762848768,762849279,BD
762849280,762850303,IN
762850304,762851327,HK
-762851328,762852351,IN
+762851328,762852351,JP
762852352,762853375,MY
762853376,762855423,IN
762855424,762857471,KR
@@ -14718,7 +14578,6 @@
762909952,762910719,HK
762910720,762911743,VN
762911744,762912767,IN
-762912768,762913791,HK
762913792,762914815,MY
762914816,762915839,ID
762915840,762916863,IN
@@ -14962,7 +14821,10 @@
763326464,763327487,US
763327488,763328511,CN
763328512,763329535,IN
-763329536,763331583,CN
+763329536,763329791,HK
+763329792,763330047,CN
+763330048,763330303,HK
+763330304,763331583,CN
763331584,763332607,ID
763332608,763333631,IN
763333632,763334655,BN
@@ -14986,6 +14848,16 @@
763354112,763360255,IN
763360256,763362303,BD
763362304,763363327,VN
+765460480,765461503,BR
+765461504,765462527,CL
+765463552,765464575,CL
+765464576,765465599,BR
+765466624,765467647,BR
+765467648,765468671,AR
+765468672,765485055,BR
+765487104,765488127,BR
+765489152,765490175,BR
+765494272,765495295,CR
767557632,767623167,ZA
767623168,767688703,HK
767688704,767754239,ZA
@@ -15450,6 +15322,7 @@
770485760,770486271,CL
770486272,770488319,BR
770488320,770489343,CL
+770489344,770490367,BR
770490368,770491391,BO
770491392,770499583,BR
770499584,770500607,PE
@@ -15464,6 +15337,7 @@
770520064,770521087,AR
770521088,770528255,BR
770528256,770529279,HN
+770529280,770530303,TT
770530304,770540543,BR
770540544,770542591,CL
770542592,770549759,BR
@@ -15479,19 +15353,63 @@
770577408,770578431,CL
770578432,770579455,BR
770579456,770580479,NI
+770580480,770581503,BR
770581504,770582527,PY
770582528,770585599,BR
770585600,770586623,AR
770586624,770587647,EC
+770587648,770588671,CL
770588672,770598911,BR
+770598912,770599935,AR
770599936,770608127,BR
+770608128,770609151,HN
770609152,770610175,CO
-770613248,770621439,BR
+770611200,770612223,CL
+770612224,770613247,HN
+770613248,770617343,BR
+770617344,770618367,CL
+770618368,770619391,CO
+770619392,770620415,BR
+770620416,770621439,MX
770621440,770622463,AR
-770624512,770625535,BR
+770622464,770623487,CO
+770623488,770626559,BR
770626560,770627583,AR
770627584,770628607,EC
+770628608,770629631,AR
+770629632,770635775,BR
770635776,770636799,AR
+770636800,770641919,BR
+770641920,770642943,MX
+770642944,770643455,BR
+770643456,770643967,PE
+770643968,770644991,BR
+770644992,770646015,CL
+770646016,770648063,AR
+770648064,770649087,BR
+770649088,770650111,PY
+770650112,770651135,CL
+770651136,770653183,BR
+770653184,770654207,AR
+770654208,770655231,CR
+770655232,770656255,MX
+770656256,770657279,BR
+770657280,770658303,MX
+770658304,770659327,BR
+770659328,770660351,AR
+770660352,770661375,CO
+770661376,770662399,AR
+770662400,770666495,CL
+770667008,770667263,AR
+770667264,770667519,CO
+770667520,770668543,AR
+770668544,770669567,CL
+770669568,770671615,AR
+770671616,770678783,BR
+770678784,770679807,EC
+770679808,770689023,BR
+770691072,770692095,CL
+770692096,770703359,BR
770703360,771227647,EG
771227648,771229695,IN
771229696,771230719,CN
@@ -15499,7 +15417,9 @@
771237376,771237887,MY
771237888,771238911,IN
771238912,771239935,US
-771239936,771241983,AU
+771239936,771241471,AU
+771241472,771241727,IN
+771241728,771241983,SG
771241984,771245055,IN
771245056,771246079,HK
771246080,771247103,KR
@@ -15585,7 +15505,7 @@
771424256,771425279,CN
771425280,771426303,ID
771426304,771427327,CN
-771427328,771428351,IN
+771427840,771428351,IN
771428352,771430399,CN
771430400,771431423,PH
771431424,771435519,IN
@@ -15733,7 +15653,8 @@
772888576,772890623,GB
772890624,772892033,NL
772892034,772892041,RU
-772892042,772892671,NL
+772892042,772892543,NL
+772892544,772892671,RU
772892672,772894719,GB
772894720,772896767,PL
772896768,772898815,RS
@@ -15743,7 +15664,8 @@
772904960,772907007,IT
772907008,772909055,GB
772909056,772910079,SE
-772910080,772911103,DE
+772910080,772910591,SG
+772910592,772911103,LT
772911104,772913151,GB
772913152,772915199,SE
772915200,772917247,FI
@@ -16358,10 +16280,10 @@
778304306,778304306,SI
778304307,778305535,AL
778305536,778371071,IR
-778371072,778388479,GB
-778388480,778389503,DE
-778389504,778395647,GB
-778395648,778436607,DE
+778371072,778388893,GB
+778388894,778388894,DE
+778388895,778403839,GB
+778403840,778436607,DE
778436608,778461183,RO
778461184,778461439,TR
778461440,778462207,US
@@ -16382,8 +16304,7 @@
778475776,778476031,RO
778476032,778476287,IE
778476288,778477567,RO
-778477568,778477695,NL
-778477696,778479615,ES
+778477568,778479615,ES
778479616,778480127,RO
778480128,778480639,GB
778480640,778480895,FR
@@ -16523,9 +16444,7 @@
778669212,778669215,ES
778669216,778669451,FR
778669452,778669455,ES
-778669456,778669551,FR
-778669552,778669567,CZ
-778669568,778669663,FR
+778669456,778669663,FR
778669664,778669695,FI
778669696,778669823,FR
778669824,778669855,ES
@@ -16726,9 +16645,7 @@
778692620,778692623,ES
778692624,778692743,FR
778692744,778692747,ES
-778692748,778692767,FR
-778692768,778692783,ES
-778692784,778692827,FR
+778692748,778692827,FR
778692828,778692831,GB
778692832,778692891,FR
778692892,778692895,GB
@@ -16833,7 +16750,10 @@
778764288,778822655,HU
778822656,778823679,UA
778823680,778829823,HU
-778829824,778862591,RO
+778829824,778839856,GB
+778839857,778839857,RO
+778839858,778854399,GB
+778854400,778862591,RO
778862592,778895359,GB
778895360,778960895,LV
778960896,779026431,DE
@@ -16946,13 +16866,13 @@
782318080,782318207,SA
782318208,782318335,IL
782318336,782318463,AU
-782318464,782318591,RU
+782318464,782318591,EE
782318592,782318719,ES
-782318720,782318847,RU
+782318720,782318847,EE
782318848,782318975,IS
782318976,782319103,BE
782319104,782319231,KZ
-782319232,782319359,RU
+782319232,782319359,EE
782319360,782319487,MD
782319488,782319615,RU
782319616,782335999,ME
@@ -17061,7 +16981,7 @@
783247360,783251455,PL
783251456,783255551,RU
783255552,783259647,UA
-783259648,783260671,RO
+783259648,783260671,IN
783260672,783261695,ES
783261696,783263743,UA
783263744,783265791,BY
@@ -17161,12 +17081,10 @@
784155512,784155519,CZ
784155520,784155611,DE
784155612,784155615,CH
-784155616,784155619,NL
-784155620,784155623,BE
+784155616,784155623,DE
784155624,784155631,AT
784155632,784155639,GB
-784155640,784155640,CZ
-784155641,784169215,DE
+784155640,784169215,DE
784169216,784169231,AL
784169232,784169247,BG
784169248,784169263,CZ
@@ -17640,7 +17558,7 @@
788217856,788226047,RU
788226048,788234239,CY
788234240,788242431,SA
-788242432,788250623,IR
+788242432,788250623,ES
788250624,788258815,KG
788258816,788259071,IR
788259072,788259327,DE
@@ -17781,15 +17699,16 @@
793378816,793395199,JP
793395200,793411583,AU
793411584,793444351,SG
-793444352,793453217,US
+793444352,793453217,CN
793453218,793453218,HK
-793453219,793454975,US
+793453219,793454975,CN
793454976,793454976,HK
-793454977,793490778,US
+793454977,793490778,CN
793490779,793490779,HK
-793490780,793503318,US
+793490780,793503318,CN
793503319,793503319,HK
-793503320,794329087,US
+793503320,793509887,CN
+793509888,794329087,US
794329088,794361855,SG
794361856,794369288,HK
794369289,794369289,CN
@@ -17856,7 +17775,8 @@
825448448,825454079,CA
825454080,825458687,CN
825458688,825470975,DE
-825470976,825484287,CN
+825470976,825479167,US
+825479168,825484287,CN
825484288,825491455,US
825491456,825753599,CN
825753600,826277887,KR
@@ -18111,9 +18031,17 @@
858145696,858145727,GB
858145728,858145791,FR
858145792,858146879,GB
-858146880,858147583,FR
-858147584,858147711,GB
-858147712,858148863,FR
+858146880,858147391,FR
+858147392,858147455,GB
+858147456,858147519,FR
+858147520,858147711,GB
+858147712,858148143,FR
+858148144,858148159,GB
+858148160,858148391,FR
+858148392,858148395,GB
+858148396,858148607,FR
+858148608,858148671,GB
+858148672,858148863,FR
858148864,858149887,GB
858149888,858149919,FR
858149920,858149935,GB
@@ -18143,19 +18071,23 @@
858155544,858155551,DE
858155552,858155711,FR
858155712,858155839,DE
-858155840,858156863,FR
+858155840,858155887,FR
+858155888,858155903,LT
+858155904,858156495,FR
+858156496,858156511,NL
+858156512,858156863,FR
858156864,858156991,DE
858156992,858157055,FR
858157056,858158079,DE
858158080,858158111,FR
-858158112,858158207,DE
-858158208,858158271,FR
-858158272,858158399,DE
+858158112,858158399,DE
858158400,858158527,FR
858158528,858158655,DE
858158656,858158783,FR
858158784,858158847,DE
-858158848,858158975,FR
+858158848,858158863,FR
+858158864,858158879,BE
+858158880,858158975,FR
858158976,858159039,DE
858159040,858159167,FR
858159168,858159231,DE
@@ -18173,14 +18105,22 @@
858159652,858159652,PT
858159653,858159655,FR
858159656,858159656,FI
-858159657,858159763,FR
+858159657,858159679,FR
+858159680,858159743,DE
+858159744,858159763,FR
858159764,858159767,DE
858159768,858159807,FR
858159808,858159871,DE
858159872,858160127,FR
858160128,858161151,DE
858161152,858163199,PL
-858163200,858165247,FR
+858163200,858164351,FR
+858164352,858164415,PL
+858164416,858164735,FR
+858164736,858164863,PL
+858164864,858165119,FR
+858165120,858165183,PL
+858165184,858165247,FR
858165248,858165311,PL
858165312,858165375,FR
858165376,858165439,PL
@@ -18250,21 +18190,62 @@
860096384,860096511,ES
860096512,860100607,FR
860100608,860100735,ES
-860100736,860102075,FR
-860102076,860102079,GB
-860102080,860110355,FR
+860100736,860109695,FR
+860109696,860109823,NL
+860109824,860110207,FR
+860110208,860110215,DE
+860110216,860110287,FR
+860110288,860110295,DE
+860110296,860110355,FR
860110356,860110359,DE
860110360,860110519,FR
860110520,860110523,GB
-860110524,860110687,FR
+860110524,860110567,FR
+860110568,860110575,DE
+860110576,860110687,FR
860110688,860110703,GB
-860110704,860110711,FR
-860110712,860110715,DE
-860110716,860119679,FR
+860110704,860110715,DE
+860110716,860111615,FR
+860111616,860111743,ES
+860111744,860119207,FR
+860119208,860119215,DE
+860119216,860119679,FR
860119680,860119807,ES
-860119808,860121599,FR
+860119808,860120511,FR
+860120512,860120543,FI
+860120544,860121599,FR
860121600,860121727,IT
-860121728,860159999,FR
+860121728,860131327,FR
+860131328,860134399,PL
+860134400,860139711,FR
+860139712,860139839,DE
+860139840,860140031,FR
+860140032,860140095,DE
+860140096,860140159,FR
+860140160,860140223,DE
+860140224,860140239,FR
+860140240,860140255,IT
+860140256,860141903,FR
+860141904,860141919,NL
+860141920,860141935,PT
+860141936,860141951,CH
+860141952,860141967,IE
+860141968,860141983,CZ
+860141984,860141999,GB
+860142000,860142015,PL
+860142016,860142591,FR
+860142592,860143615,DE
+860143616,860147711,FR
+860147712,860147775,GB
+860147776,860147903,FR
+860147904,860147967,GB
+860147968,860148287,FR
+860148288,860148351,GB
+860148352,860148735,FR
+860148736,860149759,GB
+860149760,860157183,FR
+860157184,860157311,IT
+860157312,860159999,FR
860160000,860553215,GB
860553216,860618751,FR
860618752,860684287,GB
@@ -18282,8 +18263,10 @@
861536256,861601791,GB
861601792,861667327,FR
861667328,862470143,GB
-862470144,862486527,IE
-862486528,864550911,GB
+862470144,862519295,IE
+862519296,862552063,GB
+862552064,862584831,NL
+862584832,864550911,GB
864550912,864649215,NL
864649216,864665599,GB
864665600,864681983,NL
@@ -18460,9 +18443,7 @@
872308704,872308735,ES
872308736,872309883,FR
872309884,872309884,PT
-872309885,872310799,FR
-872310800,872310815,ES
-872310816,872310911,FR
+872309885,872310911,FR
872310912,872311039,DE
872311040,872311167,IE
872311168,872311231,FR
@@ -18479,7 +18460,9 @@
872312384,872312447,IT
872312448,872312511,FR
872312512,872312575,IE
-872312576,872312703,FR
+872312576,872312607,FR
+872312608,872312623,GB
+872312624,872312703,FR
872312704,872312767,ES
872312768,872316797,FR
872316798,872316798,PT
@@ -18541,7 +18524,9 @@
872326724,872326727,GB
872326728,872326815,FR
872326816,872326823,GB
-872326824,872327615,FR
+872326824,872327183,FR
+872327184,872327191,IT
+872327192,872327615,FR
872327616,872327679,ES
872327680,872327807,FR
872327808,872327811,FI
@@ -19017,7 +19002,9 @@
878545660,878545661,GB
878545662,878545915,US
878545916,878545917,GB
-878545918,878567423,US
+878545918,878546431,US
+878546432,878547455,SE
+878547456,878567423,US
878567424,878568447,BH
878568448,878576895,US
878576896,878577151,IE
@@ -19123,7 +19110,8 @@
878698752,878699007,JP
878699008,878699263,US
878699264,878699519,SE
-878699520,878702591,US
+878699520,878699775,BH
+878699776,878702591,US
878702592,878702847,BR
878702848,878703103,AU
878703104,878703359,SG
@@ -19154,8 +19142,8 @@
878772288,878772735,BR
878772736,878788623,US
878788624,878788671,BR
-878788672,878789119,US
-878789120,878790655,BR
+878788672,878788863,US
+878788864,878790655,BR
878790656,878804991,US
878804992,878805247,AT
878805248,878806015,GB
@@ -19173,7 +19161,8 @@
878808192,878808319,NL
878808320,878808831,AT
878808832,878808991,NL
-878808992,878809087,US
+878808992,878809023,US
+878809024,878809087,AT
878809088,878809343,NL
878809344,878809599,IE
878809600,878809855,GB
@@ -19197,10 +19186,8 @@
878822656,878837759,US
878837760,878837775,AU
878837776,878837887,US
-878837888,878838143,AU
-878838144,878838271,US
-878838272,878838527,AU
-878838528,878841855,US
+878837888,878839039,AU
+878839040,878841855,US
878841856,878841919,ZA
878841920,878854143,US
878854144,878854207,JP
@@ -19215,14 +19202,20 @@
878857088,878857215,KR
878857216,878857535,AU
878857536,878857567,JP
-878857568,878857599,US
+878857568,878857583,HK
+878857584,878857599,SG
878857600,878857727,JP
878857728,878857983,HK
878857984,878858239,JP
878858240,878858367,SG
-878858368,878858495,US
-878858496,878858751,JP
-878858752,878862335,US
+878858368,878858815,JP
+878858816,878858879,SG
+878858880,878859263,JP
+878859264,878859391,SG
+878859392,878859519,US
+878859520,878859775,HK
+878859776,878860543,IN
+878860544,878862335,US
878862336,878862975,HK
878862976,878863103,US
878863104,878863359,HK
@@ -19413,7 +19406,9 @@
880269312,880271359,JP
880271360,880275455,US
880275456,880277503,IE
-880277504,880293356,US
+880277504,880277759,US
+880277760,880278015,BH
+880278016,880293356,US
880293357,880293357,CL
880293358,880543743,US
880543744,880545791,CA
@@ -19478,14 +19473,19 @@
881836544,881836799,NL
881836800,881837055,IE
881837056,881837311,SG
-881837312,881840127,US
+881837312,881837823,US
+881837824,881838591,AU
+881838592,881838847,AE
+881838848,881840127,US
881840128,881840383,NL
881840384,881840639,IE
881840640,881840895,SG
881840896,881841919,US
881841920,881842687,FR
881842688,881842943,AU
-881842944,881859327,US
+881842944,881843455,US
+881843456,881844223,AE
+881844224,881859327,US
881859328,881859583,CA
881859584,881868799,US
881868800,881876991,IT
@@ -19818,7 +19818,8 @@
908347952,908347959,ES
908347960,908348143,FR
908348144,908348159,LT
-908348160,908348415,FR
+908348160,908348287,FR
+908348288,908348415,BE
908348416,908348543,IT
908348544,908348671,FR
908348672,908348799,ES
@@ -19925,7 +19926,9 @@
908368640,908368767,IT
908368768,908369023,FR
908369024,908369055,CZ
-908369056,908369239,FR
+908369056,908369199,FR
+908369200,908369215,GB
+908369216,908369239,FR
908369240,908369247,ES
908369248,908369543,FR
908369544,908369551,ES
@@ -20093,7 +20096,9 @@
908408512,908408543,LT
908408544,908408799,FR
908408800,908408815,LT
-908408816,908409279,FR
+908408816,908409111,FR
+908409112,908409115,DE
+908409116,908409279,FR
908409280,908409287,ES
908409288,908409487,FR
908409488,908409495,ES
@@ -20132,7 +20137,9 @@
908420000,908420015,LT
908420016,908420071,FR
908420072,908420079,ES
-908420080,908420351,FR
+908420080,908420095,FR
+908420096,908420223,IT
+908420224,908420351,FR
908420352,908420479,GB
908420480,908420495,FR
908420496,908420511,PT
@@ -20260,9 +20267,7 @@
908441312,908441343,CZ
908441344,908443263,FR
908443264,908443391,BE
-908443392,908443487,FR
-908443488,908443519,GB
-908443520,908444159,FR
+908443392,908444159,FR
908444160,908444223,DE
908444224,908444667,FR
908444668,908444671,DE
@@ -20323,8 +20328,8 @@
908467328,908467967,FR
908467968,908468095,BE
908468096,908472319,FR
-908472320,908472575,PL
-908472576,908472671,FR
+908472320,908472639,PL
+908472640,908472671,FR
908472672,908472767,PL
908472768,908472831,FR
908472832,908472991,PL
@@ -20388,7 +20393,9 @@
908496896,908496959,GB
908496960,908497023,FR
908497024,908497151,GB
-908497152,908497279,FR
+908497152,908497231,FR
+908497232,908497247,GB
+908497248,908497279,FR
908497280,908497343,GB
908497344,908497471,FR
908497472,908497535,GB
@@ -20405,7 +20412,7 @@
908499776,908499903,FR
908499904,908500991,DE
908500992,908501407,FR
-908501408,908501439,GB
+908501408,908501439,CZ
908501440,908501791,FR
908501792,908501823,CZ
908501824,908502399,FR
@@ -20420,7 +20427,9 @@
908510912,908510975,PL
908510976,908511487,FR
908511488,908511551,PL
-908511552,908511743,FR
+908511552,908511615,FR
+908511616,908511679,PL
+908511680,908511743,FR
908511744,908511807,PL
908511808,908511871,FR
908511872,908511999,PL
@@ -20436,8 +20445,8 @@
908513344,908513375,GB
908513376,908513535,FR
908513536,908513727,GB
-908513728,908513791,FR
-908513792,908513855,GB
+908513728,908513775,FR
+908513776,908513855,GB
908513856,908514047,FR
908514048,908514143,GB
908514144,908514239,FR
@@ -20460,9 +20469,7 @@
908520192,908520959,FR
908520960,908521087,IT
908521088,908525567,FR
-908525568,908534239,CA
-908534240,908534271,GB
-908534272,908591103,CA
+908525568,908591103,CA
908591104,910163967,US
910163968,910197237,JP
910197238,910197238,US
@@ -21192,7 +21199,10 @@
1024330752,1024331775,AU
1024331776,1024332799,US
1024332800,1024333823,AU
-1024333824,1024335871,US
+1024333824,1024335103,US
+1024335104,1024335135,SG
+1024335136,1024335359,US
+1024335360,1024335871,SG
1024335872,1024337919,IN
1024337920,1024338943,US
1024338944,1024340991,ZA
@@ -21369,7 +21379,9 @@
1040465920,1040474111,DE
1040474112,1040477183,CZ
1040477184,1040477184,KG
-1040477185,1040482303,CZ
+1040477185,1040477951,CZ
+1040477952,1040478207,UA
+1040478208,1040482303,CZ
1040482304,1040515071,BE
1040515072,1040547839,GB
1040547840,1040580607,RU
@@ -21425,7 +21437,9 @@
1041629184,1041694719,ES
1041694720,1041728655,FR
1041728656,1041728671,IT
-1041728672,1041741567,FR
+1041728672,1041739775,FR
+1041739776,1041740031,IT
+1041740032,1041741567,FR
1041741568,1041741823,ES
1041741824,1041742335,FR
1041742336,1041742591,ES
@@ -21441,7 +21455,9 @@
1041750352,1041750367,DE
1041750368,1041752319,FR
1041752320,1041752575,AT
-1041752576,1041758463,FR
+1041752576,1041756113,FR
+1041756114,1041756114,DE
+1041756115,1041758463,FR
1041758464,1041758719,ES
1041758720,1041760255,FR
1041760256,1041768447,DE
@@ -21533,9 +21549,10 @@
1043897344,1043897855,NG
1043897856,1043899391,GB
1043899392,1043899647,CG
-1043899648,1043902463,GB
-1043902464,1043908607,US
-1043908608,1043910655,DE
+1043899648,1043908607,GB
+1043908608,1043910143,DE
+1043910144,1043910399,GB
+1043910400,1043910655,DE
1043910656,1043919442,GB
1043919443,1043919443,SS
1043919444,1043920895,GB
@@ -21659,7 +21676,9 @@
1044922368,1044930559,DE
1044930560,1044931231,GB
1044931232,1044931239,BE
-1044931240,1044932303,GB
+1044931240,1044931951,GB
+1044931952,1044931959,BE
+1044931960,1044932303,GB
1044932304,1044932311,BE
1044932312,1044933499,GB
1044933500,1044933503,BE
@@ -21737,7 +21756,9 @@
1045741960,1045741967,SE
1045741968,1045745420,GB
1045745421,1045745421,SE
-1045745422,1045746059,GB
+1045745422,1045745999,GB
+1045746000,1045746015,SE
+1045746016,1045746059,GB
1045746060,1045746060,SE
1045746061,1045746943,GB
1045746944,1045747199,AT
@@ -21760,9 +21781,7 @@
1046036480,1046052863,PL
1046052864,1046061055,GB
1046061056,1046069247,DE
-1046069248,1046075391,RU
-1046075392,1046077439,KZ
-1046077440,1046085631,RU
+1046069248,1046085631,RU
1046085632,1046151167,IL
1046151168,1046216703,DE
1046216704,1046225647,NO
@@ -21821,7 +21840,9 @@
1046490000,1046490007,DE
1046490008,1046490591,GB
1046490592,1046490599,DE
-1046490600,1046490831,GB
+1046490600,1046490601,GB
+1046490602,1046490602,DE
+1046490603,1046490831,GB
1046490832,1046490839,DE
1046490840,1046492471,GB
1046492472,1046492479,DE
@@ -21891,11 +21912,11 @@
1046507128,1046507135,DE
1046507136,1046507519,GB
1046507520,1046508543,DE
-1046508544,1046511815,GB
-1046511816,1046511823,DE
-1046511824,1046512583,GB
-1046512584,1046512599,DE
-1046512600,1046514687,GB
+1046508544,1046512583,GB
+1046512584,1046512591,DE
+1046512592,1046514591,GB
+1046514592,1046514623,DE
+1046514624,1046514687,GB
1046514688,1046517759,DE
1046517760,1046517959,GB
1046517960,1046517967,DE
@@ -22031,21 +22052,11 @@
1047314432,1047322623,SE
1047322624,1047330815,IT
1047330816,1047339007,RU
-1047339008,1047340107,SE
-1047340108,1047340111,NO
-1047340112,1047340863,SE
+1047339008,1047340863,SE
1047340864,1047340927,NO
-1047340928,1047342351,SE
-1047342352,1047342355,NO
-1047342356,1047342387,SE
-1047342388,1047342391,NO
-1047342392,1047342879,SE
+1047340928,1047342879,SE
1047342880,1047342887,FI
-1047342888,1047343823,SE
-1047343824,1047343831,NO
-1047343832,1047345431,SE
-1047345432,1047345439,NO
-1047345440,1047346431,SE
+1047342888,1047346431,SE
1047346432,1047346687,FI
1047346688,1047347199,SE
1047347200,1047363583,DE
@@ -22071,45 +22082,158 @@
1047535360,1047535615,BE
1047535616,1047551999,DE
1047552000,1047560191,RU
-1047560192,1047563431,DE
+1047560192,1047560223,CH
+1047560224,1047560815,DE
+1047560816,1047560819,KE
+1047560820,1047563287,DE
+1047563288,1047563295,CH
+1047563296,1047563303,DE
+1047563304,1047563311,CH
+1047563312,1047563319,DE
+1047563320,1047563323,CH
+1047563324,1047563351,DE
+1047563352,1047563355,CH
+1047563356,1047563363,DE
+1047563364,1047563367,ES
+1047563368,1047563407,DE
+1047563408,1047563411,CH
+1047563412,1047563415,DE
+1047563416,1047563419,BE
+1047563420,1047563431,DE
1047563432,1047563435,CH
-1047563436,1047565279,DE
+1047563436,1047563455,DE
+1047563456,1047563463,ES
+1047563464,1047563467,DE
+1047563468,1047563471,CH
+1047563472,1047563555,DE
+1047563556,1047563559,CH
+1047563560,1047564551,DE
+1047564552,1047564559,CH
+1047564560,1047565107,DE
+1047565108,1047565111,IT
+1047565112,1047565131,DE
+1047565132,1047565135,GB
+1047565136,1047565279,DE
1047565280,1047565311,CH
1047565312,1047565343,DE
1047565344,1047565359,CH
-1047565360,1047565839,DE
+1047565360,1047565503,DE
+1047565504,1047565507,CZ
+1047565508,1047565839,DE
1047565840,1047565887,CH
-1047565888,1047566435,DE
+1047565888,1047566015,DE
+1047566016,1047566079,CZ
+1047566080,1047566403,DE
+1047566404,1047566415,CH
+1047566416,1047566435,DE
1047566436,1047566439,CH
1047566440,1047566451,DE
1047566452,1047566459,CH
-1047566460,1047566519,DE
-1047566520,1047566527,CH
-1047566528,1047566531,DE
-1047566532,1047566535,CH
-1047566536,1047566543,DE
+1047566460,1047566475,DE
+1047566476,1047566479,CH
+1047566480,1047566495,DE
+1047566496,1047566499,CH
+1047566500,1047566519,DE
+1047566520,1047566539,CH
+1047566540,1047566543,DE
1047566544,1047566547,CH
-1047566548,1047566967,DE
+1047566548,1047566559,DE
+1047566560,1047566563,CH
+1047566564,1047566871,DE
+1047566872,1047566879,CH
+1047566880,1047566891,DE
+1047566892,1047566903,CH
+1047566904,1047566943,DE
+1047566944,1047566947,ES
+1047566948,1047566951,AT
+1047566952,1047566963,DE
+1047566964,1047566967,AT
1047566968,1047566971,CH
1047566972,1047567015,DE
1047567016,1047567019,CH
1047567020,1047567027,DE
1047567028,1047567031,CH
-1047567032,1047567143,DE
+1047567032,1047567039,DE
+1047567040,1047567055,US
+1047567056,1047567063,DE
+1047567064,1047567067,CH
+1047567068,1047567071,DE
+1047567072,1047567075,NL
+1047567076,1047567079,DE
+1047567080,1047567083,NL
+1047567084,1047567135,DE
+1047567136,1047567143,GB
1047567144,1047567147,CH
-1047567148,1047567151,DE
+1047567148,1047567151,BE
1047567152,1047567159,CH
-1047567160,1047567359,DE
+1047567160,1047567163,DE
+1047567164,1047567167,AT
+1047567168,1047567175,CH
+1047567176,1047567211,DE
+1047567212,1047567227,CH
+1047567228,1047567239,DE
+1047567240,1047567243,CH
+1047567244,1047567247,DE
+1047567248,1047567255,CH
+1047567256,1047567283,DE
+1047567284,1047567287,CH
+1047567288,1047567307,DE
+1047567308,1047567311,CH
+1047567312,1047567319,DE
+1047567320,1047567327,CH
+1047567328,1047567343,DE
+1047567344,1047567351,AT
+1047567352,1047567359,DE
1047567360,1047567375,CH
-1047567376,1047567467,DE
-1047567468,1047567471,CH
+1047567376,1047567447,DE
+1047567448,1047567451,CH
+1047567452,1047567463,DE
+1047567464,1047567471,CH
1047567472,1047567475,DE
1047567476,1047567483,CH
-1047567484,1047567823,DE
+1047567484,1047567495,DE
+1047567496,1047567499,CH
+1047567500,1047567535,DE
+1047567536,1047567539,CH
+1047567540,1047567551,DE
+1047567552,1047567555,CH
+1047567556,1047567583,DE
+1047567584,1047567615,CZ
+1047567616,1047567655,DE
+1047567656,1047567659,CH
+1047567660,1047567727,DE
+1047567728,1047567731,BE
+1047567732,1047567735,DE
+1047567736,1047567743,CH
+1047567744,1047567751,DE
+1047567752,1047567755,LU
+1047567756,1047567759,CH
+1047567760,1047567775,DE
+1047567776,1047567807,CH
+1047567808,1047567823,DE
1047567824,1047567839,CH
-1047567840,1047567903,DE
-1047567904,1047567935,CH
-1047567936,1047568383,DE
+1047567840,1047567847,DE
+1047567848,1047567851,CH
+1047567852,1047567855,BE
+1047567856,1047567871,DE
+1047567872,1047567875,CH
+1047567876,1047567879,AT
+1047567880,1047567883,CH
+1047567884,1047567903,DE
+1047567904,1047567939,CH
+1047567940,1047567983,DE
+1047567984,1047567999,ES
+1047568000,1047568047,DE
+1047568048,1047568051,CH
+1047568052,1047568055,DE
+1047568056,1047568059,CH
+1047568060,1047568187,DE
+1047568188,1047568191,CH
+1047568192,1047568215,DE
+1047568216,1047568219,CH
+1047568220,1047568259,DE
+1047568260,1047568263,AT
+1047568264,1047568383,DE
1047568384,1047576575,NL
1047576576,1047584767,HU
1047584768,1047592959,NL
@@ -22400,6 +22524,7 @@
1051984664,1051984671,DE
1051984752,1051984767,DE
1051990016,1051992063,DE
+1051994880,1051995135,DE
1052001280,1052002303,DE
1052011264,1052012287,DE
1052016640,1052017535,GB
@@ -22418,7 +22543,7 @@
1052098560,1052116991,SE
1052116992,1052119039,RU
1052119040,1052121087,GB
-1052121088,1052125183,RU
+1052121088,1052123135,RU
1052125184,1052126207,DE
1052126208,1052127231,FR
1052127232,1052129279,RU
@@ -22426,7 +22551,8 @@
1052131328,1052133375,UA
1052133376,1052135423,RU
1052135424,1052137471,UA
-1052137472,1052140543,RU
+1052137472,1052139519,RU
+1052139520,1052140543,IN
1052141056,1052141567,DE
1052141568,1052143615,PL
1052143616,1052145663,BG
@@ -23180,7 +23306,6 @@
1052778496,1052786687,RU
1052786688,1052794879,GR
1052794880,1052803071,NL
-1052811264,1052819455,RU
1052819456,1052827647,DE
1052827648,1052835839,RU
1052835840,1052844031,IR
@@ -23208,6 +23333,7 @@
1053310144,1053310207,SK
1053312872,1053312887,DK
1053312912,1053312927,DK
+1053313496,1053313503,GB
1053318912,1053318943,FI
1053319168,1053323263,GB
1053325824,1053326335,DE
@@ -23223,6 +23349,7 @@
1053350408,1053350415,BE
1053350492,1053350503,BE
1053350508,1053350515,BE
+1053353336,1053353343,GB
1053353408,1053353423,GB
1053360128,1053364223,ES
1053364224,1053368319,CZ
@@ -23274,8 +23401,9 @@
1053839360,1053840383,DE
1053840400,1053840415,DE
1053840448,1053840511,DE
-1053843200,1053843231,DK
-1053843232,1053843455,GB
+1053843200,1053843207,GB
+1053843208,1053843223,DK
+1053843224,1053843455,GB
1053843712,1053843967,DE
1053843968,1053844223,GB
1053844224,1053844479,DE
@@ -23305,8 +23433,6 @@
1053868008,1053868015,DE
1053868032,1053868383,ES
1053868400,1053868407,ES
-1053868416,1053868447,ES
-1053868448,1053868455,GB
1053868456,1053868479,ES
1053868480,1053868543,FR
1053868800,1053869567,DE
@@ -23402,25 +23528,15 @@
1054654464,1054662655,MK
1054662656,1054670847,FI
1054670848,1054671103,GB
-1054671168,1054671231,IE
1054671372,1054671375,IE
1054671416,1054671423,IE
1054671432,1054671439,IE
-1054672160,1054672175,IE
-1054672256,1054672271,IE
1054672320,1054672335,US
-1054672336,1054672367,IE
+1054672352,1054672367,IE
1054672384,1054672447,IE
-1054672720,1054672727,IE
-1054672744,1054672767,IE
1054672776,1054672783,IE
-1054672792,1054672807,IE
-1054673664,1054673727,IE
-1054673856,1054673919,IE
-1054673952,1054674047,IE
-1054674080,1054674111,IE
+1054672792,1054672799,IE
1054674456,1054674471,IE
-1054674480,1054674495,IE
1054674504,1054674511,IE
1054674520,1054674527,GB
1054674688,1054675199,IE
@@ -23503,7 +23619,9 @@
1056875008,1056964607,GB
1056964608,1059061759,US
1059061760,1059323903,IE
-1059323904,1061558271,US
+1059323904,1061227263,US
+1061227264,1061227519,BO
+1061227520,1061558271,US
1061558272,1061559295,PK
1061559296,1061588735,US
1061588736,1061588991,GU
@@ -23545,11 +23663,31 @@
1063057536,1063059455,CA
1063059456,1063290879,US
1063290880,1063291903,CA
-1063291904,1063813119,US
+1063291904,1063568895,US
+1063568896,1063569151,TZ
+1063569152,1063748607,US
+1063748608,1063749119,GH
+1063749120,1063749631,US
+1063749632,1063749887,LR
+1063749888,1063750143,SA
+1063750144,1063750399,NG
+1063750400,1063750655,US
+1063750656,1063751679,NG
+1063751680,1063813119,US
1063813120,1063821311,CA
1063821312,1063895039,US
1063895040,1063899135,KR
-1063899136,1064204287,US
+1063899136,1064124927,US
+1064124928,1064125695,EC
+1064125696,1064125951,US
+1064125952,1064126207,PE
+1064126208,1064126719,US
+1064126720,1064126975,EC
+1064126976,1064127487,US
+1064127488,1064127999,EC
+1064128000,1064171263,US
+1064171264,1064171519,NG
+1064171520,1064204287,US
1064204288,1064205311,MX
1064205312,1064445183,US
1064445184,1064445439,PK
@@ -23557,9 +23695,33 @@
1065371648,1065372959,PR
1065372960,1065372991,US
1065372992,1065373695,PR
-1065373696,1065511109,US
+1065373696,1065493759,US
+1065493760,1065494015,GB
+1065494016,1065505583,US
+1065505584,1065505615,GB
+1065505616,1065506047,US
+1065506048,1065506559,GB
+1065506560,1065511109,US
1065511110,1065511110,GB
-1065511111,1065547775,US
+1065511111,1065519247,US
+1065519248,1065519263,IN
+1065519264,1065519303,US
+1065519304,1065519311,IN
+1065519312,1065519871,US
+1065519872,1065520127,GB
+1065520128,1065521407,US
+1065521408,1065525247,GB
+1065525248,1065525791,US
+1065525792,1065525807,IN
+1065525808,1065526015,US
+1065526016,1065526271,GB
+1065526272,1065529343,US
+1065529344,1065530879,GB
+1065530880,1065531391,US
+1065531392,1065537535,GB
+1065537536,1065539583,US
+1065539584,1065539839,GB
+1065539840,1065547775,US
1065547776,1065548031,GB
1065548032,1065611263,US
1065611264,1065615359,PR
@@ -23584,7 +23746,9 @@
1066311955,1066311955,US
1066311956,1066315775,CA
1066315776,1066352639,US
-1066352640,1066358271,JM
+1066352640,1066355711,JM
+1066355712,1066355967,BB
+1066355968,1066358271,JM
1066358272,1066358527,AG
1066358528,1066369023,JM
1066369024,1066830303,US
@@ -23599,9 +23763,7 @@
1066831336,1066831343,JP
1066831344,1067294719,US
1067294720,1067294975,CA
-1067294976,1067385028,US
-1067385029,1067385029,JP
-1067385030,1067450879,US
+1067294976,1067450879,US
1067450880,1067450880,AL
1067450881,1067471689,US
1067471690,1067471690,SV
@@ -23700,7 +23862,9 @@
1068491264,1068491519,HN
1068491520,1070646015,US
1070646016,1070646271,IN
-1070646272,1071106559,US
+1070646272,1070729471,US
+1070729472,1070729727,CA
+1070729728,1071106559,US
1071106560,1071106815,NL
1071106816,1071141557,US
1071141558,1071141558,HK
@@ -23708,11 +23872,13 @@
1071141848,1071141851,HK
1071141852,1071141873,US
1071141874,1071141874,HK
-1071141875,1071149200,US
-1071149201,1071149201,LB
-1071149202,1071156467,US
+1071141875,1071144959,US
+1071144960,1071153151,LB
+1071153152,1071156467,US
1071156468,1071156471,KR
-1071156472,1071190219,US
+1071156472,1071170815,US
+1071170816,1071171071,PH
+1071171072,1071190219,US
1071190220,1071190220,HK
1071190221,1071201551,US
1071201552,1071201567,TH
@@ -23728,16 +23894,22 @@
1071284224,1071292415,AU
1071292416,1071300607,US
1071300608,1071301631,FR
-1071301632,1071382975,US
+1071301632,1071318783,US
+1071318784,1071319039,IN
+1071319040,1071382975,US
1071382976,1071383039,HK
-1071383040,1071514981,US
+1071383040,1071477247,US
+1071477248,1071480831,CA
+1071480832,1071514981,US
1071514982,1071514982,HK
1071514983,1071515063,US
1071515064,1071515067,GB
1071515068,1071515071,ES
1071515072,1071522817,US
1071522818,1071522818,MW
-1071522819,1071726951,US
+1071522819,1071527567,US
+1071527568,1071527583,TW
+1071527584,1071726951,US
1071726952,1071726955,IE
1071726956,1071727023,US
1071727024,1071727027,GB
@@ -23768,48 +23940,102 @@
1072361472,1072361727,GB
1072361728,1072707327,US
1072707328,1072707583,IN
-1072707584,1072931839,US
+1072707584,1072923135,US
+1072923136,1072923391,CA
+1072923392,1072924159,US
+1072924160,1072924671,HT
+1072924672,1072925183,US
+1072925184,1072925695,GB
+1072925696,1072926207,CA
+1072926208,1072926719,US
+1072926720,1072926975,PH
+1072926976,1072927487,CA
+1072927488,1072928511,US
+1072928512,1072928767,CA
+1072928768,1072929023,US
+1072929024,1072929535,CA
+1072929536,1072930303,US
+1072930304,1072930559,CA
+1072930560,1072930815,US
+1072930816,1072931071,CA
+1072931072,1072931327,US
+1072931328,1072931583,CA
+1072931584,1072931839,SY
1072931840,1072932095,CA
-1072932096,1072936447,US
+1072932096,1072932351,US
+1072932352,1072932607,CA
+1072932608,1072932863,NG
+1072932864,1072933887,US
+1072933888,1072934399,CA
+1072934400,1072934775,US
+1072934776,1072934783,FR
+1072934784,1072935423,US
+1072935424,1072935679,CA
+1072935680,1072936191,US
+1072936192,1072936447,CA
1072936448,1072936703,PH
-1072936704,1072943103,US
+1072936704,1072937215,US
+1072937216,1072937471,IR
+1072937472,1072937727,US
+1072937728,1072938239,CA
+1072938240,1072938495,VG
+1072938496,1072939007,US
+1072939008,1072939263,CA
+1072939264,1072941055,US
+1072941056,1072942079,CA
+1072942080,1072943103,US
1072943104,1072945151,CA
1072945152,1072953599,US
1072953600,1072953607,IE
-1072953608,1073026559,US
+1072953608,1073022975,US
+1073022976,1073025791,HN
+1073025792,1073026047,NI
+1073026048,1073026303,US
+1073026304,1073026559,DO
1073026560,1073027071,PR
-1073027072,1073028607,US
+1073027072,1073028351,NI
+1073028352,1073028607,US
1073028608,1073029119,GD
1073029120,1073035263,US
1073035264,1073036287,GD
1073036288,1073036543,US
1073036544,1073037055,MX
-1073037056,1073037823,US
+1073037056,1073037311,CW
+1073037312,1073037823,CO
1073037824,1073038335,GD
-1073038336,1073041407,US
-1073041408,1073041663,CO
-1073041664,1073042431,US
-1073042432,1073042943,CO
-1073042944,1073044479,US
+1073038336,1073039359,US
+1073039360,1073041407,GT
+1073041408,1073043455,CO
+1073043456,1073043967,PR
+1073043968,1073044479,US
1073044480,1073044735,BB
-1073044736,1073044991,US
-1073044992,1073045503,PR
-1073045504,1073048836,US
+1073044736,1073045503,PR
+1073045504,1073047551,CO
+1073047552,1073048836,US
1073048837,1073048837,CW
1073048838,1073049064,US
1073049065,1073049065,CW
1073049066,1073049087,US
1073049088,1073049599,PR
-1073049600,1073051647,US
-1073051648,1073051903,BS
-1073051904,1073075199,US
+1073049600,1073052671,BS
+1073052672,1073075199,US
1073075200,1073075455,CA
1073075456,1073116159,US
1073116160,1073117183,GB
1073117184,1073118207,US
1073118208,1073118719,NL
1073118720,1073119231,DE
-1073119232,1073373183,US
+1073119232,1073120079,US
+1073120080,1073120089,RO
+1073120090,1073120109,US
+1073120110,1073120119,SA
+1073120120,1073123613,US
+1073123614,1073123623,TR
+1073123624,1073123653,US
+1073123654,1073123663,ES
+1073123664,1073123753,US
+1073123754,1073123763,RU
+1073123764,1073373183,US
1073373184,1073381375,CA
1073381376,1073446399,US
1073446400,1073446911,SG
@@ -24053,7 +24279,9 @@
1076000256,1076000767,US
1076000768,1076002047,CA
1076002048,1076002815,US
-1076002816,1076018098,CA
+1076002816,1076012543,CA
+1076012544,1076012799,US
+1076012800,1076018098,CA
1076018099,1076018099,US
1076018100,1076018431,CA
1076018432,1076018687,US
@@ -24626,15 +24854,13 @@
1083621376,1083637759,BS
1083637760,1083686911,US
1083686912,1083703295,CA
-1083703296,1083738111,US
-1083738112,1083740159,PR
-1083740160,1084067583,US
+1083703296,1083738367,US
+1083738368,1083738879,PR
+1083738880,1084067583,US
1084067584,1084067839,CA
1084067840,1084153599,US
1084153600,1084153855,NL
-1084153856,1085024287,US
-1085024288,1085024319,DE
-1085024320,1085439999,US
+1084153856,1085439999,US
1085440000,1085448191,CA
1085448192,1085456383,US
1085456384,1085464575,PR
@@ -24997,9 +25223,7 @@
1091808000,1091808255,CA
1091808256,1091809535,US
1091809536,1091809791,CA
-1091809792,1091812607,US
-1091812608,1091812855,JP
-1091812856,1091960831,US
+1091809792,1091960831,US
1091960832,1092026367,CA
1092026368,1092075519,US
1092075520,1092091903,PR
@@ -25139,7 +25363,135 @@
1097076124,1097076127,DE
1097076128,1097727999,US
1097728000,1097736191,CA
-1097736192,1097742641,US
+1097736192,1097736457,US
+1097736458,1097736467,CZ
+1097736468,1097736477,FR
+1097736478,1097736547,US
+1097736548,1097736557,NL
+1097736558,1097736567,US
+1097736568,1097736577,SG
+1097736578,1097736587,ES
+1097736588,1097736607,US
+1097736608,1097736617,BR
+1097736618,1097736637,US
+1097736638,1097736647,UM
+1097736648,1097736733,US
+1097736734,1097736743,BG
+1097736744,1097736753,US
+1097736754,1097736763,BG
+1097736764,1097736773,US
+1097736774,1097736783,NL
+1097736784,1097736803,US
+1097736804,1097736813,BE
+1097736814,1097736823,TR
+1097736824,1097736893,US
+1097736894,1097736903,VE
+1097736904,1097736913,FI
+1097736914,1097736999,US
+1097737000,1097737009,RU
+1097737010,1097737029,US
+1097737030,1097737039,RU
+1097737040,1097737059,US
+1097737060,1097737069,TR
+1097737070,1097737109,US
+1097737110,1097737119,LB
+1097737120,1097737159,US
+1097737160,1097737169,BR
+1097737170,1097737591,US
+1097737592,1097737601,BR
+1097737602,1097737611,UA
+1097737612,1097737631,US
+1097737632,1097737641,IT
+1097737642,1097737747,US
+1097737748,1097737757,GB
+1097737758,1097737847,US
+1097737848,1097737857,MX
+1097737858,1097737897,US
+1097737898,1097737907,SG
+1097737908,1097737927,US
+1097737928,1097737937,RU
+1097737938,1097738053,US
+1097738054,1097738063,LV
+1097738064,1097738093,US
+1097738094,1097738103,RS
+1097738104,1097738133,US
+1097738134,1097738143,RU
+1097738144,1097738163,US
+1097738164,1097738173,UA
+1097738174,1097738183,VN
+1097738184,1097738249,US
+1097738250,1097738259,TR
+1097738260,1097738359,US
+1097738360,1097738369,TW
+1097738370,1097738771,US
+1097738772,1097738781,MY
+1097738782,1097738861,US
+1097738862,1097738871,SA
+1097738872,1097738881,SG
+1097738882,1097738931,US
+1097738932,1097738941,ID
+1097738942,1097739037,US
+1097739038,1097739047,BY
+1097739048,1097739057,SG
+1097739058,1097739087,US
+1097739088,1097739097,TR
+1097739098,1097739107,KW
+1097739108,1097739343,US
+1097739344,1097739353,GB
+1097739354,1097739383,US
+1097739384,1097739393,BR
+1097739394,1097739403,US
+1097739404,1097739413,BR
+1097739414,1097739423,US
+1097739424,1097739433,SA
+1097739434,1097739463,US
+1097739464,1097739473,LV
+1097739474,1097739569,US
+1097739570,1097739579,GB
+1097739580,1097739589,US
+1097739590,1097739599,IL
+1097739600,1097739669,US
+1097739670,1097739679,BY
+1097739680,1097739689,TR
+1097739690,1097739699,DK
+1097739700,1097739729,US
+1097739730,1097739739,GB
+1097739740,1097740387,US
+1097740388,1097740397,SA
+1097740398,1097740839,US
+1097740840,1097740849,BY
+1097740850,1097740859,RU
+1097740860,1097740899,US
+1097740900,1097740909,RU
+1097740910,1097741065,US
+1097741066,1097741075,IN
+1097741076,1097741215,US
+1097741216,1097741225,UA
+1097741226,1097741235,IT
+1097741236,1097741245,US
+1097741246,1097741255,FR
+1097741256,1097741351,US
+1097741352,1097741361,RU
+1097741362,1097741577,US
+1097741578,1097741587,KW
+1097741588,1097741607,US
+1097741608,1097741617,LB
+1097741618,1097741667,US
+1097741668,1097741677,GR
+1097741678,1097741843,US
+1097741844,1097741853,BY
+1097741854,1097741863,US
+1097741864,1097741873,HR
+1097741874,1097741883,GB
+1097741884,1097741913,US
+1097741914,1097741923,MK
+1097741924,1097742023,US
+1097742024,1097742033,GB
+1097742034,1097742209,US
+1097742210,1097742219,GB
+1097742220,1097742269,US
+1097742270,1097742279,RU
+1097742280,1097742641,US
1097742642,1097742651,BR
1097742652,1097742681,US
1097742682,1097742691,CN
@@ -25316,9 +25668,7 @@
1104492288,1104492543,PH
1104492544,1104610303,US
1104610304,1104611327,KR
-1104611328,1104842751,US
-1104842752,1104844799,PR
-1104844800,1105719295,US
+1104611328,1105719295,US
1105719296,1105723391,IN
1105723392,1106469887,US
1106469888,1106470911,BS
@@ -25417,7 +25767,11 @@
1109970432,1109970687,CA
1109970688,1109979135,US
1109979136,1109983231,CA
-1109983232,1110126591,US
+1109983232,1110056959,US
+1110056960,1110060639,JP
+1110060640,1110061055,US
+1110061056,1110065151,SG
+1110065152,1110126591,US
1110126592,1110130687,CA
1110130688,1110260431,US
1110260432,1110260447,CO
@@ -25461,7 +25815,12 @@
1110473984,1110474239,CA
1110474240,1110540287,US
1110540288,1110573055,CA
-1110573056,1110587903,PR
+1110573056,1110579711,US
+1110579712,1110579967,PR
+1110579968,1110580223,US
+1110580224,1110580863,PR
+1110580864,1110580991,US
+1110580992,1110587903,PR
1110587904,1110593407,US
1110593408,1110595583,PR
1110595584,1110595776,US
@@ -25516,7 +25875,8 @@
1112412672,1112413183,NL
1112413184,1112413695,CH
1112413696,1112414207,CA
-1112414208,1112416255,US
+1112414208,1112415231,US
+1112415232,1112416255,SA
1112416256,1112418303,CN
1112418304,1112418815,US
1112418816,1112419071,IT
@@ -25634,7 +25994,8 @@
1113645056,1113653247,ID
1113653248,1113657343,US
1113657344,1113661439,CA
-1113661440,1113669631,US
+1113661440,1113665535,AR
+1113665536,1113669631,US
1113669632,1113677823,CA
1113677824,1113681919,US
1113686016,1113695231,US
@@ -25725,7 +26086,68 @@
1114533376,1114533887,ZA
1114533888,1114537983,AO
1114537984,1114550271,CA
-1114550272,1114588671,US
+1114550272,1114580017,US
+1114580018,1114580027,KW
+1114580028,1114580037,EE
+1114580038,1114580499,US
+1114580500,1114580509,GB
+1114580510,1114580649,US
+1114580650,1114580659,NL
+1114580660,1114581051,US
+1114581052,1114581061,BR
+1114581062,1114581101,US
+1114581102,1114581111,SI
+1114581112,1114581513,US
+1114581514,1114581523,RU
+1114581524,1114581533,GR
+1114581534,1114581543,RU
+1114581544,1114581553,DE
+1114581554,1114581573,US
+1114581574,1114581583,UA
+1114581584,1114581603,US
+1114581604,1114581613,GR
+1114581614,1114581623,US
+1114581624,1114581633,SG
+1114581634,1114582065,US
+1114582066,1114582075,TR
+1114582076,1114582085,US
+1114582086,1114582095,DE
+1114582096,1114582105,US
+1114582106,1114582115,SG
+1114582116,1114582135,US
+1114582136,1114582145,RU
+1114582146,1114582225,US
+1114582226,1114582245,SG
+1114582246,1114583099,US
+1114583100,1114583109,FR
+1114583110,1114583119,EG
+1114583120,1114583681,US
+1114583682,1114583691,AL
+1114583692,1114583781,US
+1114583782,1114583791,DE
+1114583792,1114583867,US
+1114583868,1114583877,VE
+1114583878,1114584123,US
+1114584124,1114584133,RU
+1114584134,1114584153,US
+1114584154,1114584163,GR
+1114584164,1114584605,US
+1114584606,1114584615,BR
+1114584616,1114584841,US
+1114584842,1114584851,ES
+1114584852,1114584871,US
+1114584872,1114584881,NL
+1114584882,1114584901,US
+1114584902,1114584911,DE
+1114584912,1114584981,US
+1114584982,1114584991,BR
+1114584992,1114585629,US
+1114585630,1114585639,BR
+1114585640,1114585649,LV
+1114585650,1114585659,ES
+1114585660,1114586943,US
+1114586944,1114586951,IL
+1114586952,1114588671,US
1114588672,1114589695,CA
1114589696,1114590975,US
1114590976,1114595327,CA
@@ -25735,7 +26157,17 @@
1114730496,1114734591,CA
1114734592,1114782271,US
1114782272,1114782330,HK
-1114782331,1115112575,US
+1114782331,1115029503,US
+1115045888,1115064447,US
+1115064448,1115064463,AU
+1115064464,1115064975,US
+1115064976,1115064991,TW
+1115064992,1115070063,US
+1115070064,1115070079,SI
+1115070080,1115070337,US
+1115070338,1115070347,SG
+1115070348,1115086847,US
+1115095040,1115112575,US
1115112576,1115112607,IN
1115112608,1115113471,US
1115113472,1115114495,HN
@@ -25778,22 +26210,27 @@
1115705344,1115709439,CA
1115709440,1115783167,US
1115783168,1115791359,CA
-1115791360,1115795455,PR
+1115791360,1115791871,PR
+1115791872,1115792383,US
+1115792384,1115794431,PR
+1115794432,1115794943,US
+1115794944,1115795199,PR
+1115795200,1115795455,US
1115795456,1115799551,CA
1115799552,1115815935,US
1115815936,1115947007,CA
1115947008,1115979775,US
1115979776,1116012543,CA
1116012544,1116014079,US
-1116014080,1116014335,DE
+1116014080,1116014335,CH
1116014336,1116014591,US
-1116014592,1116014847,DE
+1116014592,1116014847,CH
1116014848,1116015871,US
-1116015872,1116016127,DE
+1116015872,1116016127,CH
1116016128,1116024063,US
1116024064,1116024319,PG
1116024320,1116027135,US
-1116027136,1116027903,DE
+1116027136,1116027903,CH
1116027904,1116031743,US
1116031744,1116031999,GB
1116032000,1116032255,JP
@@ -26134,9 +26571,7 @@
1121247232,1121255423,CA
1121255424,1121479003,US
1121479004,1121479007,IN
-1121479008,1121717115,US
-1121717116,1121717116,JP
-1121717117,1121763327,US
+1121479008,1121763327,US
1121763328,1121767423,CA
1121767424,1121878015,US
1121878016,1121910783,CA
@@ -26165,9 +26600,7 @@
1122451456,1122455551,CO
1122455552,1122476031,US
1122476032,1122480127,PR
-1122480128,1122493439,US
-1122493440,1122493951,PR
-1122493952,1122494463,US
+1122480128,1122494463,US
1122494464,1122495999,PR
1122496000,1122498559,US
1122498560,1122499071,PR
@@ -26199,7 +26632,9 @@
1123589888,1123590143,US
1123590144,1123598335,VI
1123598336,1123598591,CA
-1123598592,1123635626,US
+1123598592,1123635624,US
+1123635625,1123635625,JP
+1123635626,1123635626,US
1123635627,1123635627,PL
1123635628,1123635639,US
1123635640,1123635640,RU
@@ -26253,9 +26688,7 @@
1123848192,1123852287,CA
1123852288,1123950591,US
1123950592,1123958783,CA
-1123958784,1124853798,US
-1124853799,1124853799,JP
-1124853800,1125064703,US
+1123958784,1125064703,US
1125064704,1125065215,GB
1125065216,1125081855,US
1125081856,1125082111,DE
@@ -26381,10 +26814,7 @@
1137539192,1137541119,CA
1137541120,1137623039,US
1137623040,1137639423,PR
-1137639424,1137656831,US
-1137656832,1137657855,GB
-1137657856,1137659903,DE
-1137659904,1137681583,US
+1137639424,1137681583,US
1137681584,1137681599,AR
1137681600,1137688063,US
1137688064,1137688319,FR
@@ -26395,7 +26825,9 @@
1137692672,1137704959,US
1137704960,1137713151,CA
1137713152,1137717247,US
-1137721344,1137836031,US
+1137721344,1137803263,US
+1137803264,1137811455,KZ
+1137811456,1137836031,US
1137840128,1137840383,CA
1137840384,1137840895,US
1137840896,1137841151,DE
@@ -26558,8 +26990,7 @@
1138978048,1138978303,IT
1138978304,1138978815,HK
1138978816,1138980863,DE
-1138980864,1138982911,CN
-1138982912,1139146751,US
+1138980864,1139146751,US
1139146752,1139154943,GT
1139154944,1139167231,JM
1139167232,1139167743,US
@@ -26615,8 +27046,8 @@
1145430016,1145475071,US
1145475072,1145479167,CA
1145479168,1145487359,US
-1145487360,1145489151,DE
-1145489152,1145489919,US
+1145487360,1145489663,DE
+1145489664,1145489919,US
1145489920,1145490943,DE
1145490944,1145491199,CH
1145491200,1145491455,DE
@@ -26658,7 +27089,13 @@
1157660672,1157664767,CA
1157664768,1157666815,US
1157666816,1157693439,CA
-1157693440,1157910527,US
+1157693440,1157753087,US
+1157753088,1157753343,GB
+1157753344,1157755247,US
+1157755248,1157755263,GR
+1157755264,1157758207,US
+1157758208,1157758463,RU
+1157758464,1157910527,US
1157910528,1157910543,CA
1157910544,1157910551,US
1157910552,1157910575,CA
@@ -26673,13 +27110,7 @@
1157910864,1157910879,US
1157910880,1157911071,CA
1157911072,1157911103,US
-1157911104,1157911279,CA
-1157911280,1157911287,US
-1157911288,1157911343,CA
-1157911344,1157911351,US
-1157911352,1157911743,CA
-1157911744,1157911759,US
-1157911760,1157911775,CA
+1157911104,1157911775,CA
1157911776,1157911791,US
1157911792,1157911927,CA
1157911928,1157911935,US
@@ -26687,9 +27118,7 @@
1157911952,1157911983,US
1157911984,1157912015,CA
1157912016,1157912031,US
-1157912032,1157912183,CA
-1157912184,1157912191,US
-1157912192,1157912347,CA
+1157912032,1157912347,CA
1157912348,1157912348,US
1157912349,1157912391,CA
1157912392,1157912399,US
@@ -26697,61 +27126,39 @@
1157912448,1157912463,US
1157912464,1157912647,CA
1157912648,1157912671,US
-1157912672,1157912687,CA
-1157912688,1157912735,US
+1157912672,1157912703,CA
+1157912704,1157912735,US
1157912736,1157912743,CA
1157912744,1157912751,US
1157912752,1157912815,CA
1157912816,1157912823,US
-1157912824,1157912831,CA
-1157912832,1157912839,US
-1157912840,1157912895,CA
+1157912824,1157912895,CA
1157912896,1157912911,US
-1157912912,1157912943,CA
-1157912944,1157913023,US
-1157913024,1157913039,CA
-1157913040,1157913047,FI
-1157913048,1157913087,CA
+1157912912,1157912959,CA
+1157912960,1157913023,US
+1157913024,1157913087,CA
1157913088,1157913119,US
-1157913120,1157913207,CA
-1157913208,1157913215,US
-1157913216,1157913231,CA
-1157913232,1157913247,US
-1157913248,1157913279,CA
+1157913120,1157913279,CA
1157913280,1157913295,US
-1157913296,1157913439,CA
-1157913440,1157913455,US
-1157913456,1157913471,CA
+1157913296,1157913471,CA
1157913472,1157913487,US
1157913488,1157913495,CA
1157913496,1157913503,US
1157913504,1157913583,CA
1157913584,1157913599,US
-1157913600,1157913631,CA
-1157913632,1157913647,US
-1157913648,1157913663,CA
+1157913600,1157913663,CA
1157913664,1157913679,US
-1157913680,1157913695,CA
-1157913696,1157913711,US
-1157913712,1157913759,CA
-1157913760,1157913775,US
-1157913776,1157913919,CA
-1157913920,1157913943,US
-1157913944,1157914031,CA
+1157913680,1157913767,CA
+1157913768,1157913775,US
+1157913776,1157914031,CA
1157914032,1157914047,US
-1157914048,1157914079,CA
-1157914080,1157914095,US
-1157914096,1157914143,CA
+1157914048,1157914143,CA
1157914144,1157914175,US
-1157914176,1157914183,CA
-1157914184,1157914191,US
-1157914192,1157914207,CA
+1157914176,1157914207,CA
1157914208,1157914223,US
1157914224,1157914239,CA
1157914240,1157914255,US
-1157914256,1157914303,CA
-1157914304,1157914335,US
-1157914336,1157914351,CA
+1157914256,1157914351,CA
1157914352,1157914367,US
1157914368,1157914623,CA
1157914624,1157931007,US
@@ -26772,23 +27179,27 @@
1158183468,1158183468,GB
1158183469,1158234111,US
1158234112,1158250495,CA
-1158250496,1158316031,US
-1158316032,1158324223,CA
+1158250496,1158295807,US
+1158295808,1158296063,GB
+1158296064,1158316031,US
+1158316032,1158322242,CA
+1158322243,1158322243,US
+1158322244,1158324223,CA
1158324224,1158340607,US
1158340608,1158344703,CA
1158344704,1158348799,US
1158348800,1158381567,CA
1158381568,1158422527,US
1158422528,1158423551,CA
-1158423552,1158427647,US
-1158427648,1158428159,CA
-1158428160,1158440959,US
+1158423552,1158440959,US
1158440960,1158441215,CA
1158441216,1158441471,US
1158441472,1158441983,CA
1158441984,1158443007,DM
1158443008,1158774783,US
-1158774784,1158791167,CA
+1158774784,1158784703,CA
+1158784704,1158784767,US
+1158784768,1158791167,CA
1158791168,1158799359,BM
1158799360,1158807551,CA
1158807552,1158951575,US
@@ -26801,13 +27212,19 @@
1158995968,1159004159,CA
1159004160,1159213055,US
1159213056,1159217151,CA
-1159217152,1159249919,US
-1159249920,1159254015,PR
-1159254016,1159262475,US
+1159217152,1159251199,US
+1159251200,1159251967,PR
+1159251968,1159252223,US
+1159252224,1159252479,PR
+1159252480,1159262475,US
1159262476,1159262479,SA
1159262480,1159262487,US
1159262488,1159262491,SA
-1159262492,1159281919,US
+1159262492,1159269119,US
+1159269120,1159269375,AR
+1159269376,1159274495,US
+1159274496,1159274751,GB
+1159274752,1159281919,US
1159281920,1159282175,GB
1159282176,1159300607,US
1159300608,1159300863,SE
@@ -26834,8 +27251,18 @@
1159516416,1159516671,US
1159516672,1159518767,CA
1159518768,1159518775,US
-1159518776,1159528447,CA
-1159528448,1159668479,US
+1159518776,1159518975,CA
+1159518976,1159519231,US
+1159519232,1159520383,CA
+1159520384,1159520511,US
+1159520512,1159523327,CA
+1159523328,1159523583,US
+1159523584,1159525119,CA
+1159525120,1159525375,US
+1159525376,1159526399,CA
+1159526400,1159526655,US
+1159526656,1159528191,CA
+1159528192,1159668479,US
1159668480,1159668735,CA
1159668736,1159685377,US
1159685378,1159685379,NL
@@ -26847,11 +27274,23 @@
1160011776,1160019967,CA
1160019968,1160364031,US
1160364032,1160368127,CA
-1160368128,1160392703,US
+1160368128,1160373247,US
+1160373248,1160373503,AE
+1160373504,1160392703,US
1160392704,1160392959,CA
1160392960,1160393727,US
1160393728,1160396799,CA
-1160396800,1160410551,US
+1160396800,1160405759,US
+1160405760,1160406015,DO
+1160406016,1160406319,US
+1160406320,1160406335,DO
+1160406336,1160409423,US
+1160409424,1160409439,PT
+1160409440,1160409599,US
+1160409600,1160410111,CO
+1160410112,1160410511,US
+1160410512,1160410519,EC
+1160410520,1160410551,US
1160410552,1160410559,EC
1160410560,1160425471,US
1160425472,1160429567,CA
@@ -26917,29 +27356,17 @@
1161427200,1161427455,VG
1161427456,1161428223,AG
1161428224,1161428991,KN
-1161428992,1161429031,CA
-1161429032,1161429039,SE
-1161429040,1161429111,CA
+1161428992,1161429111,CA
1161429112,1161429135,US
-1161429136,1161429151,CA
-1161429152,1161429167,US
-1161429168,1161429175,CA
+1161429136,1161429175,CA
1161429176,1161429199,US
1161429200,1161429215,CA
1161429216,1161429255,US
-1161429256,1161429263,CA
-1161429264,1161429279,US
-1161429280,1161429295,CA
-1161429296,1161429327,US
-1161429328,1161429335,CA
-1161429336,1161429351,US
+1161429256,1161429343,CA
+1161429344,1161429351,US
1161429352,1161429375,CA
1161429376,1161429407,US
-1161429408,1161429431,CA
-1161429432,1161429439,US
-1161429440,1161429535,CA
-1161429536,1161429543,US
-1161429544,1161429551,CA
+1161429408,1161429551,CA
1161429552,1161429599,US
1161429600,1161429647,CA
1161429648,1161429663,US
@@ -26949,43 +27376,28 @@
1161429720,1161429727,US
1161429728,1161429759,CA
1161429760,1161429775,US
-1161429776,1161429855,CA
-1161429856,1161429863,US
-1161429864,1161429887,CA
-1161429888,1161429903,US
-1161429904,1161429983,CA
-1161429984,1161430015,US
-1161430016,1161430023,FI
-1161430024,1161430111,CA
+1161429776,1161430111,CA
1161430112,1161430159,US
1161430160,1161430191,CA
1161430192,1161430207,US
1161430208,1161430431,CA
1161430432,1161430447,US
-1161430448,1161430455,CA
-1161430456,1161430463,US
-1161430464,1161430527,CA
+1161430448,1161430527,CA
1161430528,1161430543,US
-1161430544,1161430559,CA
-1161430560,1161430567,US
-1161430568,1161430575,CA
+1161430544,1161430575,CA
1161430576,1161430591,US
-1161430592,1161430703,CA
-1161430704,1161430719,US
-1161430720,1161430727,CA
-1161430728,1161430735,FI
-1161430736,1161430799,CA
+1161430592,1161430639,CA
+1161430640,1161430647,US
+1161430648,1161430799,CA
1161430800,1161430815,US
-1161430816,1161430847,CA
-1161430848,1161430911,US
+1161430816,1161430879,CA
+1161430880,1161430911,US
1161430912,1161430943,CA
-1161430944,1161431007,US
-1161431008,1161431039,CA
+1161430944,1161430975,US
+1161430976,1161431039,CA
1161431040,1161431295,CN
1161431296,1161432063,US
-1161432064,1161432479,CA
-1161432480,1161432511,US
-1161432512,1161432831,CA
+1161432064,1161432831,CA
1161432832,1161433087,US
1161433088,1161437183,CA
1161437184,1161453567,US
@@ -27011,7 +27423,11 @@
1161830853,1161830853,BZ
1161830854,1161833967,US
1161833968,1161833975,DE
-1161833976,1161835948,US
+1161833976,1161834712,US
+1161834713,1161834713,BZ
+1161834714,1161834743,US
+1161834744,1161834744,BZ
+1161834745,1161835948,US
1161835949,1161835949,BZ
1161835950,1161837567,US
1161837568,1161837823,JP
@@ -27058,17 +27474,31 @@
1162475008,1162477567,BB
1162477568,1162715135,US
1162715136,1162723327,CA
-1162723328,1162807807,US
+1162723328,1162806527,US
+1162806528,1162806783,PR
+1162806784,1162807295,US
+1162807296,1162807807,PR
1162807808,1162808319,LC
-1162808320,1162831871,US
+1162808320,1162809343,PR
+1162809344,1162811391,US
+1162811392,1162811647,CW
+1162811648,1162812159,US
+1162812160,1162812415,DO
+1162812416,1162813439,BS
+1162813440,1162823679,US
+1162823680,1162825727,GT
+1162825728,1162831871,US
1162831872,1162833919,PR
-1162833920,1162854399,US
-1162854400,1162856447,JM
-1162856448,1162856703,US
-1162856704,1162857215,JM
-1162857216,1162857471,US
-1162857472,1162857727,JM
-1162857728,1162862591,US
+1162833920,1162835967,GT
+1162835968,1162836223,BS
+1162836224,1162836735,CW
+1162836736,1162836991,US
+1162836992,1162838015,BS
+1162838016,1162840063,PR
+1162840064,1162853375,US
+1162853376,1162854399,PR
+1162854400,1162858495,JM
+1162858496,1162862591,US
1162862592,1162863359,PR
1162863360,1162863423,US
1162863424,1162863487,PR
@@ -27084,10 +27514,12 @@
1162925984,1162926015,AU
1162926016,1162926071,US
1162926072,1162926079,AU
-1162926080,1162928383,US
-1162930176,1162932223,CA
+1162926080,1162929151,US
+1162929152,1162932223,CA
1162932224,1163370495,US
-1163378688,1163399167,US
+1163378688,1163386367,US
+1163386368,1163386879,CA
+1163386880,1163399167,US
1163399168,1163399423,WS
1163399424,1163400959,US
1163400960,1163401215,BD
@@ -27095,9 +27527,9 @@
1163401472,1163401727,ID
1163401728,1163407359,US
1163407360,1163411455,CA
-1163411456,1163468799,US
-1163468800,1163472895,PR
-1163472896,1163526143,US
+1163411456,1163469823,US
+1163469824,1163470079,PR
+1163470080,1163526143,US
1163526144,1163529215,CA
1163529216,1163529727,US
1163529728,1163529983,CA
@@ -27185,7 +27617,9 @@
1168229376,1168229631,JP
1168229632,1168269887,US
1168269888,1168269951,GB
-1168269952,1168420863,US
+1168269952,1168279295,US
+1168279296,1168279359,CA
+1168279360,1168420863,US
1168420864,1168424959,CA
1168424960,1168461823,US
1168461824,1168465919,CA
@@ -27195,7 +27629,9 @@
1168510976,1168515071,CA
1168515072,1168535551,US
1168535552,1168539647,CA
-1168539648,1168670719,US
+1168539648,1168593151,US
+1168593152,1168593279,CA
+1168593280,1168670719,US
1168670720,1168687103,CA
1168687104,1168695807,US
1168695808,1168696063,GB
@@ -27278,7 +27714,9 @@
1170191104,1170191359,SG
1170191360,1170191871,DE
1170191872,1170192383,HK
-1170192384,1170350079,US
+1170192384,1170227199,US
+1170227200,1170231295,NL
+1170231296,1170350079,US
1170350080,1170355199,CA
1170355200,1170357247,US
1170357248,1170358271,CA
@@ -27574,7 +28012,9 @@
1210925056,1210941439,CA
1210941440,1210994687,US
1210994688,1210997759,CA
-1210997760,1211032271,US
+1210997760,1211014143,US
+1211014144,1211014655,PR
+1211014656,1211032271,US
1211032272,1211032287,DO
1211032288,1211033087,US
1211033088,1211033599,CO
@@ -27733,7 +28173,9 @@
1244848128,1244852223,CA
1244852224,1244864511,US
1244864512,1244872703,CA
-1244872704,1245183999,US
+1244872704,1245144575,US
+1245144576,1245144831,CH
+1245144832,1245183999,US
1245184000,1245446143,CA
1245446144,1245647359,US
1245647360,1245647615,AR
@@ -27805,15 +28247,13 @@
1246890432,1246890463,CA
1246890464,1246890464,US
1246890465,1246890495,CA
-1246890496,1246893567,US
-1246893568,1246893715,JP
-1246893716,1246893716,US
-1246893717,1246893823,JP
-1246893824,1246895103,US
+1246890496,1246895103,US
1246895104,1246895615,NL
1246895616,1246900223,US
1246900224,1246900287,HK
-1246900288,1246904575,US
+1246900288,1246902783,US
+1246902784,1246903039,NL
+1246903040,1246904575,US
1246904576,1246905343,CA
1246905344,1246905599,US
1246905600,1246912511,CA
@@ -27910,7 +28350,9 @@
1249210368,1249212415,KY
1249212416,1249217535,US
1249217536,1249218559,CA
-1249218560,1249234687,US
+1249218560,1249227263,US
+1249227264,1249227519,VG
+1249227520,1249234687,US
1249234688,1249234943,GB
1249234944,1249236991,US
1249236992,1249239039,KY
@@ -27966,7 +28408,18 @@
1249533952,1249542143,US
1249542144,1249544191,CA
1249544192,1249545215,US
-1249546240,1249562623,US
+1249546240,1249550351,US
+1249550352,1249550367,GB
+1249550368,1249550375,HK
+1249550376,1249550391,US
+1249550392,1249550399,TW
+1249550400,1249550863,US
+1249550864,1249550879,GB
+1249550880,1249550903,US
+1249550904,1249550911,GB
+1249550912,1249550935,US
+1249550936,1249550943,BY
+1249550944,1249562623,US
1249562624,1249564671,CA
1249564672,1249571839,US
1249571840,1249572863,CA
@@ -28087,7 +28540,9 @@
1249754624,1249754879,SG
1249754880,1249796095,US
1249796096,1249804287,CA
-1249804288,1249886207,US
+1249804288,1249851903,US
+1249851904,1249852159,FR
+1249852160,1249886207,US
1249886208,1249902591,CA
1249902592,1252535295,US
1252535296,1252536319,VI
@@ -28103,11 +28558,21 @@
1254992384,1254998015,CA
1254998016,1255002111,US
1255002112,1255006207,CA
-1255006208,1255047167,US
+1255006208,1255011583,US
+1255011584,1255011839,CA
+1255011840,1255047167,US
1255047168,1255055359,CA
-1255055360,1255276543,US
+1255055360,1255210495,US
+1255210496,1255210751,DE
+1255210752,1255264511,US
+1255264512,1255264767,SG
+1255264768,1255274495,US
+1255274496,1255274751,SG
+1255274752,1255276543,US
1255276544,1255342079,CA
-1255342080,1255489535,US
+1255342080,1255367167,US
+1255367168,1255367423,DE
+1255367424,1255489535,US
1255489536,1255505919,PR
1255505920,1255514111,US
1255514112,1255522303,CA
@@ -28117,13 +28582,19 @@
1255588352,1255588607,NL
1255588608,1255669759,US
1255669760,1255735295,CA
-1255735296,1255972863,US
+1255735296,1255770367,US
+1255770368,1255770623,CA
+1255770624,1255792127,US
+1255792128,1255792383,IL
+1255792384,1255972863,US
1255972864,1255981055,CA
1255981056,1256001535,US
1256001536,1256005631,CA
1256005632,1256030207,US
1256030208,1256034303,CA
-1256034304,1256079359,US
+1256034304,1256054399,US
+1256054400,1256054783,CZ
+1256054784,1256079359,US
1256079360,1256087551,KY
1256087552,1263525887,US
1263525888,1263534079,CA
@@ -28162,7 +28633,9 @@
1275665408,1275666431,US
1275666432,1275674623,CA
1275674624,1275707391,US
-1275707392,1275715583,CA
+1275707392,1275711487,CA
+1275711488,1275712511,US
+1275712512,1275715583,CA
1275715584,1275756543,US
1275756544,1275772927,CA
1275772928,1275789311,US
@@ -28297,7 +28770,8 @@
1295253504,1295319039,UA
1295319040,1295384575,SE
1295384576,1295450111,PT
-1295450112,1295515647,PL
+1295450112,1295481855,PL
+1295482880,1295515647,PL
1295515648,1295762431,CH
1295762432,1295763455,GB
1295763456,1295777791,CH
@@ -28399,8 +28873,8 @@
1296252648,1296252655,GB
1296252656,1296252667,IE
1296252668,1296252671,GB
-1296252672,1296252871,IE
-1296252872,1296252879,DE
+1296252672,1296252875,IE
+1296252876,1296252879,DE
1296252880,1296254207,IE
1296254208,1296254463,US
1296254464,1296256839,IE
@@ -28424,7 +28898,8 @@
1296263675,1296263679,IE
1296263680,1296263935,US
1296263936,1296264175,IE
-1296264176,1296264191,BE
+1296264176,1296264183,BE
+1296264184,1296264191,NO
1296264192,1296264287,GB
1296264288,1296264303,US
1296264304,1296265175,GB
@@ -28523,7 +28998,7 @@
1296678792,1296678799,NG
1296678800,1296678903,JE
1296678904,1296678911,NG
-1296678912,1296680959,SA
+1296678912,1296680959,AE
1296680960,1296683007,ES
1296683008,1296685055,IE
1296685056,1296687103,TR
@@ -28714,10 +29189,14 @@
1297727488,1297743871,MD
1297743872,1297760255,DE
1297760256,1297776639,LT
-1297776640,1297782783,DE
-1297782784,1297784319,RU
-1297784320,1297790463,DE
-1297790464,1297791231,RU
+1297776640,1297783295,DE
+1297783296,1297784319,RU
+1297784320,1297786367,DE
+1297786368,1297788415,RU
+1297788416,1297788671,DE
+1297788672,1297789951,RU
+1297789952,1297790463,DE
+1297790464,1297791231,RO
1297791232,1297793023,DE
1297793024,1297809407,UA
1297809408,1297825791,PL
@@ -28870,24 +29349,22 @@
1299178496,1299180543,CH
1299180544,1299181567,GB
1299181568,1299182591,DK
-1299183616,1299183871,SE
1299184640,1299185663,GB
1299185664,1299447807,PL
1299447808,1299622911,AT
1299622912,1299623935,DE
1299623936,1299709951,AT
-1299709952,1299724287,UA
-1299724288,1299725311,RU
-1299725312,1299779071,UA
+1299709952,1299779071,UA
1299779072,1299779327,RU
1299779328,1299935231,UA
1299935232,1299935999,BG
1299936000,1299936255,UA
1299936256,1299937279,BG
1299937280,1299955711,UA
-1299955712,1299963903,RU
-1299963904,1299971071,UA
-1299971072,1299972095,RU
+1299955712,1299959807,RU
+1299959808,1299961855,UA
+1299961856,1299963903,RU
+1299963904,1299972095,UA
1299972096,1300234239,IL
1300234240,1300824063,FR
1300824064,1300874239,IL
@@ -28914,7 +29391,6 @@
1306279936,1306288127,IT
1306288128,1306296319,AT
1306296320,1306312703,RU
-1306312704,1306315775,UZ
1306315776,1306316031,KG
1306316032,1306316287,RU
1306316288,1306316799,KZ
@@ -29380,7 +29856,6 @@
1311311872,1311315967,CZ
1311315968,1311318015,PL
1311318016,1311320063,RU
-1311320064,1311322111,FR
1311322112,1311323135,DE
1311323136,1311324159,FR
1311324160,1311326207,LB
@@ -29447,7 +29922,6 @@
1315729408,1315729663,IE
1315729920,1315730943,NL
1315732224,1315732991,DE
-1315732992,1315733247,NL
1315733504,1315737599,NL
1315737600,1315741695,CZ
1315741696,1315745791,LB
@@ -29518,9 +29992,7 @@
1317076992,1317093887,BE
1317093888,1317094143,NL
1317094144,1317109759,BE
-1317109760,1317126399,GB
-1317126400,1317126655,US
-1317126656,1317142527,GB
+1317109760,1317142527,GB
1317142528,1317175295,PT
1317175296,1317208063,BG
1317208064,1317240831,HU
@@ -29552,7 +30024,9 @@
1317617664,1317625855,YE
1317625856,1317627903,DE
1317627904,1317629951,RU
-1317629952,1317636095,GB
+1317629952,1317634047,GB
+1317634048,1317634303,IE
+1317634304,1317636095,GB
1317636096,1317642495,IE
1317642496,1317643316,GB
1317643317,1317643317,IE
@@ -29621,7 +30095,10 @@
1317908480,1317909503,FR
1317909504,1317912575,LU
1317912576,1317928959,GB
-1317928960,1317945343,BG
+1317928960,1317929215,US
+1317929216,1317931007,BG
+1317931008,1317931263,US
+1317931264,1317945343,BG
1317945344,1317978111,AT
1317994496,1318010879,DE
1318010880,1318027263,DK
@@ -29808,7 +30285,7 @@
1332613376,1332614143,UA
1332614144,1332614399,BY
1332614400,1332614655,NL
-1332614656,1332614783,RU
+1332614656,1332614783,UA
1332614784,1332614911,KZ
1332614912,1332615167,RO
1332615168,1332615423,DE
@@ -29845,7 +30322,7 @@
1333527040,1333528575,BG
1333528576,1333528831,GB
1333528832,1333546239,BG
-1333546240,1333546495,US
+1333546240,1333546495,BR
1333546496,1333551103,BG
1333551104,1333559295,PL
1333559296,1333592063,UA
@@ -29905,9 +30382,7 @@
1334379072,1334379135,PL
1334379136,1334379263,FR
1334379264,1334379519,PL
-1334379520,1334379583,FR
-1334379584,1334379591,PL
-1334379592,1334379871,FR
+1334379520,1334379871,FR
1334379872,1334379887,PT
1334379888,1334379971,FR
1334379972,1334379975,DE
@@ -29923,9 +30398,7 @@
1334381888,1334381919,IT
1334381920,1334381983,FR
1334381984,1334382015,FI
-1334382016,1334382903,FR
-1334382904,1334382911,PL
-1334382912,1334382975,FR
+1334382016,1334382975,FR
1334382976,1334383103,GB
1334383104,1334383615,FR
1334383616,1334383679,DE
@@ -30075,16 +30548,16 @@
1334673408,1334677503,GB
1334677504,1334681599,FI
1334681600,1334681855,PL
-1334681856,1334682111,NL
+1334681856,1334682111,US
1334682112,1334682367,IE
-1334682368,1334682623,NL
+1334682368,1334682623,US
1334682624,1334682879,NO
1334682880,1334682900,NL
1334682901,1334682901,DK
1334682902,1334683135,NL
1334683136,1334683391,CZ
1334683392,1334683647,CH
-1334683648,1334683903,NL
+1334683648,1334683903,HK
1334683904,1334684031,DE
1334684032,1334684159,NL
1334684160,1334684415,SE
@@ -30111,9 +30584,7 @@
1334724352,1334724607,SE
1334724608,1334724863,US
1334724864,1334725631,NL
-1334725632,1334726143,SE
-1334726144,1334726399,LU
-1334726400,1334726655,SE
+1334725632,1334726655,SE
1334726656,1334729983,RU
1334729984,1334730495,KZ
1334730496,1334734847,RU
@@ -30924,6 +31395,7 @@
1347825664,1347829759,IT
1347829760,1347833855,SE
1347833856,1347837951,DE
+1347838411,1347838411,RO
1347838720,1347846143,RO
1347846144,1347850239,NO
1347850240,1347854335,IT
@@ -31125,7 +31597,9 @@
1353267200,1353267711,IE
1353267712,1353267751,GB
1353267752,1353267759,IE
-1353267760,1353271317,GB
+1353267760,1353270615,GB
+1353270616,1353270623,IT
+1353270624,1353271317,GB
1353271318,1353271318,AT
1353271319,1353271567,GB
1353271568,1353271575,AT
@@ -31215,7 +31689,6 @@
1355870208,1355872255,FI
1355872256,1355873279,IT
1355873280,1355873791,GB
-1355873792,1355874047,GG
1355874048,1355874303,DE
1355874304,1355907071,DK
1355907072,1355923455,GB
@@ -31305,6 +31778,7 @@
1357329416,1357332479,GB
1357335808,1357336063,IT
1357337600,1357337647,NL
+1357337652,1357337652,NL
1357337664,1357337727,NL
1357340672,1357341695,GB
1357342720,1357344259,GB
@@ -31320,7 +31794,7 @@
1357347680,1357347727,FR
1357347744,1357347839,FR
1357347840,1357348095,PL
-1357348352,1357348359,ES
+1357348352,1357348363,ES
1357348384,1357348415,ES
1357348480,1357348607,ES
1357350400,1357350647,GB
@@ -31517,7 +31991,8 @@
1358295040,1358299135,RU
1358299136,1358303231,DZ
1358303232,1358306303,RU
-1358306304,1358306815,GB
+1358306304,1358306559,AL
+1358306560,1358306815,GB
1358306816,1358307071,PT
1358307072,1358307327,LV
1358307328,1358315519,DE
@@ -31803,8 +32278,8 @@
1360064512,1360068607,GE
1360068608,1360072703,RU
1360072704,1360076799,CH
-1360076800,1360083263,NL
-1360083264,1360089087,GB
+1360076800,1360082943,NL
+1360082944,1360089087,GB
1360089088,1360093183,AZ
1360093184,1360101375,DE
1360101376,1360105471,UA
@@ -32269,8 +32744,7 @@
1365090304,1365094399,NO
1365094400,1365098495,FR
1365098496,1365102591,HU
-1365102592,1365102655,FR
-1365102656,1365106687,ES
+1365102592,1365106687,ES
1365106688,1365110783,GB
1365110784,1365114879,FR
1365114880,1365118975,BA
@@ -32461,8 +32935,8 @@
1371996672,1371996927,GA
1371996928,1372000255,GB
1372000256,1372001279,UG
-1372001280,1372012543,GB
-1372012544,1372016639,DE
+1372001280,1372014079,GB
+1372014080,1372016639,DE
1372016640,1372017583,GB
1372017584,1372017599,CD
1372017600,1372020223,GB
@@ -32478,7 +32952,7 @@
1372026624,1372026879,KE
1372026880,1372027903,IL
1372027904,1372031999,GB
-1372032000,1372032255,CM
+1372032000,1372032255,ZM
1372032256,1372043519,GB
1372043520,1372043775,NG
1372043776,1372045567,GB
@@ -32537,7 +33011,7 @@
1372699904,1372700159,DE
1372702720,1372703231,DE
1372703616,1372703743,DE
-1372704768,1372713983,DE
+1372708864,1372713983,DE
1372715008,1372717055,DE
1372717056,1372749823,PL
1372749824,1372782591,DE
@@ -32762,7 +33236,7 @@
1383522304,1383523839,BG
1383523840,1383524095,GB
1383524096,1383524607,BG
-1383524608,1383524863,US
+1383524608,1383524863,BR
1383524864,1383525119,GB
1383525120,1383530495,BG
1383530496,1383538687,DE
@@ -32783,7 +33257,7 @@
1384193024,1384194047,DE
1384196096,1384197119,ES
1384198144,1384202239,GB
-1384206336,1384218623,GB
+1384203264,1384218623,GB
1384218624,1384251391,EG
1384251392,1384267775,FI
1384267776,1384284159,CH
@@ -32881,12 +33355,8 @@
1385275392,1385283583,IT
1385283584,1385286143,DE
1385286144,1385287679,GB
-1385289728,1385290288,GB
-1385290289,1385290289,RE
-1385290290,1385290631,GB
-1385290632,1385290632,IS
-1385290633,1385290751,GB
-1385291344,1385291344,IS
+1385289728,1385290751,GB
+1385291264,1385291519,ZA
1385291520,1385291775,GB
1385291776,1385299967,TR
1385299968,1385303039,BG
@@ -33123,8 +33593,6 @@
1388583424,1388584959,FR
1388587264,1388589823,GB
1388591104,1388591359,AU
-1388591616,1388591631,US
-1388591648,1388591663,US
1388593152,1388601343,RU
1388601344,1388609535,SE
1388609536,1388617727,RU
@@ -33465,12 +33933,12 @@
1401460736,1401462783,PL
1401462784,1401464831,FR
1401464832,1401466879,IE
-1401466880,1401468927,RS
1401468928,1401470975,ES
1401470976,1401473023,NL
1401473024,1401475071,CZ
1401475072,1401477119,FR
-1401477120,1401478143,DE
+1401477120,1401477631,SG
+1401477632,1401478143,US
1401478144,1401479167,LB
1401479168,1401481215,PL
1401481216,1401485311,RU
@@ -33587,13 +34055,13 @@
1401907200,1401908223,RU
1401908224,1401909247,ES
1401909248,1401910271,DE
-1401910272,1401911039,GB
-1401911040,1401911055,IE
-1401911056,1401911071,ES
+1401910272,1401910783,GB
+1401910784,1401911039,RU
+1401911040,1401911071,ES
1401911072,1401911087,PA
1401911088,1401911103,PL
1401911104,1401911119,CH
-1401911120,1401911295,GB
+1401911120,1401911295,ES
1401911296,1401913343,DK
1401913344,1401917439,PL
1401917440,1401919487,BG
@@ -34066,11 +34534,7 @@
1407520576,1407520583,NG
1407520584,1407520623,GB
1407520624,1407520631,NG
-1407520632,1407522375,GB
-1407522376,1407522383,CD
-1407522384,1407522471,GB
-1407522472,1407522479,CD
-1407522480,1407537087,GB
+1407520632,1407537087,GB
1407537088,1407537095,GH
1407537096,1407538327,GB
1407538328,1407538335,CD
@@ -34534,7 +34998,9 @@
1424601888,1424601903,NL
1424601904,1424603023,GB
1424603024,1424603039,US
-1424603040,1424604159,GB
+1424603040,1424604127,GB
+1424604128,1424604135,ES
+1424604136,1424604159,GB
1424604160,1424604671,DK
1424604672,1424604975,GB
1424604976,1424604991,NL
@@ -34663,9 +35129,12 @@
1425467392,1425469439,CH
1425469440,1425471487,DK
1425471488,1425473535,DE
-1425473536,1425474559,RO
+1425473536,1425473791,RO
+1425473792,1425474047,GG
+1425474048,1425474559,RO
1425474560,1425475583,US
-1425475584,1425478143,RO
+1425475584,1425477631,NL
+1425477632,1425478143,RO
1425478144,1425478655,ES
1425478656,1425479167,GB
1425479168,1425479679,RO
@@ -35237,8 +35706,7 @@
1438876928,1438877183,IQ
1438877184,1438877951,LT
1438877952,1438878207,LB
-1438878208,1438891007,LT
-1438891008,1438892031,RU
+1438878208,1438892031,LT
1438892032,1438908415,CH
1438908416,1438924799,GR
1438924800,1438941183,NO
@@ -35536,8 +36004,8 @@
1441734656,1441742847,RU
1441742848,1441751039,CZ
1441751040,1441759231,DE
-1441759232,1441763071,BG
-1441763072,1441763327,ES
+1441759232,1441761279,BG
+1441761280,1441763327,ES
1441763328,1441767423,BG
1441767424,1441775615,IT
1441775616,1441783807,IR
@@ -35636,7 +36104,8 @@
1449687040,1449688063,GR
1449688064,1449688575,RO
1449688576,1449688831,GB
-1449688832,1449690623,RO
+1449688832,1449689087,NL
+1449689088,1449690623,RO
1449690624,1449690879,IE
1449690880,1449691135,IT
1449691136,1449695231,RO
@@ -35731,7 +36200,7 @@
1449783296,1449783551,DE
1449783552,1449783807,RO
1449783808,1449784319,GB
-1449784320,1449785343,RO
+1449784320,1449785343,NL
1449785344,1449786367,GR
1449786368,1449786879,RO
1449786880,1449787391,FR
@@ -35798,7 +36267,7 @@
1449865728,1449867263,RO
1449867264,1449867519,ES
1449867520,1449868799,RO
-1449868800,1449869055,PL
+1449868800,1449869055,US
1449869056,1449869311,RO
1449869312,1449870335,MD
1449870336,1449871359,RO
@@ -35994,7 +36463,15 @@
1467473920,1467482111,RU
1467482112,1467484927,BG
1467484928,1467485183,IL
-1467485184,1467596799,BG
+1467485184,1467502591,BG
+1467502592,1467503615,DE
+1467503616,1467525119,BG
+1467525120,1467527167,DE
+1467527168,1467543551,BG
+1467543552,1467544575,DE
+1467544576,1467566079,BG
+1467566080,1467567103,DE
+1467567104,1467596799,BG
1467596800,1467600895,DE
1467600896,1467604991,BG
1467604992,1467609087,DE
@@ -36139,7 +36616,7 @@
1475284992,1475287039,GB
1475287040,1475291135,RU
1475291136,1475293183,PL
-1475293184,1475295231,KZ
+1475293184,1475295231,CZ
1475295232,1475297279,SK
1475297280,1475299327,DK
1475299328,1475301375,PL
@@ -36306,7 +36783,8 @@
1476064512,1476067327,RU
1476067328,1476075519,TR
1476075520,1476083711,NL
-1476083712,1476100095,RU
+1476083712,1476087807,MD
+1476087808,1476100095,RU
1476100096,1476108287,IR
1476108288,1476116479,RU
1476116480,1476124671,SE
@@ -36322,9 +36800,7 @@
1476165120,1476165631,BH
1476165632,1476173823,HR
1476173824,1476182015,BG
-1476182016,1476186367,GB
-1476186368,1476186383,IE
-1476186384,1476189382,GB
+1476182016,1476189382,GB
1476189383,1476189383,IE
1476189384,1476190207,GB
1476190208,1476198399,BY
@@ -36615,7 +37091,8 @@
1490026496,1490028543,NL
1490028544,1490028671,GB
1490028672,1490028799,DE
-1490028800,1490042879,NL
+1490028800,1490038783,NL
+1490039040,1490042879,NL
1490042880,1490053375,CZ
1490053376,1490054143,PL
1490054144,1490059263,CZ
@@ -36800,6 +37277,7 @@
1495148544,1495150591,FR
1495150848,1495151103,GB
1495151616,1495153663,FR
+1495154496,1495154527,IN
1495158784,1495159295,GB
1495160240,1495160255,FR
1495160256,1495160263,GB
@@ -36814,6 +37292,7 @@
1495163408,1495163411,ES
1495163412,1495163415,IT
1495163552,1495163567,FR
+1495165191,1495165191,US
1495165192,1495165195,NL
1495165408,1495165439,FR
1495165696,1495165951,ES
@@ -36843,8 +37322,8 @@
1495228416,1495230463,NL
1495230464,1495234559,RU
1495234560,1495235583,LT
-1495235584,1495236095,GB
-1495236096,1495236351,JP
+1495235584,1495235839,GB
+1495235840,1495236351,JP
1495236352,1495236607,NL
1495238656,1495240703,DE
1495240704,1495242751,FR
@@ -36869,7 +37348,9 @@
1495269376,1495277567,IR
1495277568,1495279615,SE
1495279616,1495279871,DE
-1495279872,1495283711,RO
+1495279872,1495280127,RO
+1495280128,1495280383,NL
+1495280384,1495283711,RO
1495283712,1495285759,MD
1495285760,1495287807,US
1495287808,1495289855,SE
@@ -37004,7 +37485,7 @@
1495425535,1495426047,GB
1495426048,1495426559,RO
1495426560,1495426815,GB
-1495426816,1495427071,PL
+1495426816,1495427071,US
1495427072,1495427583,GB
1495427584,1495428095,RO
1495428096,1495428351,GB
@@ -37125,13 +37606,7 @@
1495541248,1495541759,GB
1495541760,1495543807,ES
1495543808,1495547903,IR
-1495547904,1495548159,US
-1495548160,1495548671,GB
-1495548672,1495548703,RU
-1495548704,1495548735,RO
-1495548736,1495548927,RU
-1495548928,1495549695,GB
-1495549696,1495549951,RU
+1495547904,1495549951,GB
1495549952,1495550463,RO
1495550464,1495550975,BE
1495550976,1495551999,RO
@@ -37141,7 +37616,8 @@
1495554816,1495555071,SE
1495555072,1495556095,RO
1495556096,1495560191,IR
-1495560192,1495566335,RO
+1495560192,1495564287,GB
+1495564288,1495566335,RO
1495566336,1495566591,GB
1495566592,1495566847,RO
1495566848,1495567359,GB
@@ -37199,8 +37675,7 @@
1495620608,1495621375,GB
1495621376,1495621631,RO
1495621632,1495621887,GB
-1495621888,1495622143,BG
-1495622144,1495623167,RO
+1495621888,1495623167,RO
1495623168,1495623679,IR
1495623680,1495623935,MD
1495623936,1495624191,NL
@@ -37230,7 +37705,7 @@
1495653376,1495654399,KZ
1495654400,1495654911,RO
1495654912,1495655167,ES
-1495655168,1495655423,GB
+1495655168,1495655423,BG
1495655424,1495656447,US
1495656448,1495656959,RO
1495656960,1495657215,GB
@@ -37286,7 +37761,9 @@
1495730176,1495731199,IR
1495731200,1495732223,RO
1495732224,1495744511,ES
-1495744512,1495745791,RO
+1495744512,1495745279,RO
+1495745280,1495745535,GB
+1495745536,1495745791,RO
1495745792,1495746047,GB
1495746048,1495747583,RO
1495747584,1495748607,MD
@@ -37309,8 +37786,7 @@
1495759872,1495760127,ES
1495760128,1495760895,RO
1495760896,1495762943,DE
-1495762944,1495764735,GB
-1495764736,1495764991,AU
+1495762944,1495764991,GB
1495764992,1495765503,BG
1495765504,1495765759,GB
1495765760,1495766015,NL
@@ -37342,7 +37818,7 @@
1495790336,1495791359,RO
1495791360,1495791615,GB
1495791616,1495793407,RO
-1495793408,1495793663,PL
+1495793408,1495793663,US
1495793664,1495794687,DE
1495794688,1495795199,LT
1495795200,1495795327,FR
@@ -37395,7 +37871,9 @@
1495845632,1495845887,GB
1495845888,1495846655,RO
1495846656,1495847423,GB
-1495847424,1495848191,RO
+1495847424,1495847679,RO
+1495847680,1495847935,NL
+1495847936,1495848191,RO
1495848192,1495848447,PL
1495848448,1495848959,RO
1495848960,1495848979,SE
@@ -37447,9 +37925,7 @@
1495927296,1495927551,GB
1495927552,1495931135,RO
1495931136,1495931391,IT
-1495931392,1495931647,RO
-1495931648,1495931903,BG
-1495931904,1495932159,RO
+1495931392,1495932159,RO
1495932160,1495932415,US
1495932416,1495932671,RO
1495932672,1495932927,GB
@@ -37641,7 +38117,7 @@
1496137728,1496138495,RO
1496138496,1496138751,BG
1496138752,1496139263,IR
-1496139264,1496139775,PL
+1496139264,1496139775,US
1496139776,1496141823,RO
1496141824,1496142335,IR
1496142336,1496142591,GB
@@ -37660,11 +38136,12 @@
1496154112,1496158207,SY
1496158208,1496160255,RO
1496160256,1496162303,IR
-1496162304,1496175615,RO
+1496162304,1496166399,RO
+1496166400,1496170495,GB
+1496170496,1496175615,RO
1496175616,1496177663,IT
1496177664,1496178687,ES
-1496178688,1496178943,RO
-1496178944,1496179199,BG
+1496178688,1496179199,RO
1496179200,1496179455,SE
1496179456,1496179711,DE
1496179712,1496179967,RO
@@ -37745,7 +38222,9 @@
1496262656,1496263167,BG
1496263168,1496263679,RO
1496263680,1496264703,GR
-1496264704,1496268543,RO
+1496264704,1496266751,RO
+1496266752,1496267263,NL
+1496267264,1496268543,RO
1496268544,1496268799,GB
1496268800,1496272895,IR
1496272896,1496274943,SY
@@ -37825,8 +38304,8 @@
1500188672,1500188735,FR
1500188736,1500188799,GB
1500188800,1500190719,FR
-1500190720,1500191999,GB
-1500192000,1500192767,NL
+1500190720,1500191743,GB
+1500191744,1500192767,NL
1500192768,1500194815,RU
1500194816,1500196863,GB
1500196864,1500198911,ES
@@ -37924,7 +38403,9 @@
1502979312,1502979327,FR
1502979328,1502980351,IE
1502980352,1502980607,US
-1502980608,1502981239,IE
+1502980608,1502981215,IE
+1502981216,1502981223,GB
+1502981224,1502981239,IE
1502981240,1502981247,FR
1502981248,1502986239,IE
1502986240,1503002623,NL
@@ -37963,9 +38444,7 @@
1503854592,1503887359,RU
1503887360,1503896411,DE
1503896412,1503896415,AT
-1503896416,1503897367,DE
-1503897368,1503897375,BE
-1503897376,1503898175,DE
+1503896416,1503898175,DE
1503898176,1503898183,IT
1503898184,1503898239,DE
1503898240,1503898303,RO
@@ -38044,7 +38523,11 @@
1505316608,1505316863,SI
1505316864,1505320959,RU
1505320960,1505329151,AT
-1505329152,1505333247,US
+1505329152,1505331855,US
+1505331856,1505331871,GB
+1505331872,1505332591,US
+1505332592,1505332639,GB
+1505332640,1505333247,US
1505333248,1505336575,IE
1505336576,1505336831,GB
1505336832,1505337343,IE
@@ -38065,8 +38548,8 @@
1505427456,1505435647,UA
1505435648,1505443839,MD
1505443840,1505460223,GB
-1505460224,1505470975,CZ
-1505470976,1505475583,US
+1505460224,1505471487,CZ
+1505471488,1505475583,US
1505475584,1505478655,CZ
1505478656,1505482751,DE
1505482752,1505484799,LB
@@ -38118,7 +38601,10 @@
1505745348,1505747199,GB
1505747200,1505747455,RU
1505747456,1505747711,GB
-1505747712,1505755135,RU
+1505747712,1505749503,RU
+1505749504,1505750015,RO
+1505750016,1505751039,BG
+1505751040,1505755135,RU
1505755136,1506017279,GB
1506017280,1506082815,IR
1506082816,1506148351,GB
@@ -38132,6 +38618,8 @@
1506328576,1506330623,FI
1506330624,1506332671,NL
1506332672,1506334719,PL
+1506334720,1506335743,TR
+1506335744,1506336767,CH
1506336768,1506338815,PL
1506338816,1506340863,UA
1506340864,1506342911,RO
@@ -38187,7 +38675,9 @@
1506458360,1506458367,CH
1506458368,1506459763,GB
1506459764,1506459767,FR
-1506459768,1506459968,GB
+1506459768,1506459781,GB
+1506459782,1506459782,FR
+1506459783,1506459968,GB
1506459969,1506459969,FR
1506459970,1506460151,GB
1506460152,1506460159,FR
@@ -38699,7 +39189,9 @@
1518708839,1518709552,LV
1518709553,1518709553,LT
1518709554,1518723071,LV
-1518723072,1518731263,SE
+1518723072,1518731103,SE
+1518731104,1518731135,HR
+1518731136,1518731263,SE
1518731264,1518755839,LT
1518755840,1518759935,SE
1518759936,1518780415,LT
@@ -38818,7 +39310,10 @@
1532661760,1532665855,DE
1532665856,1532674047,PL
1532674048,1532675071,NL
-1532675072,1532680191,UA
+1532675072,1532676095,UA
+1532676096,1532678143,MD
+1532678144,1532679167,UA
+1532679168,1532680191,RU
1532680192,1532681215,UZ
1532681216,1532681471,UA
1532681472,1532681727,RU
@@ -38835,7 +39330,9 @@
1532782848,1532784639,BG
1532784640,1532785151,NL
1532785152,1532785407,IR
-1532785408,1532786943,BG
+1532785408,1532785663,BG
+1532785664,1532786687,DE
+1532786688,1532786943,BG
1532786944,1532788735,IR
1532788736,1532788991,BG
1532788992,1532790783,IR
@@ -38855,7 +39352,8 @@
1532806144,1532806399,GB
1532806400,1532808191,BG
1532808192,1532811263,IR
-1532811264,1532812031,BG
+1532811264,1532811775,BG
+1532811776,1532812031,DE
1532812032,1532812287,RO
1532812288,1532813311,IR
1532813312,1532814335,BG
@@ -38986,17 +39484,15 @@
1533805568,1533807615,NL
1533807616,1533808639,US
1533808640,1533812735,RU
-1533812736,1533812991,GB
-1533812992,1533813247,AG
-1533813248,1533813759,GB
+1533812736,1533813759,GB
1533813760,1533814271,TR
1533814272,1533814783,ID
1533814784,1533815039,AG
1533815040,1533815295,GB
1533815296,1533815551,RU
1533815552,1533815807,GB
-1533815808,1533816831,RU
-1533816832,1533818879,GB
+1533815808,1533817855,RU
+1533817856,1533818879,GB
1533818880,1533819903,NL
1533819904,1533820927,RU
1533820928,1533829119,DE
@@ -39097,9 +39593,7 @@
1534714752,1534714767,DE
1534714768,1534714871,FR
1534714872,1534714875,ES
-1534714876,1534714975,FR
-1534714976,1534714991,GB
-1534714992,1534715207,FR
+1534714876,1534715207,FR
1534715208,1534715211,GB
1534715212,1534715215,FR
1534715216,1534715231,GB
@@ -39259,7 +39753,8 @@
1535512304,1535512319,NL
1535512320,1535512779,FR
1535512780,1535512783,PL
-1535512784,1535512799,FR
+1535512784,1535512787,NL
+1535512788,1535512799,FR
1535512800,1535512831,DE
1535512832,1535514767,FR
1535514768,1535514783,LT
@@ -39327,8 +39822,8 @@
1535547488,1535548091,FR
1535548092,1535548095,PL
1535548096,1535548159,IT
-1535548160,1535548223,FR
-1535548224,1535548415,ES
+1535548160,1535548287,FR
+1535548288,1535548415,ES
1535548416,1535548463,FR
1535548464,1535548479,LT
1535548480,1535548991,FR
@@ -39546,11 +40041,7 @@
1535836160,1535868927,CZ
1535868928,1535901695,BG
1535901696,1535934463,GR
-1535934464,1535966337,KW
-1535966338,1535966338,SA
-1535966339,1535966343,KW
-1535966344,1535966344,SA
-1535966345,1535967231,KW
+1535934464,1535967231,KW
1535967232,1535999999,AT
1536000000,1536032767,NL
1536032768,1536036863,LV
@@ -39766,7 +40257,7 @@
1539301376,1539309567,RU
1539309568,1539310591,PL
1539310592,1539311615,IQ
-1539311616,1539312639,RU
+1539311616,1539312639,GB
1539312640,1539313663,DE
1539313664,1539314687,GB
1539314688,1539315711,RU
@@ -39783,9 +40274,7 @@
1539325952,1539326975,KG
1539326976,1539329023,RU
1539329024,1539330047,PL
-1539330048,1539330303,RU
-1539330304,1539330559,DE
-1539330560,1539331071,RU
+1539330048,1539331071,RU
1539331072,1539332095,NL
1539332096,1539333119,PL
1539333120,1539335167,RU
@@ -40104,6 +40593,7 @@
1539572736,1539573759,RU
1539573760,1539575807,PL
1539575808,1539576831,IT
+1539576832,1539577855,AT
1539577856,1539578879,NL
1539578880,1539579903,GB
1539579904,1539580927,RU
@@ -40159,7 +40649,7 @@
1539643392,1539644415,UA
1539644416,1539645439,DE
1539645440,1539646463,GB
-1539646464,1539647487,RO
+1539646464,1539647487,US
1539647488,1539648511,TR
1539648512,1539649023,CY
1539649024,1539649535,LB
@@ -40204,6 +40694,7 @@
1539692544,1539694591,UA
1539694592,1539695615,PL
1539695616,1539696639,GB
+1539696640,1539697663,IE
1539697664,1539698687,UA
1539698688,1539699711,ES
1539699712,1539700735,RO
@@ -40324,7 +40815,7 @@
1539736064,1539736319,RU
1539736320,1539736575,HU
1539736576,1539736831,BG
-1539736832,1539737087,UA
+1539736832,1539737087,GI
1539737088,1539737343,KW
1539737344,1539737599,SE
1539737600,1539737855,RO
@@ -40673,7 +41164,7 @@
1539875840,1539876863,RU
1539876864,1539877887,ES
1539877888,1539878911,PL
-1539878912,1539879935,RU
+1539878912,1539879935,GB
1539879936,1539880959,UA
1539880960,1539881983,PL
1539881984,1539883007,NL
@@ -40692,7 +41183,9 @@
1539896320,1539897343,ES
1539897344,1539898367,UA
1539898368,1539899391,LT
-1539899392,1539902463,RU
+1539899392,1539900415,RU
+1539900416,1539901439,GB
+1539901440,1539902463,RU
1539902464,1539903487,LV
1539903488,1539904511,PL
1539904512,1539905535,CZ
@@ -40952,9 +41445,7 @@
1540199424,1540200447,CH
1540200448,1540201471,IL
1540201472,1540202495,UA
-1540202496,1540203519,RU
-1540203520,1540204543,UA
-1540204544,1540205567,RU
+1540202496,1540205567,RU
1540205568,1540206591,DE
1540206592,1540208639,RU
1540208640,1540209663,NO
@@ -41118,8 +41609,7 @@
1540316160,1540316671,DE
1540317696,1540318719,RU
1540318720,1540319231,RO
-1540319232,1540319743,UA
-1540319744,1540320255,RU
+1540319232,1540320255,UA
1540320768,1540321279,GB
1540321280,1540321791,SE
1540321792,1540322303,RU
@@ -41625,8 +42115,8 @@
1540515840,1540516863,RU
1540516864,1540517887,UA
1540517888,1540518911,RU
-1540518912,1540519935,UA
-1540519936,1540521983,RU
+1540518912,1540520959,UA
+1540520960,1540521983,RU
1540521984,1540523007,PL
1540523008,1540524031,RU
1540524032,1540525055,AL
@@ -42012,7 +42502,7 @@
1540716288,1540716543,UA
1540717056,1540717311,CZ
1540717312,1540717823,PL
-1540717824,1540718335,RU
+1540717824,1540718079,RU
1540718336,1540718591,NO
1540718592,1540718847,CH
1540718848,1540719103,IT
@@ -43475,7 +43965,9 @@
1541474304,1541475327,PL
1541475328,1541476351,RO
1541476352,1541477375,GB
-1541477376,1541479423,RU
+1541477376,1541478911,RU
+1541478912,1541479167,KZ
+1541479168,1541479423,RU
1541479424,1541480447,PL
1541480448,1541480959,US
1541480960,1541481471,RO
@@ -43734,8 +44226,7 @@
1541671424,1541671679,RU
1541671680,1541671935,PL
1541671936,1541672959,TR
-1541672960,1541674495,RS
-1541674496,1541675007,KG
+1541672960,1541675007,RS
1541675008,1541675519,IE
1541675520,1541676031,RU
1541676032,1541676287,PL
@@ -43882,7 +44373,6 @@
1541758976,1541760255,RU
1541760256,1541760511,UA
1541760512,1541761023,CH
-1541761024,1541761535,KG
1541761536,1541762047,PL
1541762048,1541763583,RU
1541763584,1541763839,SE
@@ -44311,12 +44801,12 @@
1542005248,1542005503,PL
1542005504,1542005759,DE
1542005760,1542006271,HR
-1542006272,1542008831,RU
+1542006784,1542008831,RU
1542008832,1542009343,UA
1542009344,1542009599,SE
1542009600,1542009855,FR
1542009856,1542010367,NL
-1542010368,1542010879,RU
+1542010624,1542010879,RU
1542010880,1542011903,IR
1542011904,1542012159,PL
1542012160,1542012415,RU
@@ -44417,7 +44907,6 @@
1542074624,1542074879,PL
1542074880,1542075391,NL
1542075392,1542075647,CH
-1542075904,1542076159,IE
1542076160,1542076415,DE
1542076416,1542077439,RO
1542077440,1542078975,RU
@@ -45027,7 +45516,8 @@
1542437376,1542437631,NL
1542437632,1542437887,UA
1542437888,1542438399,SE
-1542438400,1542438911,RU
+1542438400,1542438655,SC
+1542438656,1542438911,RU
1542438912,1542439167,KZ
1542439168,1542439423,SI
1542439424,1542439679,RO
@@ -45080,7 +45570,7 @@
1542464512,1542464767,RU
1542464768,1542465023,TR
1542465024,1542465535,RU
-1542465536,1542466559,XK
+1542465536,1542466559,RS
1542466560,1542466815,PL
1542466816,1542467071,RU
1542467072,1542467583,PL
@@ -45153,7 +45643,7 @@
1542506496,1542507007,NL
1542507008,1542507519,RU
1542507520,1542508543,NO
-1542508544,1542510079,RU
+1542508544,1542510591,RU
1542510592,1542510847,SI
1542510848,1542511103,DE
1542511104,1542511871,RU
@@ -45174,7 +45664,7 @@
1542516992,1542517247,FR
1542517248,1542517759,RU
1542517760,1542518015,UA
-1542518016,1542518271,SK
+1542518016,1542518271,PA
1542518272,1542518783,LV
1542518784,1542519807,PL
1542519808,1542520319,SE
@@ -45286,7 +45776,9 @@
1542683392,1542683647,RS
1542683648,1542684159,RU
1542684160,1542684671,IR
-1542684672,1542685695,LT
+1542684672,1542684927,LT
+1542684928,1542685183,RU
+1542685184,1542685695,LT
1542685696,1542685951,RU
1542685952,1542686719,LT
1542686720,1542687743,US
@@ -45483,11 +45975,13 @@
1546036224,1546037247,KR
1546037248,1546038271,US
1546038272,1546038783,LU
-1546038784,1546040319,RU
+1546038784,1546039807,RU
+1546039808,1546040063,JP
+1546040064,1546040319,RU
1546040320,1546040831,TR
-1546040832,1546041343,RU
-1546041344,1546041855,NL
-1546041856,1546059775,RU
+1546040832,1546041343,SG
+1546041344,1546042367,NL
+1546042368,1546059775,RU
1546059776,1546063871,SE
1546063872,1546067967,DE
1546067968,1546072063,SE
@@ -45803,10 +46297,10 @@
1550979072,1550983167,IR
1550983168,1550983935,RO
1550983936,1550984191,GB
-1550984192,1550984447,KR
-1550984448,1550984703,RO
-1550984704,1550984959,BG
-1550984960,1550985215,RO
+1550984192,1550984228,KR
+1550984229,1550984229,ES
+1550984230,1550984447,KR
+1550984448,1550985215,RO
1550985216,1550987263,PS
1550987264,1550988287,IR
1550988288,1550988543,RO
@@ -45816,8 +46310,7 @@
1550989312,1550990335,ES
1550990336,1550991359,AU
1550991360,1550995455,IR
-1550995456,1550995967,RO
-1550995968,1550996223,BG
+1550995456,1550996223,RO
1550996224,1550996479,AU
1550996480,1550998527,RO
1550998528,1550998783,IT
@@ -45918,7 +46411,9 @@
1558103160,1558103167,GB
1558103168,1558103967,FR
1558103968,1558103999,ES
-1558104000,1558106901,FR
+1558104000,1558104815,FR
+1558104816,1558104831,DE
+1558104832,1558106901,FR
1558106902,1558106902,DE
1558106903,1558107391,FR
1558107392,1558107455,NL
@@ -45948,8 +46443,7 @@
1558126592,1558128639,RU
1558128640,1558128895,US
1558128896,1558129151,LU
-1558129152,1558129407,RU
-1558129408,1558129663,LU
+1558129152,1558129663,RU
1558129664,1558130687,US
1558130688,1558132735,LU
1558132736,1558133247,US
@@ -45978,7 +46472,7 @@
1558141184,1558141184,CY
1558141185,1558141439,LU
1558141440,1558141695,CY
-1558141696,1558141951,LU
+1558141696,1558141951,RU
1558141952,1558142463,PL
1558142464,1558142719,US
1558142720,1558142975,SG
@@ -46124,7 +46618,9 @@
1560117248,1560125439,CZ
1560125440,1560133631,RU
1560133632,1560136703,IR
-1560136704,1560138239,GB
+1560136704,1560138138,GB
+1560138139,1560138139,RU
+1560138140,1560138239,GB
1560138240,1560140799,RU
1560140800,1560141823,CZ
1560141824,1560143871,SY
@@ -46139,17 +46635,15 @@
1565224192,1565224959,BG
1565224960,1565227007,UA
1565227008,1565229055,BG
-1565229056,1565294591,UA
-1565294592,1565302783,US
-1565302784,1565368319,UA
-1565368320,1565376511,RU
-1565376512,1565523967,UA
+1565229056,1565523967,UA
1565523968,1565655039,RU
1565655040,1565786111,AT
1565786112,1565917183,BY
1565917184,1565974527,RS
1565974528,1565975551,XK
-1565975552,1566048255,RS
+1565975552,1565992464,RS
+1565992465,1565992465,AL
+1565992466,1566048255,RS
1566048256,1566052351,RU
1566056448,1566060543,IT
1566060544,1566064639,UA
@@ -46414,7 +46908,7 @@
1567696384,1567696639,FR
1567696640,1567696895,ES
1567696896,1567697919,RO
-1567697920,1567698175,PL
+1567697920,1567698175,US
1567698176,1567698431,SE
1567698432,1567698687,IT
1567698688,1567698943,RO
@@ -46440,7 +46934,7 @@
1567718400,1567719167,RO
1567719168,1567719423,GB
1567719424,1567719935,RO
-1567719936,1567720191,PL
+1567719936,1567720191,US
1567720192,1567720447,NO
1567720448,1567721471,RO
1567721472,1567723519,ES
@@ -46471,7 +46965,8 @@
1567766272,1567767039,RO
1567767040,1567767551,GB
1567767552,1567768575,ES
-1567768576,1567769343,RO
+1567768576,1567769087,NL
+1567769088,1567769343,RO
1567769344,1567769599,NL
1567769600,1567769855,RO
1567769856,1567770111,GB
@@ -46486,7 +46981,9 @@
1567785472,1567785727,TR
1567785728,1567785983,ES
1567785984,1567786239,FR
-1567786240,1567789055,RO
+1567786240,1567786495,RO
+1567786496,1567787007,NL
+1567787008,1567789055,RO
1567789056,1567793151,ES
1567793152,1567795455,RO
1567795456,1567795711,GB
@@ -46560,9 +47057,7 @@
1567870976,1567871999,RO
1567872000,1567873023,ES
1567873024,1567879167,IR
-1567879168,1567880191,RO
-1567880192,1567880703,BG
-1567880704,1567883263,RO
+1567879168,1567883263,RO
1567883264,1567948799,MD
1567948800,1567961087,IR
1567961088,1567965183,MD
@@ -46618,7 +47113,8 @@
1568112640,1568114687,MD
1568114688,1568115711,RO
1568115712,1568118783,MD
-1568118784,1568119807,RO
+1568118784,1568119551,RO
+1568119552,1568119807,NL
1568119808,1568120831,ES
1568120832,1568122879,MD
1568122880,1568129535,RO
@@ -46635,7 +47131,9 @@
1568243712,1568276479,GP
1568276480,1568309247,DE
1568309248,1568342015,RO
-1568342016,1568368639,BG
+1568342016,1568360447,BG
+1568360448,1568360703,DE
+1568360704,1568368639,BG
1568368640,1568369663,DE
1568369664,1568374783,BG
1568374784,1568440319,RU
@@ -46675,14 +47173,16 @@
1570586624,1570590719,PL
1570590720,1570592767,IL
1570592768,1570596863,PL
-1570596864,1570598911,RU
+1570596864,1570597887,RU
+1570597888,1570598911,GB
1570598912,1570600959,PL
1570600960,1570603007,RU
1570603008,1570605055,CZ
1570605056,1570607103,NL
1570607104,1570609151,RU
1570609152,1570611199,PL
-1570611200,1570618367,RU
+1570611200,1570617343,RU
+1570617344,1570618367,GB
1570618368,1570619391,TR
1570619392,1570621439,BA
1570621440,1570621951,DE
@@ -46805,10 +47305,9 @@
1571470848,1571475455,RU
1571475456,1571476479,UZ
1571476480,1571477503,RU
-1571477504,1571477506,CZ
+1571477504,1571477506,UA
1571477507,1571477507,RU
-1571477508,1571477759,CZ
-1571477760,1571478015,UA
+1571477508,1571478015,UA
1571478016,1571478271,RU
1571478272,1571478527,UA
1571478528,1571479551,RU
@@ -46840,8 +47339,7 @@
1571526656,1571526911,UA
1571526912,1571527167,KZ
1571527168,1571527423,UA
-1571527424,1571527679,SK
-1571527680,1571528191,RU
+1571527424,1571528191,RU
1571528192,1571528703,UA
1571528704,1571529215,BY
1571529216,1571529471,CZ
@@ -46984,8 +47482,6 @@
1572098048,1572100095,DK
1572100096,1572102143,CH
1572102144,1572110335,BA
-1572110336,1572110591,US
-1572110592,1572112383,GB
1572112384,1572114431,RU
1572114432,1572116479,BA
1572116480,1572118527,DE
@@ -47395,7 +47891,9 @@
1578609828,1578610687,DE
1578610688,1578610695,FR
1578610696,1578610703,ES
-1578610704,1578611039,FR
+1578610704,1578610779,FR
+1578610780,1578610783,DE
+1578610784,1578611039,FR
1578611040,1578611043,ES
1578611044,1578611075,FR
1578611076,1578611079,HR
@@ -47579,7 +48077,9 @@
1581252608,1581776895,GR
1581776896,1581793279,RU
1581793280,1581809663,PL
-1581809664,1581826047,BG
+1581809664,1581815807,BG
+1581815808,1581816831,LB
+1581816832,1581826047,BG
1581826048,1581842431,GB
1581842432,1581850623,PS
1581850624,1581858815,ES
@@ -47739,7 +48239,7 @@
1585209344,1585210367,CR
1585210368,1585211391,DE
1585211392,1585213439,CZ
-1585213440,1585214463,RU
+1585213440,1585214463,GB
1585214464,1585215487,NO
1585215488,1585217535,NL
1585217536,1585219583,FR
@@ -47785,7 +48285,7 @@
1585266688,1585270783,DE
1585270784,1585272831,IT
1585272832,1585274879,RU
-1585274880,1585275903,KZ
+1585274880,1585275903,CZ
1585275904,1585276927,DE
1585276928,1585278975,FR
1585278976,1585281023,AL
@@ -47934,7 +48434,7 @@
1586393616,1586393631,FR
1586393632,1586393663,NL
1586393664,1586397183,ES
-1586397184,1586398207,RU
+1586397184,1586398207,GB
1586398208,1586399231,NL
1586399232,1586401279,RU
1586401280,1586403327,IT
@@ -48004,7 +48504,15 @@
1587175424,1587177471,PL
1587177472,1587179519,RS
1587200000,1587216383,UA
-1587216384,1587322367,BG
+1587216384,1587305471,BG
+1587305472,1587305727,DE
+1587305728,1587307263,BG
+1587307264,1587307519,DE
+1587307520,1587309055,BG
+1587309056,1587309311,DE
+1587309312,1587315711,BG
+1587315712,1587315967,DE
+1587315968,1587322367,BG
1587322368,1587322623,RS
1587322624,1587347455,BG
1587347456,1587412991,NL
@@ -48040,7 +48548,7 @@
1588619776,1588620031,SG
1588620032,1588620287,ES
1588620288,1588620543,RO
-1588620544,1588620799,PL
+1588620544,1588620799,US
1588620800,1588621311,RO
1588621312,1588625407,MD
1588625408,1588626175,RO
@@ -48056,15 +48564,16 @@
1588640768,1588641279,LT
1588641280,1588641535,RO
1588641536,1588641791,GB
-1588641792,1588642303,CH
+1588641792,1588642303,BG
1588642304,1588642559,DE
1588642560,1588642815,NL
1588642816,1588643071,RO
1588643072,1588643327,NL
-1588643328,1588643839,DE
+1588643328,1588643839,UA
1588643840,1588645887,RO
1588645888,1588646399,GB
-1588646400,1588649983,RO
+1588646400,1588646911,NL
+1588646912,1588649983,RO
1588649984,1588652031,SE
1588652032,1588652159,NL
1588652160,1588654079,LT
@@ -48090,7 +48599,7 @@
1588674560,1588674815,RO
1588674816,1588675071,GB
1588675072,1588675327,RO
-1588675328,1588675583,PL
+1588675328,1588675583,US
1588675584,1588676607,IT
1588676608,1588678655,IR
1588678656,1588680703,RO
@@ -48149,8 +48658,7 @@
1589477376,1589510143,RS
1589510144,1589542911,RU
1589542912,1589547007,BG
-1589547008,1589547263,CA
-1589547264,1589551103,EE
+1589547008,1589551103,EE
1589551104,1589560319,BG
1589560320,1589561343,GI
1589561344,1589563391,NL
@@ -48383,8 +48891,8 @@
1593134592,1593135103,SE
1593135104,1593135359,GB
1593135360,1593135615,IE
-1593135616,1593136895,GB
-1593136896,1593139199,IE
+1593135616,1593137151,GB
+1593137152,1593139199,IE
1593139200,1593140223,NL
1593140224,1593147391,IE
1593147392,1593163775,RU
@@ -48392,13 +48900,7 @@
1593180160,1593196543,NO
1593196544,1593203103,SE
1593203104,1593203135,FI
-1593203136,1593203723,SE
-1593203724,1593203727,NO
-1593203728,1593203743,SE
-1593203744,1593203747,NO
-1593203748,1593205599,SE
-1593205600,1593205607,NO
-1593205608,1593206783,SE
+1593203136,1593206783,SE
1593206784,1593207039,FI
1593207040,1593212927,SE
1593212928,1593229311,PL
@@ -48425,7 +48927,7 @@
1593274368,1593276415,DE
1593276416,1593278463,RU
1593278464,1593280511,KZ
-1593280512,1593282559,RU
+1593280512,1593282559,GB
1593282560,1593284607,AT
1593284608,1593286655,GB
1593286656,1593288703,FR
@@ -48468,7 +48970,6 @@
1593475072,1593491455,HR
1593491456,1593499647,DE
1593499648,1593503743,GB
-1593503744,1593505791,CZ
1593505792,1593540607,RU
1593540608,1593573375,PL
1593573376,1593606143,LU
@@ -48581,8 +49082,7 @@
1596948480,1596950527,BY
1596950528,1596951551,UA
1596951552,1596951807,RU
-1596951808,1596952063,NL
-1596952064,1596952831,UA
+1596951808,1596952831,UA
1596952832,1596953087,RU
1596953088,1596953599,CZ
1596953600,1596954623,UA
@@ -48782,7 +49282,7 @@
1602349056,1602351103,RU
1602351104,1602353151,CZ
1602353152,1602355199,ES
-1602355200,1602356223,RU
+1602355200,1602356223,GB
1602356224,1602357247,PL
1602357248,1602359295,FR
1602359296,1602361343,DE
@@ -48810,7 +49310,7 @@
1602406400,1602408447,DE
1602408448,1602410495,DK
1602410496,1602412543,NO
-1602412544,1602414591,RU
+1602412544,1602414591,GB
1602414592,1602416639,NL
1602416640,1602418687,IR
1602418688,1602420735,DE
@@ -48874,19 +49374,19 @@
1603067904,1603071999,GB
1603072000,1603076095,CZ
1603076096,1603080191,RU
-1603080192,1603080703,IN
+1603080192,1603080703,KE
1603080704,1603080831,US
1603080832,1603080959,SE
1603080960,1603081087,DE
-1603081088,1603081215,IN
+1603081088,1603081215,KE
1603081216,1603081247,GB
1603081248,1603081255,NO
1603081256,1603081263,FI
1603081264,1603081279,GB
1603081280,1603081295,US
-1603081296,1603081407,IN
+1603081296,1603081407,KE
1603081408,1603081471,ES
-1603081472,1603082239,IN
+1603081472,1603082239,KE
1603082240,1603082495,DE
1603082496,1603082751,GT
1603082752,1603083007,ES
@@ -48902,7 +49402,7 @@
1603083584,1603083615,DE
1603083616,1603083647,LU
1603083648,1603083775,DE
-1603083776,1603084031,IN
+1603083776,1603084031,KE
1603084032,1603088383,IT
1603088384,1603092479,LB
1603092480,1603100671,NO
@@ -49025,23 +49525,8 @@
1604853760,1604870143,HU
1604870144,1604878335,HR
1604878336,1604886527,DE
-1604886528,1604886783,NL
-1604886784,1604887039,DE
-1604887040,1604887295,NL
-1604887296,1604888063,DE
-1604888064,1604888831,NL
-1604888832,1604889599,TR
-1604889600,1604890111,DE
-1604890112,1604890367,NL
-1604890368,1604890879,TR
-1604890880,1604891967,DE
-1604891968,1604892159,NL
-1604892160,1604892927,DE
-1604892928,1604893183,HK
-1604893184,1604893375,NL
-1604893376,1604893951,DE
-1604893952,1604894463,TR
-1604894464,1604894719,DE
+1604886528,1604890623,NL
+1604890624,1604894719,GB
1604894720,1604902031,CZ
1604902032,1604902039,SK
1604902040,1604902911,CZ
@@ -49311,9 +49796,7 @@
1607986688,1607988223,RU
1607988224,1607989247,KG
1607989248,1607991295,RU
-1607991296,1608012415,FI
-1608012416,1608012423,DE
-1608012424,1608122367,FI
+1607991296,1608122367,FI
1608122368,1608253439,SA
1608253440,1608384511,RU
1608384512,1608515583,DE
@@ -49416,9 +49899,9 @@
1652293632,1652310015,CA
1652310016,1652481279,US
1652481280,1652481791,CN
-1652481792,1652647319,US
-1652647320,1652647327,IL
-1652647328,1652649543,US
+1652481792,1652555775,US
+1652555776,1652621311,SE
+1652621312,1652649543,US
1652649544,1652649551,CA
1652649552,1652655487,US
1652655488,1652655503,IN
@@ -49531,7 +50014,7 @@
1697997824,1697998847,CN
1697998848,1698004991,JP
1698004992,1698013183,IN
-1698013184,1698021375,US
+1698013184,1698021375,SG
1698021376,1698029567,NZ
1698029568,1698037759,PK
1698037760,1698103295,CN
@@ -49578,7 +50061,6 @@
1701093376,1701117951,SG
1701117952,1701134335,NC
1701134336,1701142527,CN
-1701142528,1701143551,HK
1701143552,1701143807,CN
1701143808,1701144063,TW
1701144064,1701150719,CN
@@ -49642,23 +50124,44 @@
1710972672,1710972927,TW
1710972928,1711210495,CN
1711210496,1711276031,ID
+1717567488,1718091775,MA
1718616064,1719140351,MU
-1720057856,1720123391,ZA
-1720123392,1720156159,SC
-1720156160,1720164351,ZA
+1719140352,1719664639,SD
+1719894016,1719926783,NG
+1719926784,1719992319,ZA
+1720057856,1720077311,ZA
+1720077312,1720078335,MU
+1720080384,1720082431,ZA
+1720082432,1720086527,BI
+1720086528,1720090623,ZA
+1720091648,1720092671,ZA
+1720092672,1720093695,BW
+1720096768,1720098815,ZA
+1720098816,1720102911,BW
+1720102912,1720123391,ZA
+1720123392,1720127487,TZ
+1720127488,1720143871,SC
+1720143872,1720147967,KE
+1720147968,1720164351,ZA
1720166400,1720168447,KE
+1720168448,1720170495,CG
+1720172032,1720172287,ZA
1720172544,1720180735,NG
1720180736,1720184831,RE
1720184832,1720186879,ZA
1720186880,1720187903,MA
1720188928,1720451071,CI
-1720451072,1720475647,ZA
+1720451072,1720459263,ZA
+1720459264,1720463359,NG
+1720463360,1720475647,ZA
1720475648,1720477695,NG
+1720477696,1720478719,ZA
1720481792,1720483839,ZM
1720483840,1720492031,GM
1720492032,1720496127,ZA
1720496128,1720500223,MU
1720500224,1720516607,KE
+1720516608,1720532991,CG
1720532992,1720545279,ZA
1720545280,1720547327,BW
1720547328,1720566783,ZA
@@ -49668,6 +50171,7 @@
1720572928,1720573951,LR
1720573952,1720574975,ZA
1720574976,1720575999,GH
+1720576000,1720576255,ZA
1720576256,1720576767,NG
1720576768,1720577023,ZA
1720577024,1720578047,SC
@@ -49789,7 +50293,6 @@
1728155648,1728157695,MY
1728157696,1728158463,HK
1728158464,1728158719,NL
-1728158720,1728159743,HK
1728159744,1728161791,TH
1728161792,1728162815,CN
1728162816,1728163839,SG
@@ -50036,7 +50539,8 @@
1728458752,1728459775,HK
1728459776,1728460799,ID
1728460800,1728462847,JP
-1728462848,1728463871,US
+1728462848,1728463359,NZ
+1728463360,1728463871,US
1728463872,1728464895,JP
1728464896,1728465919,KR
1728465920,1728466943,CN
@@ -50262,7 +50766,6 @@
1728674816,1728675839,ID
1728675840,1728676863,KR
1728676864,1728678911,BD
-1728678912,1728679935,PG
1728679936,1728680959,ID
1728680960,1728681983,MY
1728681984,1728683007,CN
@@ -50527,9 +51030,7 @@
1728918528,1728919551,KR
1728919552,1728920575,AU
1728920576,1728921599,JP
-1728921600,1728922100,AF
-1728922101,1728922101,DE
-1728922102,1728922623,AF
+1728921600,1728922623,AF
1728922624,1728923647,AU
1728923648,1728924159,HK
1728924160,1728924671,MY
@@ -51160,7 +51661,8 @@
1729548288,1729549311,AU
1729549312,1729550335,TW
1729551360,1729552383,KR
-1729552384,1729553407,AU
+1729552384,1729553151,AU
+1729553152,1729553407,JP
1729553408,1729554431,CN
1729554432,1729554943,ID
1729554944,1729555455,NZ
@@ -51263,7 +51765,6 @@
1729640448,1729641471,ID
1729641472,1729642495,IN
1729642496,1729643519,AU
-1729643520,1729644543,JP
1729644544,1729645823,ID
1729645824,1729646079,SG
1729646592,1729648639,IN
@@ -51349,7 +51850,6 @@
1729734656,1729736703,IN
1729736704,1729737727,PH
1729737728,1729738751,AU
-1729738752,1729739775,BD
1729739776,1729740799,NZ
1729740800,1729742335,ID
1729742336,1729742847,PH
@@ -51364,7 +51864,7 @@
1729750016,1729750527,VU
1729750528,1729751039,IN
1729751040,1729753087,TW
-1729753088,1729754111,TH
+1729753088,1729754111,MM
1729754112,1729755135,NZ
1729755136,1729756159,BD
1729756160,1729757183,HK
@@ -51401,7 +51901,7 @@
1729789952,1729790975,ID
1729790976,1729791999,CN
1729792000,1729793023,BD
-1729793024,1729794047,IN
+1729793024,1729794047,CA
1729794048,1729795071,HK
1729795072,1729796095,MY
1729796096,1729797119,JP
@@ -51410,7 +51910,6 @@
1729800192,1729800703,IN
1729800704,1729801215,MY
1729801216,1729802239,AU
-1729802240,1729803263,MY
1729803264,1729804287,TH
1729804288,1729805311,PK
1729806336,1729807359,MN
@@ -52084,7 +52583,6 @@
1730778112,1730780159,CN
1730780160,1730781183,AU
1730781184,1730783231,CN
-1730783232,1730783487,IN
1730783488,1730783743,ID
1730783744,1730783999,IN
1730784000,1730784255,ID
@@ -52615,7 +53113,6 @@
1731484672,1731485695,VN
1731485696,1731488767,CN
1731488768,1731489791,JP
-1731489792,1731490559,HK
1731490560,1731490815,TW
1731490816,1731491839,AU
1731491840,1731492863,ID
@@ -52971,12 +53468,12 @@
1731896320,1731899391,IN
1731899392,1731900415,HK
1731900416,1731900671,IN
-1731900928,1731901439,CN
+1731900928,1731901439,HK
1731901440,1731903487,IN
1731903488,1731904511,AU
1731905536,1731908607,IN
-1731908608,1731908863,AU
-1731908864,1731909631,NZ
+1731908608,1731909119,AU
+1731909120,1731909631,NZ
1731910656,1731911679,AU
1731911680,1731912703,KH
1731912704,1731913727,NZ
@@ -53102,7 +53599,6 @@
1732077568,1732078591,CN
1732078592,1732080639,IN
1732080640,1732081663,ID
-1732081664,1732082687,HK
1732082688,1732083711,MY
1732083712,1732084735,AU
1732084736,1732085759,IN
@@ -53292,13 +53788,9 @@
1732424712,1732424719,CN
1732424720,1732424751,HK
1732424752,1732424755,CN
-1732424756,1732424767,HK
-1732424768,1732424831,CN
-1732424832,1732424863,HK
-1732424864,1732424871,CN
-1732424872,1732425007,HK
-1732425008,1732425015,CN
-1732425016,1732425727,HK
+1732424756,1732424759,HK
+1732424760,1732424831,CN
+1732424832,1732425727,HK
1732425728,1732426751,KH
1732426752,1732428799,KR
1732428800,1732429823,ID
@@ -53554,8 +54046,8 @@
1732744192,1732746239,HK
1732746240,1732747263,JP
1732747264,1732748287,ID
-1732748288,1732750335,IN
-1732750336,1732751359,NL
+1732748288,1732750847,IN
+1732750848,1732751359,NL
1732751360,1732752383,HK
1732752384,1732754431,VN
1732754432,1732754687,AU
@@ -54347,7 +54839,7 @@
1733607424,1733608447,ID
1733608448,1733609471,JP
1733609472,1733609983,ID
-1733609984,1733611519,IN
+1733609984,1733610495,IN
1733611520,1733612543,ID
1733612544,1733613567,IN
1733613568,1733614591,SG
@@ -54365,7 +54857,9 @@
1733625856,1733626879,IN
1733626880,1733627903,ID
1733627904,1733628927,IN
-1733628928,1733630975,CN
+1733628928,1733630850,CN
+1733630851,1733630851,JP
+1733630852,1733630975,CN
1733630976,1733631999,NZ
1733632000,1733633023,BD
1733633024,1733634047,AU
@@ -54457,7 +54951,6 @@
1733715968,1733716991,IN
1733716992,1733718015,BD
1733718016,1733719039,AU
-1733719040,1733720063,IN
1733720064,1733721087,PH
1733721088,1733722111,AF
1733722624,1733723135,MY
@@ -54562,7 +55055,7 @@
1733839872,1733840383,IN
1733840384,1733840639,AU
1733840640,1733840895,SG
-1733840896,1733843967,IN
+1733840896,1733842943,IN
1733843968,1733844991,HK
1733844992,1733847039,CN
1733847040,1733848063,NZ
@@ -54603,10 +55096,9 @@
1733892096,1733893119,BD
1733893120,1733894143,CN
1733894144,1733895167,ID
-1733895168,1733895679,IN
+1733895424,1733895679,IN
1733895680,1733896191,AU
1733896192,1733897215,IN
-1733897216,1733898239,KR
1733898240,1733899263,MM
1733899264,1733903359,IN
1733903360,1733904383,US
@@ -54770,7 +55262,6 @@
1734078464,1734079487,MY
1734079488,1734081535,IN
1734081536,1734086655,CN
-1734086656,1734086911,NZ
1734086912,1734087167,AU
1734087168,1734087423,MY
1734087424,1734087679,IN
@@ -54881,7 +55372,7 @@
1734209536,1734210559,IN
1734210560,1734211583,ID
1734211584,1734212607,IN
-1734212608,1734213119,JP
+1734212608,1734213119,SG
1734213120,1734213375,AF
1734213376,1734213631,SG
1734213632,1734216703,ID
@@ -54918,7 +55409,7 @@
1734250496,1734251519,MM
1734251520,1734252543,HK
1734252544,1734253823,AU
-1734253824,1734254079,CA
+1734253824,1734254079,IN
1734254080,1734254591,NP
1734254592,1734255615,CN
1734255616,1734255871,ID
@@ -55029,7 +55520,7 @@
1734352384,1734352895,IN
1734352896,1734353919,NP
1734353920,1734354943,BD
-1734354944,1734359039,IN
+1734354944,1734358015,IN
1734359040,1734360063,AU
1734360064,1734361087,MO
1734361088,1734362111,JP
@@ -55100,7 +55591,6 @@
1734446592,1734447103,MY
1734447104,1734449151,CN
1734449152,1734449407,MY
-1734449408,1734449663,IN
1734449664,1734449919,PK
1734449920,1734450175,AU
1734450176,1734451199,TW
@@ -55127,7 +55617,6 @@
1734474240,1734474495,US
1734474496,1734474751,ID
1734474752,1734475775,AU
-1734475776,1734476799,IN
1734476800,1734477823,TH
1734477824,1734478847,HK
1734478848,1734479359,AU
@@ -55231,7 +55720,6 @@
1734571008,1734573055,CN
1734573056,1734574079,JP
1734574080,1734575103,BD
-1734575104,1734579199,CN
1734579200,1734580223,IN
1734580224,1734581247,CN
1734581248,1734582271,IN
@@ -55327,8 +55815,7 @@
1734669568,1734669823,IN
1734669824,1734670335,ID
1734670336,1734672383,CN
-1734672384,1734672639,HK
-1734672640,1734673407,US
+1734672384,1734673407,HK
1734673408,1734676479,CN
1734676480,1734677503,MM
1734677504,1734678527,ID
@@ -55411,9 +55898,7 @@
1734738432,1734738687,IN
1734738688,1734738943,JP
1734738944,1734739199,RU
-1734739200,1734739455,HK
-1734739456,1734739711,MO
-1734739712,1734739967,HK
+1734739200,1734739967,HK
1734739968,1734740991,AU
1734740992,1734742015,ID
1734742016,1734743039,US
@@ -55435,7 +55920,7 @@
1734750208,1734750719,HK
1734750720,1734751487,NZ
1734751488,1734751743,AU
-1734751744,1734753279,IN
+1734752256,1734753279,IN
1734753280,1734754303,ID
1734754304,1734757375,IN
1734757376,1734759423,CN
@@ -55640,10 +56125,10 @@
1734943744,1734946815,IN
1734946816,1734947071,GB
1734947072,1734947327,US
-1734947328,1734947839,GB
+1734947328,1734947583,GB
+1734947584,1734947839,US
1734947840,1734948863,ID
-1734948864,1734949375,HK
-1734949376,1734950911,CN
+1734948864,1734950911,CN
1734950912,1734952959,ID
1734952960,1734953215,IN
1734953216,1734953471,TH
@@ -55819,7 +56304,8 @@
1735112960,1735113215,AU
1735113216,1735113727,ID
1735113728,1735115775,CN
-1735115776,1735116799,AU
+1735115776,1735116287,AU
+1735116288,1735116799,SG
1735116800,1735117823,VN
1735117824,1735118335,ID
1735118336,1735118591,IN
@@ -56249,7 +56735,7 @@
1735538688,1735539711,IN
1735539712,1735540223,BD
1735540224,1735540479,KR
-1735540480,1735541759,IN
+1735540736,1735541759,IN
1735541760,1735543807,CN
1735543808,1735546879,ID
1735546880,1735547903,KH
@@ -56260,7 +56746,7 @@
1735556096,1735557119,KR
1735557120,1735557631,AF
1735557632,1735558143,AU
-1735558144,1735558399,CN
+1735558144,1735558399,HK
1735558400,1735558655,TW
1735558656,1735559167,JP
1735559168,1735561471,ID
@@ -56387,8 +56873,7 @@
1735661824,1735662079,AF
1735662080,1735665663,IN
1735665664,1735666687,CN
-1735666688,1735666943,HK
-1735666944,1735667711,MY
+1735666688,1735667711,MY
1735667712,1735667967,NP
1735667968,1735668223,BD
1735668224,1735668735,TH
@@ -56482,8 +56967,7 @@
1735743488,1735744511,CN
1735744512,1735745535,NP
1735745536,1735746559,AU
-1735746560,1735747327,HK
-1735747328,1735747583,JP
+1735746560,1735747583,HK
1735747584,1735748095,AU
1735748096,1735748351,TW
1735748352,1735748607,AU
@@ -56495,7 +56979,8 @@
1735751680,1735752703,HK
1735752704,1735753727,IN
1735753728,1735754751,SG
-1735754752,1735756799,CN
+1735754752,1735755775,HK
+1735755776,1735756799,CN
1735756800,1735757055,PH
1735757056,1735757311,MY
1735757312,1735757823,BD
@@ -56516,7 +57001,167 @@
1735771136,1735772159,PH
1735772160,1735773183,IN
1735773184,1735774207,ID
-1735774208,1735778303,IN
+1735774208,1735777279,IN
+1735777280,1735778303,CN
+1735778304,1735779327,TW
+1735779328,1735780351,BD
+1735780352,1735782399,IN
+1735782400,1735784447,VN
+1735784448,1735785471,HK
+1735785472,1735786495,SG
+1735786496,1735787007,BD
+1735787008,1735787263,IN
+1735787264,1735787519,ID
+1735787520,1735789567,IN
+1735789568,1735790591,AU
+1735790592,1735791103,IN
+1735791104,1735791359,BD
+1735791360,1735791614,HK
+1735791615,1735791615,CN
+1735791616,1735792639,MY
+1735792640,1735794687,TW
+1735794688,1735795199,AU
+1735795200,1735795711,IN
+1735795712,1735796735,CN
+1735796736,1735797759,HK
+1735797760,1735798783,KH
+1735798784,1735799295,HK
+1735799296,1735799551,IN
+1735799552,1735799807,NZ
+1735799808,1735805951,CN
+1735805952,1735806975,BD
+1735806976,1735807487,SG
+1735807488,1735807743,ID
+1735807744,1735807999,IN
+1735808000,1735809023,BD
+1735809024,1735810047,CN
+1735810048,1735811071,JP
+1735811072,1735815167,ID
+1735815168,1735817215,IN
+1735817216,1735817471,AU
+1735817472,1735817727,ID
+1735817728,1735817983,AU
+1735817984,1735818239,JP
+1735818240,1735823359,ID
+1735823360,1735824383,IN
+1735824384,1735825407,TW
+1735825408,1735825919,BD
+1735825920,1735826431,JP
+1735826432,1735826687,MY
+1735826688,1735827711,IN
+1735827712,1735828479,AU
+1735828480,1735830783,IN
+1735830784,1735831039,CN
+1735831040,1735831551,PH
+1735831552,1735832575,ID
+1735832576,1735833599,IN
+1735833600,1735834623,ID
+1735834624,1735835647,IN
+1735835648,1735843839,CN
+1735843840,1735847935,ID
+1735847936,1735853055,CN
+1735853056,1735855103,ID
+1735855104,1735857151,CN
+1735857152,1735858175,BD
+1735858176,1735859199,AF
+1735859200,1735860223,CN
+1735860224,1735860735,AU
+1735860736,1735860991,MY
+1735860992,1735861247,IN
+1735861248,1735863295,ID
+1735863296,1735864319,CN
+1735864320,1735866367,ID
+1735866368,1735867391,IN
+1735867392,1735869439,ID
+1735869440,1735870463,BD
+1735870464,1735870975,AU
+1735870976,1735871231,IN
+1735871232,1735871487,MV
+1735871488,1735873535,IN
+1735873536,1735874559,VN
+1735874560,1735875583,JP
+1735875584,1735875839,MN
+1735875840,1735876095,PH
+1735876096,1735876607,BD
+1735876608,1735877631,KH
+1735877632,1735878655,BD
+1735878656,1735879679,CN
+1735879680,1735880703,IN
+1735880704,1735880959,SG
+1735880960,1735881215,IN
+1735881216,1735881471,ID
+1735881472,1735881727,CN
+1735881728,1735882751,ID
+1735882752,1735883775,IN
+1735883776,1735884031,HK
+1735884032,1735884287,PK
+1735884288,1735884543,BT
+1735884544,1735884799,JP
+1735884800,1735886335,HK
+1735886336,1735887103,PH
+1735887104,1735887359,HK
+1735887360,1735889919,ID
+1735889920,1735890943,SG
+1735890944,1735891967,KH
+1735891968,1735892991,CN
+1735892992,1735895039,IN
+1735895040,1735895551,NZ
+1735895552,1735896063,AF
+1735896064,1735898111,HK
+1735898112,1735899135,CN
+1735899136,1735900159,TL
+1735900160,1735903231,IN
+1735903232,1735904255,CN
+1735904256,1735905279,ID
+1735905280,1735906303,IN
+1735906304,1735907327,TW
+1735907328,1735908863,IN
+1735908864,1735909119,AU
+1735909120,1735909375,IN
+1735909376,1735910399,CN
+1735910400,1735911423,ID
+1735911424,1735912447,MY
+1735912448,1735912959,AF
+1735912960,1735916799,IN
+1735916800,1735917055,AU
+1735917056,1735918591,IN
+1735918592,1735919103,PH
+1735919104,1735919359,BD
+1735919360,1735920639,AU
+1735920640,1735921663,PH
+1735921664,1735922687,JP
+1735922688,1735923711,AU
+1735923712,1735924735,HK
+1735924736,1735925759,IN
+1735925760,1735927807,BD
+1735927808,1735928063,NZ
+1735928064,1735928319,SG
+1735928320,1735928831,AU
+1735928832,1735930111,BD
+1735930112,1735930367,AU
+1735930368,1735930879,IN
+1735930880,1735931903,CN
+1735931904,1735933951,IN
+1735933952,1735935231,ID
+1735935232,1735935487,PH
+1735935488,1735935999,PK
+1735936000,1735937279,CN
+1735937280,1735938047,AU
+1735938048,1735939071,HK
+1735939072,1735940095,JP
+1735940096,1735941119,CN
+1735941120,1735942143,IN
+1735942144,1735944191,CN
+1735944192,1735945215,IN
+1735945216,1735945471,AU
+1735945472,1735945727,HK
+1735945728,1735945983,BD
+1735945984,1735946239,IN
+1735946240,1735947263,TH
+1735947264,1735948287,PK
+1735948288,1735949311,KH
+1735949312,1735949823,ID
+1735949824,1735951359,IN
1740636160,1740644351,CN
1740644352,1740645375,IN
1740645376,1740647423,HK
@@ -56710,9 +57355,8 @@
1740901376,1740901887,TH
1740901888,1740902143,ID
1740902400,1740903423,VN
-1740903424,1740903935,US
-1740903936,1740904191,NZ
-1740904192,1740904447,US
+1740903424,1740904191,US
+1740904192,1740904447,AU
1740904448,1740904959,NZ
1740905472,1740907519,IN
1740907520,1740908543,US
@@ -56900,9 +57544,7 @@
1741129728,1741130751,IN
1741131776,1741132799,IN
1741132800,1741133055,MY
-1741133056,1741133311,TH
-1741133312,1741133567,MY
-1741133568,1741133823,TH
+1741133056,1741133823,TH
1741133824,1741134847,BD
1741134848,1741136895,IN
1741136896,1741137919,CN
@@ -56942,9 +57584,7 @@
1741186048,1741188607,IN
1741188608,1741188863,US
1741188864,1741189119,IN
-1741189120,1741189631,HK
-1741189632,1741189887,JP
-1741189888,1741191167,HK
+1741189120,1741191167,HK
1741191168,1741192191,VN
1741192192,1741193215,HK
1741193216,1741194239,ID
@@ -57015,7 +57655,8 @@
1741408256,1741409279,CN
1741409280,1741411327,IN
1741411328,1741413375,CN
-1741413376,1741413887,SG
+1741413376,1741413631,HK
+1741413632,1741413887,SG
1741413888,1741414143,JP
1741414144,1741414399,SG
1741414400,1741423615,IN
@@ -57116,7 +57757,6 @@
1741533184,1741534207,PK
1741534208,1741535231,BD
1741535232,1741535487,JP
-1741535488,1741535743,IN
1741535744,1741536255,SG
1741536256,1741540351,CN
1741540352,1741541375,AU
@@ -57201,7 +57841,6 @@
1741643776,1741644799,ID
1741644800,1741645311,IN
1741645312,1741645567,AU
-1741645568,1741645823,IN
1741645824,1741646847,CN
1741646848,1741647871,SG
1741647872,1741648895,KH
@@ -57237,7 +57876,8 @@
1741692928,1741693951,HK
1741693952,1741694975,TL
1741694976,1741698047,CN
-1741698048,1741706239,IN
+1741698048,1741701119,IN
+1741703168,1741706239,IN
1741706240,1741706751,SG
1741706752,1741707263,NZ
1741707264,1741708287,IN
@@ -57303,7 +57943,7 @@
1741770496,1741770751,PR
1741770752,1741771775,BD
1741771776,1741772799,PK
-1741772800,1741774591,IN
+1741772800,1741774335,IN
1741774592,1741774847,ID
1741774848,1741775359,IN
1741775360,1741775615,ID
@@ -57318,7 +57958,7 @@
1741780992,1741782015,SG
1741782016,1741783039,AU
1741783552,1741784063,ID
-1741784064,1741785087,IN
+1741784064,1741784575,IN
1741785088,1741786111,CN
1741786112,1741788159,IN
1741788160,1741789183,JP
@@ -57348,13 +57988,13 @@
1741812224,1741813759,AU
1741813760,1741814783,ID
1741814784,1741815039,AU
-1741815040,1741815295,JP
+1741815040,1741815295,PH
1741815296,1741815807,HK
1741815808,1741816831,CN
1741816832,1741817855,PK
1741817856,1741818367,PH
-1741818368,1741819902,AU
-1741819903,1741819903,PK
+1741818368,1741818879,AU
+1741818880,1741819903,US
1741819904,1741820927,BD
1741820928,1741821951,CN
1741821952,1741822975,AU
@@ -57463,7 +58103,9 @@
1741936640,1741937151,IN
1741937152,1741937663,SC
1741937664,1741939711,CN
-1741939712,1741940735,HK
+1741939712,1741940223,HK
+1741940224,1741940479,SG
+1741940480,1741940735,HK
1741940736,1741941759,ID
1741941760,1741942271,HK
1741942272,1741942527,AU
@@ -57512,21 +58154,17 @@
1741989888,1741990143,GB
1741990144,1741990911,SG
1741991936,1741992191,MY
-1741992192,1741992447,IN
1741992960,1741993983,TH
1741995008,1741996031,JP
1741996032,1741996543,NZ
1741996544,1741997055,AU
1741997056,1741999103,CN
1741999104,1742000639,IN
-1742000640,1742000895,AU
1742000896,1742001151,ID
1742001152,1742002175,IN
1742002176,1742003199,AU
1742003200,1742004223,KR
-1742004224,1742004479,NZ
-1742004480,1742004991,AU
-1742004992,1742005247,NZ
+1742004224,1742005247,AU
1742005248,1742006271,CN
1742006272,1742007039,ID
1742007040,1742007295,IN
@@ -57560,7 +58198,6 @@
1742074880,1742074923,HK
1742074924,1742074924,JP
1742074925,1742076927,HK
-1742076928,1742077951,CN
1742077952,1742078975,BD
1742078976,1742079999,NL
1742080000,1742081023,VN
@@ -57623,7 +58260,6 @@
1742132224,1742133247,CN
1742133248,1742134271,BD
1742134272,1742135295,AU
-1742135296,1742136319,CN
1742136320,1742136575,FR
1742136576,1742136831,ID
1742136832,1742138367,IN
@@ -57646,7 +58282,7 @@
1742157824,1742158847,JP
1742158848,1742159871,SG
1742159872,1742160895,AU
-1742160896,1742162431,ID
+1742160896,1742162175,ID
1742162432,1742162687,AU
1742162688,1742162943,PK
1742162944,1742164991,HK
@@ -57696,7 +58332,7 @@
1742231296,1742231551,ID
1742231552,1742233599,IN
1742233600,1742234111,TH
-1742234112,1742234623,IN
+1742234112,1742234367,IN
1742234624,1742235647,HK
1742235648,1742236671,PK
1742236672,1742237695,CN
@@ -57708,7 +58344,7 @@
1742244864,1742247935,IN
1742247936,1742248959,CN
1742248960,1742249983,IN
-1742249984,1742250239,DE
+1742249984,1742250239,AF
1742250240,1742257151,IN
1742257152,1742257407,ID
1742257408,1742257663,NZ
@@ -57749,8 +58385,7 @@
1742332928,1742338047,IN
1742338048,1742338303,AU
1742338304,1742338559,IN
-1742338560,1742339071,AU
-1742339072,1742339327,HK
+1742338560,1742339327,AU
1742339328,1742339583,SG
1742339584,1742339839,AU
1742339840,1742340095,US
@@ -57788,7 +58423,7 @@
1742424064,1742425343,ID
1742425344,1742425599,US
1742425600,1742425855,CA
-1742425856,1742426111,JP
+1742425856,1742426111,US
1742426112,1742427135,HK
1742427136,1742432255,CN
1742432256,1742433279,HK
@@ -58567,7 +59202,7 @@
1743417856,1743418879,IN
1743418880,1743419391,AU
1743419392,1743420415,ID
-1743420416,1743422463,CN
+1743421440,1743422463,CN
1743422464,1743423487,NZ
1743423488,1743424511,IN
1743424512,1743425535,HK
@@ -60496,7 +61131,9 @@
1753501952,1753502207,PT
1753502208,1753502975,US
1753502976,1753503231,AU
-1753503232,1753507391,US
+1753503232,1753503551,US
+1753503552,1753503599,PE
+1753503600,1753507391,US
1753507392,1753507439,KR
1753507440,1753511167,US
1753511168,1753511423,FR
@@ -60544,7 +61181,9 @@
1753549824,1753550079,IE
1753550080,1753550591,US
1753550592,1753550847,TW
-1753550848,1753735167,US
+1753550848,1753645055,US
+1753645056,1753645063,NL
+1753645064,1753735167,US
1753735168,1753743359,IE
1753743360,1754136575,US
1754136576,1754169343,CA
@@ -60610,109 +61249,94 @@
1754267720,1754267727,US
1754267728,1754267767,CA
1754267768,1754267775,US
-1754267776,1754267935,CA
-1754267936,1754267943,US
-1754267944,1754267951,CA
-1754267952,1754267959,FI
-1754267960,1754267991,US
-1754267992,1754268007,CA
-1754268008,1754268015,US
-1754268016,1754268063,CA
+1754267776,1754267967,CA
+1754267968,1754267991,US
+1754267992,1754268063,CA
1754268064,1754268079,US
1754268080,1754268095,CA
1754268096,1754268159,US
-1754268160,1754268927,CA
-1754268928,1754268959,US
-1754268960,1754269055,CA
+1754268160,1754269055,CA
1754269056,1754269087,US
1754269088,1754269103,CA
-1754269104,1754269183,US
-1754269184,1754269247,CA
-1754269248,1754269423,US
-1754269424,1754269455,CA
-1754269456,1754269471,US
-1754269472,1754269503,CA
-1754269504,1754269535,CN
-1754269536,1754269599,US
+1754269104,1754269119,US
+1754269120,1754269247,CA
+1754269248,1754269311,US
+1754269312,1754269327,CA
+1754269328,1754269343,US
+1754269344,1754269359,CA
+1754269360,1754269423,US
+1754269424,1754269567,CA
+1754269568,1754269599,US
1754269600,1754269615,CA
-1754269616,1754269695,US
-1754269696,1754269951,CA
-1754269952,1754270463,US
-1754270464,1754271039,CA
-1754271040,1754271071,CN
-1754271072,1754271103,US
-1754271104,1754271135,CA
-1754271136,1754271167,US
-1754271168,1754271231,CA
-1754271232,1754271743,US
+1754269616,1754269631,US
+1754269632,1754269647,CA
+1754269648,1754269663,US
+1754269664,1754269951,CA
+1754269952,1754270207,US
+1754270208,1754271167,CA
+1754271168,1754271743,US
1754271744,1754271999,CA
-1754272000,1754272159,US
+1754272000,1754272127,US
+1754272128,1754272143,CA
+1754272144,1754272159,US
1754272160,1754272191,CA
1754272192,1754272207,US
1754272208,1754272223,CA
1754272224,1754272255,US
1754272256,1754272383,CA
-1754272384,1754272479,US
-1754272480,1754272495,CA
+1754272384,1754272415,US
+1754272416,1754272431,CA
+1754272432,1754272463,US
+1754272464,1754272495,CA
1754272496,1754272511,US
-1754272512,1754272639,CA
-1754272640,1754272671,US
+1754272512,1754272655,CA
+1754272656,1754272671,US
1754272672,1754272703,CA
1754272704,1754272719,US
1754272720,1754272735,CA
-1754272736,1754272975,US
+1754272736,1754272895,US
+1754272896,1754272959,CA
+1754272960,1754272975,US
1754272976,1754272991,CA
1754272992,1754273023,US
-1754273024,1754273055,CA
-1754273056,1754273183,US
+1754273024,1754273151,CA
+1754273152,1754273183,US
1754273184,1754273199,CA
-1754273200,1754273279,US
+1754273200,1754273247,US
+1754273248,1754273263,CA
+1754273264,1754273279,US
1754273280,1754273407,CA
1754273408,1754273439,US
1754273440,1754273455,CA
-1754273456,1754273535,US
-1754273536,1754273791,CA
-1754273792,1754273871,US
+1754273456,1754273487,US
+1754273488,1754273855,CA
+1754273856,1754273871,US
1754273872,1754273887,CA
1754273888,1754274175,US
-1754274176,1754274303,CA
-1754274304,1754274815,US
-1754274816,1754274943,CA
-1754274944,1754275023,US
+1754274176,1754274559,CA
+1754274560,1754274815,US
+1754274816,1754274959,CA
+1754274960,1754274991,US
+1754274992,1754275007,CA
+1754275008,1754275023,US
1754275024,1754275039,CA
1754275040,1754275199,US
-1754275200,1754275967,CA
-1754275968,1754275999,US
-1754276000,1754276127,CA
-1754276128,1754276159,US
-1754276160,1754276223,CA
-1754276224,1754276287,US
-1754276288,1754276863,CA
+1754275200,1754275839,CA
+1754275840,1754275967,US
+1754275968,1754276863,CA
1754276864,1754277119,US
-1754277120,1754277375,CA
-1754277376,1754277631,US
-1754277632,1754279167,CA
-1754279168,1754279199,US
-1754279200,1754279327,CA
-1754279328,1754279359,US
-1754279360,1754279679,CA
-1754279680,1754279935,US
-1754279936,1754280447,CA
-1754280448,1754280703,US
-1754280704,1754281223,CA
-1754281224,1754281231,NO
-1754281232,1754281279,CA
+1754277120,1754281279,CA
1754281280,1754281343,US
1754281344,1754281407,CA
-1754281408,1754281471,US
-1754281472,1754281535,CA
-1754281536,1754281663,US
+1754281408,1754281455,US
+1754281456,1754281567,CA
+1754281568,1754281663,US
1754281664,1754281727,CA
1754281728,1754281983,US
1754281984,1754282495,CA
1754282496,1754282751,US
-1754282752,1754282879,CA
-1754282880,1754282927,US
+1754282752,1754282895,CA
+1754282896,1754282927,US
1754282928,1754282943,CA
1754282944,1754282959,US
1754282960,1754282967,CA
@@ -60721,369 +61345,472 @@
1754283008,1754283263,CA
1754283264,1754283519,US
1754283520,1754284607,CA
-1754284608,1754284671,US
-1754284672,1754284703,CA
+1754284608,1754284639,US
+1754284640,1754284703,CA
1754284704,1754284735,US
-1754284736,1754285151,CA
-1754285152,1754285167,US
-1754285168,1754285311,CA
+1754284736,1754285311,CA
1754285312,1754285567,US
-1754285568,1754285919,CA
-1754285920,1754286015,US
+1754285568,1754285951,CA
+1754285952,1754286015,US
1754286016,1754286591,CA
1754286592,1754286847,US
1754286848,1754287871,CA
-1754287872,1754288159,US
+1754287872,1754288127,US
+1754288128,1754288143,CA
+1754288144,1754288159,US
1754288160,1754288191,CA
1754288192,1754288207,US
1754288208,1754288223,CA
-1754288224,1754288383,US
-1754288384,1754288447,CA
-1754288448,1754288575,US
-1754288576,1754288895,CA
-1754288896,1754289055,US
+1754288224,1754288239,US
+1754288240,1754288255,CA
+1754288256,1754288383,US
+1754288384,1754288479,CA
+1754288480,1754288575,US
+1754288576,1754288911,CA
+1754288912,1754288927,US
+1754288928,1754288959,CA
+1754288960,1754288991,US
+1754288992,1754289007,CA
+1754289008,1754289055,US
1754289056,1754289071,CA
1754289072,1754289087,US
1754289088,1754289471,CA
1754289472,1754289487,US
1754289488,1754289495,CA
1754289496,1754289503,NO
-1754289504,1754289663,US
+1754289504,1754289519,US
+1754289520,1754289535,CA
+1754289536,1754289663,US
1754289664,1754290431,CA
-1754290432,1754290591,US
+1754290432,1754290447,US
+1754290448,1754290495,CA
+1754290496,1754290511,US
+1754290512,1754290527,CA
+1754290528,1754290543,US
+1754290544,1754290559,CA
+1754290560,1754290591,US
1754290592,1754290607,CA
1754290608,1754290623,US
1754290624,1754290943,CA
-1754290944,1754291023,US
+1754290944,1754290975,US
+1754290976,1754290991,CA
+1754290992,1754291023,US
1754291024,1754291039,CA
-1754291040,1754291135,US
-1754291136,1754291455,CA
-1754291456,1754291503,US
+1754291040,1754291103,US
+1754291104,1754291119,CA
+1754291120,1754291135,US
+1754291136,1754291471,CA
+1754291472,1754291503,US
1754291504,1754291519,CA
1754291520,1754291535,US
1754291536,1754291551,CA
1754291552,1754291711,US
1754291712,1754292031,CA
-1754292032,1754292127,US
-1754292128,1754292543,CA
-1754292544,1754292607,US
-1754292608,1754292639,CA
+1754292032,1754292095,US
+1754292096,1754292543,CA
+1754292544,1754292575,US
+1754292576,1754292639,CA
1754292640,1754292671,US
1754292672,1754293343,CA
1754293344,1754293439,US
1754293440,1754294015,CA
-1754294016,1754294095,US
+1754294016,1754294063,US
+1754294064,1754294079,CA
+1754294080,1754294095,US
1754294096,1754294111,CA
-1754294112,1754294655,US
-1754294656,1754294943,CA
-1754294944,1754294959,US
-1754294960,1754294967,CA
-1754294968,1754294975,US
-1754294976,1754295935,CA
-1754295936,1754295983,US
+1754294112,1754294127,US
+1754294128,1754294143,CA
+1754294144,1754294271,US
+1754294272,1754294527,CA
+1754294528,1754294655,US
+1754294656,1754295039,CA
+1754295040,1754295295,US
+1754295296,1754295951,CA
+1754295952,1754295983,US
1754295984,1754295999,CA
1754296000,1754296015,US
1754296016,1754296031,CA
-1754296032,1754296063,US
-1754296064,1754296383,CA
-1754296384,1754296407,US
-1754296408,1754296415,CA
-1754296416,1754296575,US
+1754296032,1754296319,US
+1754296320,1754296383,CA
+1754296384,1754296399,US
+1754296400,1754296415,CA
+1754296416,1754296527,US
+1754296528,1754296543,CA
+1754296544,1754296575,US
1754296576,1754297471,CA
1754297472,1754297487,US
1754297488,1754297503,CA
-1754297504,1754297583,US
-1754297584,1754298239,CA
-1754298240,1754298287,US
-1754298288,1754298623,CA
+1754297504,1754297535,US
+1754297536,1754297551,CA
+1754297552,1754297583,US
+1754297584,1754298623,CA
1754298624,1754299135,US
1754299136,1754299647,CA
-1754299648,1754299711,US
-1754299712,1754299775,CA
+1754299648,1754299695,US
+1754299696,1754299775,CA
1754299776,1754299791,US
1754299792,1754299839,CA
1754299840,1754299903,US
1754299904,1754300543,CA
1754300544,1754300575,US
1754300576,1754300591,CA
-1754300592,1754300655,US
-1754300656,1754300671,CA
+1754300592,1754300639,US
+1754300640,1754300671,CA
1754300672,1754300751,US
1754300752,1754300767,CA
-1754300768,1754300927,US
-1754300928,1754303231,CA
+1754300768,1754300783,US
+1754300784,1754300799,CA
+1754300800,1754300879,US
+1754300880,1754300895,CA
+1754300896,1754300911,US
+1754300912,1754303231,CA
1754303232,1754303247,US
-1754303248,1754303263,CA
-1754303264,1754303295,US
-1754303296,1754303359,CA
-1754303360,1754303487,US
-1754303488,1754303551,CA
-1754303552,1754303567,US
-1754303568,1754303575,CA
-1754303576,1754303679,US
+1754303248,1754303359,CA
+1754303360,1754303375,US
+1754303376,1754303391,CA
+1754303392,1754303487,US
+1754303488,1754303583,CA
+1754303584,1754303679,US
1754303680,1754304543,CA
1754304544,1754304551,US
1754304552,1754304767,CA
1754304768,1754304783,US
1754304784,1754304799,CA
-1754304800,1754304991,US
+1754304800,1754304847,US
+1754304848,1754304863,CA
+1754304864,1754304895,US
+1754304896,1754304911,CA
+1754304912,1754304943,US
+1754304944,1754304959,CA
+1754304960,1754304991,US
1754304992,1754305663,CA
-1754305664,1754305759,US
-1754305760,1754305767,CA
-1754305768,1754305791,US
-1754305792,1754306943,CA
-1754306944,1754306959,US
+1754305664,1754305695,US
+1754305696,1754305711,CA
+1754305712,1754305743,US
+1754305744,1754305775,CA
+1754305776,1754305791,US
+1754305792,1754305855,CA
+1754305856,1754305919,CN
+1754305920,1754306815,CA
+1754306816,1754306959,US
1754306960,1754306975,CA
-1754306976,1754307031,US
-1754307032,1754307039,CA
+1754306976,1754307023,US
+1754307024,1754307039,CA
1754307040,1754307071,US
1754307072,1754307327,CA
1754307328,1754307391,US
1754307392,1754307423,CA
1754307424,1754307439,US
1754307440,1754307455,CA
-1754307456,1754307583,US
-1754307584,1754307855,CA
-1754307856,1754307871,US
-1754307872,1754307895,CA
+1754307456,1754307487,US
+1754307488,1754307503,CA
+1754307504,1754307567,US
+1754307568,1754307895,CA
1754307896,1754307903,SE
-1754307904,1754308031,US
-1754308032,1754308103,CA
-1754308104,1754308111,US
-1754308112,1754308127,CA
-1754308128,1754308191,US
-1754308192,1754308223,CA
-1754308224,1754308303,US
-1754308304,1754308311,CA
-1754308312,1754308319,US
-1754308320,1754308351,CA
+1754307904,1754308015,US
+1754308016,1754308127,CA
+1754308128,1754308143,US
+1754308144,1754308159,CA
+1754308160,1754308191,US
+1754308192,1754308271,CA
+1754308272,1754308303,US
+1754308304,1754308351,CA
1754308352,1754308367,US
1754308368,1754308383,CA
-1754308384,1754308447,US
-1754308448,1754308455,CA
-1754308456,1754308575,US
+1754308384,1754308415,US
+1754308416,1754308431,CA
+1754308432,1754308447,US
+1754308448,1754308479,CA
+1754308480,1754308543,US
+1754308544,1754308559,CA
+1754308560,1754308575,US
1754308576,1754308863,CA
-1754308864,1754308943,US
+1754308864,1754308879,US
+1754308880,1754308895,CA
+1754308896,1754308943,US
1754308944,1754308951,CA
1754308952,1754308959,SE
-1754308960,1754308991,US
-1754308992,1754309007,CA
-1754309008,1754309055,US
+1754308960,1754308975,CA
+1754308976,1754308991,US
+1754308992,1754309023,CA
+1754309024,1754309055,US
1754309056,1754309439,CA
1754309440,1754309471,US
-1754309472,1754309479,CA
-1754309480,1754309631,US
+1754309472,1754309503,CA
+1754309504,1754309583,US
+1754309584,1754309615,CA
+1754309616,1754309631,US
1754309632,1754309887,CA
-1754309888,1754309919,US
-1754309920,1754309935,CA
+1754309888,1754309903,US
+1754309904,1754309935,CA
1754309936,1754309951,US
1754309952,1754309983,CA
-1754309984,1754310015,US
-1754310016,1754310079,CA
-1754310080,1754310143,US
-1754310144,1754310399,CA
-1754310400,1754310479,US
+1754309984,1754309999,US
+1754310000,1754310079,CA
+1754310080,1754310111,US
+1754310112,1754310127,CA
+1754310128,1754310143,US
+1754310144,1754310415,CA
+1754310416,1754310431,US
+1754310432,1754310463,CA
+1754310464,1754310479,US
1754310480,1754310495,CA
1754310496,1754310527,US
1754310528,1754310911,CA
1754310912,1754310943,US
1754310944,1754310975,CA
-1754310976,1754311007,US
-1754311008,1754311055,CA
-1754311056,1754311167,US
+1754310976,1754310991,US
+1754310992,1754311055,CA
+1754311056,1754311119,US
+1754311120,1754311151,CA
+1754311152,1754311167,US
1754311168,1754311423,CA
-1754311424,1754311519,US
-1754311520,1754311567,CA
-1754311568,1754311583,US
-1754311584,1754311615,CA
-1754311616,1754311759,US
-1754311760,1754311775,CA
-1754311776,1754311967,US
-1754311968,1754311975,CA
-1754311976,1754312191,US
+1754311424,1754311487,US
+1754311488,1754311503,CA
+1754311504,1754311519,US
+1754311520,1754311615,CA
+1754311616,1754311647,US
+1754311648,1754311663,CA
+1754311664,1754311679,US
+1754311680,1754311695,CA
+1754311696,1754311711,US
+1754311712,1754311743,CA
+1754311744,1754311759,US
+1754311760,1754311791,CA
+1754311792,1754311967,US
+1754311968,1754311999,CA
+1754312000,1754312191,US
1754312192,1754312447,CA
1754312448,1754312463,US
-1754312464,1754312479,CA
-1754312480,1754312575,US
+1754312464,1754312495,CA
+1754312496,1754312575,US
1754312576,1754312639,CA
-1754312640,1754312703,US
+1754312640,1754312655,US
+1754312656,1754312671,CA
+1754312672,1754312703,US
1754312704,1754312719,CA
1754312720,1754312735,US
1754312736,1754312767,CA
1754312768,1754312783,US
-1754312784,1754312799,CA
-1754312800,1754312959,US
+1754312784,1754312815,CA
+1754312816,1754312831,US
+1754312832,1754312847,CA
+1754312848,1754312863,US
+1754312864,1754312895,CA
+1754312896,1754312959,US
1754312960,1754313023,CA
-1754313024,1754313151,US
-1754313152,1754313183,CA
-1754313184,1754313215,US
-1754313216,1754313247,CA
-1754313248,1754313391,US
-1754313392,1754313455,CA
-1754313456,1754313471,US
-1754313472,1754313487,CA
-1754313488,1754313503,US
-1754313504,1754313535,CA
-1754313536,1754313615,US
+1754313024,1754313039,US
+1754313040,1754313087,CA
+1754313088,1754313119,US
+1754313120,1754313135,CA
+1754313136,1754313151,US
+1754313152,1754313247,CA
+1754313248,1754313295,US
+1754313296,1754313311,CA
+1754313312,1754313327,US
+1754313328,1754313343,CA
+1754313344,1754313391,US
+1754313392,1754313535,CA
+1754313536,1754313583,US
+1754313584,1754313599,CA
+1754313600,1754313615,US
1754313616,1754313663,CA
-1754313664,1754313695,US
-1754313696,1754313791,CA
-1754313792,1754313839,US
+1754313664,1754313679,US
+1754313680,1754313791,CA
+1754313792,1754313807,US
+1754313808,1754313823,CA
+1754313824,1754313839,US
1754313840,1754313847,CA
-1754313848,1754313951,US
-1754313952,1754314015,CA
-1754314016,1754314079,US
-1754314080,1754314111,CA
-1754314112,1754314143,US
+1754313848,1754313903,US
+1754313904,1754314031,CA
+1754314032,1754314079,US
+1754314080,1754314127,CA
+1754314128,1754314143,US
1754314144,1754314175,CA
-1754314176,1754314239,US
+1754314176,1754314191,US
+1754314192,1754314207,CA
+1754314208,1754314239,US
1754314240,1754314255,CA
-1754314256,1754314463,US
-1754314464,1754314495,CA
-1754314496,1754314527,US
+1754314256,1754314415,US
+1754314416,1754314431,CA
+1754314432,1754314463,US
+1754314464,1754314511,CA
+1754314512,1754314527,US
1754314528,1754314559,CA
1754314560,1754314575,US
-1754314576,1754314591,CA
-1754314592,1754314783,US
-1754314784,1754314815,CA
-1754314816,1754314991,US
-1754314992,1754315007,CA
-1754315008,1754315039,US
-1754315040,1754315071,CA
-1754315072,1754315135,US
+1754314576,1754314623,CA
+1754314624,1754314719,US
+1754314720,1754314735,CA
+1754314736,1754314767,US
+1754314768,1754314815,CA
+1754314816,1754314847,US
+1754314848,1754314863,CA
+1754314864,1754314991,US
+1754314992,1754315071,CA
+1754315072,1754315087,US
+1754315088,1754315103,CA
+1754315104,1754315135,US
1754315136,1754315199,CA
1754315200,1754315215,US
1754315216,1754315223,CA
-1754315224,1754315295,US
-1754315296,1754315311,CA
+1754315224,1754315263,US
+1754315264,1754315311,CA
1754315312,1754315343,US
-1754315344,1754315391,CA
-1754315392,1754315423,US
+1754315344,1754315407,CA
+1754315408,1754315423,US
1754315424,1754315471,CA
-1754315472,1754315551,US
+1754315472,1754315487,US
+1754315488,1754315535,CA
+1754315536,1754315551,US
1754315552,1754315559,CA
1754315560,1754315615,US
1754315616,1754315623,CA
-1754315624,1754316287,US
-1754316288,1754317823,CA
-1754317824,1754317903,US
+1754315624,1754315631,US
+1754315632,1754315647,CA
+1754315648,1754316287,US
+1754316288,1754317839,CA
+1754317840,1754317903,US
1754317904,1754317919,CA
1754317920,1754317935,US
1754317936,1754317943,CA
1754317944,1754318111,US
1754318112,1754318119,CA
-1754318120,1754318175,US
+1754318120,1754318143,US
+1754318144,1754318159,CA
+1754318160,1754318175,US
1754318176,1754318207,CA
1754318208,1754318335,US
1754318336,1754319103,CA
1754319104,1754319119,US
1754319120,1754319135,CA
-1754319136,1754319199,US
-1754319200,1754319207,CA
+1754319136,1754319167,US
+1754319168,1754319207,CA
1754319208,1754319215,US
-1754319216,1754319231,CA
-1754319232,1754319263,US
+1754319216,1754319247,CA
+1754319248,1754319263,US
1754319264,1754319295,CA
-1754319296,1754319391,US
+1754319296,1754319311,US
+1754319312,1754319327,CA
+1754319328,1754319391,US
1754319392,1754319479,CA
-1754319480,1754319519,US
-1754319520,1754319551,CA
-1754319552,1754319647,US
-1754319648,1754319663,CA
-1754319664,1754319743,US
-1754319744,1754319775,CA
-1754319776,1754319807,US
-1754319808,1754319935,CA
-1754319936,1754319999,US
+1754319480,1754319487,US
+1754319488,1754319551,CA
+1754319552,1754319567,US
+1754319568,1754319599,CA
+1754319600,1754319615,US
+1754319616,1754319663,CA
+1754319664,1754319727,US
+1754319728,1754319935,CA
+1754319936,1754319951,US
+1754319952,1754319983,CA
+1754319984,1754319999,US
1754320000,1754320063,CA
-1754320064,1754320127,US
+1754320064,1754320095,US
+1754320096,1754320111,CA
+1754320112,1754320127,US
1754320128,1754320167,CA
-1754320168,1754320223,US
-1754320224,1754320231,CA
-1754320232,1754320287,US
-1754320288,1754320319,CA
-1754320320,1754320415,US
+1754320168,1754320207,US
+1754320208,1754320231,CA
+1754320232,1754320255,US
+1754320256,1754320319,CA
+1754320320,1754320335,US
+1754320336,1754320351,CA
+1754320352,1754320415,US
1754320416,1754320447,CA
-1754320448,1754320575,US
-1754320576,1754320623,CA
-1754320624,1754320671,US
-1754320672,1754320687,CA
-1754320688,1754320719,US
+1754320448,1754320479,US
+1754320480,1754320511,CA
+1754320512,1754320527,US
+1754320528,1754320543,CA
+1754320544,1754320559,US
+1754320560,1754320623,CA
+1754320624,1754320639,US
+1754320640,1754320703,CA
+1754320704,1754320719,US
1754320720,1754320767,CA
-1754320768,1754320927,US
-1754320928,1754320951,CA
-1754320952,1754321055,US
+1754320768,1754320799,US
+1754320800,1754320815,CA
+1754320816,1754320911,US
+1754320912,1754320951,CA
+1754320952,1754320975,US
+1754320976,1754321023,CA
+1754321024,1754321055,US
1754321056,1754321103,CA
1754321104,1754321119,US
1754321120,1754321151,CA
1754321152,1754321167,US
-1754321168,1754321183,CA
-1754321184,1754321231,US
+1754321168,1754321215,CA
+1754321216,1754321231,US
1754321232,1754321239,CA
1754321240,1754321439,US
1754321440,1754321447,CA
1754321448,1754321487,US
1754321488,1754321511,CA
-1754321512,1754321615,US
-1754321616,1754321631,CA
-1754321632,1754321663,US
-1754321664,1754321951,CA
-1754321952,1754321983,US
-1754321984,1754322271,CA
-1754322272,1754322303,US
-1754322304,1754322695,CA
+1754321512,1754321519,US
+1754321520,1754321535,CA
+1754321536,1754321551,US
+1754321552,1754321567,CA
+1754321568,1754321615,US
+1754321616,1754322695,CA
1754322696,1754322703,US
1754322704,1754322719,CA
-1754322720,1754322879,US
+1754322720,1754322767,US
+1754322768,1754322783,CA
+1754322784,1754322847,US
+1754322848,1754322863,CA
+1754322864,1754322879,US
1754322880,1754323207,CA
-1754323208,1754323279,US
+1754323208,1754323215,US
+1754323216,1754323231,CA
+1754323232,1754323247,US
+1754323248,1754323263,CA
+1754323264,1754323279,US
1754323280,1754323287,CA
-1754323288,1754323359,US
-1754323360,1754323391,CA
-1754323392,1754323503,US
-1754323504,1754323967,CA
-1754323968,1754323999,US
-1754324000,1754324095,CA
+1754323288,1754323327,US
+1754323328,1754323391,CA
+1754323392,1754323455,US
+1754323456,1754324095,CA
1754324096,1754324735,US
1754324736,1754324999,CA
1754325000,1754325007,US
-1754325008,1754325023,CA
-1754325024,1754325071,US
+1754325008,1754325055,CA
+1754325056,1754325071,US
1754325072,1754325079,CA
-1754325080,1754325247,US
-1754325248,1754325263,CA
-1754325264,1754325343,US
-1754325344,1754325375,CA
-1754325376,1754325407,US
-1754325408,1754325439,CA
-1754325440,1754325503,US
-1754325504,1754325567,CA
-1754325568,1754325631,US
-1754325632,1754325695,CA
+1754325080,1754325087,US
+1754325088,1754325103,CA
+1754325104,1754325247,US
+1754325248,1754325279,CA
+1754325280,1754325343,US
+1754325344,1754325439,CA
+1754325440,1754325487,US
+1754325488,1754325599,CA
+1754325600,1754325615,US
+1754325616,1754325695,CA
1754325696,1754325759,US
1754325760,1754325767,CA
-1754325768,1754325791,US
-1754325792,1754325823,CA
-1754325824,1754325855,US
-1754325856,1754325887,CA
+1754325768,1754325775,US
+1754325776,1754325887,CA
1754325888,1754325919,US
1754325920,1754325927,CA
-1754325928,1754325951,US
-1754325952,1754326031,CA
-1754326032,1754326047,US
-1754326048,1754326079,CA
-1754326080,1754326143,US
-1754326144,1754326207,CA
-1754326208,1754326271,US
-1754326272,1754326335,CA
-1754326336,1754326431,US
-1754326432,1754326463,CA
-1754326464,1754326527,US
+1754325928,1754325935,US
+1754325936,1754326079,CA
+1754326080,1754326095,US
+1754326096,1754326111,CA
+1754326112,1754326127,US
+1754326128,1754326207,CA
+1754326208,1754326239,US
+1754326240,1754326335,CA
+1754326336,1754326351,US
+1754326352,1754326367,CA
+1754326368,1754326399,US
+1754326400,1754326463,CA
+1754326464,1754326495,US
+1754326496,1754326511,CA
+1754326512,1754326527,US
1754326528,1754326535,CA
-1754326536,1754326559,US
-1754326560,1754326591,CA
-1754326592,1754326687,US
-1754326688,1754326719,CA
+1754326536,1754326543,US
+1754326544,1754326591,CA
+1754326592,1754326655,US
+1754326656,1754326719,CA
1754326720,1754326751,US
1754326752,1754326759,CA
1754326760,1754326783,US
@@ -61091,64 +61818,70 @@
1754326800,1754326815,US
1754326816,1754326847,CA
1754326848,1754327039,US
-1754327040,1754327103,CA
-1754327104,1754327231,US
+1754327040,1754327199,CA
+1754327200,1754327231,US
1754327232,1754327551,CA
-1754327552,1754328143,US
+1754327552,1754328063,US
+1754328064,1754328079,CA
+1754328080,1754328111,US
+1754328112,1754328127,CA
+1754328128,1754328143,US
1754328144,1754328151,CA
1754328152,1754328319,US
1754328320,1754328575,CA
1754328576,1754329087,US
-1754329088,1754329103,CA
-1754329104,1754329119,US
-1754329120,1754329151,CA
+1754329088,1754329151,CA
1754329152,1754329183,US
1754329184,1754329215,CA
1754329216,1754329247,US
1754329248,1754329279,CA
-1754329280,1754329327,US
-1754329328,1754329335,CA
+1754329280,1754329311,US
+1754329312,1754329335,CA
1754329336,1754329343,US
-1754329344,1754329359,CA
-1754329360,1754329375,US
-1754329376,1754329407,CA
-1754329408,1754329599,US
+1754329344,1754329407,CA
+1754329408,1754329455,US
+1754329456,1754329471,CA
+1754329472,1754329599,US
1754329600,1754329607,CA
-1754329608,1754329631,US
-1754329632,1754329663,CA
+1754329608,1754329615,US
+1754329616,1754329663,CA
1754329664,1754329679,US
1754329680,1754329695,CA
-1754329696,1754329759,US
-1754329760,1754329791,CA
-1754329792,1754329887,US
+1754329696,1754329711,US
+1754329712,1754329791,CA
+1754329792,1754329839,US
+1754329840,1754329871,CA
+1754329872,1754329887,US
1754329888,1754329919,CA
1754329920,1754329935,US
1754329936,1754329951,CA
1754329952,1754330111,US
1754330112,1754330879,CA
1754330880,1754331135,US
-1754331136,1754331167,CA
-1754331168,1754331183,US
-1754331184,1754331263,CA
+1754331136,1754331263,CA
1754331264,1754331295,US
1754331296,1754331303,CA
1754331304,1754331375,US
-1754331376,1754331391,CA
-1754331392,1754331423,US
+1754331376,1754331407,CA
+1754331408,1754331423,US
1754331424,1754331455,CA
1754331456,1754331487,US
1754331488,1754331495,CA
1754331496,1754331647,US
-1754331648,1754331775,CA
-1754331776,1754331823,US
+1754331648,1754331791,CA
+1754331792,1754331823,US
1754331824,1754331839,CA
1754331840,1754331855,US
1754331856,1754331871,CA
1754331872,1754332191,US
1754332192,1754332199,CA
-1754332200,1754332271,US
+1754332200,1754332223,US
+1754332224,1754332239,CA
+1754332240,1754332271,US
1754332272,1754332287,CA
-1754332288,1754332703,US
+1754332288,1754332671,US
+1754332672,1754332687,CA
+1754332688,1754332703,US
1754332704,1754332735,CA
1754332736,1754332751,US
1754332752,1754332767,CA
@@ -61724,7 +62457,9 @@
1759148032,1759148543,NL
1759148544,1759149055,US
1759149056,1759150079,CA
-1759150080,1759160319,US
+1759150080,1759158783,US
+1759158784,1759159295,SG
+1759159296,1759160319,US
1759160320,1759162367,BM
1759162368,1759163391,BB
1759163392,1759166463,US
@@ -61861,7 +62596,8 @@
1759526144,1759526399,CC
1759526400,1759526655,JE
1759526656,1759526911,FO
-1759526912,1759531007,US
+1759526912,1759528959,EG
+1759528960,1759531007,US
1759531008,1759532031,SG
1759532032,1759533311,US
1759533312,1759533567,GB
@@ -61893,30 +62629,28 @@
1759707856,1759707863,US
1759707864,1759707879,CA
1759707880,1759707887,US
-1759707888,1759707911,CA
-1759707912,1759707919,US
-1759707920,1759707935,CA
-1759707936,1759707943,US
-1759707944,1759707975,CA
-1759707976,1759707991,US
-1759707992,1759708031,CA
+1759707888,1759708031,CA
1759708032,1759708159,US
1759708160,1759708351,CA
1759708352,1759708399,US
-1759708400,1759708407,CA
-1759708408,1759708751,US
-1759708752,1759708759,CA
-1759708760,1759709439,US
-1759709440,1759710207,CA
+1759708400,1759708415,CA
+1759708416,1759708751,US
+1759708752,1759708767,CA
+1759708768,1759709183,US
+1759709184,1759710207,CA
1759710208,1759710463,US
1759710464,1759711231,CA
1759711232,1759711487,US
1759711488,1759711615,CA
-1759711616,1759711703,US
-1759711704,1759711711,CA
+1759711616,1759711663,US
+1759711664,1759711679,CA
+1759711680,1759711695,US
+1759711696,1759711711,CA
1759711712,1759711727,US
1759711728,1759711743,CA
-1759711744,1759712287,US
+1759711744,1759712255,US
+1759712256,1759712271,CA
+1759712272,1759712287,US
1759712288,1759712319,CA
1759712320,1759712335,US
1759712336,1759712351,CA
@@ -61930,193 +62664,169 @@
1759715072,1759715327,CA
1759715328,1759715375,US
1759715376,1759715391,CA
-1759715392,1759715423,US
-1759715424,1759715439,CA
+1759715392,1759715407,US
+1759715408,1759715439,CA
1759715440,1759715839,US
-1759715840,1759715903,CA
-1759715904,1759715967,US
-1759715968,1759715983,CA
-1759715984,1759715999,US
-1759716000,1759716159,CA
-1759716160,1759716223,US
-1759716224,1759716255,CA
-1759716256,1759716287,US
-1759716288,1759716991,CA
+1759715840,1759716991,CA
1759716992,1759717023,US
1759717024,1759717039,CA
-1759717040,1759717119,US
-1759717120,1759718399,CA
+1759717040,1759717055,US
+1759717056,1759717071,CA
+1759717072,1759717103,US
+1759717104,1759718399,CA
1759718400,1759718655,US
-1759718656,1759719519,CA
-1759719520,1759719615,US
-1759719616,1759719807,CA
+1759718656,1759719807,CA
1759719808,1759719839,US
1759719840,1759719855,CA
-1759719856,1759719967,US
-1759719968,1759719999,CA
+1759719856,1759719919,US
+1759719920,1759719999,CA
1759720000,1759720015,US
-1759720016,1759720031,CA
-1759720032,1759720047,US
-1759720048,1759720063,CA
-1759720064,1759720191,US
-1759720192,1759720207,CA
-1759720208,1759720319,US
-1759720320,1759720383,CA
-1759720384,1759720703,US
+1759720016,1759720063,CA
+1759720064,1759720095,US
+1759720096,1759720127,CA
+1759720128,1759720159,US
+1759720160,1759720207,CA
+1759720208,1759720223,US
+1759720224,1759720255,CA
+1759720256,1759720271,US
+1759720272,1759720383,CA
+1759720384,1759720415,US
+1759720416,1759720447,CA
+1759720448,1759720511,US
+1759720512,1759720575,CA
+1759720576,1759720703,US
1759720704,1759720767,CA
1759720768,1759720783,US
-1759720784,1759720791,CA
-1759720792,1759721423,US
+1759720784,1759720799,CA
+1759720800,1759720815,US
+1759720816,1759720831,CA
+1759720832,1759721151,US
+1759721152,1759721215,CA
+1759721216,1759721343,US
+1759721344,1759721391,CA
+1759721392,1759721423,US
1759721424,1759721439,CA
-1759721440,1759721503,US
-1759721504,1759721535,CA
-1759721536,1759721695,US
-1759721696,1759721727,CA
+1759721440,1759721471,US
+1759721472,1759721535,CA
+1759721536,1759721583,US
+1759721584,1759721599,CA
+1759721600,1759721615,US
+1759721616,1759721631,CA
+1759721632,1759721647,US
+1759721648,1759721727,CA
1759721728,1759721743,US
1759721744,1759721759,CA
-1759721760,1759721823,US
+1759721760,1759721775,US
+1759721776,1759721791,CA
+1759721792,1759721823,US
1759721824,1759721831,CA
1759721832,1759721839,NO
1759721840,1759722047,US
-1759722048,1759722063,CA
-1759722064,1759722303,US
-1759722304,1759722319,CA
-1759722320,1759722335,US
-1759722336,1759722367,CA
+1759722048,1759722079,CA
+1759722080,1759722271,US
+1759722272,1759722367,CA
1759722368,1759722383,US
1759722384,1759722431,CA
-1759722432,1759722511,US
+1759722432,1759722479,US
+1759722480,1759722495,CA
+1759722496,1759722511,US
1759722512,1759722527,CA
1759722528,1759722559,US
-1759722560,1759722591,CA
-1759722592,1759722895,US
+1759722560,1759722607,CA
+1759722608,1759722655,US
+1759722656,1759722751,CA
+1759722752,1759722895,US
1759722896,1759722911,CA
-1759722912,1759723007,US
+1759722912,1759722943,US
+1759722944,1759722991,CA
+1759722992,1759723007,US
1759723008,1759723071,CA
1759723072,1759723151,US
1759723152,1759723167,CA
-1759723168,1759723247,US
-1759723248,1759723263,CA
-1759723264,1759723343,US
+1759723168,1759723199,US
+1759723200,1759723231,CA
+1759723232,1759723247,US
+1759723248,1759723279,CA
+1759723280,1759723343,US
1759723344,1759723359,CA
1759723360,1759723551,US
1759723552,1759723583,CA
1759723584,1759723599,US
1759723600,1759723615,CA
-1759723616,1759723823,US
-1759723824,1759723831,CA
-1759723832,1759723839,US
-1759723840,1759723855,CA
-1759723856,1759723871,US
-1759723872,1759723887,CA
-1759723888,1759723999,US
-1759724000,1759724159,CA
-1759724160,1759724287,US
-1759724288,1759725183,CA
-1759725184,1759725247,US
-1759725248,1759725375,CA
-1759725376,1759725407,US
-1759725408,1759725439,CA
-1759725440,1759725455,US
-1759725456,1759725471,CA
-1759725472,1759725503,US
-1759725504,1759725711,CA
-1759725712,1759725727,US
-1759725728,1759725951,CA
-1759725952,1759726015,US
-1759726016,1759726975,CA
-1759726976,1759727087,US
-1759727088,1759727095,CA
-1759727096,1759727103,US
-1759727104,1759727359,CA
+1759723616,1759723631,US
+1759723632,1759723647,CA
+1759723648,1759723823,US
+1759723824,1759723887,CA
+1759723888,1759723967,US
+1759723968,1759724159,CA
+1759724160,1759724223,US
+1759724224,1759724239,CA
+1759724240,1759724255,US
+1759724256,1759726975,CA
+1759726976,1759727007,US
+1759727008,1759727023,CA
+1759727024,1759727087,US
+1759727088,1759727359,CA
1759727360,1759727615,US
-1759727616,1759727679,CA
-1759727680,1759727807,US
-1759727808,1759727935,CA
-1759727936,1759728063,US
-1759728064,1759728383,CA
+1759727616,1759728383,CA
1759728384,1759728639,US
-1759728640,1759728671,CA
-1759728672,1759728703,US
-1759728704,1759728767,CA
-1759728768,1759728799,US
-1759728800,1759728831,CA
-1759728832,1759728895,US
-1759728896,1759729151,CA
+1759728640,1759729151,CA
1759729152,1759729663,US
-1759729664,1759729695,CA
-1759729696,1759729743,US
-1759729744,1759729751,CA
-1759729752,1759729967,US
+1759729664,1759729711,CA
+1759729712,1759729743,US
+1759729744,1759729759,CA
+1759729760,1759729967,US
1759729968,1759730015,CA
-1759730016,1759730207,US
+1759730016,1759730175,US
+1759730176,1759730191,CA
+1759730192,1759730207,US
1759730208,1759730239,CA
1759730240,1759730303,US
-1759730304,1759730319,CA
-1759730320,1759730351,US
-1759730352,1759730367,CA
+1759730304,1759730367,CA
1759730368,1759730399,US
1759730400,1759730415,CA
1759730416,1759730463,US
1759730464,1759730487,CA
-1759730488,1759730519,US
-1759730520,1759730527,CA
-1759730528,1759730559,US
+1759730488,1759730511,US
+1759730512,1759730543,CA
+1759730544,1759730559,US
1759730560,1759730623,CA
-1759730624,1759730839,US
-1759730840,1759730847,CA
+1759730624,1759730831,US
+1759730832,1759730847,CA
1759730848,1759730879,US
1759730880,1759730895,CA
1759730896,1759730911,US
1759730912,1759730927,CA
1759730928,1759731711,US
-1759731712,1759734079,CA
-1759734080,1759734159,US
-1759734160,1759734167,CA
-1759734168,1759734207,US
-1759734208,1759734271,CA
-1759734272,1759734279,US
-1759734280,1759734303,CA
-1759734304,1759734351,US
+1759731712,1759734335,CA
+1759734336,1759734351,US
1759734352,1759734367,CA
-1759734368,1759734623,US
-1759734624,1759734639,CA
-1759734640,1759734783,US
-1759734784,1759735935,CA
-1759735936,1759735951,US
-1759735952,1759735967,CA
+1759734368,1759734383,US
+1759734384,1759734399,CA
+1759734400,1759734415,US
+1759734416,1759734463,CA
+1759734464,1759734607,US
+1759734608,1759734639,CA
+1759734640,1759734703,US
+1759734704,1759734719,CA
+1759734720,1759734735,US
+1759734736,1759734751,CA
+1759734752,1759734783,US
+1759734784,1759735967,CA
1759735968,1759736015,US
1759736016,1759736031,CA
1759736032,1759736063,US
-1759736064,1759736383,CA
-1759736384,1759736447,US
-1759736448,1759736479,CA
-1759736480,1759736511,US
-1759736512,1759736575,CA
+1759736064,1759736575,CA
1759736576,1759737007,US
-1759737008,1759737015,CA
-1759737016,1759737343,US
-1759737344,1759737407,CA
-1759737408,1759737423,US
-1759737424,1759737431,CA
-1759737432,1759737535,US
-1759737536,1759738879,CA
-1759738880,1759739039,US
-1759739040,1759739055,CA
+1759737008,1759737023,CA
+1759737024,1759737071,US
+1759737072,1759737087,CA
+1759737088,1759737343,US
+1759737344,1759738879,CA
+1759738880,1759739023,US
+1759739024,1759739055,CA
1759739056,1759739103,US
-1759739104,1759739455,CA
-1759739456,1759739519,US
-1759739520,1759739551,CA
-1759739552,1759739567,US
-1759739568,1759739575,CA
-1759739576,1759739583,US
-1759739584,1759739999,CA
-1759740000,1759740015,US
-1759740016,1759740023,CA
-1759740024,1759740063,US
-1759740064,1759740287,CA
-1759740288,1759740351,US
-1759740352,1759741183,CA
+1759739104,1759741183,CA
1759741184,1759741439,US
1759741440,1759743999,CA
1759744000,1759744255,US
@@ -62127,31 +62837,13 @@
1759745536,1759746047,CA
1759746048,1759746303,US
1759746304,1759746559,CN
-1759746560,1759747135,CA
-1759747136,1759747151,US
-1759747152,1759747159,CA
-1759747160,1759747263,US
-1759747264,1759747391,CA
-1759747392,1759747407,US
-1759747408,1759747415,CA
-1759747416,1759747455,US
-1759747456,1759747647,CA
-1759747648,1759747663,US
-1759747664,1759747671,CA
-1759747672,1759747775,US
-1759747776,1759747839,CA
-1759747840,1759747927,US
-1759747928,1759747935,CA
+1759746560,1759747839,CA
+1759747840,1759747919,US
+1759747920,1759747935,CA
1759747936,1759748095,US
-1759748096,1759748159,CA
-1759748160,1759748175,US
-1759748176,1759748183,CA
-1759748184,1759748287,US
-1759748288,1759748407,CA
-1759748408,1759748431,US
-1759748432,1759748439,CA
-1759748440,1759748479,US
-1759748480,1759748607,CA
+1759748096,1759748407,CA
+1759748408,1759748415,US
+1759748416,1759748607,CA
1759748608,1759748639,US
1759748640,1759748647,CA
1759748648,1759748655,SE
@@ -62162,68 +62854,76 @@
1759748736,1759748863,US
1759748864,1759749119,CA
1759749120,1759749631,US
-1759749632,1759749759,CA
-1759749760,1759749791,US
-1759749792,1759749887,CA
-1759749888,1759749919,US
-1759749920,1759749935,CA
-1759749936,1759749975,US
-1759749976,1759749983,CA
-1759749984,1759750191,US
+1759749632,1759749935,CA
+1759749936,1759749967,US
+1759749968,1759749983,CA
+1759749984,1759750159,US
+1759750160,1759750175,CA
+1759750176,1759750191,US
1759750192,1759750207,CA
1759750208,1759750223,US
1759750224,1759750239,CA
1759750240,1759750335,US
-1759750336,1759750351,CA
-1759750352,1759750367,US
-1759750368,1759750399,CA
+1759750336,1759750399,CA
1759750400,1759750415,US
1759750416,1759750431,CA
1759750432,1759750463,US
1759750464,1759750479,CA
-1759750480,1759750655,US
-1759750656,1759750719,CA
-1759750720,1759750799,US
-1759750800,1759750807,CA
-1759750808,1759750847,US
-1759750848,1759750911,CA
+1759750480,1759750495,US
+1759750496,1759750511,CA
+1759750512,1759750655,US
+1759750656,1759750911,CA
1759750912,1759751167,US
1759751168,1759751823,CA
1759751824,1759751839,US
1759751840,1759752191,CA
1759752192,1759752447,US
-1759752448,1759752543,CA
-1759752544,1759752639,US
-1759752640,1759753023,CA
-1759753024,1759753047,US
-1759753048,1759753055,CA
-1759753056,1759753135,US
+1759752448,1759753023,CA
+1759753024,1759753039,US
+1759753040,1759753055,CA
+1759753056,1759753087,US
+1759753088,1759753103,CA
+1759753104,1759753135,US
1759753136,1759753151,CA
1759753152,1759753215,US
1759753216,1759754239,CA
1759754240,1759754495,US
-1759754496,1759754623,CA
-1759754624,1759754719,US
+1759754496,1759754655,CA
+1759754656,1759754719,US
1759754720,1759754735,CA
1759754736,1759754751,US
1759754752,1759754879,CA
1759754880,1759755007,US
-1759755008,1759755135,CA
-1759755136,1759755263,US
+1759755008,1759755151,CA
+1759755152,1759755167,US
+1759755168,1759755199,CA
+1759755200,1759755263,US
1759755264,1759755519,CA
1759755520,1759755647,CN
-1759755648,1759755775,US
+1759755648,1759755711,CA
+1759755712,1759755775,US
1759755776,1759755903,CN
1759755904,1759755935,US
-1759755936,1759755943,CA
-1759755944,1759756031,US
+1759755936,1759755951,CA
+1759755952,1759755967,US
+1759755968,1759755983,CA
+1759755984,1759755999,US
+1759756000,1759756031,CA
1759756032,1759756159,CN
1759756160,1759756239,US
-1759756240,1759756247,CA
-1759756248,1759764479,US
-1759764480,1759772671,CA
-1759772672,1760034815,US
-1760038912,1760047103,US
+1759756240,1759756255,CA
+1759756256,1759764479,US
+1759764480,1759766527,CA
+1759766528,1759766783,US
+1759766784,1759767039,CY
+1759767040,1759768575,US
+1759768576,1759770623,CA
+1759770624,1760034815,US
+1760038912,1760044031,US
+1760044032,1760044159,SE
+1760044160,1760044319,US
+1760044320,1760044415,SE
+1760044416,1760047103,US
1760047104,1760051199,CA
1760051200,1760086015,US
1760086016,1760088063,GB
@@ -62245,11 +62945,16 @@
1760386304,1760386559,GB
1760386560,1760386815,US
1760386816,1760387071,HK
-1760387072,1760437247,US
+1760387072,1760436735,US
+1760436736,1760436991,SG
+1760436992,1760437247,JP
1760437248,1760437503,PL
-1760437504,1760438527,US
+1760437504,1760438015,US
+1760438016,1760438271,CZ
+1760438272,1760438527,US
1760438528,1760438783,ZA
-1760438784,1760439551,US
+1760438784,1760439295,US
+1760439296,1760439551,AT
1760439552,1760439807,MX
1760439808,1760440831,US
1760440832,1760441343,AU
@@ -62481,9 +63186,7 @@
1761508352,1761509375,VG
1761509376,1761515519,US
1761515520,1761517567,CA
-1761517568,1761519615,US
-1761519616,1761521663,PR
-1761521664,1761522687,US
+1761517568,1761522687,US
1761522688,1761523711,CA
1761523712,1761526783,US
1761526784,1761527807,CA
@@ -62664,11 +63367,19 @@
1793064960,1794113535,CN
1794113536,1795162111,KR
1795162112,1795555327,US
-1795555328,1795558655,CA
-1795558656,1795558911,US
-1795558912,1795561215,CA
+1795555328,1795557375,CA
+1795557376,1795557887,US
+1795557888,1795558143,CA
+1795558144,1795558911,US
+1795558912,1795559743,CA
+1795559744,1795559775,US
+1795559776,1795561215,CA
1795561216,1795561247,US
-1795561248,1795569551,CA
+1795561248,1795565055,CA
+1795565056,1795565567,US
+1795565568,1795566591,CA
+1795566592,1795567359,US
+1795567360,1795569551,CA
1795569552,1795569567,US
1795569568,1795570943,CA
1795570944,1795571087,US
@@ -62719,223 +63430,167 @@
1805049856,1805058047,CA
1805058048,1805144063,US
1805144064,1805148159,CA
-1805148160,1805156351,US
-1805156352,1805156479,CA
-1805156480,1805156487,FI
-1805156488,1805156511,CA
+1805148160,1805150463,US
+1805150464,1805150719,GB
+1805150720,1805156351,US
+1805156352,1805156415,CA
+1805156416,1805156431,US
+1805156432,1805156511,CA
1805156512,1805156519,US
-1805156520,1805156599,CA
-1805156600,1805156607,US
-1805156608,1805156639,CA
-1805156640,1805156671,US
-1805156672,1805156719,CA
+1805156520,1805156719,CA
1805156720,1805156815,US
-1805156816,1805156823,CA
-1805156824,1805156863,US
-1805156864,1805156911,CA
-1805156912,1805156919,US
-1805156920,1805156927,CA
-1805156928,1805156935,US
-1805156936,1805156951,CA
-1805156952,1805156959,US
-1805156960,1805156999,CA
-1805157000,1805157007,US
-1805157008,1805157079,CA
-1805157080,1805157095,US
-1805157096,1805157159,CA
-1805157160,1805157279,US
+1805156816,1805156831,CA
+1805156832,1805156863,US
+1805156864,1805156871,CA
+1805156872,1805156879,US
+1805156880,1805157007,CA
+1805157008,1805157015,US
+1805157016,1805157167,CA
+1805157168,1805157231,US
+1805157232,1805157247,CA
+1805157248,1805157279,US
1805157280,1805157311,CA
1805157312,1805157375,US
-1805157376,1805157547,CA
-1805157548,1805157551,US
-1805157552,1805157951,CA
-1805157952,1805158031,US
-1805158032,1805158047,CA
-1805158048,1805158079,US
-1805158080,1805158399,CA
+1805157376,1805158399,CA
1805158400,1805158655,US
-1805158656,1805158823,CA
-1805158824,1805158831,US
-1805158832,1805158895,CA
+1805158656,1805158879,CA
+1805158880,1805158887,US
+1805158888,1805158895,CA
1805158896,1805158903,US
1805158904,1805158911,CA
1805158912,1805159039,US
-1805159040,1805159055,CA
-1805159056,1805159071,US
-1805159072,1805159119,CA
-1805159120,1805159127,US
-1805159128,1805159167,CA
-1805159168,1805159175,US
-1805159176,1805159191,CA
-1805159192,1805159199,US
-1805159200,1805159247,CA
-1805159248,1805159263,US
-1805159264,1805159271,CA
-1805159272,1805159279,US
-1805159280,1805159359,CA
+1805159040,1805159247,CA
+1805159248,1805159271,US
+1805159272,1805159359,CA
1805159360,1805159423,US
-1805159424,1805160207,CA
-1805160208,1805160215,US
-1805160216,1805160271,CA
-1805160272,1805160279,US
-1805160280,1805160295,CA
-1805160296,1805160303,US
-1805160304,1805160319,CA
+1805159424,1805160191,CA
+1805160192,1805160207,US
+1805160208,1805160319,CA
1805160320,1805160335,US
-1805160336,1805160343,CA
-1805160344,1805160351,US
-1805160352,1805160359,CA
-1805160360,1805160367,US
-1805160368,1805160407,CA
-1805160408,1805160415,US
-1805160416,1805160447,CA
-1805160448,1805160735,US
+1805160336,1805160423,CA
+1805160424,1805160439,US
+1805160440,1805160447,CA
+1805160448,1805160703,US
+1805160704,1805160719,CA
+1805160720,1805160735,US
1805160736,1805160767,CA
1805160768,1805160783,US
1805160784,1805160799,CA
1805160800,1805160895,US
1805160896,1805160911,CA
-1805160912,1805160943,US
-1805160944,1805162239,CA
-1805162240,1805162495,US
+1805160912,1805160927,US
+1805160928,1805162255,CA
+1805162256,1805162495,US
1805162496,1805164071,CA
1805164072,1805164079,US
1805164080,1805164111,CA
1805164112,1805164127,US
1805164128,1805164159,CA
-1805164160,1805164287,US
+1805164160,1805164223,US
+1805164224,1805164239,CA
+1805164240,1805164287,US
1805164288,1805164351,CA
-1805164352,1805164799,US
-1805164800,1805164839,CA
-1805164840,1805164847,FI
-1805164848,1805164863,CA
-1805164864,1805164975,US
+1805164352,1805164367,US
+1805164368,1805164383,CA
+1805164384,1805164799,US
+1805164800,1805164863,CA
+1805164864,1805164879,US
+1805164880,1805164895,CA
+1805164896,1805164975,US
1805164976,1805164991,CA
1805164992,1805165055,US
1805165056,1805165311,CA
1805165312,1805165439,US
1805165440,1805165455,CA
-1805165456,1805165567,US
-1805165568,1805166079,CA
-1805166080,1805166351,US
-1805166352,1805166687,CA
-1805166688,1805166703,US
-1805166704,1805166751,CA
-1805166752,1805166783,US
-1805166784,1805167103,CA
+1805165456,1805165823,US
+1805165824,1805166079,CA
+1805166080,1805166335,US
+1805166336,1805167103,CA
1805167104,1805167359,FR
-1805167360,1805167423,CA
-1805167424,1805167455,US
-1805167456,1805167487,CA
-1805167488,1805167583,US
-1805167584,1805167743,CA
-1805167744,1805167839,US
-1805167840,1805167887,CA
-1805167888,1805168383,US
-1805168384,1805168639,CA
-1805168640,1805168767,US
-1805168768,1805168783,CA
-1805168784,1805168847,US
+1805167360,1805167519,CA
+1805167520,1805167567,US
+1805167568,1805167887,CA
+1805167888,1805167903,US
+1805167904,1805167935,CA
+1805167936,1805168079,US
+1805168080,1805168127,CA
+1805168128,1805168223,US
+1805168224,1805168255,CA
+1805168256,1805168671,US
+1805168672,1805168703,CA
+1805168704,1805168751,US
+1805168752,1805168799,CA
+1805168800,1805168815,US
+1805168816,1805168831,CA
+1805168832,1805168847,US
1805168848,1805168855,CA
1805168856,1805168863,SE
-1805168864,1805169151,CA
-1805169152,1805169199,US
+1805168864,1805169183,CA
+1805169184,1805169199,US
1805169200,1805169215,CA
-1805169216,1805169663,US
-1805169664,1805169919,CA
-1805169920,1805169935,US
-1805169936,1805170047,CA
-1805170048,1805170111,US
-1805170112,1805170303,CA
-1805170304,1805170311,US
-1805170312,1805170403,CA
-1805170404,1805170407,US
-1805170408,1805171231,CA
-1805171232,1805171247,US
-1805171248,1805171311,CA
-1805171312,1805171327,US
-1805171328,1805171343,CA
-1805171344,1805171351,US
-1805171352,1805171367,CA
-1805171368,1805171375,US
-1805171376,1805171383,CA
-1805171384,1805171391,US
-1805171392,1805171551,CA
-1805171552,1805171559,US
-1805171560,1805171583,CA
-1805171584,1805171591,US
-1805171592,1805171607,CA
-1805171608,1805171615,US
-1805171616,1805171655,CA
-1805171656,1805171663,US
-1805171664,1805171687,CA
-1805171688,1805171703,US
-1805171704,1805171711,CA
-1805171712,1805171775,US
-1805171776,1805171839,CA
-1805171840,1805171951,US
+1805169216,1805169263,US
+1805169264,1805169279,CA
+1805169280,1805169663,US
+1805169664,1805171711,CA
+1805171712,1805171759,US
+1805171760,1805171839,CA
+1805171840,1805171887,US
+1805171888,1805171903,CA
+1805171904,1805171951,US
1805171952,1805171967,CA
1805171968,1805172047,US
-1805172048,1805172063,CA
-1805172064,1805172191,US
-1805172192,1805172991,CA
-1805172992,1805173039,US
+1805172048,1805172095,CA
+1805172096,1805172159,US
+1805172160,1805173007,CA
+1805173008,1805173039,US
1805173040,1805173055,CA
-1805173056,1805173079,US
-1805173080,1805173087,CA
+1805173056,1805173071,US
+1805173072,1805173087,CA
1805173088,1805173247,US
-1805173248,1805173503,CA
-1805173504,1805173535,US
-1805173536,1805173567,CA
-1805173568,1805173759,US
-1805173760,1805173791,CA
-1805173792,1805174303,US
-1805174304,1805174335,CA
+1805173248,1805173567,CA
+1805173568,1805173599,US
+1805173600,1805173615,CA
+1805173616,1805173759,US
+1805173760,1805173823,CA
+1805173824,1805174271,US
+1805174272,1805174335,CA
1805174336,1805174527,US
-1805174528,1805174783,CA
-1805174784,1805174815,US
-1805174816,1805174823,CA
-1805174824,1805174831,US
-1805174832,1805174847,CA
-1805174848,1805174911,US
-1805174912,1805174943,CA
-1805174944,1805175103,US
+1805174528,1805174863,CA
+1805174864,1805174911,US
+1805174912,1805174975,CA
+1805174976,1805175103,US
1805175104,1805175119,CA
-1805175120,1805175159,US
-1805175160,1805175167,CA
+1805175120,1805175151,US
+1805175152,1805175167,CA
1805175168,1805175807,US
-1805175808,1805177343,CA
+1805175808,1805176319,CA
+1805176320,1805176575,US
+1805176576,1805177343,CA
1805177344,1805177375,US
-1805177376,1805177407,CA
-1805177408,1805177471,US
-1805177472,1805177599,CA
+1805177376,1805177599,CA
1805177600,1805177855,US
1805177856,1805178367,CA
1805178368,1805178623,US
-1805178624,1805179135,CA
-1805179136,1805179391,US
-1805179392,1805181951,CA
+1805178624,1805181951,CA
1805181952,1805182207,US
1805182208,1805182719,CA
-1805182720,1805183135,US
-1805183136,1805183151,CA
-1805183152,1805183743,US
-1805183744,1805184063,CA
-1805184064,1805184127,US
-1805184128,1805184159,CA
-1805184160,1805184191,US
-1805184192,1805184511,CA
+1805182720,1805183039,US
+1805183040,1805183103,CA
+1805183104,1805183135,US
+1805183136,1805183167,CA
+1805183168,1805183199,US
+1805183200,1805183231,CA
+1805183232,1805183743,US
+1805183744,1805184511,CA
1805184512,1805184527,US
-1805184528,1805184535,CA
-1805184536,1805184607,US
-1805184608,1805184639,CA
-1805184640,1805184687,US
-1805184688,1805184703,CA
-1805184704,1805184735,US
-1805184736,1805184783,CA
-1805184784,1805184863,US
-1805184864,1805184879,CA
-1805184880,1805185023,US
+1805184528,1805184671,CA
+1805184672,1805184687,US
+1805184688,1805184783,CA
+1805184784,1805184799,US
+1805184800,1805184895,CA
+1805184896,1805184911,US
+1805184912,1805184943,CA
+1805184944,1805185023,US
1805185024,1805185071,CA
1805185072,1805185103,US
1805185104,1805185119,CA
@@ -62943,70 +63598,86 @@
1805185152,1805185159,CA
1805185160,1805185167,FI
1805185168,1805185215,CA
-1805185216,1805185279,US
-1805185280,1805185311,CA
-1805185312,1805185327,US
-1805185328,1805185343,CA
-1805185344,1805185407,US
-1805185408,1805185423,CA
-1805185424,1805185647,US
-1805185648,1805185655,CA
-1805185656,1805185663,US
-1805185664,1805185679,CA
-1805185680,1805185919,US
-1805185920,1805185935,CA
-1805185936,1805185951,US
-1805185952,1805185959,CA
+1805185216,1805185231,US
+1805185232,1805185247,CA
+1805185248,1805185279,US
+1805185280,1805185343,CA
+1805185344,1805185359,US
+1805185360,1805185423,CA
+1805185424,1805185439,US
+1805185440,1805185471,CA
+1805185472,1805185519,US
+1805185520,1805185535,CA
+1805185536,1805185599,US
+1805185600,1805185679,CA
+1805185680,1805185695,US
+1805185696,1805185727,CA
+1805185728,1805185759,US
+1805185760,1805185791,CA
+1805185792,1805185919,US
+1805185920,1805185959,CA
1805185960,1805185967,NO
-1805185968,1805186095,US
+1805185968,1805185999,US
+1805186000,1805186079,CA
+1805186080,1805186095,US
1805186096,1805186127,CA
1805186128,1805186143,US
1805186144,1805186239,CA
-1805186240,1805186335,US
-1805186336,1805186351,CA
-1805186352,1805186551,US
-1805186552,1805186575,CA
-1805186576,1805186879,US
-1805186880,1805186911,CA
-1805186912,1805186943,US
-1805186944,1805186959,CA
+1805186240,1805186255,US
+1805186256,1805186271,CA
+1805186272,1805186287,US
+1805186288,1805186351,CA
+1805186352,1805186463,US
+1805186464,1805186511,CA
+1805186512,1805186543,US
+1805186544,1805186591,CA
+1805186592,1805186607,US
+1805186608,1805186751,CA
+1805186752,1805186783,US
+1805186784,1805186799,CA
+1805186800,1805186879,US
+1805186880,1805186959,CA
1805186960,1805186975,US
-1805186976,1805186991,CA
-1805186992,1805186999,US
-1805187000,1805187023,CA
-1805187024,1805187103,US
-1805187104,1805187111,CA
+1805186976,1805187023,CA
+1805187024,1805187071,US
+1805187072,1805187111,CA
1805187112,1805187119,NO
-1805187120,1805187127,CA
-1805187128,1805187327,US
+1805187120,1805187135,CA
+1805187136,1805187327,US
1805187328,1805187391,CA
1805187392,1805187455,US
-1805187456,1805187487,CA
-1805187488,1805187551,US
-1805187552,1805187567,CA
-1805187568,1805187871,US
-1805187872,1805187887,CA
-1805187888,1805188175,US
-1805188176,1805188223,CA
-1805188224,1805188287,US
-1805188288,1805188295,CA
-1805188296,1805188367,US
+1805187456,1805187503,CA
+1805187504,1805187519,US
+1805187520,1805187567,CA
+1805187568,1805187839,US
+1805187840,1805187887,CA
+1805187888,1805188159,US
+1805188160,1805188255,CA
+1805188256,1805188287,US
+1805188288,1805188303,CA
+1805188304,1805188319,US
+1805188320,1805188351,CA
+1805188352,1805188367,US
1805188368,1805188375,CA
1805188376,1805188383,FI
-1805188384,1805188447,CA
-1805188448,1805188479,US
-1805188480,1805188511,CA
-1805188512,1805188607,US
-1805188608,1805188647,CA
-1805188648,1805188703,US
-1805188704,1805188735,CA
+1805188384,1805188575,CA
+1805188576,1805188591,US
+1805188592,1805188655,CA
+1805188656,1805188671,US
+1805188672,1805188735,CA
1805188736,1805188751,US
-1805188752,1805188767,CA
-1805188768,1805188863,US
+1805188752,1805188799,CA
+1805188800,1805188863,US
1805188864,1805188879,CA
-1805188880,1805188911,US
-1805188912,1805188927,CA
-1805188928,1805190399,US
+1805188880,1805188895,US
+1805188896,1805188927,CA
+1805188928,1805189039,US
+1805189040,1805189055,CA
+1805189056,1805189071,US
+1805189072,1805189087,CA
+1805189088,1805189103,US
+1805189104,1805189119,CA
+1805189120,1805190399,US
1805190400,1805190655,ES
1805190656,1805190911,DE
1805190912,1805194239,US
@@ -63097,13 +63768,16 @@
1805333248,1805334015,RU
1805334016,1805334271,US
1805334272,1805334783,SG
-1805334784,1805335039,TW
-1805335040,1805335295,MY
+1805334784,1805335295,TW
1805335296,1805335551,TH
1805335552,1805335807,AE
1805335808,1805336063,US
1805336064,1805336319,VN
-1805336320,1805573119,US
+1805336320,1805337287,US
+1805337288,1805337295,IT
+1805337296,1805373439,US
+1805373440,1805375487,HK
+1805375488,1805573119,US
1805573120,1805574143,NL
1805574144,1805582335,US
1805582336,1805647871,CA
@@ -63160,9 +63834,17 @@
1806263552,1806263807,KR
1806263808,1806401535,US
1806401536,1806434303,CA
-1806434304,1806925823,US
+1806434304,1806514463,US
+1806514464,1806514495,GB
+1806514496,1806515231,US
+1806515232,1806515263,GB
+1806515264,1806532927,US
+1806532928,1806532959,GB
+1806532960,1806925823,US
1806925824,1806958591,CA
-1806958592,1807044095,US
+1806958592,1806996479,US
+1806996480,1806999551,CO
+1806999552,1807044095,US
1807044096,1807044351,NL
1807044352,1807056895,US
1807056896,1807057151,AU
@@ -63197,7 +63879,9 @@
1807694181,1807694847,US
1807694848,1807695359,JP
1807695360,1807695871,FR
-1807695872,1807707311,US
+1807695872,1807706793,US
+1807706794,1807706794,CN
+1807706795,1807707311,US
1807707312,1807707312,JP
1807707313,1807732735,US
1807732736,1807736831,GP
@@ -63259,8 +63943,8 @@
1815993856,1815994111,US
1815994112,1815994367,JP
1815994368,1815994623,US
-1815994624,1815994655,DE
-1815994656,1815994879,GB
+1815994624,1815994687,DE
+1815994688,1815994879,GB
1815994880,1815995135,US
1815995136,1815995391,AU
1815995392,1815995903,US
@@ -63327,9 +64011,7 @@
1822665704,1822665711,IL
1822665712,1822668055,CA
1822668056,1822668063,IN
-1822668064,1822668719,CA
-1822668720,1822668727,IN
-1822668728,1822670847,CA
+1822668064,1822670847,CA
1822670848,1822828119,US
1822828120,1822828127,AU
1822828128,1822877695,US
@@ -63344,7 +64026,9 @@
1823170560,1823178751,US
1823178752,1823179007,GB
1823179008,1823179167,DE
-1823179168,1823179199,US
+1823179168,1823179180,US
+1823179181,1823179181,DE
+1823179182,1823179199,US
1823179200,1823179263,DE
1823179264,1823180287,US
1823180288,1823180543,AU
@@ -63381,9 +64065,7 @@
1823440896,1823444991,CA
1823444992,1823465471,US
1823465472,1823469567,CA
-1823469568,1823581183,US
-1823581184,1823581311,IN
-1823581312,1823735807,US
+1823469568,1823735807,US
1823735808,1823866879,CA
1823866880,1824130623,US
1824130624,1824130655,CN
@@ -63503,9 +64185,8 @@
1833315968,1833316351,IM
1833316352,1833318399,DK
1833318400,1833320447,GB
-1833320448,1833321282,IQ
+1833320960,1833321215,IQ
1833321283,1833321283,AE
-1833321284,1833322495,IQ
1833322496,1833324543,IT
1833324544,1833326591,NO
1833326592,1833327103,GB
@@ -63531,7 +64212,7 @@
1833359360,1833361407,DE
1833361408,1833363455,GB
1833363456,1833364479,ES
-1833364480,1833365503,RU
+1833364480,1833365503,GB
1833365504,1833367551,IT
1833367552,1833369599,RU
1833369600,1833370111,NL
@@ -63549,15 +64230,13 @@
1833383936,1833385983,DK
1833385984,1833388031,SK
1833388032,1833389055,DE
-1833389056,1833390079,RU
-1833390080,1833392127,GB
+1833389056,1833392127,GB
1833392128,1833396223,CH
1833396224,1833398271,NL
1833398272,1833400319,DE
1833400320,1833402367,GB
1833402368,1833406463,FR
-1833406464,1833408511,GB
-1833408512,1833409535,RU
+1833406464,1833409535,GB
1833409536,1833410559,NL
1833410560,1833412607,LU
1833412608,1833414655,GB
@@ -63570,7 +64249,7 @@
1833428992,1833431039,IT
1833431040,1833433087,RU
1833433088,1833434111,TR
-1833434112,1833435135,RU
+1833434112,1833435135,GB
1833435136,1833439231,CZ
1833439232,1833443327,GB
1833443328,1833447423,NL
@@ -63668,11 +64347,10 @@
1834876928,1834885119,RU
1834885120,1834893311,FR
1834893312,1834901503,RU
-1834901504,1834902527,XK
-1834902528,1834903551,RS
+1834901504,1834903551,RS
1834903552,1834904575,BA
1834904576,1834905087,RS
-1834905088,1834905343,BG
+1834905088,1834905343,MD
1834905344,1834909695,RS
1834909696,1834913791,GB
1834913792,1834917887,US
@@ -63689,7 +64367,7 @@
1834967040,1834971135,RU
1834971136,1834973183,PL
1834973184,1834974207,UA
-1834974208,1834975231,GB
+1834974208,1834975231,US
1834975232,1834977279,IL
1834977280,1834983423,PL
1834983424,1834985471,RU
@@ -64432,7 +65110,9 @@
1843990528,1843992575,LB
1843992576,1843994623,AT
1843994624,1844000767,GB
-1844000768,1844002815,NO
+1844000768,1844001535,NO
+1844001536,1844001791,RU
+1844001792,1844002815,NO
1844002816,1844006911,CZ
1844006912,1844008959,SM
1844008960,1844011007,PL
@@ -64490,7 +65170,6 @@
1844135936,1844137983,NL
1844137984,1844140031,FR
1844140032,1844142079,RU
-1844142080,1844144127,RS
1844144128,1844145663,SM
1844145664,1844145919,IT
1844145920,1844146175,SM
@@ -64567,7 +65246,7 @@
1844350976,1844355071,SY
1844355072,1844359167,KZ
1844359168,1844363263,IR
-1844363264,1844367359,RU
+1844363264,1844367359,BR
1844367360,1844371455,CZ
1844371456,1844375551,GE
1844375552,1844379647,RU
@@ -64813,12 +65492,14 @@
1860763648,1860829183,JP
1860829184,1860830207,SG
1860830208,1860831231,US
-1860831232,1860845567,SG
+1860831232,1860832255,DE
+1860832256,1860833279,JP
+1860833280,1860845567,SG
1860845568,1860849663,IN
-1860849664,1860894719,SG
-1860894720,1860951039,IN
+1860849664,1860893695,SG
+1860893696,1860894719,JP
+1860894720,1860950015,IN
1860951040,1860952063,KH
-1860952064,1860956159,IN
1860956160,1860960255,KH
1860960256,1861091327,CN
1861091328,1861222399,AU
@@ -65233,11 +65914,7 @@
1908754432,1908756479,PH
1908756480,1908760575,KR
1908760576,1908761599,NZ
-1908761600,1908762623,CN
-1908762624,1908762879,IN
-1908762880,1908763135,US
-1908763136,1908763391,AU
-1908763392,1908763647,US
+1908761600,1908763647,CN
1908763648,1908764671,ID
1908764672,1908768767,AU
1908768768,1908801535,JP
@@ -65344,7 +66021,9 @@
1919942656,1919999999,CN
1920000000,1920002047,HK
1920002048,1920003071,CN
-1920003072,1920008191,HK
+1920003072,1920004607,HK
+1920004608,1920004863,JP
+1920004864,1920008191,HK
1920008192,1920057343,CN
1920057344,1920058111,HK
1920058112,1920069631,CN
@@ -65794,9 +66473,7 @@
1959113216,1959113471,IN
1959113472,1959113727,HK
1959113728,1959113983,CN
-1959113984,1959114239,HK
-1959114240,1959114495,AU
-1959114496,1959116799,HK
+1959113984,1959116799,HK
1959116800,1959133183,SG
1959133184,1959239679,CN
1959239680,1959241727,KR
@@ -66551,7 +67228,9 @@
2015219968,2015220223,PH
2015220224,2015220479,IN
2015220480,2015220735,JP
-2015220736,2015223807,IN
+2015220736,2015221247,IN
+2015221248,2015221503,SG
+2015221504,2015223807,IN
2015223808,2015225855,ID
2015225856,2015227903,IN
2015227904,2015231999,AU
@@ -67345,7 +68024,7 @@
2090582016,2090590207,SG
2090590208,2090594303,NZ
2090594304,2090598399,IN
-2090598400,2090663935,CN
+2090598400,2090663935,SG
2090663936,2090680319,VN
2090680320,2090696703,NZ
2090696704,2090729471,TH
@@ -67503,7 +68182,9 @@
2111275008,2111307775,HK
2111307776,2111832063,CN
2111832064,2112487423,TW
-2112487424,2112618495,VN
+2112487424,2112528383,VN
+2112528384,2112532479,TL
+2112532480,2112618495,VN
2112618496,2112880639,NZ
2112880640,2113560063,KR
2113560064,2113560319,SG
@@ -67537,7 +68218,7 @@
2113761280,2113765375,VN
2113765376,2113798143,HK
2113798144,2113811455,AU
-2113811456,2113812479,GB
+2113811456,2113812479,TH
2113812480,2113813503,JP
2113813504,2113830911,AU
2113830912,2113863679,CN
@@ -67641,7 +68322,8 @@
2148220516,2148220535,AU
2148220536,2148229151,US
2148229152,2148229183,CA
-2148229184,2148458495,US
+2148229184,2148457471,US
+2148457472,2148458495,BR
2148458496,2148459007,DE
2148459008,2148459519,TW
2148459520,2148459775,US
@@ -67721,7 +68403,9 @@
2153394432,2153394943,SG
2153394944,2153395455,US
2153395456,2153395711,VN
-2153395712,2153396991,US
+2153395712,2153396479,US
+2153396480,2153396735,MO
+2153396736,2153396991,US
2153396992,2153397247,IL
2153397248,2153397503,IN
2153397504,2153397759,SA
@@ -67759,7 +68443,32 @@
2153412352,2153412607,UY
2153412608,2153413119,AU
2153413120,2153413631,BR
-2153413632,2153578495,US
+2153413632,2153414655,US
+2153414656,2153416447,DE
+2153416448,2153417983,NL
+2153417984,2153419007,FR
+2153419008,2153419775,BE
+2153419776,2153420543,AT
+2153420544,2153421311,RU
+2153421312,2153422079,DK
+2153422080,2153422591,ES
+2153422592,2153423103,SE
+2153423104,2153423615,IT
+2153423616,2153423871,NO
+2153423872,2153424127,CZ
+2153424128,2153424383,LU
+2153424384,2153424639,FI
+2153424640,2153424895,BG
+2153424896,2153425151,PT
+2153425152,2153425407,TR
+2153425408,2153425663,PL
+2153425664,2153425919,RO
+2153425920,2153426175,UA
+2153426176,2153426431,LT
+2153426432,2153426687,LV
+2153426688,2153426943,SI
+2153426944,2153427199,SK
+2153427200,2153578495,US
2153578496,2153644031,FR
2153644032,2153906175,US
2153906176,2153971711,GB
@@ -67776,6 +68485,7 @@
2155675648,2155806719,US
2155806720,2155808767,IT
2155808768,2155809791,DE
+2155809792,2155810815,PL
2155810816,2155812863,FR
2155812864,2155814911,GB
2155814912,2155819007,NL
@@ -67793,10 +68503,13 @@
2155834880,2155835391,SE
2155835392,2155839487,RO
2155839488,2155843583,FR
-2155843584,2155845631,RU
+2155843584,2155844607,RU
+2155844608,2155845631,GB
2155845632,2155847679,DE
2155847680,2155849727,ES
2155849728,2155851775,TR
+2155851776,2155852799,DE
+2155852800,2155853823,BE
2155853824,2155855871,SE
2155855872,2155872255,SA
2155872256,2155937791,US
@@ -68024,7 +68737,7 @@
2178547712,2178785279,US
2178785280,2178787327,HU
2178787328,2179071999,US
-2179072000,2179137535,CN
+2179072000,2179137535,SG
2179137536,2179398399,US
2179398400,2179399679,GB
2179399680,2179465215,US
@@ -68155,40 +68868,25 @@
2188509184,2188574719,US
2188574720,2188640255,NL
2188640256,2188705791,AU
-2188705792,2188706153,US
2188706154,2188706154,SI
-2188706155,2188717311,US
2188717312,2188717567,FR
-2188717568,2188718161,US
2188718162,2188718162,SI
-2188718163,2188718337,US
2188718338,2188718338,AT
-2188718339,2188718473,US
2188718474,2188718474,AT
-2188718475,2188719359,US
2188719360,2188719615,NL
2188719616,2188719743,FR
2188719744,2188719871,DE
-2188719872,2188722175,US
2188722176,2188726271,NL
2188726272,2188730367,ES
-2188730368,2188737023,US
2188737024,2188737791,GB
-2188737792,2188738303,US
2188738304,2188738559,GB
-2188738560,2188740607,US
2188740608,2188741631,DE
-2188741632,2188742143,US
2188742144,2188742399,GB
-2188742400,2188749311,US
2188749312,2188749823,FR
-2188749824,2188769471,US
2188769472,2188769503,DE
-2188769504,2188769599,US
2188769600,2188769631,DE
-2188769632,2188769663,US
2188769664,2188770175,DE
-2188770176,2188901753,US
+2188771328,2188901753,US
2188901754,2188901754,GB
2188901755,2188902399,US
2188902400,2188967935,FR
@@ -68197,7 +68895,7 @@
2189164544,2189230079,US
2189230080,2189295615,CH
2189295616,2189492223,US
-2189492224,2189557759,CA
+2189492224,2189557759,TH
2189557760,2189623295,AU
2189623296,2189754367,US
2189754368,2189819903,DE
@@ -68278,9 +68976,7 @@
2193707656,2193707663,IT
2193707664,2193707839,GB
2193707840,2193707847,IT
-2193707848,2193708375,GB
-2193708376,2193708383,IT
-2193708384,2193709199,GB
+2193707848,2193709199,GB
2193709200,2193709215,IT
2193709216,2193711103,GB
2193711104,2193713151,DE
@@ -68330,7 +69026,9 @@
2196439040,2197094399,SE
2197094400,2197159935,US
2197159936,2197225471,GB
-2197225472,2197487615,US
+2197225472,2197319708,US
+2197319709,2197319710,IN
+2197319711,2197487615,US
2197487616,2197553151,IT
2197553152,2197749759,US
2197749760,2197751807,IQ
@@ -68374,7 +69072,9 @@
2197849088,2197850111,BR
2197850112,2197851135,CO
2197851136,2197858303,BR
-2197858304,2197858431,CO
+2197858304,2197858351,CO
+2197858352,2197858359,CW
+2197858360,2197858431,CO
2197858432,2197858447,CW
2197858448,2197859327,CO
2197859328,2197860351,CL
@@ -68387,11 +69087,7 @@
2197875712,2197876735,MX
2197876736,2197880831,BR
2197880832,2197946367,IT
-2197946368,2201190420,US
-2201190421,2201190421,GB
-2201190422,2201632960,US
-2201632961,2201632961,DE
-2201632962,2202533887,US
+2197946368,2202533887,US
2202533888,2202534911,AR
2202534912,2202540031,BR
2202540032,2202541055,PY
@@ -68737,9 +69433,7 @@
2214456064,2214460415,US
2214460416,2214461439,NL
2214461440,2214526975,FR
-2214528000,2214528333,AR
-2214528334,2214528334,NL
-2214528335,2214529023,AR
+2214528000,2214529023,AR
2214529024,2214530047,BR
2214530048,2214531071,AR
2214531072,2214537215,BR
@@ -68758,23 +69452,7 @@
2214589440,2214590463,BR
2214590464,2214591487,AR
2214591488,2214592511,BR
-2214592512,2214791502,US
-2214791503,2214791503,JP
-2214791504,2214792526,US
-2214792527,2214792527,KR
-2214792528,2214794573,US
-2214794574,2214794576,GB
-2214794577,2214795597,US
-2214795598,2214795599,DE
-2214795600,2215856919,US
-2215856920,2215856921,GB
-2215856922,2216231117,US
-2216231118,2216231119,DE
-2216231120,2216231121,US
-2216231122,2216231122,DE
-2216231123,2217377818,US
-2217377819,2217377820,DE
-2217377821,2218786815,US
+2214592512,2218786815,US
2218786816,2219769855,IL
2219769856,2220613631,US
2220613632,2220621823,GU
@@ -68984,9 +69662,7 @@
2230689992,2230689999,US
2230690000,2230690007,AU
2230690008,2230690479,US
-2230690480,2230690639,AU
-2230690640,2230690647,US
-2230690648,2230690735,AU
+2230690480,2230690735,AU
2230690736,2230690751,US
2230690752,2230690823,AU
2230690824,2230690831,US
@@ -69434,7 +70110,12 @@
2258626048,2258626048,VN
2258626049,2258626303,AU
2258626304,2258626559,VN
-2258626560,2258632703,AU
+2258626560,2258626560,HK
+2258626561,2258626815,AU
+2258626816,2258627072,HK
+2258627073,2258627327,AU
+2258627328,2258627839,HK
+2258627840,2258632703,AU
2258632704,2258698239,JP
2258698240,2259222527,US
2259222528,2259288063,DE
@@ -69567,7 +70248,9 @@
2266431488,2266497023,CA
2266497024,2266694655,US
2266694656,2266694911,SG
-2266694912,2270442495,US
+2266694912,2270433279,US
+2270433280,2270437375,CA
+2270437376,2270442495,US
2270442496,2270443519,NL
2270443520,2270455807,US
2270455808,2270456831,CA
@@ -69607,7 +70290,9 @@
2281729536,2281733119,US
2281733120,2281733375,CN
2281733376,2281750527,US
-2281750528,2281758719,CN
+2281750528,2281755135,CN
+2281755136,2281755391,US
+2281755392,2281758719,CN
2281758720,2281760511,US
2281760512,2281760767,CH
2281760768,2282225663,US
@@ -69766,8 +70451,7 @@
2302360576,2302363647,IN
2302363648,2302364671,AU
2302364672,2302365695,IN
-2302365696,2302366207,MY
-2302366208,2302366719,ID
+2302365696,2302366719,ID
2302366720,2302367743,IN
2302367744,2302368767,CN
2302368768,2302370815,IN
@@ -69883,7 +70567,9 @@
2303344480,2303344511,PL
2303344512,2303344559,FR
2303344560,2303344575,PL
-2303344576,2303348863,FR
+2303344576,2303344847,FR
+2303344848,2303344863,ES
+2303344864,2303348863,FR
2303348864,2303348991,GB
2303348992,2303349119,FR
2303349120,2303349247,ES
@@ -69944,7 +70630,9 @@
2303374656,2303374687,NL
2303374688,2303374745,FR
2303374746,2303374746,ES
-2303374747,2303376703,FR
+2303374747,2303376383,FR
+2303376384,2303376399,GB
+2303376400,2303376703,FR
2303376704,2303376735,CZ
2303376736,2303376783,FR
2303376784,2303376799,PT
@@ -70010,8 +70698,7 @@
2304507904,2304573439,AU
2304573440,2304638975,NO
2304638976,2304704511,CA
-2304704512,2304712703,DE
-2304712704,2304770047,US
+2304704512,2304770047,US
2304770048,2304835583,FI
2304835584,2304901119,IN
2304901120,2304966655,CZ
@@ -70261,13 +70948,17 @@
2319467776,2319507455,JP
2319507456,2319581183,US
2319581184,2319646719,IT
-2319646720,2319728639,US
-2319728640,2319741951,DE
-2319741952,2319742975,GB
-2319742976,2319743999,NL
-2319744000,2319745023,DE
-2319745024,2319761407,GB
-2319761408,2319764479,US
+2319646720,2319731711,US
+2319731712,2319731967,DE
+2319731968,2319734844,US
+2319734845,2319734845,DE
+2319734846,2319745023,US
+2319745024,2319749119,GB
+2319749120,2319749791,US
+2319749792,2319749792,GB
+2319749793,2319751172,US
+2319751173,2319751173,GB
+2319751174,2319764479,US
2319764480,2319765503,NL
2319765504,2319843327,US
2319843328,2319908863,IT
@@ -70293,9 +70984,7 @@
2321420288,2321430527,BR
2321430528,2321431551,CR
2321431552,2321446911,BR
-2321446912,2321447263,HN
-2321447264,2321447279,NL
-2321447280,2321447935,HN
+2321446912,2321447935,HN
2321447936,2321452031,BR
2321452032,2321453055,MX
2321453056,2321453359,HN
@@ -70514,67 +71203,83 @@
2323315712,2323316735,MX
2323316736,2323382271,US
2323382272,2323447807,NO
-2323447808,2323644447,US
-2323644448,2323644495,CA
+2323447808,2323644431,US
+2323644432,2323644495,CA
2323644496,2323644511,US
2323644512,2323644543,CA
-2323644544,2323644631,US
-2323644632,2323644639,CA
+2323644544,2323644575,US
+2323644576,2323644607,CA
+2323644608,2323644623,US
+2323644624,2323644639,CA
2323644640,2323644655,US
2323644656,2323644671,CA
2323644672,2323644719,US
2323644720,2323644799,CA
-2323644800,2323645119,US
+2323644800,2323644895,US
+2323644896,2323644927,CA
+2323644928,2323645071,US
+2323645072,2323645087,CA
+2323645088,2323645119,US
2323645120,2323645135,CA
2323645136,2323645151,US
-2323645152,2323645191,CA
-2323645192,2323645199,SE
+2323645152,2323645199,CA
2323645200,2323645263,US
2323645264,2323645279,CA
2323645280,2323645471,US
2323645472,2323645503,CA
-2323645504,2323645967,US
-2323645968,2323645983,CA
+2323645504,2323645535,US
+2323645536,2323645567,CA
+2323645568,2323645663,US
+2323645664,2323645695,CA
+2323645696,2323645951,US
+2323645952,2323645983,CA
2323645984,2323645999,US
2323646000,2323646015,CA
2323646016,2323646079,US
-2323646080,2323646119,CA
-2323646120,2323646127,FI
+2323646080,2323646127,CA
2323646128,2323646335,US
2323646336,2323646383,CA
2323646384,2323646415,US
-2323646416,2323646431,CA
-2323646432,2323646463,US
-2323646464,2323646479,CA
+2323646416,2323646479,CA
2323646480,2323646495,US
2323646496,2323646527,CA
-2323646528,2323646815,US
+2323646528,2323646783,US
+2323646784,2323646799,CA
+2323646800,2323646815,US
2323646816,2323646831,CA
2323646832,2323646911,US
2323646912,2323646975,CA
-2323646976,2323647199,US
+2323646976,2323647119,US
+2323647120,2323647135,CA
+2323647136,2323647199,US
2323647200,2323647215,CA
-2323647216,2323647327,US
-2323647328,2323647359,CA
-2323647360,2323647391,US
-2323647392,2323647407,CA
-2323647408,2323647535,US
-2323647536,2323647583,CA
-2323647584,2323647759,US
-2323647760,2323647775,CA
-2323647776,2323647871,US
-2323647872,2323647903,CA
-2323647904,2323647999,US
+2323647216,2323647311,US
+2323647312,2323647407,CA
+2323647408,2323647487,US
+2323647488,2323647519,CA
+2323647520,2323647535,US
+2323647536,2323647615,CA
+2323647616,2323647743,US
+2323647744,2323647775,CA
+2323647776,2323647791,US
+2323647792,2323647807,CA
+2323647808,2323647871,US
+2323647872,2323647935,CA
+2323647936,2323647999,US
2323648000,2323648007,CA
2323648008,2323648015,FI
-2323648016,2323648319,US
+2323648016,2323648031,US
+2323648032,2323648063,CA
+2323648064,2323648319,US
2323648320,2323648335,CA
-2323648336,2323648639,US
+2323648336,2323648351,US
+2323648352,2323648383,CA
+2323648384,2323648639,US
2323648640,2323648655,CA
-2323648656,2323648767,US
-2323648768,2323648943,CA
-2323648944,2323648951,US
-2323648952,2323649023,CA
+2323648656,2323648671,US
+2323648672,2323648703,CA
+2323648704,2323648767,US
+2323648768,2323649023,CA
2323649024,2323649279,US
2323649280,2323649751,CA
2323649752,2323649759,US
@@ -70582,71 +71287,42 @@
2323649776,2323649783,US
2323649784,2323649823,CA
2323649824,2323649831,NO
-2323649832,2323649855,CA
-2323649856,2323649863,US
-2323649864,2323649919,CA
-2323649920,2323649935,US
-2323649936,2323649951,CA
-2323649952,2323649959,US
-2323649960,2323649983,CA
-2323649984,2323650007,US
+2323649832,2323649895,CA
+2323649896,2323649903,US
+2323649904,2323650007,CA
2323650008,2323650015,RO
-2323650016,2323650023,CA
-2323650024,2323650031,US
-2323650032,2323650039,CA
-2323650040,2323650047,US
-2323650048,2323650087,CA
-2323650088,2323650095,US
-2323650096,2323650135,CA
-2323650136,2323650151,US
-2323650152,2323650167,CA
-2323650168,2323650175,US
-2323650176,2323650183,CA
+2323650016,2323650183,CA
2323650184,2323650191,FI
-2323650192,2323650223,CA
-2323650224,2323650231,US
-2323650232,2323650239,CA
+2323650192,2323650239,CA
2323650240,2323650255,US
-2323650256,2323650263,CA
-2323650264,2323650271,US
-2323650272,2323650367,CA
-2323650368,2323650375,SE
-2323650376,2323650527,CA
-2323650528,2323650559,US
-2323650560,2323651103,CA
-2323651104,2323651135,US
-2323651136,2323651327,CA
+2323650256,2323650447,CA
+2323650448,2323650455,US
+2323650456,2323651327,CA
2323651328,2323651583,US
-2323651584,2323652223,CA
-2323652224,2323652255,US
-2323652256,2323652271,CA
-2323652272,2323652351,US
-2323652352,2323653119,CA
+2323651584,2323652287,CA
+2323652288,2323652335,US
+2323652336,2323652938,CA
+2323652939,2323652939,US
+2323652940,2323653119,CA
2323653120,2323653135,US
2323653136,2323653151,CA
2323653152,2323653375,US
2323653376,2323653631,CA
2323653632,2323653887,US
-2323653888,2323654143,CA
-2323654144,2323654399,US
-2323654400,2323655423,CA
-2323655424,2323655503,US
-2323655504,2323655511,CA
-2323655512,2323655823,US
-2323655824,2323655839,CA
-2323655840,2323655935,US
-2323655936,2323655967,CA
-2323655968,2323655983,US
-2323655984,2323655991,CA
-2323655992,2323655999,US
-2323656000,2323656031,CA
+2323653888,2323655423,CA
+2323655424,2323655487,US
+2323655488,2323655551,CA
+2323655552,2323655807,US
+2323655808,2323655871,CA
+2323655872,2323655935,US
+2323655936,2323656031,CA
2323656032,2323656207,US
2323656208,2323656255,CA
-2323656256,2323656447,US
-2323656448,2323656607,CA
-2323656608,2323656639,US
-2323656640,2323656703,CA
-2323656704,2323656735,US
+2323656256,2323656271,US
+2323656272,2323656287,CA
+2323656288,2323656447,US
+2323656448,2323656719,CA
+2323656720,2323656735,US
2323656736,2323656767,CA
2323656768,2323656815,US
2323656816,2323656831,CA
@@ -70654,54 +71330,34 @@
2323656896,2323656927,CA
2323656928,2323656959,US
2323656960,2323657215,CA
-2323657216,2323657311,US
+2323657216,2323657263,US
+2323657264,2323657279,CA
+2323657280,2323657311,US
2323657312,2323657343,CA
2323657344,2323657535,US
-2323657536,2323657551,CA
-2323657552,2323657559,US
-2323657560,2323657663,CA
-2323657664,2323657839,US
+2323657536,2323657663,CA
+2323657664,2323657695,US
+2323657696,2323657711,CA
+2323657712,2323657759,US
+2323657760,2323657775,CA
+2323657776,2323657839,US
2323657840,2323657919,CA
2323657920,2323658495,US
2323658496,2323658751,CA
-2323658752,2323659263,US
-2323659264,2323659775,CA
-2323659776,2323660223,US
-2323660224,2323660799,CA
-2323660800,2323661055,US
-2323661056,2323661143,CA
-2323661144,2323661151,US
-2323661152,2323661199,CA
-2323661200,2323661223,US
-2323661224,2323661239,CA
-2323661240,2323661271,US
-2323661272,2323661311,CA
+2323658752,2323659519,US
+2323659520,2323659775,CA
+2323659776,2323660191,US
+2323660192,2323661103,CA
+2323661104,2323661111,US
+2323661112,2323661311,CA
2323661312,2323661567,US
-2323661568,2323661607,CA
-2323661608,2323661615,FI
-2323661616,2323661623,CA
-2323661624,2323662335,US
-2323662336,2323662399,CA
-2323662400,2323662527,US
-2323662528,2323662655,CA
-2323662656,2323662719,US
-2323662720,2323662751,CA
-2323662752,2323662767,US
-2323662768,2323662775,CA
-2323662776,2323662783,US
-2323662784,2323663103,CA
+2323661568,2323661631,CA
+2323661632,2323661823,US
+2323661824,2323662079,CA
+2323662080,2323662335,US
+2323662336,2323663103,CA
2323663104,2323663679,US
-2323663680,2323663759,CA
-2323663760,2323663767,US
-2323663768,2323663791,CA
-2323663792,2323663799,US
-2323663800,2323663839,CA
-2323663840,2323663871,US
-2323663872,2323664959,CA
-2323664960,2323665039,US
-2323665040,2323665047,SE
-2323665048,2323665087,US
-2323665088,2323665919,CA
+2323663680,2323665919,CA
2323665920,2323666687,US
2323666688,2323668223,CA
2323668224,2323668991,US
@@ -70710,15 +71366,12 @@
2323670016,2323670271,CA
2323670272,2323671039,US
2323671040,2323671295,CA
-2323671296,2323671807,US
-2323671808,2323672063,CA
+2323671296,2323671551,US
+2323671552,2323672063,CA
2323672064,2323672127,US
2323672128,2323672191,CA
2323672192,2323672383,US
-2323672384,2323672415,CA
-2323672416,2323672447,US
-2323672448,2323672455,CA
-2323672456,2323672463,SE
+2323672384,2323672463,CA
2323672464,2323672479,US
2323672480,2323672511,CA
2323672512,2323672575,US
@@ -70732,10 +71385,8 @@
2323672848,2323672863,US
2323672864,2323672895,CA
2323672896,2323672959,US
-2323672960,2323672991,CA
-2323672992,2323673007,US
-2323673008,2323673023,CA
-2323673024,2323673351,US
+2323672960,2323673055,CA
+2323673056,2323673351,US
2323673352,2323673359,CA
2323673360,2323673375,US
2323673376,2323673391,CA
@@ -70746,11 +71397,15 @@
2323673984,2323674047,US
2323674048,2323674111,CA
2323674112,2323674175,US
-2323674176,2323674575,CA
+2323674176,2323674535,CA
+2323674536,2323674543,US
+2323674544,2323674575,CA
2323674576,2323674591,US
2323674592,2323674639,CA
2323674640,2323674647,CN
-2323674648,2323674767,CA
+2323674648,2323674719,CA
+2323674720,2323674727,US
+2323674728,2323674767,CA
2323674768,2323674775,US
2323674776,2323674799,CA
2323674800,2323674879,US
@@ -70759,7 +71414,9 @@
2323675520,2323675647,CA
2323675648,2323675839,US
2323675840,2323675903,CA
-2323675904,2323690495,US
+2323675904,2323676927,US
+2323676928,2323676991,CA
+2323676992,2323690495,US
2323690496,2323690751,IN
2323690752,2323699711,US
2323699712,2323700735,NL
@@ -70771,13 +71428,7 @@
2324021248,2324021503,MY
2324021504,2324037631,US
2324037632,2324103167,IL
-2324103168,2325979176,US
-2325979177,2325979177,JP
-2325979178,2327101953,US
-2327101954,2327101954,ES
-2327101955,2327101955,GR
-2327101956,2327101956,IT
-2327101957,2327379967,US
+2324103168,2327379967,US
2327379968,2327380991,MX
2327380992,2327383039,BR
2327383040,2327384063,CL
@@ -70844,9 +71495,7 @@
2327499624,2327499631,CL
2327499632,2327499639,HN
2327499640,2327499647,CL
-2327499648,2327499655,HN
-2327499656,2327499663,CL
-2327499664,2327499775,HN
+2327499648,2327499775,HN
2327499776,2327501823,AR
2327501824,2327507967,BR
2327507968,2327508991,AR
@@ -70857,11 +71506,9 @@
2327969792,2328035327,AU
2328035328,2328100863,FR
2328100864,2328199167,US
-2328199168,2328211455,CA
-2328211456,2328215551,DE
-2328215552,2328228863,US
-2328228864,2328230911,CA
-2328230912,2328231935,US
+2328199168,2328215657,CA
+2328215658,2328215658,US
+2328215659,2328231935,CA
2328231936,2328297471,GB
2328313856,2328317183,NL
2328317184,2328317184,DE
@@ -71022,7 +71669,10 @@
2332385280,2332387327,IN
2332387328,2332388351,BD
2332388352,2332389375,HK
-2332389376,2332393471,AU
+2332389376,2332390399,AU
+2332390400,2332391423,PK
+2332391424,2332392447,NZ
+2332392448,2332393471,AU
2332393472,2332394495,CN
2332394496,2332395519,BD
2332395520,2332396543,GU
@@ -71058,7 +71708,9 @@
2333933568,2334064639,DE
2334064640,2334916607,US
2334916608,2334982143,AU
-2334982144,2335113215,US
+2334982144,2335014911,DK
+2335014912,2335047679,NL
+2335047680,2335113215,US
2335113216,2335154175,ES
2335154176,2335178751,DE
2335178752,2335244287,CA
@@ -71070,14 +71722,20 @@
2335637504,2335768575,US
2335768576,2335834111,CA
2335834112,2335899647,SE
-2335899648,2335924223,IN
-2335924224,2335932415,SG
-2335932416,2335940607,DE
-2335940608,2335948799,GB
-2335948800,2335949823,SG
-2335949824,2335951871,GB
-2335951872,2335954943,DE
-2335954944,2335965183,SG
+2335899648,2335926749,IN
+2335926750,2335926750,SG
+2335926751,2335927295,IN
+2335927296,2335928319,SG
+2335928320,2335932415,IN
+2335932416,2335933823,SG
+2335933824,2335933824,DE
+2335933825,2335942468,SG
+2335942469,2335942469,GB
+2335942470,2335944703,SG
+2335944704,2335948799,GB
+2335948800,2335951266,SG
+2335951267,2335951267,GB
+2335951268,2335965183,SG
2335965184,2335970303,US
2335970304,2335971327,CA
2335971328,2335994879,US
@@ -71101,7 +71759,8 @@
2337013760,2337210367,US
2337210368,2337275903,CH
2337275904,2337341439,NZ
-2337341440,2337347583,US
+2337341440,2337342463,AE
+2337342464,2337347583,US
2337347584,2337348607,ID
2337348608,2337351679,US
2337351680,2337352191,DO
@@ -71175,9 +71834,7 @@
2338324480,2338390015,SE
2338390016,2338455551,FI
2338455552,2338521087,NO
-2338521088,2338523135,CA
-2338523136,2338525183,SG
-2338525184,2338553855,CA
+2338521088,2338553855,SG
2338553856,2338570805,AU
2338570806,2338570806,NZ
2338570807,2338586623,AU
@@ -71214,11 +71871,7 @@
2341135872,2341136127,CN
2341136128,2341136639,US
2341136640,2341136655,DE
-2341136656,2341143362,US
-2341143363,2341143363,DE
-2341143364,2341147459,US
-2341147460,2341147460,DE
-2341147461,2341273599,US
+2341136656,2341273599,US
2341273600,2341339135,KW
2341339136,2341404671,CA
2341404672,2341470207,GB
@@ -71259,7 +71912,11 @@
2343632896,2343698431,US
2343698432,2343763967,NL
2343763968,2343829503,TR
-2343829504,2344026111,US
+2343829504,2343924735,US
+2343924736,2343925759,IL
+2343925760,2343934975,US
+2343934976,2343935999,IL
+2343936000,2344026111,US
2344026112,2344091647,CN
2344091648,2344157183,GB
2344157184,2344222719,US
@@ -71328,7 +71985,9 @@
2355470320,2355470335,SG
2355470336,2355470575,US
2355470576,2355470591,PL
-2355470592,2355482607,US
+2355470592,2355471087,US
+2355471088,2355471103,BR
+2355471104,2355482607,US
2355482608,2355482623,HK
2355482624,2355486719,US
2355486720,2355494911,AU
@@ -71664,16 +72323,30 @@
2378254336,2378254591,US
2378254592,2378256383,ES
2378256384,2378257407,US
-2378257408,2378260479,ES
+2378257408,2378258431,ES
+2378258432,2378258687,US
+2378258688,2378260479,ES
2378260480,2378260991,GB
2378260992,2378261503,US
-2378261504,2378267647,ES
+2378261504,2378265663,ES
+2378265664,2378265727,US
+2378265728,2378267647,ES
2378267648,2378269695,US
2378269696,2378285055,ES
2378285056,2378286079,US
-2378286080,2378287615,ES
+2378286080,2378286223,ES
+2378286224,2378286239,CA
+2378286240,2378286279,ES
+2378286280,2378286287,CA
+2378286288,2378287615,ES
2378287616,2378288127,US
-2378288128,2378301439,ES
+2378288128,2378289663,ES
+2378289664,2378290175,US
+2378290176,2378292735,ES
+2378292736,2378293247,US
+2378293248,2378299135,ES
+2378299136,2378299391,US
+2378299392,2378301439,ES
2378301440,2378366975,FR
2378366976,2378432511,US
2378432512,2378498047,TR
@@ -71800,7 +72473,10 @@
2385955840,2385956863,TC
2385956864,2385969151,US
2385969152,2386624511,CA
-2386624512,2386690047,US
+2386624512,2386659839,US
+2386659840,2386661375,GB
+2386661376,2386665471,US
+2386665472,2386690047,GB
2386690048,2386988287,CA
2386988288,2386988543,CH
2386988544,2386989055,CA
@@ -71827,7 +72503,13 @@
2388361216,2388367359,US
2388367360,2388369407,NL
2388369408,2388393983,US
-2388393984,2389245951,CA
+2388393984,2388459519,CA
+2388459520,2388467711,US
+2388467712,2388471807,GB
+2388471808,2388508159,US
+2388508160,2388508671,CA
+2388508672,2388525055,US
+2388525056,2389245951,CA
2389245952,2389311487,US
2389311488,2389639167,CA
2389639168,2389671935,US
@@ -71898,10 +72580,10 @@
2398748672,2398945279,US
2398945280,2399010815,CA
2399010816,2399109119,US
-2399109120,2399141887,PR
-2399141888,2399148031,BR
-2399148032,2399149055,DO
-2399149056,2399150079,BR
+2399109120,2399133183,PR
+2399133184,2399133439,US
+2399133440,2399141887,PR
+2399141888,2399150079,BR
2399150080,2399151103,BQ
2399151104,2399158271,BR
2399158272,2399159295,AR
@@ -71932,9 +72614,7 @@
2399206400,2399207423,BR
2399207424,2401828863,US
2401828864,2401894399,GB
-2401894400,2402157059,US
-2402157060,2402157060,JP
-2402157061,2402222079,US
+2401894400,2402222079,US
2402222080,2402287615,IE
2402287616,2402418687,US
2402418688,2402484223,AT
@@ -71945,9 +72625,7 @@
2402945024,2402947071,GB
2402947072,2403401727,US
2403401728,2403467263,GB
-2403467264,2404476338,US
-2404476339,2404476339,SA
-2404476340,2404732927,US
+2403467264,2404732927,US
2404732928,2404737023,PR
2404737024,2404974591,US
2404974592,2405040127,HK
@@ -71994,9 +72672,10 @@
2408159232,2408162303,BR
2408162304,2408162703,HN
2408162704,2408162719,DE
-2408162720,2408164279,HN
+2408162720,2408163839,HN
+2408163840,2408164279,US
2408164280,2408164287,IT
-2408164288,2408164351,HN
+2408164288,2408164351,US
2408165376,2408169471,BR
2408169472,2408170495,TT
2408170496,2408178687,BR
@@ -72192,128 +72871,40 @@
2417688576,2417754111,SE
2417754112,2418016255,US
2418016256,2418081791,GB
-2418081792,2418278655,US
-2418278656,2418278911,ZA
-2418278912,2418279487,US
-2418279488,2418279491,ES
-2418279492,2418281151,US
-2418281152,2418281215,IN
-2418281216,2418281983,US
-2418281984,2418282239,ES
-2418282240,2418284543,US
-2418284544,2418285055,CA
-2418285056,2418285567,MX
-2418285568,2418286335,US
-2418286336,2418286591,MX
-2418286592,2418287103,CA
-2418287104,2418287295,US
-2418287296,2418287359,GB
-2418287360,2418291199,US
-2418291200,2418292223,AR
-2418292224,2418292735,PH
-2418292736,2418294015,US
-2418294016,2418294783,AR
-2418294784,2418294911,US
-2418294912,2418295039,GB
-2418295040,2418295807,US
-2418295808,2418295935,GB
-2418295936,2418295947,US
-2418295948,2418295951,GB
-2418295952,2418296063,US
-2418296064,2418296319,DE
+2418081792,2418284543,US
+2418284544,2418285567,MX
+2418285568,2418296319,US
2418296320,2418297343,IN
-2418297344,2418297855,US
-2418297856,2418298367,BR
-2418298368,2418298623,ZA
-2418298624,2418301439,US
-2418301440,2418301695,PH
-2418301696,2418302463,US
-2418302464,2418302719,PH
-2418302720,2418302975,US
-2418302976,2418303231,IN
-2418303232,2418303487,ZA
-2418303488,2418303871,US
-2418303872,2418303879,GB
-2418303880,2418304511,US
-2418304512,2418304671,GB
-2418304672,2418304767,US
-2418304768,2418304895,DE
-2418304896,2418305151,US
-2418305152,2418305279,IN
-2418305280,2418305535,ES
-2418305536,2418306303,US
-2418306304,2418306559,GB
-2418306560,2418307327,MU
-2418307328,2418307455,US
-2418307456,2418307583,PH
-2418307584,2418308095,LV
-2418308096,2418308351,PH
-2418308352,2418308383,GB
-2418308384,2418308607,US
-2418308608,2418309119,RO
-2418309120,2418309631,PL
-2418309632,2418310143,US
-2418310144,2418310655,PH
-2418310656,2418311167,US
+2418297344,2418305023,US
+2418305024,2418305279,IN
+2418305280,2418307583,US
+2418307584,2418307839,LV
+2418307840,2418311167,US
2418311168,2418311679,IN
-2418311680,2418312703,CZ
+2418311680,2418312703,US
2418312704,2418313215,IN
-2418313216,2418314239,PH
+2418313216,2418314239,US
2418314240,2418314751,IN
-2418314752,2418315007,PH
-2418315008,2418315135,IN
-2418315136,2418315263,US
+2418314752,2418315263,US
2418315264,2418315775,IN
-2418315776,2418316287,CN
+2418315776,2418316287,US
2418316288,2418316799,IN
-2418316800,2418317055,AU
-2418317056,2418317311,JP
-2418317312,2418317823,PH
-2418317824,2418318079,US
-2418318080,2418318335,IN
-2418318336,2418319871,PH
-2418319872,2418320127,KR
-2418320128,2418320191,US
-2418320192,2418320255,AU
-2418320256,2418320319,IN
-2418320320,2418320383,PH
-2418320384,2418321407,US
-2418321408,2418322431,PH
-2418322432,2418322687,US
-2418322688,2418322847,IN
-2418322848,2418323455,US
+2418316800,2418323455,US
2418323456,2418323711,IN
2418323712,2418323967,US
-2418323968,2418324479,IN
-2418324480,2418324735,PH
-2418324736,2418324799,IN
-2418324800,2418324991,US
+2418323968,2418324223,IN
+2418324224,2418324991,US
2418324992,2418326015,IN
-2418326016,2418326527,PH
+2418326016,2418326527,US
2418326528,2418327039,IN
-2418327040,2418327423,US
-2418327424,2418327487,PH
-2418327488,2418328063,US
-2418328064,2418328831,SK
-2418328832,2418329599,US
-2418329600,2418330367,SK
-2418330368,2418331135,US
+2418327040,2418331135,US
2418331136,2418331647,IN
2418331648,2418332159,US
2418332160,2418332671,IN
-2418332672,2418333183,PH
+2418332672,2418333183,US
2418333184,2418334207,IN
-2418334208,2418334463,CN
-2418334464,2418334719,PH
-2418334720,2418339071,IN
-2418339072,2418339839,MU
-2418339840,2418340351,CN
-2418340352,2418340607,US
-2418340608,2418341375,IN
-2418341376,2418341887,PH
-2418341888,2418342911,IN
-2418342912,2418343423,PH
-2418343424,2418343935,IN
+2418334208,2418334719,US
+2418334720,2418343935,IN
2418343936,2418606079,US
2418606080,2418671615,DE
2418671616,2418737151,US
@@ -72323,7 +72914,6 @@
2418998528,2419064831,US
2419064832,2419065855,BD
2419065856,2419067903,HK
-2419067904,2419068927,CN
2419068928,2419069951,AU
2419069952,2419071999,VN
2419072000,2419073023,PH
@@ -72361,7 +72951,6 @@
2419105792,2419106815,BD
2419106816,2419107839,AU
2419107840,2419108863,IN
-2419108864,2419109887,CN
2419109888,2419110911,IN
2419110912,2419112959,CN
2419112960,2419116031,HK
@@ -72434,17 +73023,17 @@
2426798080,2426942463,US
2426942464,2426943487,CA
2426943488,2426961919,US
-2426961920,2426962239,CA
-2426962240,2426962303,US
-2426962304,2426962335,CA
-2426962336,2426962351,US
-2426962352,2426962527,CA
-2426962528,2426962543,US
-2426962544,2426962551,CA
-2426962552,2426962623,US
-2426962624,2426978303,CA
-2426978304,2426978815,NL
-2426978816,2426994687,CA
+2426961920,2426972159,CA
+2426972160,2426974207,US
+2426974208,2426975775,CA
+2426975776,2426975999,US
+2426976000,2426976543,CA
+2426976544,2426976767,US
+2426976768,2426976799,CA
+2426976800,2426976991,US
+2426976992,2426980351,CA
+2426980352,2426988543,US
+2426988544,2426994687,CA
2426994688,2427224063,US
2427224064,2427256831,CA
2427256832,2427322367,GB
@@ -72719,7 +73308,9 @@
2429566976,2429571071,US
2429571072,2429572095,CA
2429572096,2429573119,US
-2429573120,2429573375,CA
+2429573120,2429573311,CA
+2429573312,2429573327,IN
+2429573328,2429573375,CA
2429573376,2429575167,US
2429575168,2429577215,CA
2429577216,2429579263,US
@@ -72771,14 +73362,33 @@
2433617920,2433626111,EE
2433626112,2433628159,SI
2433628160,2433630207,NL
-2433630208,2433637887,GB
+2433630208,2433631999,GB
+2433632000,2433632511,DE
+2433632512,2433632767,GB
+2433632768,2433633279,DE
+2433633280,2433634047,GB
+2433634048,2433634303,NL
+2433634304,2433634559,GB
+2433634560,2433635071,FR
+2433635072,2433635327,GB
+2433635328,2433635583,IT
+2433635584,2433635839,GB
+2433635840,2433636095,SE
+2433636096,2433636351,GB
+2433636352,2433636607,RU
+2433636608,2433636863,GB
+2433636864,2433637119,TR
+2433637120,2433637375,GB
+2433637376,2433637631,CZ
+2433637632,2433637887,GB
2433637888,2433638143,BY
2433638144,2433638399,GB
2433638400,2433646591,SE
2433646592,2433647103,NL
2433647104,2433647359,DE
2433647360,2433647615,US
-2433647616,2433648127,DE
+2433647616,2433647871,DE
+2433647872,2433648127,US
2433648128,2433648383,BR
2433648384,2433648639,US
2433648640,2433650687,DE
@@ -72801,7 +73411,9 @@
2435108352,2435121151,GB
2435121152,2435578879,NL
2435578880,2435579903,GB
-2435579904,2436300799,NL
+2435579904,2435710975,NL
+2435710976,2435776511,DE
+2435776512,2436300799,NL
2436300800,2436366335,GB
2436366336,2436628479,NL
2436628480,2436630527,BE
@@ -72925,7 +73537,10 @@
2448393472,2448393983,PL
2448393984,2448394239,FR
2448394240,2448394303,DE
-2448394304,2448394463,FR
+2448394304,2448394351,FR
+2448394352,2448394367,ES
+2448394368,2448394383,FI
+2448394384,2448394463,FR
2448394464,2448394479,DE
2448394480,2448394655,FR
2448394656,2448394671,DE
@@ -73060,9 +73675,7 @@
2449039360,2449041407,DE
2449041408,2449042431,NL
2449042432,2449042687,LV
-2449042944,2449043199,GB
2449043200,2449043455,FR
-2449043456,2449044223,GB
2449044224,2449044479,RU
2449044480,2449045503,GB
2449045504,2449080319,KZ
@@ -73179,7 +73792,9 @@
2454852608,2454853631,BE
2454853632,2454864895,US
2454864896,2454865407,GB
-2454865408,2454902783,US
+2454865408,2454887423,US
+2454887424,2454887679,DK
+2454887680,2454902783,US
2454902784,2454903807,MX
2454903808,2454904831,US
2454904832,2454906879,AR
@@ -73232,6 +73847,7 @@
2456354816,2456406015,GB
2456406016,2456408063,FR
2456408064,2456420351,GB
+2456420352,2456485887,NL
2456485888,2456551423,DE
2456551424,2456616959,AT
2456616960,2456682495,CH
@@ -73240,6 +73856,29 @@
2456829440,2456829464,US
2456829465,2456829465,GB
2456829466,2456829695,US
+2456829952,2456830207,CA
+2456830208,2456831231,US
+2456834048,2456834303,CA
+2456834304,2456835327,US
+2456835328,2456835583,BR
+2456838144,2456838399,IE
+2456838400,2456838655,GB
+2456838656,2456838911,NL
+2456838912,2456839167,DK
+2456839168,2456839423,DE
+2456839424,2456839679,FR
+2456839680,2456839935,DE
+2456839936,2456840191,PL
+2456840192,2456840447,CZ
+2456840448,2456840703,RO
+2456840704,2456840959,AE
+2456840960,2456841215,IT
+2456841216,2456841471,ZA
+2456842240,2456842495,JP
+2456842496,2456842751,HK
+2456843264,2456843519,SG
+2456843520,2456843775,IN
+2456843776,2456844287,AU
2456846336,2456846591,FR
2456846592,2456846847,CZ
2456846848,2456847103,IE
@@ -73247,6 +73886,7 @@
2456847616,2456847871,BR
2456847872,2456848127,IN
2456848128,2456848383,DK
+2456861952,2456862207,CA
2456862720,2456862975,NL
2456862976,2456863743,US
2456863744,2456863999,DE
@@ -73369,7 +74009,8 @@
2459846656,2459847167,FR
2459847168,2459847679,UA
2459847680,2459848191,RU
-2459848192,2459848703,FR
+2459848192,2459848447,FR
+2459848448,2459848703,KZ
2459848704,2459860991,RU
2459860992,2459893759,ES
2459893760,2459959295,CH
@@ -73505,7 +74146,9 @@
2465681408,2465683455,SE
2465683456,2465685503,FR
2465685504,2465690367,DE
-2465690368,2465693695,IT
+2465690368,2465693439,IT
+2465693440,2465693455,FR
+2465693456,2465693695,IT
2465693696,2465697791,NO
2465697792,2465718271,SE
2465718272,2465721855,NO
@@ -73518,7 +74161,9 @@
2465923072,2465988607,SA
2465988608,2465989631,ID
2465989632,2465992191,SG
-2465992192,2466004479,US
+2465992192,2465996031,US
+2465996032,2465996287,DE
+2465996288,2466004479,US
2466004480,2466004991,DE
2466004992,2466006015,US
2466006016,2466006527,GB
@@ -73542,7 +74187,11 @@
2466020864,2466021119,IS
2466021120,2466021375,IM
2466021376,2466022399,IL
-2466022400,2466049023,US
+2466022400,2466022911,SE
+2466022912,2466042367,US
+2466042368,2466042623,ES
+2466042624,2466042879,AU
+2466042880,2466049023,US
2466049024,2466049535,GB
2466049536,2466053119,US
2466053120,2466054143,CA
@@ -73558,6 +74207,8 @@
2466201600,2466209791,MK
2466209792,2466211839,ES
2466211840,2466213887,GB
+2466213888,2466214911,DE
+2466214912,2466215935,IE
2466215936,2466216959,US
2466216960,2466217727,SG
2466217728,2466217983,DE
@@ -73699,7 +74350,9 @@
2475139392,2475139455,ES
2475139456,2475140287,FR
2475140288,2475140319,CZ
-2475140320,2475141935,FR
+2475140320,2475141647,FR
+2475141648,2475141655,DE
+2475141656,2475141935,FR
2475141936,2475141951,FI
2475141952,2475143295,FR
2475143296,2475143359,DE
@@ -73775,7 +74428,9 @@
2475156064,2475156095,FI
2475156096,2475156479,FR
2475156480,2475156607,ES
-2475156608,2475157247,FR
+2475156608,2475156687,FR
+2475156688,2475156695,GB
+2475156696,2475157247,FR
2475157248,2475157279,CZ
2475157280,2475157887,FR
2475157888,2475158015,BE
@@ -73787,9 +74442,7 @@
2475159424,2475159551,DE
2475159552,2475159711,FR
2475159712,2475159743,ES
-2475159744,2475160063,FR
-2475160064,2475160079,GB
-2475160080,2475160351,FR
+2475159744,2475160351,FR
2475160352,2475160383,PL
2475160384,2475160447,FR
2475160448,2475160575,NL
@@ -74037,7 +74690,9 @@
2486697984,2486763519,ES
2486763520,2486800895,US
2486800896,2486801407,CA
-2486801408,2486924799,US
+2486801408,2486906367,US
+2486906368,2486906623,CA
+2486906624,2486924799,US
2486924800,2486925311,CA
2486925312,2486927359,US
2486927360,2486928127,CA
@@ -74074,9 +74729,12 @@
2487225344,2487225855,NL
2487225856,2487227391,US
2487227392,2487227647,MX
-2487227648,2487228415,US
+2487227648,2487227903,AR
+2487227904,2487228415,US
2487228416,2487228671,ZA
-2487228672,2487236607,US
+2487228672,2487228927,US
+2487228928,2487230207,GB
+2487230208,2487236607,US
2487236608,2487237631,GB
2487237632,2487238143,MF
2487238144,2487238655,US
@@ -74137,7 +74795,9 @@
2492989440,2493513727,US
2493513728,2493579263,SE
2493579264,2493644799,JP
-2493644800,2493756415,US
+2493644800,2493740031,US
+2493740032,2493740095,CN
+2493740096,2493756415,US
2493756416,2493757439,CA
2493757440,2494103551,US
2494103552,2494169087,FR
@@ -74178,16 +74838,20 @@
2499616802,2499616830,ES
2499616831,2499617023,US
2499617024,2499617279,IE
-2499617280,2499617535,NL
-2499617536,2499624959,US
+2499617280,2499617791,NL
+2499617792,2499624959,US
2499624960,2499641343,FR
2499641344,2499665919,GB
-2499665920,2499667455,US
-2499667456,2499668735,FR
-2499668736,2499668991,US
+2499665920,2499666431,US
+2499666432,2499666687,ES
+2499666688,2499667199,US
+2499667200,2499667455,IT
+2499667456,2499668991,FR
2499668992,2499670527,GB
2499670528,2499670783,DE
-2499670784,2499739647,US
+2499670784,2499673599,US
+2499673600,2499673855,DE
+2499673856,2499739647,US
2499739648,2499805183,DO
2499805184,2499870719,TR
2499870720,2500001791,US
@@ -74508,8 +75172,8 @@
2501644288,2501648383,JP
2501648384,2501672959,US
2501672960,2501681151,SG
-2501681152,2501685247,AU
-2501685248,2501705791,US
+2501681152,2501687295,AU
+2501687296,2501705791,US
2501705792,2501705799,NL
2501705800,2502033407,US
2502033408,2502037503,LU
@@ -74518,16 +75182,16 @@
2502049792,2502098943,US
2502098944,2502164479,IT
2502164480,2502166527,GB
-2502166528,2502180863,US
+2502166528,2502173695,US
+2502173696,2502174207,DE
+2502174208,2502180863,US
2502180864,2502181119,FI
2502181120,2502221823,US
2502221824,2502230015,ES
2502230016,2503016447,US
2503016448,2503147519,IL
2503147520,2503344127,US
-2503344128,2503344383,AF
-2503344384,2503344639,DE
-2503344640,2503376895,AF
+2503344128,2503376895,AF
2503376896,2503409663,JP
2503409664,2503475199,US
2503475200,2503477487,CA
@@ -74540,11 +75204,15 @@
2503518079,2503518079,US
2503518080,2503518080,CA
2503518081,2503518082,US
-2503518083,2503525055,CA
+2503518083,2503521307,CA
+2503521308,2503521311,BR
+2503521312,2503525055,CA
2503525056,2503525119,US
2503525120,2503530911,CA
2503530912,2503530943,US
-2503530944,2503533375,CA
+2503530944,2503532335,CA
+2503532336,2503532343,ES
+2503532344,2503533375,CA
2503533376,2503533376,US
2503533377,2503534607,CA
2503534608,2503534615,BR
@@ -74575,7 +75243,7 @@
2504473600,2504474623,US
2504474624,2504482815,HR
2504482816,2504486911,ES
-2504486912,2504491007,US
+2504486912,2504491007,HK
2504491008,2504499199,IT
2504499200,2504501247,IE
2504501248,2504501385,GB
@@ -74602,7 +75270,9 @@
2504949760,2504982527,IL
2504982528,2505130367,US
2505130368,2505130383,JP
-2505130384,2505457663,US
+2505130384,2505145775,US
+2505145776,2505145791,NL
+2505145792,2505457663,US
2505457664,2505459711,IE
2505459712,2505465855,US
2505465856,2505467903,GB
@@ -74749,7 +75419,9 @@
2511339520,2511405055,AU
2511405056,2512715775,GB
2512715776,2512781311,FI
-2512781312,2512867327,US
+2512781312,2512859647,US
+2512859648,2512860159,IN
+2512860160,2512867327,US
2512867328,2512867839,IE
2512867840,2512872447,US
2512872448,2512872959,SG
@@ -74779,9 +75451,7 @@
2513048048,2513048063,ES
2513048064,2513049551,FR
2513049552,2513049567,ES
-2513049568,2513049647,FR
-2513049648,2513049651,NL
-2513049652,2513049919,FR
+2513049568,2513049919,FR
2513049920,2513049983,NL
2513049984,2513049987,PL
2513049988,2513050391,FR
@@ -74829,9 +75499,7 @@
2513074000,2513074015,ES
2513074016,2513074319,FR
2513074320,2513074327,LT
-2513074328,2513075247,FR
-2513075248,2513075263,GB
-2513075264,2513075455,FR
+2513074328,2513075455,FR
2513075456,2513075487,PL
2513075488,2513075791,FR
2513075792,2513075807,ES
@@ -74960,7 +75628,8 @@
2515664896,2516037631,DE
2516037632,2516038143,DK
2516038144,2516058111,DE
-2516058112,2516123647,CA
+2516058112,2516076543,US
+2516076544,2516123647,CA
2516123648,2516254719,DE
2516254720,2516320255,FR
2516320256,2516451327,US
@@ -74988,6 +75657,8 @@
2516541440,2516545535,GB
2516545536,2516547583,RU
2516547584,2516549631,GB
+2516549632,2516550655,UA
+2516550656,2516551679,RU
2516551680,2516553727,FR
2516553728,2516557823,AZ
2516557824,2516559871,RU
@@ -75043,15 +75714,14 @@
2523645952,2523646975,NL
2523646976,2523647999,NP
2523648000,2523651071,IN
-2523651072,2523652095,AU
+2523651072,2523652095,TH
2523652096,2523657215,IN
2523657216,2523659263,ID
2523659264,2523660287,IN
2523660288,2523725823,US
-2523725824,2523734015,SG
-2523734016,2523746303,CN
+2523725824,2523746303,SG
2523746304,2523748351,KR
-2523748352,2523791359,CN
+2523748352,2523791359,SG
2523791360,2524119039,US
2524119040,2524184575,CN
2524184576,2524315647,TW
@@ -75279,7 +75949,9 @@
2538619776,2538619807,LT
2538619808,2538619903,FR
2538619904,2538619911,ES
-2538619912,2538620231,FR
+2538619912,2538619959,FR
+2538619960,2538619960,DE
+2538619961,2538620231,FR
2538620232,2538620239,ES
2538620240,2538620255,FR
2538620256,2538620287,NL
@@ -75538,7 +76210,9 @@
2547154944,2547187711,NZ
2547187712,2547318783,GB
2547318784,2547515391,US
-2547515392,2547517439,RU
+2547515392,2547516415,RU
+2547516416,2547517439,GB
+2547517440,2547519487,DK
2547523584,2547524607,DE
2547524608,2547525631,IR
2547525632,2547527679,DE
@@ -75652,7 +76326,10 @@
2549940224,2550005759,AE
2550005760,2550136831,SA
2550136832,2550202367,DO
-2550202368,2553544703,US
+2550202368,2552250367,US
+2552250368,2552266751,PH
+2552266752,2552299519,HK
+2552299520,2553544703,US
2553544704,2553610239,IN
2553610240,2553806847,US
2553806848,2554068991,IN
@@ -75721,7 +76398,7 @@
2556985344,2557018111,CN
2557018112,2557083647,GB
2557083648,2557214719,ZA
-2557214720,2557280255,HK
+2557214720,2557280255,US
2557280256,2557542399,ZA
2557542400,2557607935,US
2557607936,2557673471,GB
@@ -75784,19 +76461,21 @@
2568093696,2568159231,US
2568159232,2568224767,PL
2568224768,2568290303,SG
-2568290304,2568505660,US
-2568505661,2568505661,SA
-2568505662,2568580923,US
-2568580924,2568580924,GB
-2568580925,2569142271,US
+2568290304,2569142271,US
2569142272,2569404415,CN
2569404416,2569797631,US
2569797632,2569863167,NO
2569863168,2569885183,US
2569885184,2569885439,CH
-2569885440,2569953279,US
-2569953280,2569961471,CH
-2569961472,2572681215,US
+2569885440,2569928703,US
+2569928704,2569936383,CH
+2569936384,2569936895,US
+2569936896,2569970175,CH
+2569970176,2569970687,US
+2569970688,2569994239,CH
+2569994240,2570125311,US
+2570125312,2570190847,BE
+2570190848,2572681215,US
2572681216,2572746751,SE
2572746752,2572944127,US
2572944128,2572944383,LT
@@ -76073,13 +76752,9 @@
2584764416,2584764671,MA
2584764672,2584767231,US
2584767232,2584767487,TR
-2584767488,2584768511,US
-2584768512,2584768767,IL
-2584768768,2584769535,US
+2584767488,2584769535,US
2584769536,2584770047,IL
-2584770048,2584770303,US
-2584770304,2584770559,IL
-2584770560,2584772448,US
+2584770048,2584772448,US
2584772449,2584772449,GB
2584772450,2584775423,US
2584775424,2584775679,KE
@@ -76150,7 +76825,9 @@
2586640896,2586641407,FR
2586641408,2586650687,US
2586650688,2586650703,DE
-2586650704,2586653439,US
+2586650704,2586651647,US
+2586651648,2586651903,NL
+2586651904,2586653439,US
2586653440,2586653695,NL
2586653696,2586694655,US
2586694656,2586694911,FR
@@ -76349,7 +77026,9 @@
2587746304,2587754495,ES
2587754496,2587762687,US
2587762688,2587763711,ES
-2587763712,2587926527,US
+2587763712,2587787263,US
+2587787264,2587787519,GB
+2587787520,2587926527,US
2587926528,2587930623,BG
2587930624,2587938815,US
2587938816,2587942911,PR
@@ -76423,7 +77102,6 @@
2588343040,2588343295,BI
2588343296,2588344319,ZA
2588344320,2588409855,MU
-2588409856,2588410879,KE
2588410880,2588412927,ZA
2588412928,2588413951,ST
2588413952,2588414975,UG
@@ -76531,7 +77209,9 @@
2589242112,2589242367,TR
2589242368,2589242623,UA
2589242624,2589242879,VN
-2589242880,2589265919,US
+2589242880,2589263871,US
+2589263872,2589264895,JP
+2589264896,2589265919,US
2589265920,2589270015,HK
2589270016,2589523967,US
2589523968,2589589503,HK
@@ -76560,8 +77240,8 @@
2591473664,2591477759,AO
2591477760,2591479295,PT
2591479296,2591479551,AO
-2591479552,2591480831,PT
-2591480832,2591481343,AO
+2591479552,2591480575,PT
+2591480576,2591481343,AO
2591481344,2591481855,PT
2591481856,2591483903,TZ
2591483904,2591485951,KE
@@ -76617,9 +77297,10 @@
2594177024,2595225599,GH
2595225600,2596274175,EG
2596274176,2597322751,ZA
-2597322752,2598361599,US
+2597322752,2598240255,US
+2598240256,2598361599,HK
2598361600,2598362111,CI
-2598362112,2598371327,US
+2598362112,2598371327,HK
2598371328,2598895615,UG
2598895616,2599157759,CI
2599157760,2599419903,EG
@@ -76685,8 +77366,8 @@
2606596096,2606628863,ZA
2606628864,2607349759,US
2607349760,2607415295,CH
-2607415296,2608728319,US
-2608728320,2608728575,SG
+2607415296,2608728063,US
+2608728064,2608728575,SG
2608728576,2609053695,US
2609053696,2609119231,GB
2609119232,2609184767,FR
@@ -76936,7 +77617,9 @@
2619342848,2619473919,US
2619473920,2619539455,CA
2619539456,2619604991,ES
-2619604992,2619736063,US
+2619604992,2619734527,US
+2619734528,2619734783,NL
+2619734784,2619736063,US
2619736064,2619737087,ZA
2619737088,2619738111,BW
2619738112,2619740159,RW
@@ -77000,8 +77683,7 @@
2621689280,2621689343,CZ
2621689344,2621689599,AU
2621689600,2621689855,CA
-2621689856,2621692927,SG
-2621692928,2621693951,CY
+2621689856,2621693951,SG
2621693952,2621698047,DE
2621698048,2621702143,GB
2621702144,2621767679,US
@@ -77194,7 +77876,9 @@
2637454336,2637454591,GB
2637454592,2637454847,US
2637454848,2637455103,AU
-2637455104,2637457407,US
+2637455104,2637456639,US
+2637456640,2637456895,BR
+2637456896,2637457407,US
2637457408,2637457663,JP
2637457664,2637627391,US
2637627392,2637627551,IE
@@ -77302,7 +77986,9 @@
2637746296,2637746311,NL
2637746312,2637746319,FI
2637746320,2637746327,FR
-2637746328,2637746687,US
+2637746328,2637746335,US
+2637746336,2637746343,NL
+2637746344,2637746687,US
2637746688,2637746703,KR
2637746704,2637746743,US
2637746744,2637746751,HK
@@ -77441,11 +78127,19 @@
2642280448,2642411519,US
2642411520,2642477055,AU
2642477056,2642542591,FI
-2642542592,2642751487,US
-2642751488,2642753535,CA
-2642753536,2642757631,US
+2642542592,2642739199,US
+2642739200,2642743295,RU
+2642743296,2642751487,US
+2642751488,2642755583,CA
+2642755584,2642757631,DE
2642757632,2642759679,SA
-2642759680,2642935807,US
+2642759680,2642761727,AE
+2642761728,2642763775,SA
+2642763776,2642767871,AU
+2642767872,2642771967,DE
+2642771968,2642776063,NL
+2642776064,2642780159,JP
+2642780160,2642935807,US
2642935808,2643001343,FR
2643001344,2643066879,US
2643066880,2643132415,IT
@@ -77815,7 +78509,9 @@
2655349944,2655349951,US
2655349952,2655352517,CA
2655352518,2655352518,US
-2655352519,2655358207,CA
+2655352519,2655352746,CA
+2655352747,2655352747,US
+2655352748,2655358207,CA
2655358208,2655358463,US
2655358464,2655360143,CA
2655360144,2655360151,US
@@ -77941,7 +78637,9 @@
2662366272,2662366287,IE
2662366288,2662366591,US
2662366592,2662366607,AF
-2662366608,2662416463,US
+2662366608,2662366735,US
+2662366736,2662366751,FR
+2662366752,2662416463,US
2662416464,2662416471,SE
2662416472,2662417947,US
2662417948,2662417951,DE
@@ -77967,11 +78665,7 @@
2662498304,2662662143,GB
2662662144,2662670335,KG
2662670336,2662674431,AZ
-2662674432,2662677087,DE
-2662677088,2662677279,US
-2662677280,2662677375,DE
-2662677376,2662678527,US
-2662678528,2662686719,DE
+2662674432,2662686719,DE
2662686720,2662694911,CH
2662694912,2662727679,KG
2662727680,2662793215,HK
@@ -78163,18 +78857,9 @@
2671750144,2671837183,US
2671837184,2671841279,SG
2671841280,2671845375,GB
-2671845376,2671849471,US
-2671849472,2671853567,GB
-2671853568,2671857663,US
-2671857664,2671861759,GB
-2671861760,2671865855,US
-2671865856,2671869951,DE
-2671869952,2671874047,SG
-2671874048,2671878143,IN
-2671878144,2671886335,US
-2671886336,2671890431,NL
-2671890432,2671892479,GB
-2671892480,2672099327,US
+2671845376,2671861653,US
+2671861654,2671861654,GB
+2671861655,2672099327,US
2672099328,2672164863,DE
2672164864,2672295935,US
2672295936,2672296959,ES
@@ -78189,25 +78874,18 @@
2673082368,2673147903,FR
2673147904,2673213439,US
2673213440,2673278975,GB
-2673278976,2673410047,US
-2673410048,2673418239,DE
-2673418240,2673425151,US
-2673425152,2673425407,DE
-2673425408,2673425663,US
-2673425664,2673425919,GB
-2673425920,2673426175,IN
-2673426176,2673426431,CA
-2673426432,2673434623,US
+2673278976,2673410485,US
+2673410486,2673410486,DE
+2673410487,2673434623,US
2673434624,2673438719,DE
-2673438720,2673442815,CA
+2673438720,2673442458,CA
+2673442459,2673442459,US
+2673442460,2673442815,CA
2673442816,2673451007,US
2673451008,2673455103,IN
-2673455104,2673459199,US
-2673459200,2673464319,SG
-2673464320,2673465343,DE
-2673465344,2673473535,US
-2673473536,2673474559,GB
-2673474560,2673475583,US
+2673455104,2673463295,US
+2673463296,2673464319,SG
+2673464320,2673475583,US
2673475584,2673541119,VE
2673541120,2673606655,US
2673606656,2673672191,GB
@@ -78302,9 +78980,7 @@
2675611228,2675611228,IT
2675611229,2675611295,US
2675611296,2675611359,IT
-2675611360,2675611595,US
-2675611596,2675611599,IL
-2675611600,2675612715,US
+2675611360,2675612715,US
2675612716,2675612719,IT
2675612720,2675612743,US
2675612744,2675612747,IT
@@ -78312,11 +78988,7 @@
2675613120,2675613151,IT
2675613152,2675613279,US
2675613280,2675613311,IT
-2675613312,2675613599,US
-2675613600,2675613631,JP
-2675613632,2675613843,US
-2675613844,2675613847,IL
-2675613848,2675614975,US
+2675613312,2675614975,US
2675614976,2675614991,NL
2675614992,2675615743,US
2675615744,2675615871,IT
@@ -78515,7 +79187,11 @@
2679392000,2679394047,US
2679394048,2679394303,DE
2679394304,2679394559,GB
-2679394560,2679398399,US
+2679394560,2679396607,US
+2679396608,2679396863,HK
+2679396864,2679397119,SG
+2679397120,2679397375,AU
+2679397376,2679398399,US
2679398400,2679406591,GB
2679406592,2679414783,US
2679414784,2679415307,PR
@@ -78541,9 +79217,9 @@
2680487936,2680553471,GB
2680553472,2680684543,US
2680684544,2680750079,SE
-2680750080,2680881151,US
-2680881152,2680897535,CA
-2680897536,2681012223,US
+2680750080,2680889624,US
+2680889625,2680889625,CA
+2680889626,2681012223,US
2681012224,2681077759,PL
2681077760,2681143295,CA
2681143296,2681208831,AU
@@ -78553,7 +79229,9 @@
2681405440,2681470975,JP
2681470976,2681536511,US
2681536512,2681602047,IT
-2681602048,2681700863,US
+2681602048,2681699327,US
+2681699328,2681699839,BR
+2681699840,2681700863,US
2681700864,2681701119,HK
2681701120,2681703423,US
2681703424,2681703935,JP
@@ -78594,7 +79272,9 @@
2683240448,2683305983,GB
2683305984,2683371519,US
2683371520,2683437055,CH
-2683437056,2683568127,US
+2683437056,2683453439,US
+2683453440,2683469823,GB
+2683469824,2683568127,US
2683568128,2683633663,GB
2683637760,2683641855,NL
2683641856,2683645951,US
@@ -78629,7 +79309,8 @@
2684215296,2684217343,BE
2684217344,2684219391,CZ
2684219392,2684221439,PL
-2684221440,2684223487,IL
+2684221440,2684221695,IL
+2684221696,2684223487,ES
2684223488,2684289023,GB
2684289024,2684297215,RU
2684297216,2684299263,AU
@@ -78699,6 +79380,8 @@
2685685760,2685686783,AR
2685686784,2685688831,BR
2685688832,2685689855,CL
+2685689856,2685690879,SE
+2685690880,2685691903,AT
2685692928,2685693951,NO
2685693952,2685694975,SL
2685706240,2685707263,BR
@@ -78719,7 +79402,9 @@
2685729792,2685730815,ZA
2685730816,2685796351,JP
2685861888,2686320639,JP
-2686386176,2686615039,US
+2686386176,2686513151,US
+2686513152,2686515199,SG
+2686515200,2686615039,US
2686615040,2686615295,GB
2686615296,2686844927,US
2686844928,2686910463,GB
@@ -78860,8 +79545,7 @@
2697630720,2697632767,CN
2697632768,2697633791,IN
2697633792,2697634815,KR
-2697634816,2697635583,US
-2697635584,2697635839,NZ
+2697634816,2697635839,US
2697635840,2697636863,CN
2697636864,2697638911,KR
2697638912,2697647103,IN
@@ -78898,7 +79582,8 @@
2699213824,2699231231,ZA
2699231232,2699296767,US
2699296768,2699362303,FR
-2699362304,2699526143,US
+2699362304,2699509759,US
+2699509760,2699526143,FR
2699526144,2699542527,AU
2699542528,2699624447,US
2699624448,2699689983,JP
@@ -78912,7 +79597,7 @@
2699959808,2699960063,JP
2699960320,2699960575,JP
2699960832,2699961343,HK
-2699961344,2699962367,DE
+2699961344,2699962367,US
2699962368,2699962623,JP
2699962880,2699964415,US
2699964416,2699964927,ZA
@@ -78954,17 +79639,13 @@
2700279808,2700935167,JP
2700935168,2701066239,US
2701066240,2701131775,ZA
-2701131776,2701133631,HN
-2701133632,2701133647,ES
-2701133648,2701136095,HN
-2701136096,2701136111,US
-2701136112,2701137903,HN
+2701131776,2701137903,US
2701137904,2701137911,BR
-2701137912,2701138607,HN
+2701137912,2701138607,US
2701138608,2701138615,UY
-2701138616,2701139479,HN
+2701138616,2701139479,US
2701139480,2701139487,NL
-2701139488,2701139967,HN
+2701139488,2701139967,US
2701139968,2701148159,NI
2701148160,2701149183,AR
2701149184,2701150207,US
@@ -79093,28 +79774,23 @@
2708865024,2708930559,JP
2708930560,2709127167,US
2709127168,2709192703,KR
-2709192704,2709192959,US
-2709192960,2709193983,ZA
+2709192704,2709193983,ZA
2709193984,2709194239,US
2709194240,2709194495,ZA
2709194496,2709195007,US
2709195008,2709195263,ZA
2709195264,2709196031,US
2709196032,2709198335,ZA
-2709198336,2709198847,US
-2709198848,2709199103,ZA
+2709198336,2709198591,US
+2709198592,2709199103,ZA
2709199104,2709199359,US
2709199360,2709200383,ZA
2709200384,2709200639,US
2709200640,2709200895,ZA
-2709200896,2709201407,US
-2709201408,2709202175,ZA
+2709200896,2709201151,US
+2709201152,2709202175,ZA
2709202176,2709202943,US
-2709202944,2709203711,ZA
-2709203712,2709203967,US
-2709203968,2709204991,ZA
-2709204992,2709205247,US
-2709205248,2709205759,ZA
+2709202944,2709205759,ZA
2709205760,2709206271,US
2709206272,2709207039,ZA
2709207040,2709207295,US
@@ -79133,22 +79809,15 @@
2709226496,2709226511,DE
2709226512,2709227775,ZA
2709227776,2709228031,US
-2709228032,2709228287,ZA
-2709228288,2709228543,US
-2709228544,2709228767,ZA
+2709228032,2709228767,ZA
2709228768,2709228783,DE
2709228784,2709229695,ZA
2709229696,2709229711,DE
2709229712,2709230799,ZA
2709230800,2709230815,DE
-2709230816,2709230879,ZA
-2709230880,2709230895,DE
-2709230896,2709231103,ZA
+2709230816,2709231103,ZA
2709231104,2709231119,DE
-2709231120,2709232127,ZA
-2709232128,2709232383,DE
-2709232384,2709232639,ZA
-2709232640,2709232895,DE
+2709231120,2709232895,ZA
2709232896,2709233151,US
2709233152,2709233407,DE
2709233408,2709235199,ZA
@@ -79157,13 +79826,9 @@
2709235712,2709235967,DE
2709235968,2709236223,US
2709236224,2709236479,DE
-2709236480,2709238271,ZA
-2709238272,2709238527,DE
-2709238528,2709238783,ZA
+2709236480,2709238783,ZA
2709238784,2709239039,DE
-2709239040,2709240319,ZA
-2709240320,2709240575,DE
-2709240576,2709240831,ZA
+2709239040,2709240831,ZA
2709240832,2709241087,DE
2709241088,2709241343,US
2709241344,2709241599,DE
@@ -79215,9 +79880,7 @@
2709253888,2709254143,US
2709254144,2709254399,ZA
2709254400,2709254655,US
-2709254656,2709255935,ZA
-2709255936,2709256191,US
-2709256192,2709256703,ZA
+2709254656,2709256703,ZA
2709256704,2709256959,DE
2709256960,2709257215,ZA
2709257216,2709257471,DE
@@ -79266,7 +79929,11 @@
2711093248,2711158783,AU
2711158784,2711371967,US
2711371968,2711371983,NL
-2711371984,2711486463,US
+2711371984,2711374607,US
+2711374608,2711374655,JP
+2711374656,2711374783,US
+2711374784,2711374799,ES
+2711374800,2711486463,US
2711486464,2711551999,NL
2711552000,2712535039,US
2712535040,2712535551,CA
@@ -79373,6 +80040,8 @@
2718629888,2718695423,GB
2718695424,2718745599,US
2718745600,2718746623,AR
+2718746624,2718747647,CH
+2718747648,2718748671,NL
2718748672,2718749695,PK
2718749696,2718750719,BD
2718750720,2718750975,US
@@ -79400,7 +80069,7 @@
2721447936,2721579007,US
2721579008,2721644543,IN
2721644544,2721972223,US
-2721972224,2722037759,CN
+2721972224,2722037759,SG
2722037760,2722496511,US
2722496512,2722562047,CA
2722562048,2722693119,US
@@ -79527,7 +80196,7 @@
2731560960,2731561983,CA
2731561984,2731563007,US
2731563008,2731564031,CA
-2731564032,2731565055,US
+2731564032,2731566079,US
2731566080,2731567103,CA
2731567104,2731573247,US
2731573248,2731606015,CA
@@ -79585,9 +80254,7 @@
2731828224,2731829247,CA
2731829248,2731831295,US
2731831296,2731832319,CA
-2731832320,2731836927,US
-2731836928,2731837183,IS
-2731837184,2731843583,US
+2731832320,2731843583,US
2731843584,2731845631,PR
2731845632,2731847679,FR
2731847680,2731853823,US
@@ -79637,7 +80304,21 @@
2732201984,2732203007,VG
2732203008,2732204031,US
2732204032,2732206079,CA
-2732206080,2732227583,US
+2732206080,2732218367,US
+2732218368,2732218623,PL
+2732218624,2732218879,LV
+2732218880,2732219135,SK
+2732219136,2732219391,GE
+2732219392,2732219509,FI
+2732219510,2732219510,US
+2732219511,2732219647,FI
+2732219648,2732219903,BG
+2732219904,2732220159,IL
+2732220160,2732220287,US
+2732220288,2732220400,GB
+2732220401,2732220401,US
+2732220402,2732220415,GB
+2732220416,2732227583,US
2732227584,2732228607,CA
2732228608,2732261375,US
2732261376,2732265471,CA
@@ -79645,9 +80326,7 @@
2732273664,2732275711,CA
2732275712,2732278783,US
2732278784,2732279807,CA
-2732279808,2732301311,US
-2732301312,2732301823,CA
-2732301824,2732302335,US
+2732279808,2732302335,US
2732302336,2732303359,CA
2732303360,2732306431,US
2732306432,2732307455,CA
@@ -79789,7 +80468,11 @@
2734152448,2734152703,CA
2734152704,2734153727,KY
2734153728,2734155775,CA
-2734155776,2734163967,US
+2734155776,2734158847,US
+2734158848,2734159135,CA
+2734159136,2734159359,US
+2734159360,2734159615,CA
+2734159616,2734163967,US
2734163968,2734164991,CA
2734164992,2734170111,US
2734170112,2734172159,CA
@@ -79972,7 +80655,7 @@
2737623040,2737767423,JP
2737767424,2737768447,CN
2737768448,2737769471,SG
-2737769472,2737770495,IN
+2737769472,2737770495,KH
2737770496,2737771263,AU
2737771264,2737771519,JP
2737771520,2737771775,AU
@@ -80136,11 +80819,7 @@
2750873600,2750939135,CL
2750939136,2751070207,US
2751070208,2751135743,CL
-2751135744,2751135762,US
-2751135763,2751135763,JP
-2751135764,2751196930,US
-2751196931,2751196931,JP
-2751196932,2751397887,US
+2751135744,2751397887,US
2751397888,2751463423,KR
2751463424,2751528959,KZ
2751528960,2751660031,FR
@@ -80168,7 +80847,7 @@
2754125824,2754127871,DE
2754127872,2754129919,SK
2754129920,2754131967,SE
-2754134016,2754138111,DE
+2754131968,2754138111,DE
2754138112,2754142207,GB
2754142208,2754144255,BA
2754144256,2754146303,DE
@@ -80205,7 +80884,9 @@
2757033984,2757099519,BR
2757099520,2757230591,US
2757230592,2757296127,ZA
-2757296128,2757754879,US
+2757296128,2757591039,US
+2757591040,2757623807,GB
+2757623808,2757754879,US
2757754880,2757820415,CL
2757820416,2757885951,AU
2757885952,2757951487,CL
@@ -80424,7 +81105,9 @@
2760151680,2760151743,IT
2760151744,2760151903,FR
2760151904,2760151935,PT
-2760151936,2760152591,FR
+2760151936,2760152575,FR
+2760152576,2760152579,DE
+2760152580,2760152591,FR
2760152592,2760152607,PL
2760152608,2760152639,FI
2760152640,2760152647,FR
@@ -80539,7 +81222,7 @@
2760521728,2760523775,FR
2760523776,2760527871,CH
2760527872,2760529919,GB
-2760529920,2760531967,RU
+2760529920,2760534015,RU
2760534016,2760536063,BE
2760536064,2760540159,IL
2760540160,2760556543,IR
@@ -80779,9 +81462,9 @@
2780073472,2780073727,AU
2780073728,2780075007,ZA
2780075008,2780075519,US
-2780075520,2780078356,ZA
-2780078357,2780078357,NZ
-2780078358,2780082175,ZA
+2780075520,2780078079,ZA
+2780078080,2780080127,NZ
+2780080128,2780082175,ZA
2780082176,2780083455,CA
2780083456,2780083967,ZA
2780083968,2780084223,CA
@@ -80909,15 +81592,61 @@
2783012864,2783013887,IN
2783013888,2783014911,US
2783014912,2783015423,SG
-2783015424,2783125503,US
-2783125504,2783129599,CA
-2783129600,2783150079,US
-2783150080,2783162367,DE
-2783162368,2783174655,US
-2783174656,2783178751,GB
-2783178752,2783179775,US
-2783179776,2783180799,DE
-2783180800,2783182847,US
+2783015424,2783125729,US
+2783125730,2783125730,CA
+2783125731,2783126051,US
+2783126052,2783126052,CA
+2783126053,2783126581,US
+2783126582,2783126582,CA
+2783126583,2783126603,US
+2783126604,2783126604,CA
+2783126605,2783126647,US
+2783126648,2783126648,CA
+2783126649,2783126649,US
+2783126650,2783126650,CA
+2783126651,2783126682,US
+2783126683,2783126683,CA
+2783126684,2783126684,US
+2783126685,2783126685,CA
+2783126686,2783126692,US
+2783126693,2783126693,CA
+2783126694,2783126701,US
+2783126702,2783126702,CA
+2783126703,2783126760,US
+2783126761,2783126761,CA
+2783126762,2783126771,US
+2783126772,2783126772,CA
+2783126773,2783127050,US
+2783127051,2783127051,CA
+2783127052,2783127578,US
+2783127579,2783127579,CA
+2783127580,2783128073,US
+2783128074,2783128074,CA
+2783128075,2783128142,US
+2783128143,2783128143,CA
+2783128144,2783128616,US
+2783128617,2783128617,CA
+2783128618,2783128622,US
+2783128623,2783128623,CA
+2783128624,2783128647,US
+2783128648,2783128648,CA
+2783128649,2783128728,US
+2783128729,2783128729,CA
+2783128730,2783158338,US
+2783158339,2783158339,DE
+2783158340,2783158802,US
+2783158803,2783158803,DE
+2783158804,2783159015,US
+2783159016,2783159016,DE
+2783159017,2783160412,US
+2783160413,2783160413,DE
+2783160414,2783162286,US
+2783162287,2783162287,DE
+2783162288,2783175121,US
+2783175122,2783175122,GB
+2783175123,2783175911,US
+2783175912,2783175912,GB
+2783175913,2783182847,US
2783182848,2783248383,AU
2783248384,2783313919,KR
2783313920,2783379455,US
@@ -80956,7 +81685,9 @@
2788229120,2788261887,US
2788261888,2788287999,GB
2788288000,2788288255,PL
-2788288256,2788294655,GB
+2788288256,2788289407,GB
+2788289408,2788289535,NO
+2788289536,2788294655,GB
2788294656,2789113855,US
2789113856,2789146623,CA
2789146624,2789195775,US
@@ -81077,21 +81808,14 @@
2808217600,2808283135,GB
2808283136,2808287231,US
2808287232,2808288255,NL
-2808288256,2808290303,US
-2808290304,2808291327,SG
-2808291328,2808295423,NL
-2808295424,2808299519,US
-2808299520,2808303615,SG
-2808303616,2808307711,GB
-2808307712,2808315903,US
+2808288256,2808315903,US
2808315904,2808319999,DE
-2808320000,2808328191,US
-2808328192,2808332287,CA
+2808320000,2808332287,US
2808332288,2808336383,GB
2808336384,2808340479,NL
-2808340480,2808344575,US
-2808344576,2808348671,DE
-2808348672,2808545279,US
+2808340480,2808346864,US
+2808346865,2808346865,DE
+2808346866,2808545279,US
2808545280,2808610815,AU
2808610816,2808872959,US
2808872960,2808938495,UY
@@ -81130,7 +81854,9 @@
2809302816,2809302831,US
2809302832,2809308599,CA
2809308600,2809308607,US
-2809308608,2809316607,CA
+2809308608,2809313810,CA
+2809313811,2809313811,US
+2809313812,2809316607,CA
2809316608,2809316623,US
2809316624,2809321007,CA
2809321008,2809321015,US
@@ -81170,7 +81896,8 @@
2812288512,2812291071,US
2812291072,2812292095,DE
2812292096,2812293119,US
-2812293120,2812295167,IN
+2812293120,2812294143,IN
+2812294144,2812295167,US
2812295168,2812297215,GB
2812297216,2812311295,US
2812311296,2812311551,RO
@@ -81184,7 +81911,11 @@
2813132800,2813263871,US
2813263872,2813329407,JP
2813329408,2813526015,US
-2813526016,2813591551,NZ
+2813526016,2813558783,NZ
+2813558784,2813575167,AU
+2813575168,2813577215,NZ
+2813577216,2813579263,HK
+2813579264,2813591551,NZ
2813591552,2814181375,US
2814181376,2814246911,CN
2814246912,2815082495,US
@@ -81266,7 +81997,7 @@
2818193408,2818198527,BR
2818198528,2818199551,MX
2818199552,2818206719,BR
-2818206720,2818207743,HN
+2818206720,2818207743,US
2818207744,2818208767,PA
2818208768,2818209791,AR
2818209792,2818210815,CO
@@ -81281,9 +82012,8 @@
2818229248,2818231295,BR
2818231296,2818232319,PE
2818232320,2818233343,AR
-2818233344,2818234095,HN
-2818234096,2818234111,IT
-2818234112,2818234367,HN
+2818233344,2818233855,HN
+2818233856,2818234367,US
2818234368,2818235391,BR
2818235392,2818236415,GT
2818236416,2818244607,BR
@@ -81362,23 +82092,32 @@
2823553024,2823618559,ZA
2823618560,2823684095,PA
2823684096,2823749631,KR
-2823815168,2823816191,SC
+2823815168,2823815423,SC
+2823815424,2823815679,RU
+2823815680,2823815935,AU
+2823815936,2823816191,GB
2823816192,2823817215,US
2823817216,2823820287,SC
2823820288,2823821311,US
2823821312,2823822335,IN
2823822336,2823824383,SC
2823824384,2823825407,US
-2823825408,2823826431,SC
+2823825408,2823825663,SC
+2823825664,2823825919,GB
+2823825920,2823826431,SC
2823826432,2823827455,ES
2823827456,2823828479,SC
2823828480,2823829503,US
-2823829504,2823832575,SC
+2823829504,2823829759,SC
+2823829760,2823830015,AU
+2823830016,2823832575,SC
2823832576,2823833599,US
2823833600,2823834623,IN
2823834624,2823836671,SC
2823836672,2823837695,US
-2823837696,2823840767,SC
+2823837696,2823838719,SC
+2823838720,2823839743,GB
+2823839744,2823840767,SC
2823840768,2823841791,US
2823841792,2823842815,IN
2823842816,2823844863,SC
@@ -81409,14 +82148,20 @@
2823890944,2823891967,IN
2823891968,2823894015,ZA
2823894016,2823895039,US
-2823895040,2823896063,ZA
+2823895040,2823895295,GB
+2823895296,2823895551,RU
+2823895552,2823895807,AU
+2823895808,2823896063,RU
2823896064,2823897087,US
2823897088,2823898111,SC
2823898112,2823899135,US
2823899136,2823900159,IN
-2823900160,2823902207,SC
+2823900160,2823901183,GB
+2823901184,2823902207,SC
2823902208,2823903231,US
-2823903232,2823906303,SC
+2823903232,2823904255,SC
+2823904256,2823905279,GB
+2823905280,2823906303,SC
2823906304,2823907327,US
2823907328,2823910399,SC
2823910400,2823911423,US
@@ -81482,7 +82227,9 @@
2824512512,2824515583,BR
2824515584,2824516607,PY
2824516608,2824520703,BR
-2824520704,2824521727,HN
+2824520704,2824520959,HN
+2824520960,2824521215,US
+2824521216,2824521727,HN
2824521728,2824526847,BR
2824526848,2824527871,CL
2824527872,2824529919,BR
@@ -81722,7 +82469,7 @@
2831457280,2831458303,AR
2831458304,2831464447,BR
2831464448,2831465471,CL
-2831465472,2831468543,BR
+2831465472,2831467519,BR
2831468544,2831469567,CL
2831469568,2831474687,BR
2831474688,2831475711,AR
@@ -81795,7 +82542,9 @@
2832038912,2832040959,BR
2832040960,2832041983,PE
2832041984,2832048127,BR
-2832048128,2832049151,HN
+2832048128,2832048751,HN
+2832048752,2832048759,ES
+2832048760,2832049151,HN
2832049152,2832054271,BR
2832054272,2832055295,AR
2832055296,2832059391,BR
@@ -81837,7 +82586,8 @@
2833511424,2833512447,CO
2833512448,2833513471,BR
2833513472,2833514495,AR
-2833514496,2833525759,BR
+2833514496,2833522687,BR
+2833523712,2833525759,BR
2833525760,2833526783,HN
2833526784,2833527807,CR
2833527808,2833528831,MX
@@ -81938,8 +82688,7 @@
2837905408,2837970943,CH
2837970944,2838036479,US
2838036480,2838233087,CH
-2838233088,2838237183,GB
-2838237184,2838242895,US
+2838233088,2838242895,US
2838242896,2838242911,JP
2838242912,2838252255,US
2838252256,2838252287,JP
@@ -81951,9 +82700,7 @@
2838259744,2838259759,JP
2838259760,2838260095,US
2838260096,2838260127,IE
-2838260128,2838261759,US
-2838261760,2838265855,GB
-2838265856,2838276159,US
+2838260128,2838276159,US
2838276160,2838276191,NL
2838276192,2838298623,US
2838298624,2838298655,NL
@@ -81994,9 +82741,13 @@
2838308944,2838308959,US
2838308960,2838309391,NL
2838309392,2838309407,US
-2838309408,2838311311,NL
+2838309408,2838309719,NL
+2838309720,2838309727,US
+2838309728,2838311311,NL
2838311312,2838311319,US
-2838311320,2838315007,NL
+2838311320,2838311519,NL
+2838311520,2838311535,US
+2838311536,2838315007,NL
2838315008,2838331391,US
2838331392,2838331535,NL
2838331536,2838331551,US
@@ -82012,7 +82763,9 @@
2838332354,2838332354,US
2838332355,2838332479,NL
2838332480,2838332495,US
-2838332496,2838333651,NL
+2838332496,2838332559,NL
+2838332560,2838332575,US
+2838332576,2838333651,NL
2838333652,2838333654,US
2838333655,2838333655,NL
2838333656,2838333658,US
@@ -82035,9 +82788,7 @@
2838337762,2838337763,US
2838337764,2838337767,NL
2838337768,2838337769,US
-2838337770,2838337903,NL
-2838337904,2838337919,US
-2838337920,2838337967,NL
+2838337770,2838337967,NL
2838337968,2838337983,US
2838337984,2838338079,NL
2838338080,2838338127,US
@@ -82104,9 +82855,7 @@
2838345240,2838345247,US
2838345248,2838345743,NL
2838345744,2838345751,US
-2838345752,2838345759,NL
-2838345760,2838345775,US
-2838345776,2838346559,NL
+2838345752,2838346559,NL
2838346560,2838346591,US
2838346592,2838346687,NL
2838346688,2838346719,US
@@ -82132,9 +82881,7 @@
2838398576,2838398591,US
2838398592,2838400193,NL
2838400194,2838400195,US
-2838400196,2838401023,NL
-2838401024,2838405119,GB
-2838405120,2838405183,NL
+2838400196,2838405183,NL
2838405184,2838405215,US
2838405216,2838405767,NL
2838405768,2838405775,US
@@ -82168,7 +82915,9 @@
2838411616,2838411623,US
2838411624,2838412287,NL
2838412288,2838412543,US
-2838412544,2838414207,NL
+2838412544,2838413183,NL
+2838413184,2838413199,US
+2838413200,2838414207,NL
2838414208,2838414271,US
2838414272,2838414783,NL
2838414784,2838414879,US
@@ -82180,9 +82929,7 @@
2838415392,2838415487,US
2838415488,2838415655,NL
2838415656,2838415663,US
-2838415664,2838415775,NL
-2838415776,2838415791,US
-2838415792,2838415839,NL
+2838415664,2838415839,NL
2838415840,2838415871,US
2838415872,2838416623,NL
2838416624,2838416639,AF
@@ -82220,14 +82967,16 @@
2838480256,2838480271,US
2838480272,2838480319,NL
2838480320,2838480323,IE
-2838480324,2838481855,NL
+2838480324,2838481775,NL
+2838481776,2838481791,US
+2838481792,2838481855,NL
2838481856,2838481887,US
2838481888,2838482305,NL
2838482306,2838482307,US
2838482308,2838482383,NL
2838482384,2838482399,US
-2838482400,2838482543,NL
-2838482544,2838482551,US
+2838482400,2838482547,NL
+2838482548,2838482551,US
2838482552,2838482695,NL
2838482696,2838482703,US
2838482704,2838482863,NL
@@ -82467,9 +83216,7 @@
2838530408,2838530415,US
2838530416,2838530527,NL
2838530528,2838530559,US
-2838530560,2838531367,NL
-2838531368,2838531375,US
-2838531376,2838531487,NL
+2838530560,2838531487,NL
2838531488,2838531519,US
2838531520,2838531975,NL
2838531976,2838531979,US
@@ -82481,17 +83228,11 @@
2838537224,2838537231,US
2838537232,2838537375,NL
2838537376,2838537407,US
-2838537408,2838538063,NL
-2838538064,2838538079,US
-2838538080,2838538319,NL
+2838537408,2838538319,NL
2838538320,2838538327,US
2838538328,2838538575,NL
2838538576,2838538591,US
-2838538592,2838539487,NL
-2838539488,2838539495,US
-2838539496,2838539503,NL
-2838539504,2838539519,AU
-2838539520,2838539631,NL
+2838538592,2838539631,NL
2838539632,2838539647,US
2838539648,2838539951,NL
2838539952,2838539967,US
@@ -82503,9 +83244,7 @@
2838540552,2838540575,US
2838540576,2838540687,NL
2838540688,2838540703,US
-2838540704,2838541231,NL
-2838541232,2838541247,US
-2838541248,2838541807,NL
+2838540704,2838541807,NL
2838541808,2838541823,US
2838541824,2838542047,NL
2838542048,2838542063,US
@@ -82702,9 +83441,7 @@
2838677792,2838677799,AE
2838677800,2838679119,US
2838679120,2838679135,AE
-2838679136,2838682871,US
-2838682872,2838682879,GB
-2838682880,2838692207,US
+2838679136,2838692207,US
2838692208,2838692223,SN
2838692224,2838700063,US
2838700064,2838700079,GR
@@ -82720,11 +83457,15 @@
2838843296,2838843327,HK
2838843328,2838859777,US
2838859778,2838859779,HK
-2838859780,2838865007,US
+2838859780,2838864019,US
+2838864020,2838864021,JP
+2838864022,2838865007,US
2838865008,2838865015,CA
2838865016,2838865019,US
2838865020,2838865023,CA
-2838865024,2838866247,US
+2838865024,2838866163,US
+2838866164,2838866165,JP
+2838866166,2838866247,US
2838866248,2838866255,CA
2838866256,2838867855,US
2838867856,2838867863,CA
@@ -82732,7 +83473,9 @@
2838870112,2838870127,CA
2838870128,2838871185,US
2838871186,2838871187,JP
-2838871188,2838871295,US
+2838871188,2838871197,US
+2838871198,2838871199,JP
+2838871200,2838871295,US
2838871296,2838871311,CA
2838871312,2838871327,US
2838871328,2838871343,CA
@@ -82780,7 +83523,8 @@
2838960830,2838960831,CZ
2838960832,2838969167,US
2838969168,2838969183,AF
-2838969184,2838969535,US
+2838969184,2838969534,US
+2838969535,2838969535,ES
2838969536,2838969536,IL
2838969537,2838969587,US
2838969588,2838969588,AF
@@ -82794,9 +83538,7 @@
2838969815,2838969815,JP
2838969816,2838969820,US
2838969821,2838969821,CA
-2838969822,2838969828,US
-2838969829,2838969829,NL
-2838969830,2838969903,US
+2838969822,2838969903,US
2838969904,2838969904,NL
2838969905,2838970017,US
2838970018,2838970018,SA
@@ -82814,11 +83556,7 @@
2838996064,2838996095,HK
2838996096,2838999407,US
2838999408,2838999423,AF
-2838999424,2838999591,US
-2838999592,2838999593,JP
-2838999594,2838999597,US
-2838999598,2838999599,JP
-2838999600,2839001023,US
+2838999424,2839001023,US
2839001024,2839001055,HK
2839001056,2839001263,US
2839001264,2839001279,CA
@@ -82840,13 +83578,13 @@
2839021240,2839021242,JP
2839021243,2839023767,US
2839023768,2839023775,JP
-2839023776,2839035903,US
+2839023776,2839028639,US
+2839028640,2839028671,JP
+2839028672,2839035903,US
2839035904,2839052287,KR
2839052288,2839053951,US
2839053952,2839053983,HK
-2839053984,2839057455,US
-2839057456,2839057471,NL
-2839057472,2839085055,US
+2839053984,2839085055,US
2839085056,2839117823,MX
2839117824,2839150591,BR
2839150592,2839292927,US
@@ -82881,7 +83619,9 @@
2839435440,2839435455,AU
2839435456,2839447231,US
2839447232,2839447295,JP
-2839447296,2843803647,US
+2839447296,2839452831,US
+2839452832,2839452863,NL
+2839452864,2843803647,US
2843803648,2843869183,ZA
2843869184,2844524543,US
2844524544,2844590079,KR
@@ -82906,7 +83646,10 @@
2848244736,2848245759,GB
2848245760,2848284671,US
2848284672,2848285695,RU
-2848285696,2848522239,US
+2848285696,2848288767,US
+2848288768,2848289791,GB
+2848289792,2848290815,RU
+2848290816,2848522239,US
2848587776,2848653311,ZA
2848653312,2848980991,US
2848980992,2850029567,KR
@@ -83000,12 +83743,11 @@
2852090880,2852091903,ZA
2852091904,2852092159,CD
2852092160,2852092415,CG
-2852092416,2852092671,CD
-2852092672,2852092927,CG
+2852092416,2852092927,CD
2852092928,2852093951,NG
2852093952,2852094975,ZA
2852094976,2852095999,MZ
-2852096000,2852097023,SS
+2852096000,2852097023,SD
2852097024,2852098047,NG
2852098048,2852099071,ZA
2852099072,2852100095,GA
@@ -83163,7 +83905,8 @@
2857372672,2857373695,BR
2857373696,2857374719,NI
2857374720,2857374975,SV
-2857374976,2857375743,GT
+2857374976,2857375231,GT
+2857375232,2857375743,SV
2857375744,2857376767,AR
2857376768,2857377791,MX
2857377792,2857388031,BR
@@ -83295,7 +84038,9 @@
2857696256,2857697279,AR
2857697280,2859007999,US
2859008000,2859073535,JP
-2859073536,2859139071,CN
+2859073536,2859106303,SG
+2859106304,2859107327,US
+2859107328,2859139071,SG
2859139072,2861068799,US
2861068800,2861069311,GB
2861069312,2861070335,US
@@ -83331,7 +84076,7 @@
2861987840,2861988863,CL
2861988864,2861992959,BR
2861992960,2861993983,CL
-2861993984,2861996031,BR
+2861995008,2861996031,BR
2861996032,2861997055,AR
2861997056,2861998079,CL
2861998080,2861999103,MX
@@ -83536,7 +84281,7 @@
2868178944,2868179967,HN
2868179968,2868183039,BR
2868183040,2868184063,CW
-2868184064,2868191743,BR
+2868185088,2868191743,BR
2868191744,2868191999,VE
2868192000,2868192255,BO
2868192256,2868193279,BR
@@ -83629,55 +84374,19 @@
2868371456,2868373503,MX
2868373504,2868379647,BR
2868379648,2868380159,IN
-2868380160,2868380671,BR
-2868380672,2868380927,US
-2868380928,2868381055,MX
-2868381056,2868381183,IN
-2868381184,2868381695,MX
-2868381696,2868382463,US
-2868382464,2868382719,CL
+2868380160,2868382719,US
2868382720,2868383231,IN
-2868383232,2868383743,US
-2868383744,2868384255,PH
-2868384256,2868384767,BR
-2868384768,2868390143,US
-2868390144,2868390399,GB
+2868383232,2868390399,US
2868390400,2868390911,IN
2868390912,2868391423,US
2868391424,2868391935,IN
-2868391936,2868399615,US
-2868399616,2868399871,BR
-2868399872,2868400127,US
-2868400128,2868400639,BR
-2868400640,2868401151,US
-2868401152,2868401663,BR
-2868401664,2868401919,PH
-2868401920,2868402175,AR
-2868402176,2868410367,US
-2868410368,2868410879,BR
-2868410880,2868411391,AR
-2868411392,2868411903,PL
-2868411904,2868414719,US
-2868414720,2868414975,MU
+2868391936,2868414975,US
2868414976,2868415487,IN
-2868415488,2868415999,US
-2868416000,2868416255,AU
-2868416256,2868416767,US
-2868416768,2868417023,PL
-2868417024,2868417535,JP
-2868417536,2868418815,US
-2868418816,2868419071,TR
-2868419072,2868419327,PH
-2868419328,2868419583,IN
-2868419584,2868420607,PH
+2868415488,2868420607,US
2868420608,2868423679,IN
2868423680,2868428287,US
2868428288,2868428799,IN
-2868428800,2868432895,US
-2868432896,2868433407,AR
-2868433408,2868437503,US
-2868437504,2868437759,BR
-2868437760,2868578815,US
+2868428800,2868578815,US
2868578816,2868579327,IN
2868579328,2868581375,US
2868581376,2868581887,IN
@@ -83700,8 +84409,7 @@
2868633088,2868633599,AR
2868633600,2868658175,US
2868658176,2868660223,GB
-2868660224,2868660479,US
-2868660480,2868660735,ES
+2868660224,2868660735,ES
2868660736,2868670463,US
2868670464,2868674336,FI
2868674337,2868674337,SE
@@ -83767,7 +84475,6 @@
2870228224,2870228991,US
2870228992,2870280191,DK
2870280192,2870345727,NL
-2870345728,2870411263,GB
2870411264,2870476799,NO
2870476800,2870542335,DE
2870542336,2870575103,CH
@@ -83827,7 +84534,8 @@
2871115776,2871123967,GB
2871123968,2871126015,NL
2871126016,2871128063,ES
-2871130112,2871132159,RU
+2871128064,2871129087,HK
+2871129088,2871132159,RU
2871132160,2872049663,CN
2872049664,2873098239,IN
2873098240,2873884671,US
@@ -83999,7 +84707,7 @@
2891208448,2891208703,DE
2891208704,2891209215,SE
2891209216,2891210495,US
-2891210496,2891210751,CA
+2891210496,2891210751,ES
2891210752,2891223295,US
2891223296,2891223551,PR
2891223552,2891235327,US
@@ -84038,7 +84746,8 @@
2891841792,2891842303,US
2891842304,2891842559,GB
2891842560,2891842815,BN
-2891842816,2891843327,GB
+2891842816,2891843071,US
+2891843072,2891843327,GB
2891843328,2891844095,US
2891844096,2891844351,GE
2891844352,2891845119,US
@@ -84221,7 +84930,9 @@
2892537856,2892546047,SG
2892546048,2892557006,US
2892557007,2892557007,DE
-2892557008,2892560817,US
+2892557008,2892559050,US
+2892559051,2892559051,DE
+2892559052,2892560817,US
2892560818,2892560818,DE
2892560819,2892561013,US
2892561014,2892561014,DE
@@ -84523,7 +85234,7 @@
2905464832,2905473023,US
2905473024,2905481215,CA
2905481216,2905494783,US
-2905494784,2905495039,CH
+2905494784,2905495039,RU
2905495040,2905510911,US
2905510912,2905511935,CA
2905511936,2905512959,US
@@ -84561,9 +85272,7 @@
2915520640,2915520647,US
2915520648,2915520671,AU
2915520672,2915520767,US
-2915520768,2915520863,JP
-2915520864,2915521023,AU
-2915521024,2915521279,JP
+2915520768,2915521279,JP
2915521280,2915521535,PL
2915521536,2915526911,US
2915526912,2915527167,DE
@@ -84571,8 +85280,8 @@
2915527424,2915527679,DE
2915527680,2915528703,NL
2915528704,2915528735,US
-2915528736,2915528751,NL
-2915528752,2915528783,US
+2915528736,2915528767,NL
+2915528768,2915528783,US
2915528784,2915528791,NL
2915528792,2915528815,US
2915528816,2915528823,NL
@@ -84580,8 +85289,8 @@
2915528840,2915528847,NL
2915528848,2915528855,US
2915528856,2915528879,NL
-2915528880,2915528927,US
-2915528928,2915529023,NL
+2915528880,2915528895,US
+2915528896,2915529023,NL
2915529024,2915529151,US
2915529152,2915529215,NL
2915529216,2915767759,US
@@ -84605,7 +85314,9 @@
2916287744,2916287999,CA
2916288000,2916290047,US
2916290048,2916290303,FR
-2916290304,2916292095,US
+2916290304,2916291583,US
+2916291584,2916291839,DE
+2916291840,2916292095,US
2916292096,2916292607,CH
2916292608,2916293631,IT
2916293632,2916302847,US
@@ -84763,15 +85474,26 @@
2918136832,2918137087,CA
2918137088,2918154239,US
2918154240,2918170623,CA
-2918170624,2918172790,US
+2918170624,2918171647,US
+2918171648,2918171903,CL
+2918171904,2918172790,US
2918172791,2918172793,MX
2918172794,2918172794,US
2918172795,2918172800,AR
-2918172801,2918174463,US
+2918172801,2918173695,US
+2918173696,2918173951,CO
+2918173952,2918174207,US
+2918174208,2918174463,EC
2918174464,2918174719,MX
-2918174720,2918180351,US
+2918174720,2918179584,US
+2918179585,2918179839,PE
+2918179840,2918180095,US
+2918180096,2918180351,VE
2918180352,2918180863,CA
-2918180864,2918187007,US
+2918180864,2918181119,US
+2918181120,2918181375,VE
+2918181376,2918181631,NZ
+2918181632,2918187007,US
2918187008,2918188319,CA
2918188320,2918188351,US
2918188352,2918189055,CA
@@ -84801,9 +85523,16 @@
2918404096,2918408191,PR
2918408192,2918432767,US
2918432768,2918436863,CA
-2918436864,2918459391,US
-2918459392,2918459647,CA
-2918459648,2918463231,US
+2918436864,2918458879,US
+2918458880,2918459135,MY
+2918459136,2918459391,US
+2918459392,2918459647,PH
+2918459648,2918461183,US
+2918461184,2918461439,KR
+2918461440,2918461695,US
+2918461696,2918461951,TH
+2918461952,2918462207,VN
+2918462208,2918463231,US
2918463232,2918463487,CA
2918463488,2918469631,US
2918469632,2918471423,CA
@@ -84811,7 +85540,9 @@
2918471680,2918473727,CA
2918473728,2918477823,US
2918477824,2918481919,CA
-2918481920,2918498303,US
+2918481920,2918486015,US
+2918486016,2918490111,KZ
+2918490112,2918498303,US
2918498304,2918498367,JP
2918498368,2918498431,US
2918498432,2918498435,JP
@@ -84942,7 +85673,11 @@
2921552384,2921552639,MX
2921552640,2921552895,US
2921552896,2921553663,BR
-2921553664,2921559039,US
+2921553664,2921557759,US
+2921557760,2921558015,NL
+2921558016,2921558527,US
+2921558528,2921558783,DE
+2921558784,2921559039,US
2921559040,2921559295,NL
2921559296,2921559551,US
2921559552,2921559553,NL
@@ -84986,17 +85721,9 @@
2928261712,2928261887,CA
2928261888,2928263167,US
2928263168,2928279551,CA
-2928279552,2928283647,NL
+2928279552,2928283647,US
2928283648,2928287743,SG
-2928287744,2928304127,US
-2928304128,2928305151,NL
-2928305152,2928306175,US
-2928306176,2928307199,NL
-2928307200,2928308223,US
-2928308224,2928309247,CA
-2928309248,2928310271,US
-2928310272,2928311295,IN
-2928311296,2928312319,US
+2928287744,2928312319,US
2928312320,2928316415,CA
2928316416,2928320511,HK
2928320512,2928328703,US
@@ -85239,7 +85966,9 @@
2948595712,2952790015,KR
2952790016,2953314303,DE
2953314304,2953379839,UA
-2953379840,2953398318,DE
+2953379840,2953396007,DE
+2953396008,2953396008,US
+2953396009,2953398318,DE
2953398319,2953398319,AQ
2953398320,2953398360,DE
2953398361,2953398361,HM
@@ -85283,7 +86012,9 @@
2954647552,2954657791,ES
2954657792,2954756095,JO
2954756096,2954821631,TR
-2954821632,2954821947,FR
+2954821632,2954821663,FR
+2954821664,2954821695,FI
+2954821696,2954821947,FR
2954821948,2954821951,DE
2954821952,2954822079,FR
2954822080,2954822143,ES
@@ -85459,9 +86190,7 @@
2954834520,2954834523,ES
2954834524,2954834671,FR
2954834672,2954834675,ES
-2954834676,2954834847,FR
-2954834848,2954834863,ES
-2954834864,2954835039,FR
+2954834676,2954835039,FR
2954835040,2954835043,DE
2954835044,2954835067,FR
2954835068,2954835071,FI
@@ -85532,9 +86261,7 @@
2954839268,2954839271,ES
2954839272,2954839319,FR
2954839320,2954839327,GB
-2954839328,2954839527,FR
-2954839528,2954839535,GB
-2954839536,2954840095,FR
+2954839328,2954840095,FR
2954840096,2954840103,ES
2954840104,2954840255,FR
2954840256,2954840381,GB
@@ -85548,8 +86275,7 @@
2954840928,2954840931,DE
2954840932,2954841023,FR
2954841024,2954841087,ES
-2954841088,2954841095,FR
-2954841096,2954841103,GB
+2954841088,2954841103,FR
2954841104,2954841111,ES
2954841112,2954841259,FR
2954841260,2954841263,GB
@@ -85883,6 +86609,8 @@
2956238848,2956240383,ES
2956240384,2956240895,HK
2956240896,2956242943,ES
+2956242944,2956243967,TR
+2956243968,2956244991,DE
2956244992,2956245247,FR
2956245248,2956245503,RO
2956245504,2956245759,GB
@@ -85899,6 +86627,8 @@
2956328960,2956460031,TR
2956460032,2956468223,RU
2956468224,2956470271,LV
+2956470272,2956471295,UA
+2956471296,2956472319,NL
2956472320,2956474367,RU
2956474368,2956476415,GB
2956476416,2956492799,ES
@@ -85919,6 +86649,8 @@
2956533760,2956535807,FR
2956535808,2956537855,LV
2956537856,2956541951,UA
+2956541952,2956542975,BA
+2956542976,2956543999,NL
2956544000,2956546047,RU
2956546048,2956548095,FR
2956548096,2956549119,SE
@@ -86093,7 +86825,9 @@
2957901824,2958032895,PT
2958032896,2958557183,ES
2958557184,2958819327,TR
-2958819328,2958884863,GR
+2958819328,2958825471,GR
+2958825472,2958826495,CY
+2958826496,2958884863,GR
2958884864,2958950399,FI
2958950400,2959081471,DE
2959081472,2959089663,RU
@@ -86175,10 +86909,14 @@
2959441920,2959446015,PL
2959446016,2959450111,CZ
2959450112,2959452159,PL
+2959452160,2959453183,GB
+2959453184,2959454207,DE
2959454208,2959456255,SK
2959456256,2959466495,UA
2959466496,2959474687,RU
2959474688,2959491071,UA
+2959491072,2959492095,CZ
+2959492096,2959493119,RU
2959493120,2959495167,CZ
2959495168,2959499263,PL
2959499264,2959505407,SK
@@ -86196,7 +86934,9 @@
2959560704,2959568895,RU
2959568896,2959570943,UA
2959570944,2959572991,RO
-2959572992,2959581183,RU
+2959572992,2959574271,RU
+2959574272,2959574527,NL
+2959574528,2959581183,RU
2959581184,2959585279,PL
2959585280,2959591423,LV
2959591424,2959595519,UA
@@ -86296,12 +87036,15 @@
2960091136,2960093183,PT
2960093184,2960105471,PL
2960105472,2960107519,RO
+2960107520,2960108543,PL
+2960108544,2960109567,GB
2960109568,2960113663,UA
2960113664,2960117759,NO
2960117760,2960119807,RU
2960119808,2960121855,CH
2960121856,2960125951,PL
-2960125952,2960127231,UA
+2960125952,2960126975,GB
+2960126976,2960127231,UA
2960127232,2960127487,DE
2960127488,2960127999,UA
2960128000,2960130047,RU
@@ -86316,7 +87059,9 @@
2960166912,2960171007,EE
2960171008,2960175103,RU
2960175104,2960179199,SK
-2960179200,2960211967,RU
+2960179200,2960206847,RU
+2960206848,2960207871,GB
+2960207872,2960211967,RU
2960220160,2960224255,RO
2960224256,2960228351,RU
2960228352,2960232447,TJ
@@ -86374,6 +87119,7 @@
2960506880,2960524287,RU
2960524288,2960525311,EE
2960525312,2960531455,RU
+2960531456,2960533503,GB
2960533504,2960537599,UA
2960537600,2960539647,KZ
2960539648,2960543743,RU
@@ -86383,6 +87129,8 @@
2960558080,2960560127,PL
2960560128,2960562175,UA
2960562176,2960564223,BY
+2960572416,2960573439,GB
+2960573440,2960574463,RU
2960574464,2960576511,RO
2960576512,2960588799,RU
2960588800,2960592895,UA
@@ -86535,10 +87283,12 @@
2961091840,2961092095,BG
2961092096,2961096703,RO
2961096704,2961097471,GB
-2961097472,2961102847,RO
+2961097472,2961100287,RO
+2961100288,2961100799,NL
+2961100800,2961102847,RO
2961102848,2961103871,DE
2961103872,2961104383,RO
-2961104384,2961104639,PL
+2961104384,2961104639,CA
2961104640,2961104895,RO
2961104896,2961106943,GB
2961106944,2961107967,NL
@@ -86622,6 +87372,7 @@
2967452672,2967453183,RO
2967453184,2967453439,GB
2967453440,2967453695,RO
+2967467008,2967468031,RO
2967468032,2967470079,US
2967470080,2967601151,SA
2967601152,2967633919,HU
@@ -86634,6 +87385,8 @@
2967711744,2967715839,RU
2967715840,2967724031,GB
2967724032,2967728127,CY
+2967728128,2967729151,DE
+2967729152,2967730175,UA
2967730176,2967732223,CZ
2967732224,2967994367,IL
2967994368,2968584191,TR
@@ -86667,7 +87420,11 @@
2969567232,2972098569,BR
2972098570,2972098570,US
2972098571,2973417471,BR
-2973417472,2973425663,US
+2973417472,2973419522,US
+2973419523,2973419523,BR
+2973419524,2973422591,US
+2973422592,2973422847,BR
+2973422848,2973425663,US
2973425664,2975594495,BR
2975594496,2975596543,PE
2975596544,2977726975,BR
@@ -86691,8 +87448,8 @@
2987401216,2987405311,LT
2987405312,2987409407,DE
2987409408,2987413503,NO
-2987413504,2987415551,UA
-2987415552,2987417599,RU
+2987413504,2987415807,UA
+2987415808,2987417599,RU
2987417600,2987425791,PL
2987425792,2987429887,BG
2987429888,2987433983,RU
@@ -86750,6 +87507,8 @@
2987651072,2987655167,RU
2987655168,2987659263,DE
2987659264,2987661311,OM
+2987661312,2987662335,PL
+2987662336,2987663359,RU
2987663360,2987665407,IT
2987665408,2987667455,RU
2987667456,2987669503,FR
@@ -86771,6 +87530,8 @@
2987702272,2987704319,JO
2987704320,2987706367,GB
2987706368,2987708415,RS
+2987708416,2987709439,DE
+2987709440,2987710463,NL
2987710464,2987712511,DK
2987712512,2987714559,TR
2987714560,2987716607,RU
@@ -86895,9 +87656,7 @@
2988442512,2988442519,ES
2988442520,2988442719,FR
2988442720,2988442751,FI
-2988442752,2988442847,FR
-2988442848,2988442863,IT
-2988442864,2988442999,FR
+2988442752,2988442999,FR
2988443000,2988443007,GB
2988443008,2988443023,FR
2988443024,2988443027,CZ
@@ -86918,7 +87677,9 @@
2988443720,2988443727,CZ
2988443728,2988443895,FR
2988443896,2988443903,BE
-2988443904,2988444115,FR
+2988443904,2988443991,FR
+2988443992,2988443999,FI
+2988444000,2988444115,FR
2988444116,2988444119,IT
2988444120,2988444208,FR
2988444209,2988444209,FI
@@ -87027,7 +87788,9 @@
2988461704,2988461707,GB
2988461708,2988462331,FR
2988462332,2988462335,ES
-2988462336,2988462747,FR
+2988462336,2988462431,FR
+2988462432,2988462447,GB
+2988462448,2988462747,FR
2988462748,2988462751,ES
2988462752,2988463111,FR
2988463112,2988463119,ES
@@ -87080,7 +87843,9 @@
2988474536,2988474543,GB
2988474544,2988474687,FR
2988474688,2988474703,FI
-2988474704,2988474959,FR
+2988474704,2988474727,FR
+2988474728,2988474731,IT
+2988474732,2988474959,FR
2988474960,2988474975,FI
2988474976,2988475215,FR
2988475216,2988475223,ES
@@ -87127,9 +87892,7 @@
2988481060,2988481063,FI
2988481064,2988481343,FR
2988481344,2988481407,NL
-2988481408,2988481695,FR
-2988481696,2988481711,ES
-2988481712,2988481743,FR
+2988481408,2988481743,FR
2988481744,2988481759,ES
2988481760,2988482095,FR
2988482096,2988482099,GB
@@ -87359,8 +88122,7 @@
2988502984,2988502991,ES
2988502992,2988503375,FR
2988503376,2988503383,PT
-2988503384,2988503471,FR
-2988503472,2988503487,ES
+2988503384,2988503487,FR
2988503488,2988503495,IT
2988503496,2988503919,FR
2988503920,2988503927,CZ
@@ -87405,9 +88167,7 @@
2988506888,2988506891,ES
2988506892,2988507163,FR
2988507164,2988507167,ES
-2988507168,2988507263,FR
-2988507264,2988507279,ES
-2988507280,2988507335,FR
+2988507168,2988507335,FR
2988507336,2988507339,ES
2988507340,2988507551,FR
2988507552,2988507560,GB
@@ -87459,9 +88219,7 @@
2988511024,2988511027,GB
2988511028,2988511747,FR
2988511748,2988511751,GB
-2988511752,2988512127,FR
-2988512128,2988512143,ES
-2988512144,2988512199,FR
+2988511752,2988512199,FR
2988512200,2988512207,ES
2988512208,2988512247,FR
2988512248,2988512251,GB
@@ -87558,9 +88316,7 @@
2988525888,2988525951,GB
2988525952,2988526135,FR
2988526136,2988526143,GB
-2988526144,2988526175,FR
-2988526176,2988526239,ES
-2988526240,2988526415,FR
+2988526144,2988526415,FR
2988526416,2988526423,ES
2988526424,2988526703,FR
2988526704,2988526707,GB
@@ -87877,9 +88633,7 @@
2988556320,2988556351,GB
2988556352,2988556359,FR
2988556360,2988556363,ES
-2988556364,2988557023,FR
-2988557024,2988557039,IE
-2988557040,2988557095,FR
+2988556364,2988557095,FR
2988557096,2988557103,ES
2988557104,2988557111,PT
2988557112,2988557395,FR
@@ -87912,9 +88666,7 @@
2988559200,2988559231,PT
2988559232,2988559615,FR
2988559616,2988559619,ES
-2988559620,2988559631,FR
-2988559632,2988559647,GB
-2988559648,2988559663,FR
+2988559620,2988559663,FR
2988559664,2988559679,ES
2988559680,2988560639,FR
2988560640,2988560703,ES
@@ -87923,9 +88675,7 @@
2988560768,2988560783,FR
2988560784,2988560799,NL
2988560800,2988560815,DE
-2988560816,2988560879,FR
-2988560880,2988560895,GB
-2988560896,2988561051,FR
+2988560816,2988561051,FR
2988561052,2988561055,GB
2988561056,2988561215,FR
2988561216,2988561231,ES
@@ -87974,10 +88724,10 @@
2988564408,2988566331,FR
2988566332,2988566332,GB
2988566333,2988572671,FR
-2988572672,2988612607,RU
-2988612608,2988613119,UA
-2988613120,2988613375,RU
-2988613376,2988613631,UA
+2988572672,2988611583,RU
+2988611584,2988613247,UA
+2988613248,2988613248,RU
+2988613249,2988613631,UA
2988613632,2988703743,RU
2988703744,2988834815,PL
2988834816,2988965887,CH
@@ -88008,8 +88758,13 @@
2990211072,2990276607,GR
2990276608,2990342143,ES
2990342144,2990407679,KW
-2990407680,2990440447,GB
-2990440448,2990473215,NL
+2990407680,2990471935,GB
+2990471936,2990472191,NL
+2990472192,2990472334,GB
+2990472335,2990472335,NL
+2990472336,2990472492,GB
+2990472493,2990472493,NL
+2990472494,2990473215,GB
2990473216,2990475674,DE
2990475675,2990475675,HR
2990475676,2990538751,DE
@@ -88065,31 +88820,55 @@
2993946624,2994208767,BE
2994208768,2994733055,BY
2994733056,2994737151,US
-2994737152,2994741247,SG
+2994737152,2994737407,GR
+2994737408,2994737663,NL
+2994737664,2994738175,GR
+2994738176,2994738431,NL
+2994738432,2994738943,GR
+2994738944,2994739199,NL
+2994739200,2994739711,GR
+2994739712,2994739967,NL
+2994739968,2994741247,GR
2994741248,2994745343,GB
2994745344,2994749439,SG
2994749440,2994753535,US
-2994753536,2994757631,SG
-2994757632,2994758143,GR
-2994758144,2994758399,NL
-2994758400,2994759167,GR
-2994759168,2994759423,NL
-2994759424,2994759679,GR
-2994759680,2994760191,NL
-2994760192,2994760447,GR
-2994760448,2994761471,NL
-2994761472,2994765823,GR
-2994765824,2994766847,US
-2994766848,2994767871,NL
+2994753536,2994761727,SG
+2994761728,2994765823,GR
+2994765824,2994766847,NL
+2994766848,2994767871,US
2994767872,2994768127,GR
2994768128,2994769407,NL
2994769408,2994769919,GR
2994769920,2994774015,US
-2994774016,2994778111,GB
-2994778112,2994782207,US
-2994782208,2994786303,DE
-2994786304,2994790399,SG
-2994790400,2994794495,CA
+2994774016,2994774271,GR
+2994774272,2994775620,NL
+2994775621,2994775621,GB
+2994775622,2994776319,NL
+2994776320,2994776831,GR
+2994776832,2994777343,NL
+2994777344,2994777855,GR
+2994777856,2994778111,NL
+2994778112,2994778623,GR
+2994778624,2994779391,NL
+2994779392,2994779647,GR
+2994779648,2994780159,NL
+2994780160,2994780415,GR
+2994780416,2994781183,NL
+2994781184,2994781695,GR
+2994781696,2994782207,NL
+2994782208,2994784511,GR
+2994784512,2994785279,NL
+2994785280,2994785791,GR
+2994785792,2994786047,NL
+2994786048,2994787583,GR
+2994787584,2994787839,NL
+2994787840,2994789375,GR
+2994789376,2994789631,NL
+2994789632,2994790655,GR
+2994790656,2994790911,NL
+2994790912,2994791167,GR
+2994791168,2994791423,NL
+2994791424,2994794495,GR
2994794496,2994798591,NL
2994798592,2994929663,RU
2994929664,2994995199,IR
@@ -88344,10 +89123,11 @@
3000240128,3000242175,RU
3000242176,3000244223,AT
3000244224,3000246271,PL
+3000246272,3000247295,DE
+3000247296,3000248319,RU
3000248320,3000252415,PL
3000252416,3000254463,RO
-3000254464,3000256511,UA
-3000256512,3000260607,RU
+3000254464,3000260607,RU
3000260608,3000262655,RS
3000262656,3000266751,UA
3000266752,3000268799,DE
@@ -88438,6 +89218,7 @@
3000553472,3000555519,KG
3000555520,3000557567,RU
3000557568,3000561663,UA
+3000561664,3000563711,GB
3000563712,3000565759,IR
3000565760,3000567807,RU
3000567808,3000569855,RS
@@ -88446,6 +89227,8 @@
3000573952,3000575999,PL
3000576000,3000586239,RU
3000586240,3000588287,NL
+3000588288,3000589311,BG
+3000589312,3000590335,GB
3000590336,3000594431,RU
3000594432,3000596479,PL
3000596480,3000598527,RU
@@ -88465,6 +89248,8 @@
3000616960,3000621055,UA
3000621056,3000623103,PL
3000623104,3000625151,RU
+3000625152,3000626175,GB
+3000626176,3000627199,TR
3000627200,3000629247,CZ
3000629248,3000631295,PL
3000631296,3000647679,RU
@@ -88473,6 +89258,7 @@
3000664064,3000668159,RO
3000672256,3000676351,HR
3000676352,3000680447,SA
+3000680448,3000682495,GB
3000682496,3000684543,UZ
3000684544,3000688639,RU
3000688640,3000692735,PL
@@ -88567,7 +89353,6 @@
3001995264,3001999359,HU
3001999360,3002003455,DE
3002003456,3002011647,PL
-3002011648,3002015743,BA
3002015744,3002019839,IT
3002019840,3002021271,NL
3002021272,3002021279,MT
@@ -88648,6 +89433,7 @@
3002714112,3002716159,IT
3002716160,3002718207,CZ
3002718208,3002722303,IT
+3002722304,3002724351,DE
3002724352,3002726399,RU
3002726400,3002728447,NL
3002728448,3002730495,FR
@@ -88682,6 +89468,8 @@
3002791936,3002793983,AE
3002793984,3002796031,DK
3002796032,3002798079,DE
+3002798080,3002799103,ES
+3002799104,3002800127,FR
3002800128,3002802175,NL
3002802176,3002804223,GB
3002804224,3002806271,TR
@@ -88694,6 +89482,8 @@
3002818560,3002820607,RU
3002820608,3002822655,UA
3002822656,3002824703,DE
+3002824704,3002825727,PL
+3002825728,3002826751,CH
3002826752,3002828799,SE
3002828800,3002830847,RU
3002830848,3002834943,FI
@@ -88744,6 +89534,8 @@
3003078156,3003080703,GB
3003080704,3003082751,FR
3003082752,3003084799,ES
+3003084800,3003085823,SE
+3003085824,3003086847,IT
3003086848,3003088895,RU
3003088896,3003090943,FR
3003090944,3003092991,DE
@@ -88811,9 +89603,7 @@
3003174400,3003174911,BR
3003174912,3003179007,CR
3003179008,3003187199,AR
-3003187200,3003189215,CO
-3003189216,3003189247,AT
-3003189248,3003252735,CO
+3003187200,3003252735,CO
3003252736,3003449343,CL
3003449344,3003514879,SV
3003514880,3003645951,PE
@@ -88827,8 +89617,8 @@
3005218816,3005349887,CO
3005349888,3005480959,BR
3005480960,3005874175,AR
-3005874176,3005893887,PA
-3005893888,3005894911,CO
+3005874176,3005894143,PA
+3005894144,3005894911,CO
3005894912,3005895679,PA
3005895680,3005896191,CO
3005896192,3005896703,PA
@@ -88836,9 +89626,11 @@
3005897216,3005897471,PA
3005897472,3005897727,CO
3005897728,3005897983,PA
-3005897984,3005899775,CO
-3005899776,3005900031,PA
-3005900032,3005900543,CO
+3005897984,3005898239,CO
+3005898240,3005898495,PA
+3005898496,3005899775,CO
+3005899776,3005900287,PA
+3005900288,3005900543,CO
3005900544,3005900799,PA
3005900800,3005901055,CO
3005901056,3005901567,PA
@@ -88852,13 +89644,11 @@
3005905920,3005906175,PA
3005906176,3005906687,CO
3005906688,3005911295,PA
-3005911296,3005911807,CO
-3005911808,3005912319,PA
+3005911296,3005911551,CO
+3005911552,3005912319,PA
3005912320,3005912575,CO
-3005912576,3005912831,PA
-3005912832,3005913087,CO
-3005913088,3005913599,PA
-3005913600,3005914111,CO
+3005912576,3005913855,PA
+3005913856,3005914111,CO
3005914112,3005914623,PA
3005914624,3005915135,CO
3005915136,3005918207,AR
@@ -88889,16 +89679,20 @@
3006287872,3006288383,CR
3006288384,3006288639,PA
3006288640,3006289151,CR
-3006289152,3006289663,PA
-3006289664,3006290175,CR
+3006289152,3006289919,PA
+3006289920,3006290175,CR
3006290176,3006290431,PA
-3006290432,3006291711,CR
+3006290432,3006291199,CR
+3006291200,3006291455,PA
+3006291456,3006291711,CR
3006291712,3006308351,PA
3006308352,3006308607,CR
3006308608,3006309631,PA
-3006309632,3006311167,CR
-3006311168,3006311679,PA
-3006311680,3006312703,CR
+3006309632,3006310399,CR
+3006310400,3006310655,PA
+3006310656,3006311167,CR
+3006311168,3006311935,PA
+3006311936,3006312703,CR
3006312704,3006313215,PA
3006313216,3006313471,CR
3006313472,3006313727,PA
@@ -88908,13 +89702,11 @@
3006315008,3006315519,PA
3006315520,3006315775,CR
3006315776,3006316031,PA
-3006316032,3006316543,CR
-3006316544,3006320639,PA
+3006316032,3006316287,CR
+3006316288,3006320639,PA
3006320640,3006320895,CR
-3006320896,3006322175,PA
-3006322176,3006322431,CR
-3006322432,3006323199,PA
-3006323200,3006324735,CR
+3006320896,3006323711,PA
+3006323712,3006324735,CR
3006324736,3006328831,PA
3006328832,3006329599,NI
3006329600,3006329855,PA
@@ -88962,11 +89754,7 @@
3007098880,3007099631,HN
3007099632,3007099639,GB
3007099640,3007099903,HN
-3007099904,3007100055,US
-3007100056,3007100063,BR
-3007100064,3007100407,US
-3007100408,3007100415,PH
-3007100416,3007100463,US
+3007099904,3007100463,US
3007100464,3007100471,IN
3007100472,3007100927,US
3007100928,3007102975,AR
@@ -89115,20 +89903,20 @@
3007171072,3007171327,US
3007171328,3007171583,ES
3007171584,3007171839,US
-3007171840,3007171855,CL
+3007171840,3007171855,BR
3007171856,3007171871,US
-3007171872,3007171873,BR
-3007171874,3007171875,CL
-3007171876,3007172095,BR
+3007171872,3007172095,BR
3007172096,3007172351,US
3007172352,3007172383,FR
3007172384,3007172415,BE
3007172416,3007172447,CL
3007172448,3007172607,BR
3007172608,3007172863,US
-3007172864,3007173023,BR
+3007172864,3007173023,CL
3007173024,3007173055,NZ
-3007173056,3007173119,BR
+3007173056,3007173059,CL
+3007173060,3007173071,BR
+3007173072,3007173119,CL
3007173120,3007173375,US
3007173376,3007173407,NO
3007173408,3007173439,SE
@@ -89184,15 +89972,28 @@
3007183264,3007183295,IT
3007183296,3007183359,BR
3007183360,3007183615,AU
-3007183616,3007184127,US
-3007184128,3007184383,KW
+3007183616,3007184133,US
+3007184134,3007184134,KW
+3007184135,3007184137,US
+3007184138,3007184138,KW
+3007184139,3007184142,US
+3007184143,3007184143,KW
+3007184144,3007184146,US
+3007184147,3007184149,KW
+3007184150,3007184152,US
+3007184153,3007184153,KW
+3007184154,3007184179,US
+3007184180,3007184181,KW
+3007184182,3007184323,US
+3007184324,3007184325,KW
+3007184326,3007184383,US
3007184384,3007184895,BR
3007184896,3007250431,AR
3007250432,3007283711,CR
3007283712,3007284479,PA
3007284480,3007284735,CR
-3007284736,3007285247,PA
-3007285248,3007285503,CR
+3007284736,3007284991,PA
+3007284992,3007285503,CR
3007285504,3007285759,PA
3007285760,3007286015,CR
3007286016,3007286271,PA
@@ -89218,8 +90019,8 @@
3024879616,3025141759,CN
3025141760,3025403903,KR
3025403904,3025600511,CN
-3025600512,3025600535,SG
-3025600536,3025601663,IN
+3025600512,3025600543,SG
+3025600544,3025601663,IN
3025601664,3025601791,HK
3025601792,3025601919,IN
3025601920,3025602047,CN
@@ -89325,7 +90126,9 @@
3025625936,3025626015,SG
3025626016,3025626039,IN
3025626040,3025626079,SG
-3025626080,3025626111,IN
+3025626080,3025626095,IN
+3025626096,3025626103,SG
+3025626104,3025626111,IN
3025626112,3025626623,SG
3025626624,3025629183,IN
3025629184,3025629567,HK
@@ -89457,9 +90260,7 @@
3026069504,3026071551,JP
3026071552,3026073599,AU
3026073600,3026075647,CN
-3026075648,3026081106,AF
-3026081107,3026081107,DE
-3026081108,3026083839,AF
+3026075648,3026083839,AF
3026083840,3026087935,CN
3026087936,3026089983,AU
3026089984,3026092031,CN
@@ -89934,9 +90735,7 @@
3050709520,3050709759,BR
3050709760,3050710015,NL
3050710016,3050710031,ES
-3050710032,3050710079,BR
-3050710080,3050710143,US
-3050710144,3050710271,BR
+3050710032,3050710271,BR
3050710272,3050710527,US
3050710528,3050710543,FR
3050710544,3050710783,BR
@@ -89969,9 +90768,7 @@
3050724352,3050724607,BG
3050724608,3050738687,US
3050738688,3050738943,GB
-3050738944,3050748159,US
-3050748160,3050748415,GB
-3050748416,3050753023,US
+3050738944,3050753023,US
3050753024,3050753279,DE
3050753280,3050753385,PE
3050753386,3050753386,DE
@@ -90075,11 +90872,11 @@
3050790400,3050790463,BR
3050790464,3050790464,US
3050790465,3050790527,BR
-3050790528,3050790655,US
-3050790656,3050790755,BR
+3050790528,3050790719,US
+3050790720,3050790755,BR
3050790756,3050790759,US
-3050790760,3050790783,BR
-3050790784,3050800383,US
+3050790760,3050790775,BR
+3050790776,3050800383,US
3050800384,3050800399,AL
3050800400,3050800415,AD
3050800416,3050800431,AI
@@ -90202,14 +90999,11 @@
3051390208,3051390463,PA
3051390464,3051390719,US
3051390720,3051390975,NL
-3051390976,3051391487,PA
-3051391488,3051391743,US
-3051391744,3051391999,PA
+3051390976,3051391999,PA
3051392000,3051392255,US
3051392256,3051393023,PA
3051393024,3051393535,US
-3051393536,3051394047,PA
-3051394048,3051394303,NL
+3051393536,3051394303,PA
3051394304,3051395071,US
3051395072,3051395327,NL
3051395328,3051396095,PA
@@ -90568,9 +91362,7 @@
3090308864,3090309119,NL
3090309120,3090325503,US
3090325504,3090329599,NL
-3090329600,3090388223,US
-3090388224,3090388479,NL
-3090388480,3090389503,US
+3090329600,3090389503,US
3090389504,3090389631,CA
3090389632,3090401791,US
3090401792,3090402047,IN
@@ -90613,8 +91405,10 @@
3093200896,3093213183,US
3093213184,3093217279,CA
3093217280,3093233663,US
-3093233664,3093237759,PR
-3093237760,3093282815,US
+3093233664,3093234719,PR
+3093234720,3093235199,US
+3093235200,3093235455,PR
+3093235456,3093282815,US
3093282816,3093299199,CA
3093299200,3093907199,US
3093907200,3093907455,CA
@@ -90750,8 +91544,12 @@
3098431488,3098435071,US
3098435072,3098435327,NL
3098435328,3098435583,CA
-3098435584,3098437631,BR
-3098437632,3098441215,US
+3098435584,3098435839,AU
+3098435840,3098436095,ES
+3098436096,3098437631,BR
+3098437632,3098439679,US
+3098439680,3098440191,SA
+3098440192,3098441215,US
3098441216,3098441727,FR
3098441728,3098476543,US
3098476544,3098492927,CA
@@ -90869,6 +91667,7 @@
3103880448,3103880959,RU
3103880960,3103881215,DE
3103881216,3103881471,GB
+3103881472,3103881727,MK
3103916032,3103917055,CH
3103917056,3103918079,IT
3103918080,3103919103,DE
@@ -91702,8 +92501,8 @@
3104751616,3104751871,GB
3104751872,3104752127,CA
3104752128,3104752255,GB
-3104752256,3104752511,RU
-3104752512,3104752639,UA
+3104752256,3104752383,RU
+3104752384,3104752639,UA
3104752640,3104753663,SA
3104753664,3104754687,GR
3104754688,3104755711,MK
@@ -92003,8 +92802,7 @@
3105043456,3105044479,DE
3105044480,3105045503,NL
3105045504,3105046527,DE
-3105046528,3105047295,NO
-3105047296,3105047551,DK
+3105046528,3105047551,NO
3105047552,3105048575,ES
3105048576,3105049599,SK
3105049600,3105050623,KW
@@ -92279,7 +93077,7 @@
3105334272,3105335295,UA
3105335296,3105336319,GR
3105336320,3105337343,IL
-3105337344,3105339391,GB
+3105337344,3105338367,GB
3105339392,3105340415,SY
3105340416,3105341439,FR
3105341440,3105342463,ES
@@ -92421,7 +93219,6 @@
3105464320,3105465343,NL
3105465344,3105466367,DE
3105466368,3105467391,MT
-3105467392,3105468415,GB
3105468416,3105469439,RU
3105469440,3105469951,SE
3105469952,3105470207,AT
@@ -92624,15 +93421,14 @@
3105660928,3105661951,TR
3105661952,3105662975,GB
3105662976,3105663999,ES
-3105664000,3105664511,DE
-3105664512,3105665023,NL
+3105664000,3105665023,DE
3105665024,3105666047,PL
3105666048,3105667071,NL
3105667072,3105668095,DE
3105668096,3105669119,NL
3105669120,3105670143,CZ
3105670144,3105671167,IE
-3105671168,3105673215,GB
+3105671168,3105672191,GB
3105673216,3105674239,DE
3105674240,3105675263,GB
3105675264,3105676287,ES
@@ -92870,7 +93666,7 @@
3105905664,3105906687,IE
3105906688,3105908735,FR
3105908736,3105910783,GB
-3105910784,3105911807,IL
+3105910784,3105911807,ES
3105911808,3105912831,DE
3105912832,3105913855,RU
3105913856,3105914879,CH
@@ -92934,7 +93730,7 @@
3105966080,3105967103,FI
3105967104,3105968127,GB
3105968128,3105969151,HU
-3105969152,3105970175,NL
+3105969152,3105970175,US
3105970176,3105971199,FR
3105971200,3105972223,GB
3105972224,3105973247,DK
@@ -93050,8 +93846,8 @@
3106073600,3106074623,PL
3106074624,3106076671,RU
3106076672,3106077695,IT
-3106077696,3106078463,GB
-3106078464,3106078719,JP
+3106077696,3106078207,GB
+3106078208,3106078719,JP
3106078720,3106080767,RU
3106080768,3106081791,UA
3106081792,3106082815,DE
@@ -93147,7 +93943,6 @@
3106169856,3106170879,NL
3106170880,3106171903,RU
3106171904,3106172927,GB
-3106172928,3106173951,NL
3106173952,3106175999,DE
3106176000,3106177023,NO
3106177024,3106178047,IT
@@ -93180,7 +93975,6 @@
3106206720,3106207743,GE
3106207744,3106208767,GB
3106208768,3106209791,RO
-3106209792,3106210815,CH
3106210816,3106211839,NL
3106211840,3106212863,BE
3106212864,3106213887,PS
@@ -93260,7 +94054,6 @@
3106271232,3106272255,SK
3106272256,3106273279,NL
3106273280,3106274303,DE
-3106274304,3106275327,CH
3106275328,3106276351,FI
3106276352,3106277375,AT
3106277376,3106278399,DE
@@ -93441,7 +94234,8 @@
3106440708,3106441215,DE
3106441216,3106442239,HU
3106442240,3106442495,GG
-3106442496,3106443263,GB
+3106442496,3106443007,FR
+3106443008,3106443263,GB
3106443264,3106445311,ES
3106445312,3106446335,RU
3106446336,3106447359,AZ
@@ -94002,7 +94796,8 @@
3106979840,3106980863,ES
3106980864,3106981887,UA
3106981888,3106982911,FR
-3106982912,3106984959,DE
+3106982912,3106983935,ES
+3106983936,3106984959,DE
3106984960,3106985983,TR
3106985984,3106989055,DE
3106989056,3106990079,CH
@@ -94030,13 +94825,7 @@
3107013632,3107014655,DE
3107014656,3107015679,GB
3107015680,3107016703,DE
-3107016704,3107017087,GB
-3107017088,3107017107,NL
-3107017108,3107017108,GB
-3107017109,3107017127,NL
-3107017128,3107017128,GB
-3107017129,3107017151,NL
-3107017152,3107017727,GB
+3107016704,3107017727,GB
3107017728,3107018751,IR
3107018752,3107019775,BG
3107019776,3107020799,GB
@@ -94193,7 +94982,6 @@
3107166208,3107167231,AE
3107167232,3107168255,RU
3107168256,3107169279,ES
-3107169280,3107170303,TR
3107170304,3107171327,IT
3107171328,3107172351,GB
3107172352,3107173375,FR
@@ -94305,10 +95093,10 @@
3107277824,3107278847,UA
3107278848,3107279871,FR
3107279872,3107280895,FI
-3107280896,3107281151,NL
+3107280896,3107281151,US
3107281152,3107281407,IS
3107281408,3107281663,US
-3107281664,3107281919,NL
+3107281664,3107281919,EE
3107281920,3107282943,GB
3107282944,3107283967,PL
3107283968,3107284991,AL
@@ -94682,7 +95470,7 @@
3107611648,3107612671,SK
3107612672,3107613695,IT
3107613696,3107614719,DE
-3107614720,3107615743,RU
+3107614720,3107615743,BR
3107615744,3107617791,IT
3107617792,3107618815,RU
3107618816,3107619839,CH
@@ -94775,7 +95563,7 @@
3107708672,3107708927,US
3107708928,3107709951,PL
3107709952,3107710975,DK
-3107710976,3107711999,RU
+3107710976,3107711999,BR
3107712000,3107713023,NO
3107713024,3107714047,RO
3107714048,3107715071,RU
@@ -94895,7 +95683,7 @@
3107833856,3107834879,PS
3107834880,3107835903,ES
3107835904,3107837951,GB
-3107837952,3107839999,RU
+3107837952,3107839999,BR
3107840000,3107841023,NL
3107841024,3107842047,CZ
3107842048,3107843071,FI
@@ -94941,7 +95729,8 @@
3107887104,3107888127,BG
3107888128,3107889151,GB
3107889152,3107890175,NO
-3107890176,3107891199,IE
+3107890176,3107890431,QA
+3107890432,3107891199,IE
3107891200,3107892223,CH
3107892224,3107893247,AL
3107893248,3107894271,SA
@@ -95003,7 +95792,6 @@
3107951616,3107952639,CH
3107952640,3107953663,NL
3107953664,3107954687,SK
-3107954688,3107955711,IT
3107955712,3107956735,NL
3107956736,3107957759,IT
3107957760,3107958783,FR
@@ -95039,7 +95827,11 @@
3107987456,3107988479,NL
3107988480,3107989503,GB
3107989504,3107990527,CZ
-3107990528,3107991551,RU
+3107990528,3107991037,UA
+3107991038,3107991038,RU
+3107991039,3107991415,UA
+3107991416,3107991423,RU
+3107991424,3107991551,UA
3107991552,3107992575,AT
3107992576,3107993599,RU
3107993600,3107994623,MT
@@ -95101,7 +95893,6 @@
3108047872,3108050943,RU
3108050944,3108051967,GB
3108051968,3108052991,FR
-3108052992,3108054015,GB
3108054016,3108055039,LV
3108055040,3108056063,GB
3108056064,3108057087,IT
@@ -95285,7 +96076,6 @@
3108232192,3108233215,DE
3108233216,3108234239,NL
3108234240,3108235263,AT
-3108235264,3108236287,GB
3108236288,3108237311,IT
3108237312,3108238335,LT
3108238336,3108239359,RU
@@ -95344,7 +96134,7 @@
3108285440,3108286463,NL
3108286464,3108287487,IT
3108287488,3108288511,NL
-3108288512,3108289535,RU
+3108288512,3108289535,BR
3108289536,3108290559,RO
3108290560,3108291583,IT
3108291584,3108292607,NL
@@ -95357,7 +96147,7 @@
3108300800,3108301823,GB
3108301824,3108302847,CH
3108302848,3108303871,NL
-3108303872,3108304895,RU
+3108303872,3108304895,BR
3108304896,3108305919,GB
3108305920,3108306943,DE
3108306944,3108307967,PL
@@ -95519,10 +96309,9 @@
3108471808,3108472831,YE
3108472832,3108473855,GB
3108473856,3108474879,PS
-3108474880,3108475903,RU
+3108474880,3108475903,BR
3108475904,3108476927,FR
3108476928,3108477951,IR
-3108477952,3108478975,FR
3108478976,3108479999,IE
3108480000,3108481023,AT
3108481024,3108482047,DE
@@ -95538,7 +96327,7 @@
3108489216,3108490239,ES
3108490240,3108491263,AE
3108491264,3108492287,NO
-3108492288,3108493311,RU
+3108492288,3108493311,BR
3108493312,3108494335,CY
3108494336,3108495359,IT
3108495360,3108496383,FR
@@ -95642,7 +96431,7 @@
3108597760,3108598015,NL
3108598016,3108598271,IR
3108598272,3108598527,GB
-3108598528,3108598783,DE
+3108598528,3108598783,IR
3108598784,3108600831,CH
3108600832,3108601855,NL
3108601856,3108602879,US
@@ -95655,7 +96444,8 @@
3108610048,3108611071,CZ
3108611072,3108612095,IT
3108612096,3108615167,ES
-3108615168,3108616191,RU
+3108615168,3108615679,BR
+3108615680,3108616191,RU
3108616192,3108617215,GB
3108617216,3108618239,ES
3108618240,3108619263,RU
@@ -95665,7 +96455,8 @@
3108622336,3108623359,PL
3108623360,3108623615,RU
3108623616,3108623871,GB
-3108623872,3108625407,RU
+3108623872,3108624383,RU
+3108624384,3108625407,BR
3108625408,3108626431,NL
3108626432,3108627455,CZ
3108627456,3108628479,PL
@@ -95890,7 +96681,7 @@
3108862976,3108863999,BG
3108864000,3108865023,NL
3108865024,3108866047,ES
-3108866048,3108867071,RU
+3108866048,3108867071,BR
3108867072,3108868095,GB
3108868096,3108869119,SK
3108869120,3108870143,RU
@@ -95953,7 +96744,7 @@
3108913152,3108914175,IT
3108914176,3108915199,NO
3108915200,3108916223,PL
-3108916224,3108917247,RU
+3108916224,3108917247,BR
3108917248,3108918271,FR
3108918272,3108919295,TR
3108919296,3108920319,GB
@@ -96012,16 +96803,16 @@
3108969472,3108970495,ES
3108970496,3108971519,PL
3108971520,3108972543,ES
-3108972544,3108973567,NL
+3108972544,3108973567,MD
3108973568,3108974591,DE
-3108974592,3108975615,RU
+3108974592,3108975615,BR
3108975616,3108976639,IT
3108976640,3108977663,GB
3108977664,3108978687,IR
3108978688,3108979711,DE
3108979712,3108980735,RU
3108980736,3108981759,DE
-3108981760,3108982783,RU
+3108981760,3108982783,BR
3108982784,3108983807,NL
3108983808,3108984063,AE
3108984064,3108984831,NO
@@ -96035,7 +96826,8 @@
3108993024,3108994047,BG
3108994048,3108995071,DE
3108995072,3108996095,ES
-3108996096,3108998143,RU
+3108996096,3108997119,RU
+3108997120,3108998143,BR
3108998144,3108999167,GB
3108999168,3109000191,ES
3109000192,3109001215,FR
@@ -96336,7 +97128,7 @@
3109276672,3109277695,FI
3109277696,3109278719,IR
3109278720,3109279487,PT
-3109279488,3109279743,SC
+3109279488,3109279743,CH
3109279744,3109280767,NL
3109280768,3109281791,IL
3109281792,3109282815,HU
@@ -96372,8 +97164,7 @@
3109308416,3109309439,NL
3109309440,3109310463,CH
3109310464,3109311487,DE
-3109311488,3109312511,GB
-3109312512,3109313535,IT
+3109311488,3109313535,IT
3109313536,3109314559,GB
3109314560,3109315583,IT
3109315584,3109316607,SI
@@ -96400,7 +97191,6 @@
3109337088,3109339135,RU
3109339136,3109340159,CH
3109340160,3109341183,NL
-3109341184,3109342207,GB
3109342208,3109343231,ES
3109343232,3109344255,CH
3109344256,3109345279,SE
@@ -96625,7 +97415,8 @@
3109573632,3109574655,IT
3109574656,3109575679,PS
3109575680,3109576703,DE
-3109576704,3109578751,RU
+3109576704,3109577727,BR
+3109577728,3109578751,RU
3109578752,3109579775,FR
3109579776,3109580799,GB
3109580800,3109581823,SE
@@ -96679,7 +97470,8 @@
3109632000,3109633023,DE
3109633024,3109634047,ES
3109634048,3109635071,PL
-3109635072,3109636095,FR
+3109635072,3109635327,CH
+3109635328,3109636095,FR
3109636096,3109637119,IE
3109637120,3109637887,NL
3109637888,3109638143,RU
@@ -96694,7 +97486,7 @@
3109643520,3109643775,RU
3109643776,3109644031,UA
3109644032,3109644287,ES
-3109644288,3109646335,RU
+3109644288,3109646335,EE
3109646336,3109647359,IR
3109647360,3109648383,CZ
3109648384,3109649407,GB
@@ -97130,11 +97922,12 @@
3110032384,3110033407,TR
3110033408,3110035455,SE
3110035456,3110036479,DE
-3110036480,3110038527,RU
+3110036480,3110036991,RU
+3110036992,3110037503,BR
+3110037504,3110038527,RU
3110038528,3110039551,GB
3110039552,3110040575,DE
3110040576,3110041599,CZ
-3110041600,3110042623,TR
3110042624,3110043647,ES
3110043648,3110044671,DE
3110044672,3110046719,IT
@@ -97159,7 +97952,8 @@
3110066176,3110067199,CH
3110067200,3110068223,PT
3110068224,3110069247,IT
-3110069248,3110070271,RU
+3110069248,3110069759,RU
+3110069760,3110070271,BR
3110070272,3110073343,IT
3110073344,3110074367,GB
3110074368,3110075391,BG
@@ -97173,7 +97967,8 @@
3110082560,3110083583,ES
3110083584,3110084607,UA
3110084608,3110085631,GR
-3110085632,3110086655,RU
+3110085632,3110086143,BR
+3110086144,3110086655,RU
3110086656,3110087679,NO
3110087680,3110088703,NL
3110088704,3110089727,GB
@@ -97514,19 +98309,20 @@
3110361088,3110362111,ES
3110362112,3110363135,CZ
3110363136,3110364159,KW
-3110364160,3110364671,RU
+3110364160,3110364415,UA
+3110364416,3110364671,RU
3110364672,3110364927,UA
3110364928,3110366207,RU
3110366208,3110371327,IT
3110371328,3110372351,NL
-3110372352,3110373119,LU
-3110373120,3110373375,NL
+3110372352,3110373375,LU
3110373376,3110374399,ES
3110374400,3110375423,NL
3110375424,3110376447,AT
3110376448,3110377471,GB
3110377472,3110378495,SA
-3110378496,3110379519,RU
+3110378496,3110379007,TR
+3110379008,3110379519,RU
3110379520,3110380543,DE
3110380544,3110381567,IT
3110381568,3110382591,LB
@@ -97542,7 +98338,7 @@
3110388736,3110389759,CZ
3110389760,3110390783,LB
3110390784,3110391807,NO
-3110391808,3110392831,AE
+3110391808,3110392831,QA
3110392832,3110393087,GB
3110393088,3110393343,IE
3110393344,3110393599,GB
@@ -97597,7 +98393,6 @@
3110437888,3110438911,DE
3110438912,3110439935,GE
3110439936,3110440959,SK
-3110440960,3110441983,BE
3110441984,3110443007,GB
3110443008,3110444031,DK
3110444032,3110445055,CH
@@ -97618,7 +98413,6 @@
3110459904,3110460159,US
3110460160,3110460415,IT
3110460416,3110461439,CZ
-3110461440,3110462463,GB
3110462464,3110463487,IR
3110463488,3110464511,PL
3110464512,3110465535,IQ
@@ -97652,7 +98446,8 @@
3110495232,3110496255,SE
3110496256,3110497279,DE
3110497280,3110498303,NO
-3110498304,3110499327,RU
+3110498304,3110498815,RU
+3110498816,3110499327,BR
3110499328,3110500351,KZ
3110500352,3110501375,RU
3110501376,3110502399,RS
@@ -97830,7 +98625,8 @@
3110674432,3110675455,GB
3110675456,3110676479,ES
3110676480,3110677503,DE
-3110677504,3110679551,RU
+3110677504,3110678527,BR
+3110678528,3110679551,RU
3110679552,3110680575,BE
3110680576,3110681599,GB
3110681600,3110682623,SE
@@ -98006,7 +98802,8 @@
3110861824,3110864895,RU
3110864896,3110865919,DE
3110865920,3110866943,GB
-3110866944,3110868991,RU
+3110866944,3110867199,SE
+3110867200,3110868991,RU
3110868992,3110870015,PS
3110870016,3110871039,CZ
3110871040,3110872063,FR
@@ -98016,7 +98813,6 @@
3110875136,3110876159,DE
3110876160,3110878207,GB
3110878208,3110879231,CZ
-3110879232,3110880255,LV
3110880256,3110881279,PL
3110881280,3110883327,DE
3110883328,3110884351,IL
@@ -98150,7 +98946,8 @@
3111023616,3111024639,IT
3111024640,3111025663,AT
3111025664,3111026687,DE
-3111026688,3111027967,RU
+3111026688,3111027711,BR
+3111027712,3111027967,RU
3111027968,3111028479,UA
3111028480,3111028735,LT
3111028736,3111029759,AT
@@ -98187,11 +98984,11 @@
3111061504,3111063551,IR
3111063552,3111064575,FR
3111064576,3111065599,GB
-3111065600,3111066623,RU
+3111065600,3111066623,TR
3111066624,3111067647,NL
3111067648,3111068671,DE
3111068672,3111069695,IS
-3111069696,3111070719,IR
+3111069696,3111070719,AU
3111070720,3111071743,FR
3111071744,3111072767,RU
3111072768,3111074815,FR
@@ -98258,7 +99055,8 @@
3111135232,3111136255,PL
3111136256,3111137279,NL
3111137280,3111139327,CH
-3111139328,3111140351,RU
+3111139328,3111139839,RU
+3111139840,3111140351,BR
3111140352,3111141375,IT
3111141376,3111142399,NL
3111142400,3111143423,DE
@@ -98415,7 +99213,7 @@
3111288832,3111289855,FR
3111289856,3111290879,DE
3111290880,3111291903,UA
-3111291904,3111292927,NL
+3111291904,3111292927,DE
3111292928,3111293951,SI
3111293952,3111294975,CY
3111294976,3111295999,US
@@ -98583,7 +99381,6 @@
3111449503,3111449599,NO
3111449600,3111451647,DE
3111451648,3111452671,PL
-3111452672,3111453695,MY
3111453696,3111454719,NL
3111454720,3111455743,IQ
3111455744,3111456255,CH
@@ -98891,7 +99688,6 @@
3111770112,3111771135,FI
3111771136,3111772159,GB
3111772160,3111773183,NL
-3111773184,3111774207,IQ
3111774208,3111775231,ES
3111775232,3111776255,AM
3111776256,3111778303,RU
@@ -98943,8 +99739,7 @@
3111823360,3111824383,NL
3111824384,3111825407,PL
3111825408,3111825919,GB
-3111825920,3111826175,LT
-3111826176,3111826431,RU
+3111825920,3111826431,RU
3111826432,3111827455,DE
3111827456,3111828479,ES
3111828480,3111829503,DK
@@ -99147,7 +99942,9 @@
3112034321,3112034321,NO
3112034322,3112034322,SE
3112034323,3112034323,FI
-3112034324,3112034333,DE
+3112034324,3112034327,DE
+3112034328,3112034329,ZA
+3112034330,3112034333,DE
3112034334,3112034334,RO
3112034335,3112034335,RS
3112034336,3112034336,IL
@@ -99187,7 +99984,8 @@
3112034836,3112034837,DE
3112034838,3112034838,TR
3112034839,3112034839,GR
-3112034840,3112034845,US
+3112034840,3112034841,ZA
+3112034842,3112034845,US
3112034846,3112034846,RO
3112034847,3112034847,RS
3112034848,3112034848,IL
@@ -99366,7 +100164,7 @@
3112186880,3112187903,ES
3112187904,3112188927,GB
3112188928,3112189951,ES
-3112189952,3112190975,NL
+3112189952,3112190975,FR
3112190976,3112191999,DE
3112192000,3112193023,DK
3112193024,3112194047,IT
@@ -99484,7 +100282,6 @@
3112316928,3112317951,IQ
3112317952,3112318975,UA
3112318976,3112319999,TR
-3112320000,3112321023,IQ
3112321024,3112322047,FI
3112322048,3112323071,NO
3112323072,3112324095,NL
@@ -99596,7 +100393,6 @@
3112442880,3112443903,RU
3112443904,3112447999,DE
3112448000,3112449023,LT
-3112449024,3112450047,PL
3112450048,3112451071,IT
3112451072,3112452095,LU
3112452096,3112453119,FR
@@ -99702,7 +100498,6 @@
3112556544,3112557567,IT
3112557568,3112558591,GB
3112558592,3112559615,IQ
-3112559616,3112560639,RU
3112560640,3112561663,FR
3112561664,3112562687,DE
3112562688,3112563711,CZ
@@ -99807,7 +100602,7 @@
3112664064,3112665087,FR
3112665088,3112666111,GB
3112666112,3112666623,FR
-3112666624,3112667135,CZ
+3112666624,3112667135,NO
3112667136,3112668159,DE
3112668160,3112669183,UA
3112669184,3112670207,CZ
@@ -99855,7 +100650,6 @@
3112712192,3112713215,TR
3112713216,3112714239,AT
3112714240,3112715263,NL
-3112716032,3112716287,SE
3112716288,3112717311,GB
3112717312,3112718335,RU
3112718336,3112719359,AT
@@ -99884,7 +100678,6 @@
3112741888,3112742911,IR
3112742912,3112743935,RO
3112743936,3112744959,IR
-3112744960,3112745983,US
3112745984,3112747007,NL
3112747008,3112748031,IR
3112748032,3112750079,CZ
@@ -99906,7 +100699,8 @@
3112765696,3112765951,HK
3112765952,3112766463,GB
3112766464,3112767487,DE
-3112767488,3112768018,NL
+3112767744,3112767871,NL
+3112768000,3112768018,NL
3112768019,3112768019,RU
3112768020,3112768511,NL
3112768512,3112769535,IE
@@ -100035,8 +100829,7 @@
3112897536,3112898559,LB
3112898560,3112899583,PL
3112899584,3112900607,FR
-3112900608,3112900863,PL
-3112900864,3112901631,GB
+3112900608,3112901631,GB
3112901632,3112902655,IT
3112902656,3112903679,DE
3112903680,3112904703,GB
@@ -100249,7 +101042,8 @@
3113095168,3113096191,GB
3113096192,3113097215,IT
3113097216,3113097471,DE
-3113097472,3113097727,GB
+3113097472,3113097535,GB
+3113097536,3113097727,US
3113097728,3113098239,DE
3113098240,3113099263,IE
3113099264,3113100287,US
@@ -100324,7 +101118,7 @@
3113169920,3113170943,NL
3113170944,3113171967,UA
3113171968,3113172991,FI
-3113172992,3113175039,DE
+3113174016,3113175039,DE
3113175040,3113176063,IR
3113176064,3113177087,GB
3113177088,3113178111,BG
@@ -100482,7 +101276,6 @@
3113305088,3113306111,ES
3113306112,3113307135,GB
3113307136,3113308159,FR
-3113308160,3113309183,DE
3113309184,3113310207,IT
3113310208,3113311231,GB
3113311232,3113312255,SE
@@ -100568,7 +101361,10 @@
3113391104,3113392127,CZ
3113392128,3113393151,GB
3113393152,3113394175,RU
-3113394176,3113396223,TR
+3113394176,3113394687,IT
+3113394688,3113394943,JE
+3113394944,3113395199,IT
+3113395200,3113396223,TR
3113396224,3113397247,RU
3113397248,3113398271,SE
3113398272,3113399295,GE
@@ -100626,10 +101422,11 @@
3113447424,3113448447,NL
3113448448,3113449471,IT
3113449472,3113450495,EE
-3113450496,3113452543,RU
+3113450496,3113451519,GB
+3113451520,3113452543,RU
3113452544,3113453567,GB
3113453568,3113454591,IS
-3113454592,3113455615,RO
+3113454592,3113455615,IL
3113455616,3113456639,DK
3113456640,3113457663,FR
3113457664,3113458687,NL
@@ -100664,7 +101461,6 @@
3113488384,3113489407,NO
3113489408,3113490431,NL
3113490432,3113491455,RU
-3113491456,3113492479,GE
3113492480,3113493503,TR
3113493504,3113494527,RU
3113494528,3113497599,NL
@@ -100720,7 +101516,6 @@
3113548800,3113549823,FR
3113549824,3113550847,PL
3113550848,3113551871,GB
-3113551872,3113552895,UZ
3113552896,3113553919,UA
3113553920,3113554943,NO
3113554944,3113555967,UA
@@ -100777,7 +101572,6 @@
3113606144,3113607167,GB
3113607168,3113608191,DE
3113608192,3113609215,DK
-3113609216,3113610239,SA
3113610240,3113611263,GB
3113611264,3113613311,RU
3113613312,3113614335,DE
@@ -100977,7 +101771,6 @@
3113736192,3113737215,ES
3113737216,3113738239,NL
3113738240,3113739263,GB
-3113739264,3113740287,FR
3113740288,3113741311,NL
3113741312,3113742335,EG
3113742336,3113743359,RU
@@ -101078,7 +101871,7 @@
3113842688,3113843711,UA
3113843712,3113844735,IT
3113844736,3113845759,GB
-3113845760,3113846783,RU
+3113845760,3113846783,UA
3113846784,3113847807,ES
3113847808,3113848831,DE
3113848832,3113849855,EE
@@ -101102,7 +101895,6 @@
3113861120,3113862143,CZ
3113862144,3113863167,MD
3113863168,3113863423,NL
-3113863424,3113864191,LT
3113864192,3113865215,GB
3113865216,3113866239,IR
3113866240,3113867263,LB
@@ -101110,7 +101902,6 @@
3113868288,3113869311,TR
3113869312,3113870335,ES
3113870336,3113871359,TR
-3113871360,3113872383,FR
3113872384,3113873407,GB
3113873408,3113874431,RU
3113874432,3113875455,FR
@@ -101135,7 +101926,7 @@
3113890816,3113891839,RU
3113891840,3113892863,ES
3113892864,3113893887,CZ
-3113893888,3113894911,TR
+3113893888,3113894911,IT
3113894912,3113895935,DK
3113895936,3113896959,RU
3113896960,3113899007,IE
@@ -101215,10 +102006,8 @@
3113975808,3113976831,CZ
3113976832,3113977855,DK
3113977856,3113978879,GB
-3113978880,3113979903,FR
3113979904,3113980927,GB
3113980928,3113981951,TR
-3113981952,3113982975,FR
3113982976,3113983999,IQ
3113984000,3113985023,SY
3113985024,3113986047,DE
@@ -101236,7 +102025,6 @@
3113996288,3113997311,HR
3113997312,3113998335,NO
3113998336,3113999359,HR
-3113999360,3114000383,FR
3114000384,3114001407,HR
3114001408,3114002431,RO
3114002432,3114002687,US
@@ -101279,7 +102067,6 @@
3114038272,3114039295,GB
3114039296,3114040319,CZ
3114040320,3114041343,DE
-3114041856,3114042367,PL
3114042368,3114043391,IT
3114043392,3114045439,GB
3114045440,3114046463,AT
@@ -101400,7 +102187,6 @@
3114153984,3114155007,GB
3114155008,3114156031,DK
3114156032,3114157055,CZ
-3114157056,3114158079,RU
3114158080,3114159103,FI
3114159104,3114160127,GB
3114160128,3114161151,HR
@@ -101478,11 +102264,9 @@
3114211328,3114212351,GB
3114212352,3114213375,CZ
3114213376,3114214399,DE
-3114214400,3114215423,RU
3114215424,3114216447,ES
3114216448,3114217471,RU
-3114217472,3114217727,NL
-3114217728,3114218495,ZA
+3114217472,3114218495,ZA
3114218496,3114219519,IT
3114219520,3114220543,AT
3114220544,3114221567,IT
@@ -101514,7 +102298,6 @@
3114245632,3114245887,IS
3114245888,3114246143,SE
3114246144,3114247167,TR
-3114247168,3114248191,CH
3114248192,3114249215,CZ
3114249216,3114250239,RU
3114250240,3114251263,IR
@@ -101548,7 +102331,7 @@
3114269696,3114270719,ES
3114270720,3114271743,DE
3114271744,3114272767,NL
-3114272768,3114273791,LU
+3114272768,3114273791,FR
3114273792,3114274815,PL
3114274816,3114275839,DE
3114275840,3114276863,CZ
@@ -101562,7 +102345,6 @@
3114284032,3114285055,FR
3114285056,3114286079,NL
3114286080,3114288127,UA
-3114288128,3114289151,IS
3114289152,3114290175,NL
3114290176,3114291199,BG
3114291200,3114291455,ES
@@ -101632,7 +102414,8 @@
3114349568,3114350591,RU
3114350592,3114351615,NO
3114351616,3114353663,RU
-3114353664,3114354687,UA
+3114353664,3114353919,IR
+3114353920,3114354687,UA
3114354688,3114355711,HU
3114355712,3114356735,NO
3114356736,3114357759,DE
@@ -101680,7 +102463,6 @@
3114393600,3114394623,AZ
3114394624,3114395647,DE
3114395648,3114396671,BG
-3114396672,3114397695,RU
3114397696,3114398719,CZ
3114398720,3114399743,AT
3114399744,3114400767,GB
@@ -101734,7 +102516,6 @@
3114435072,3114435327,NL
3114435328,3114435583,US
3114435584,3114436607,MD
-3114436608,3114437631,AZ
3114437632,3114438655,MD
3114438656,3114439679,TR
3114439680,3114440703,IL
@@ -101790,7 +102571,6 @@
3114492928,3114493951,NL
3114493952,3114495999,RO
3114496000,3114497023,DE
-3114497024,3114498047,LU
3114498048,3114499071,AT
3114499072,3114500095,FR
3114500096,3114501119,TR
@@ -101851,7 +102631,8 @@
3114547200,3114547455,NL
3114547456,3114547711,FR
3114547712,3114548223,NL
-3114548224,3114550271,GB
+3114548224,3114549247,GB
+3114549760,3114550271,GB
3114550272,3114551295,CZ
3114551296,3114552319,IR
3114552320,3114553343,LB
@@ -101902,7 +102683,7 @@
3114598400,3114600447,ES
3114600448,3114603519,DE
3114603520,3114604543,TR
-3114604544,3114605567,PT
+3114604544,3114605567,BG
3114605568,3114606591,IR
3114606592,3114607615,FR
3114607616,3114608639,SK
@@ -102002,7 +102783,7 @@
3114695680,3114696703,RS
3114696704,3114697727,GB
3114697728,3114699775,HU
-3114699776,3114700799,DE
+3114699776,3114700799,NL
3114700800,3114701823,UA
3114701824,3114702847,SE
3114702848,3114703871,UA
@@ -102081,9 +102862,7 @@
3114781696,3114782719,NL
3114782720,3114783743,CZ
3114783744,3114784767,PL
-3114784768,3114785023,RU
-3114785024,3114785279,MD
-3114785280,3114785791,RU
+3114784768,3114785791,RU
3114785792,3114786815,FR
3114786816,3114787839,RU
3114787840,3114788863,GB
@@ -102146,7 +102925,7 @@
3114845184,3114846207,DK
3114846208,3114847231,NL
3114847232,3114848255,FI
-3114848256,3114849279,RU
+3114848256,3114849279,BR
3114849280,3114850303,FI
3114850304,3114850815,SE
3114850816,3114851327,NL
@@ -102160,7 +102939,9 @@
3114858496,3114858751,NL
3114858752,3114859519,FR
3114859520,3114860543,NL
-3114860544,3114861567,DE
+3114860544,3114860799,DE
+3114860800,3114861311,US
+3114861312,3114861567,DE
3114861568,3114862591,AE
3114862592,3114863615,AT
3114863616,3114864639,DK
@@ -102215,8 +102996,7 @@
3114915840,3114916863,RU
3114916864,3114917887,LB
3114917888,3114918911,IT
-3114918912,3114919167,HN
-3114919168,3114919679,CH
+3114918912,3114919679,CH
3114919680,3114919935,LU
3114919936,3114920703,GB
3114920704,3114920959,NL
@@ -102258,7 +103038,6 @@
3114954752,3114955775,DE
3114955776,3114956799,AE
3114956800,3114957823,DE
-3114957824,3114958847,RO
3114958848,3114959871,NL
3114959872,3114960895,CH
3114960896,3114961919,IT
@@ -102324,14 +103103,13 @@
3115019264,3115020287,LB
3115020288,3115021311,FR
3115021312,3115022335,AE
-3115022336,3115023359,GB
-3115023360,3115024383,CZ
+3115023360,3115024127,FR
+3115024128,3115024383,CZ
3115024384,3115025407,NL
3115025408,3115026431,SY
3115026432,3115027455,DE
3115027456,3115028479,SK
3115028480,3115029503,AL
-3115029504,3115030527,RU
3115030528,3115031551,SA
3115031552,3115032575,FR
3115032576,3115033599,RU
@@ -102404,7 +103182,6 @@
3115099392,3115099647,US
3115099648,3115100159,NL
3115100160,3115101183,ES
-3115101184,3115102207,GB
3115102208,3115103231,ES
3115103232,3115104255,IT
3115104256,3115105279,ES
@@ -102482,7 +103259,9 @@
3115179008,3115180031,SE
3115180032,3115180543,US
3115180544,3115180799,CY
-3115180800,3115182079,DE
+3115180800,3115180800,DE
+3115180801,3115180801,MT
+3115180802,3115182079,DE
3115182080,3115183103,NL
3115183104,3115184127,IT
3115184128,3115185151,DE
@@ -102625,7 +103404,8 @@
3115308032,3115309055,IT
3115309056,3115310079,BE
3115310080,3115311103,CZ
-3115311104,3115312127,RU
+3115311104,3115311615,BR
+3115311616,3115312127,RU
3115312128,3115313151,SY
3115313152,3115314175,DE
3115314176,3115315199,UA
@@ -102644,7 +103424,7 @@
3115328512,3115329535,NO
3115329536,3115330559,BG
3115330560,3115331583,JO
-3115331584,3115332607,NL
+3115331584,3115332607,FR
3115332608,3115333631,IS
3115333632,3115334655,IR
3115334656,3115335679,LV
@@ -102655,7 +103435,6 @@
3115340800,3115341823,ES
3115341824,3115342079,US
3115342080,3115342847,GB
-3115342848,3115343871,RU
3115343872,3115344895,SE
3115344896,3115345919,IE
3115345920,3115346943,ES
@@ -102713,7 +103492,6 @@
3115402240,3115402495,IE
3115402496,3115403263,US
3115403264,3115404287,ES
-3115404288,3115405311,GB
3115405312,3115405567,US
3115405568,3115405823,DE
3115405824,3115406335,GB
@@ -102724,7 +103502,8 @@
3115410432,3115411455,NL
3115411456,3115412479,AM
3115412480,3115414527,RU
-3115414528,3115415551,DE
+3115414528,3115415295,DE
+3115415296,3115415551,US
3115415552,3115416575,DK
3115416576,3115417599,MD
3115417856,3115418367,DE
@@ -102924,7 +103703,8 @@
3115606016,3115607039,NL
3115607040,3115608063,MD
3115608064,3115609087,NL
-3115609088,3115610111,RU
+3115609088,3115609599,RU
+3115609600,3115610111,EE
3115610112,3115611135,PL
3115611136,3115612159,GB
3115612160,3115613183,IT
@@ -102999,7 +103779,8 @@
3115683840,3115684863,GB
3115684864,3115685887,BG
3115685888,3115687935,FR
-3115687936,3115689215,UA
+3115687936,3115688959,UA
+3115688960,3115689215,RU
3115689216,3115689471,NL
3115689472,3115689983,UA
3115689984,3115691007,DE
@@ -103037,8 +103818,7 @@
3115725568,3115725823,US
3115725824,3115726847,GB
3115726848,3115727871,NL
-3115727872,3115728127,US
-3115728128,3115728703,GB
+3115727872,3115728703,GB
3115728704,3115728735,NL
3115728736,3115728895,GB
3115728896,3115729919,FR
@@ -103113,7 +103893,7 @@
3115799808,3115800063,DE
3115800064,3115800319,GB
3115800320,3115801599,DE
-3115801600,3115802623,LB
+3115801600,3115801855,LB
3115802624,3115802879,NL
3115802880,3115803135,RO
3115803136,3115803391,NL
@@ -103255,13 +104035,14 @@
3115936768,3115937791,GB
3115937792,3115938815,TR
3115938816,3115939839,FR
-3115939840,3115940351,RU
-3115940352,3115940863,TR
+3115939840,3115940863,RU
3115940864,3115941119,CU
3115941120,3115941887,DE
3115941888,3115942911,CZ
3115942912,3115943935,IL
-3115943936,3115948031,RU
+3115943936,3115945983,RU
+3115945984,3115947007,BR
+3115947008,3115948031,RU
3115948032,3115949055,GB
3115949056,3115950079,GR
3115950080,3115951103,IE
@@ -103308,7 +104089,7 @@
3115988992,3115990015,SE
3115990016,3115991039,RO
3115991040,3115991551,NL
-3115991552,3115991807,BE
+3115991552,3115991807,IL
3115991808,3115992063,NL
3115992064,3115993087,IT
3115993088,3115994111,FR
@@ -103316,7 +104097,9 @@
3115994368,3115994623,GB
3115994624,3115994879,SE
3115994880,3115995135,DK
-3115995136,3115996159,RS
+3115995136,3115995647,RS
+3115995648,3115995903,AL
+3115995904,3115996159,RS
3115996160,3115997183,GR
3115997184,3115998207,FR
3115998208,3115999231,IT
@@ -103351,7 +104134,7 @@
3116029952,3116030975,PL
3116030976,3116033023,DE
3116033024,3116034047,FR
-3116034048,3116035071,RU
+3116034048,3116035071,UA
3116035072,3116036095,DE
3116036096,3116037119,IR
3116037120,3116038143,NL
@@ -103421,7 +104204,7 @@
3116099584,3116100607,US
3116100608,3116101631,CZ
3116101632,3116101887,GB
-3116101888,3116102143,DE
+3116101888,3116102143,NL
3116102144,3116102655,GB
3116102656,3116102911,FR
3116102912,3116103167,DE
@@ -103449,7 +104232,6 @@
3116123136,3116124159,PL
3116124160,3116125183,DE
3116125184,3116126207,NL
-3116126208,3116127231,CH
3116127232,3116128255,TR
3116128256,3116130303,FR
3116130304,3116131327,RU
@@ -103507,7 +104289,6 @@
3116186624,3116187647,IT
3116187648,3116188671,ES
3116188672,3116189695,MD
-3116189696,3116190719,NL
3116190720,3116191743,IT
3116191744,3116192767,AT
3116192768,3116193791,SE
@@ -103698,7 +104479,8 @@
3116380160,3116381183,DE
3116381184,3116382207,LB
3116382208,3116382463,JP
-3116382464,3116382975,AQ
+3116382464,3116382719,GU
+3116382720,3116382975,AQ
3116382976,3116383231,DE
3116383232,3116384255,RU
3116384256,3116385279,DE
@@ -103755,7 +104537,7 @@
3116434432,3116435455,TR
3116435456,3116436479,ES
3116436480,3116437503,AM
-3116437504,3116439551,RU
+3116438528,3116439551,RU
3116439552,3116440575,LT
3116440576,3116441599,MD
3116441600,3116442879,GB
@@ -103961,7 +104743,6 @@
3116626944,3116627967,NL
3116627968,3116628991,FR
3116628992,3116630015,TR
-3116630016,3116631039,UA
3116631040,3116632063,FI
3116632064,3116633087,CH
3116633088,3116634111,RO
@@ -104088,7 +104869,7 @@
3116767232,3116767999,US
3116768000,3116769279,GB
3116769280,3116770303,LT
-3116770304,3116772351,RU
+3116771328,3116772351,RU
3116772352,3116773375,MD
3116773376,3116774399,ES
3116774400,3116775423,TR
@@ -104151,7 +104932,9 @@
3116831744,3116832767,MD
3116832768,3116833791,IT
3116833792,3116834815,HU
-3116834816,3116835839,FR
+3116834816,3116835327,FR
+3116835328,3116835328,BE
+3116835329,3116835839,FR
3116835840,3116836863,BG
3116836864,3116837887,FR
3116837888,3116838911,ES
@@ -104272,7 +105055,8 @@
3116956672,3116957695,NO
3116957696,3116958719,GB
3116958720,3116959743,ES
-3116959744,3116960767,NL
+3116959744,3116960255,SG
+3116960256,3116960767,US
3116960768,3116961791,CZ
3116961792,3116962047,FR
3116962048,3116962303,NL
@@ -104307,7 +105091,6 @@
3116986368,3116987391,PL
3116987392,3116988415,AT
3116988416,3116990463,NO
-3116990464,3116991487,GB
3116991488,3116992511,TR
3116992512,3116993535,UA
3116993536,3116994559,IT
@@ -104386,7 +105169,6 @@
3117066240,3117067263,TR
3117067264,3117068287,US
3117068288,3117069311,SE
-3117069312,3117070335,FR
3117070336,3117071359,NG
3117071360,3117073407,ES
3117073408,3117074431,DE
@@ -104405,7 +105187,6 @@
3117086720,3117087743,LU
3117087744,3117088767,NL
3117088768,3117089791,DK
-3117089792,3117090815,GB
3117090816,3117091839,IT
3117091840,3117092863,GB
3117092864,3117093887,HR
@@ -104574,7 +105355,7 @@
3117257728,3117258751,ES
3117258752,3117259775,PL
3117259776,3117260799,DE
-3117260800,3117261823,IE
+3117260800,3117261823,GB
3117261824,3117262847,IT
3117262848,3117263871,AL
3117263872,3117264895,GB
@@ -104590,14 +105371,15 @@
3117269760,3117270015,US
3117270016,3117271039,TR
3117271040,3117272063,RU
-3117272064,3117273087,GB
+3117272064,3117272831,GB
+3117272832,3117273087,RU
3117273088,3117274111,BG
3117274112,3117276159,DE
3117276160,3117277183,IR
3117277184,3117278207,SE
3117278208,3117279231,IE
3117279232,3117280255,BE
-3117280256,3117281279,RU
+3117280256,3117281279,UA
3117281280,3117282303,NL
3117282304,3117283327,US
3117283328,3117284351,HU
@@ -104644,7 +105426,7 @@
3117325312,3117326335,DK
3117326336,3117327359,DE
3117327360,3117328383,RU
-3117328384,3117329407,NL
+3117328384,3117329407,FR
3117329408,3117330431,IQ
3117330432,3117331455,FI
3117331456,3117332479,DE
@@ -104800,8 +105582,10 @@
3117485056,3117486079,RU
3117486080,3117487103,FR
3117487104,3117488127,NL
-3117488128,3117489151,CZ
-3117489152,3117490175,RU
+3117488128,3117489151,PL
+3117489152,3117489663,RU
+3117489664,3117489919,FR
+3117489920,3117490175,RU
3117490176,3117491199,SY
3117491200,3117492223,ES
3117492224,3117493247,GB
@@ -104897,7 +105681,8 @@
3117585408,3117586431,AT
3117586432,3117587455,ES
3117587456,3117589503,RU
-3117589504,3117590527,CZ
+3117589504,3117590271,CZ
+3117590272,3117590527,US
3117590528,3117591551,GB
3117591552,3117592575,IT
3117592576,3117593599,DK
@@ -105219,7 +106004,7 @@
3117908992,3117910015,ES
3117910016,3117911039,FR
3117911040,3117913087,IT
-3117913088,3117914111,NL
+3117913088,3117914111,US
3117914112,3117915135,IR
3117915136,3117916159,DE
3117916160,3117917183,KZ
@@ -105234,8 +106019,8 @@
3117925376,3117926399,SE
3117926400,3117927423,AT
3117927424,3117928447,DE
-3117928448,3117929471,GB
-3117929472,3117930239,DE
+3117928448,3117929727,GB
+3117929728,3117930239,DE
3117930240,3117930495,TW
3117930496,3117931519,AT
3117931520,3117933567,US
@@ -105276,7 +106061,6 @@
3117962240,3117963263,DE
3117963264,3117964287,IT
3117964288,3117965311,FR
-3117965312,3117966335,GB
3117966336,3117967359,RU
3117967360,3117969407,GB
3117969408,3117970431,TR
@@ -105347,7 +106131,7 @@
3118033920,3118034943,EG
3118034944,3118035967,ES
3118035968,3118036735,GB
-3118036736,3118036991,US
+3118036736,3118036991,FR
3118036992,3118037759,CN
3118037760,3118038015,GB
3118038016,3118039039,US
@@ -105359,8 +106143,7 @@
3118045184,3118046207,FR
3118046208,3118047231,GB
3118047232,3118048255,IR
-3118048256,3118049279,CA
-3118049280,3118050047,US
+3118048256,3118050047,US
3118050048,3118050303,NL
3118050304,3118051327,SY
3118051328,3118052351,DE
@@ -105439,7 +106222,7 @@
3118135296,3118136319,FR
3118136320,3118137343,ES
3118137344,3118138367,IT
-3118138368,3118139391,RU
+3118138368,3118139391,GB
3118139392,3118140415,ES
3118140416,3118141439,FR
3118141440,3118142463,CZ
@@ -105475,7 +106258,6 @@
3118175232,3118176255,IS
3118176256,3118177279,DE
3118177280,3118178303,RU
-3118178304,3118179327,NO
3118179328,3118181375,CZ
3118181376,3118182399,FR
3118182400,3118183423,TR
@@ -105501,7 +106283,7 @@
3118203904,3118204927,FR
3118204928,3118205951,ES
3118205952,3118206975,GB
-3118206976,3118207999,GR
+3118206976,3118207999,BG
3118208000,3118209023,US
3118209024,3118210047,HR
3118210048,3118211071,CZ
@@ -105539,7 +106321,6 @@
3118244864,3118245887,ES
3118245888,3118246911,SY
3118246912,3118247935,NL
-3118247936,3118248959,GB
3118248960,3118249983,AZ
3118249984,3118251007,RO
3118251008,3118252031,HU
@@ -105551,7 +106332,8 @@
3118256128,3118257151,NO
3118257152,3118258175,NL
3118258176,3118259199,EG
-3118259200,3118260223,CZ
+3118259200,3118259711,CZ
+3118259712,3118260223,UA
3118260224,3118261247,TR
3118261248,3118262271,DE
3118262272,3118263295,AT
@@ -105686,7 +106468,7 @@
3118362624,3118363647,GB
3118363648,3118364671,CH
3118364672,3118365695,IR
-3118365696,3118366719,ES
+3118365696,3118366719,DE
3118366720,3118367743,MD
3118367744,3118368767,US
3118368768,3118369791,DE
@@ -105856,7 +106638,7 @@
3118534144,3118534655,US
3118534656,3118535679,RO
3118535680,3118536703,ES
-3118536704,3118537727,RU
+3118536704,3118537727,KZ
3118537728,3118538751,MK
3118538752,3118539775,RU
3118539776,3118540799,TR
@@ -105894,7 +106676,7 @@
3118559232,3118560255,NL
3118560256,3118561279,PS
3118561280,3118562303,FI
-3118562304,3118563071,RU
+3118562304,3118563071,KZ
3118563072,3118563327,EE
3118563328,3118564351,MD
3118564352,3118567423,DE
@@ -105911,17 +106693,18 @@
3118577664,3118578687,FR
3118578688,3118579711,RU
3118579712,3118580735,AE
-3118580736,3118582783,RU
-3118583040,3118583295,RO
+3118580736,3118581247,KZ
+3118581248,3118581503,RU
+3118581504,3118581759,KZ
+3118581760,3118582783,RU
3118583296,3118583551,BE
-3118583552,3118583807,RO
3118583808,3118584831,DE
3118584832,3118585855,UA
3118585856,3118586879,IT
3118586880,3118587903,NL
3118587904,3118588927,SE
3118588928,3118589951,PL
-3118589952,3118590975,DE
+3118589952,3118590975,US
3118590976,3118591999,BG
3118592000,3118593023,IR
3118593024,3118594047,ES
@@ -105950,7 +106733,7 @@
3118615040,3118615295,GB
3118615296,3118615551,TR
3118615552,3118616575,NL
-3118616576,3118617599,RO
+3118616576,3118617599,AU
3118617600,3118618623,UA
3118618624,3118619647,AL
3118619648,3118619903,TR
@@ -106023,7 +106806,6 @@
3118685184,3118686207,ES
3118686208,3118687231,BY
3118687232,3118688255,ES
-3118688256,3118689279,HK
3118689280,3118689535,NL
3118689536,3118689791,GB
3118689792,3118690303,NL
@@ -106063,11 +106845,10 @@
3118726144,3118726399,HK
3118726400,3118726911,GB
3118726912,3118727167,DE
-3118727168,3118729215,ES
-3118729216,3118730239,DE
+3118727168,3118728191,ES
+3118728192,3118730239,DE
3118730240,3118731263,SY
-3118731264,3118732031,DE
-3118732032,3118732287,US
+3118731264,3118732287,DE
3118732288,3118733311,FR
3118733312,3118734335,BG
3118734336,3118735359,SE
@@ -106111,7 +106892,7 @@
3118776320,3118777343,UA
3118777344,3118781439,NL
3118781440,3118782463,SK
-3118782464,3118783487,RO
+3118782464,3118783487,CA
3118783488,3118784511,IT
3118784512,3118785535,MD
3118785536,3118786559,FR
@@ -106122,7 +106903,6 @@
3118790656,3118791679,IT
3118791680,3118792703,GB
3118792704,3118793727,IR
-3118793728,3118794751,TR
3118794752,3118795775,RU
3118795776,3118796799,TR
3118796800,3118797823,IT
@@ -106203,7 +106983,7 @@
3118872576,3118873599,MK
3118873600,3118874111,US
3118874112,3118874367,IE
-3118874368,3118874623,US
+3118874368,3118874623,IL
3118874624,3118875647,ES
3118875648,3118876671,DE
3118876672,3118877695,NO
@@ -106268,7 +107048,8 @@
3118935040,3118936063,SY
3118936064,3118937087,RU
3118937088,3118938111,CH
-3118938112,3118939135,RU
+3118938112,3118938623,GB
+3118938624,3118939135,RU
3118939136,3118940159,DE
3118940160,3118941183,CY
3118941184,3118942207,NL
@@ -106308,7 +107089,6 @@
3118978048,3118979071,DE
3118979072,3118980095,GB
3118980096,3118981119,NL
-3118981120,3118982143,TR
3118982144,3118983167,LV
3118983168,3118984191,RU
3118984192,3118985215,CZ
@@ -106329,8 +107109,8 @@
3118998272,3118998527,AU
3118998528,3118999551,ES
3118999552,3119000319,RU
-3119000320,3119000575,GB
-3119000576,3119001599,RU
+3119000320,3119001087,GB
+3119001088,3119001599,RU
3119001600,3119002623,ES
3119002624,3119004671,NL
3119004672,3119005695,RU
@@ -106341,12 +107121,12 @@
3119009792,3119010815,HU
3119010816,3119011583,RU
3119011584,3119011839,EE
-3119011840,3119012863,RU
+3119011840,3119012351,GB
+3119012352,3119012863,RU
3119012864,3119013887,DE
3119013888,3119014911,RU
3119014912,3119015935,DE
-3119015936,3119016959,RU
-3119016960,3119017983,UA
+3119015936,3119017983,UA
3119017984,3119019007,NL
3119019008,3119020031,RU
3119020032,3119021055,MK
@@ -106375,7 +107155,8 @@
3119043584,3119044607,NL
3119044608,3119046655,DE
3119046656,3119047679,GB
-3119047680,3119049727,RU
+3119047680,3119048703,RU
+3119048704,3119049727,GB
3119049728,3119050751,IT
3119050752,3119051775,GR
3119051776,3119054847,NL
@@ -106442,7 +107223,7 @@
3119118336,3119119359,IT
3119119360,3119120383,DK
3119120384,3119121407,GB
-3119121408,3119122431,RO
+3119121408,3119122431,FR
3119122432,3119123199,RU
3119123200,3119123455,MD
3119123456,3119124479,RU
@@ -106469,7 +107250,8 @@
3119144960,3119145983,NL
3119145984,3119147007,ES
3119147008,3119148031,FR
-3119148032,3119149055,RU
+3119148032,3119148543,GB
+3119148544,3119149055,RU
3119149056,3119149823,NL
3119149824,3119152127,RU
3119152128,3119153151,PT
@@ -106506,27 +107288,33 @@
3119181824,3119182847,PL
3119182848,3119183871,RU
3119183872,3119184895,SK
-3119184896,3119185919,RU
+3119184896,3119185407,GB
+3119185408,3119185919,RU
3119185920,3119186943,GB
3119186944,3119187967,FR
-3119187968,3119188991,RU
+3119187968,3119188479,GB
+3119188480,3119188991,RU
3119188992,3119190015,NL
3119190016,3119191039,SY
3119191040,3119192063,IT
3119192064,3119193087,SY
-3119193088,3119195135,RU
+3119193088,3119194111,RU
+3119194112,3119194623,GB
+3119194624,3119195135,RU
3119195136,3119196159,DE
3119196160,3119197183,IR
3119197184,3119198207,TR
3119198208,3119199231,CZ
-3119199232,3119200255,SA
3119200256,3119201279,DE
3119201280,3119203327,RU
3119203328,3119203839,RO
3119203840,3119204351,PL
-3119204352,3119206399,RU
+3119204352,3119205375,RU
+3119205376,3119205887,GB
+3119205888,3119206399,RU
3119207424,3119208447,FR
-3119208448,3119210495,RU
+3119208448,3119209471,GB
+3119209472,3119210495,RU
3119210496,3119211519,GB
3119211520,3119212543,ES
3119212544,3119213567,FR
@@ -106538,7 +107326,7 @@
3119218688,3119219711,NL
3119219712,3119220735,UA
3119220736,3119221759,IR
-3119221760,3119222271,RU
+3119221760,3119222271,GB
3119222272,3119222783,NL
3119222784,3119223807,RU
3119223808,3119225855,AT
@@ -106554,13 +107342,15 @@
3119235072,3119236095,ES
3119236096,3119237119,FR
3119237120,3119238143,SK
-3119238144,3119239167,RU
+3119238144,3119238655,GB
+3119238656,3119239167,RU
3119239168,3119240191,DK
3119240192,3119241215,HR
3119241216,3119242239,UA
3119242240,3119243263,ES
3119243264,3119244287,DE
-3119244288,3119245311,RU
+3119244288,3119244799,GB
+3119244800,3119245311,RU
3119245312,3119247359,DE
3119247360,3119248383,UA
3119248384,3119249407,RU
@@ -106568,7 +107358,8 @@
3119250432,3119251455,CY
3119251456,3119252479,FR
3119252480,3119253503,NL
-3119253504,3119254527,DE
+3119253504,3119254271,DE
+3119254272,3119254527,GB
3119254528,3119255551,ES
3119255552,3119256575,NL
3119256576,3119257599,RU
@@ -106577,8 +107368,7 @@
3119259648,3119260671,EE
3119260672,3119261695,IR
3119261696,3119262719,SE
-3119262720,3119263231,US
-3119263232,3119263743,NL
+3119262720,3119263743,US
3119263744,3119264767,DE
3119264768,3119265791,NL
3119265792,3119266815,FR
@@ -106591,18 +107381,19 @@
3119272448,3119272959,DE
3119272960,3119273983,RO
3119273984,3119275007,IR
-3119275008,3119277055,PL
+3119276032,3119277055,PL
3119277056,3119278079,SY
3119278080,3119279103,IT
3119279104,3119280127,PL
3119280128,3119281151,DE
3119281152,3119282175,RO
3119282176,3119283199,PL
-3119283200,3119284223,GB
-3119284224,3119285247,RU
+3119283200,3119284735,GB
+3119284736,3119285247,RU
3119285248,3119286271,BH
3119286272,3119287295,IE
-3119287296,3119288319,RU
+3119287296,3119287807,GB
+3119287808,3119288319,RU
3119288320,3119289343,AT
3119289344,3119290367,DE
3119290368,3119291391,BG
@@ -106610,7 +107401,6 @@
3119292416,3119293439,CZ
3119293440,3119294463,AT
3119294464,3119295487,ES
-3119295488,3119296511,DE
3119296512,3119297535,NL
3119297536,3119298559,BG
3119298560,3119299583,UA
@@ -106676,7 +107466,8 @@
3119361024,3119362047,ES
3119362048,3119363071,DE
3119363072,3119364095,ES
-3119364096,3119365119,RU
+3119364096,3119364607,GB
+3119364608,3119365119,RU
3119365120,3119366143,TR
3119366144,3119367167,RU
3119367168,3119368191,MD
@@ -106705,7 +107496,7 @@
3119393792,3119394815,IR
3119394816,3119395839,ES
3119395840,3119396863,NL
-3119396864,3119399935,PL
+3119397888,3119399935,PL
3119399936,3119400959,SA
3119400960,3119401983,PL
3119401984,3119403007,RU
@@ -106801,9 +107592,10 @@
3119498240,3119499263,FR
3119499264,3119500287,ES
3119500288,3119501311,GB
-3119501312,3119503359,DE
+3119501312,3119502335,US
+3119502336,3119503359,DE
3119503360,3119504383,CZ
-3119504384,3119506431,NL
+3119505408,3119506431,NL
3119506432,3119507455,ES
3119507456,3119508479,PL
3119508480,3119509503,DE
@@ -106873,9 +107665,10 @@
3119575040,3119577087,DE
3119577088,3119578111,PT
3119578112,3119579135,RO
-3119579136,3119580159,RU
+3119579136,3119580159,GB
3119580160,3119581183,IL
-3119581184,3119582207,RU
+3119581184,3119581695,GB
+3119581696,3119582207,RU
3119582208,3119583231,DK
3119583232,3119584255,IT
3119584256,3119585279,UA
@@ -106888,7 +107681,8 @@
3119591424,3119592447,GB
3119592448,3119593471,NL
3119593472,3119596543,IT
-3119596544,3119597055,RU
+3119596544,3119596799,GB
+3119596800,3119597055,RU
3119597056,3119597567,ES
3119597568,3119598591,RU
3119598592,3119600639,NL
@@ -106898,7 +107692,8 @@
3119603712,3119604735,FR
3119604736,3119605759,TR
3119605760,3119606783,PL
-3119606784,3119607807,RU
+3119606784,3119607295,GB
+3119607296,3119607807,RU
3119607808,3119608831,FR
3119608832,3119609855,IT
3119609856,3119610879,ES
@@ -106928,7 +107723,7 @@
3119636480,3119637503,GB
3119637504,3119638527,BG
3119638528,3119639551,PL
-3119639552,3119640575,ES
+3119639552,3119640575,DE
3119640576,3119641599,CZ
3119641600,3119642623,RU
3119642624,3119643647,GB
@@ -106979,10 +107774,11 @@
3119686656,3119687679,NL
3119687680,3119688703,BG
3119688704,3119689727,ES
-3119689728,3119690495,RU
+3119689728,3119690239,GB
+3119690240,3119690495,RU
3119690496,3119690751,CH
3119690752,3119691775,IT
-3119691776,3119692799,UZ
+3119691776,3119692799,RU
3119692800,3119693823,SK
3119693824,3119695871,DE
3119695872,3119696895,CH
@@ -107003,7 +107799,8 @@
3119707136,3119708159,NL
3119708160,3119709183,ES
3119709184,3119710207,PL
-3119710208,3119712255,RU
+3119710208,3119711231,GB
+3119711232,3119712255,RU
3119712256,3119714303,DE
3119714304,3119715327,FR
3119715328,3119716351,DE
@@ -107032,7 +107829,8 @@
3119739904,3119740927,CH
3119740928,3119741951,FR
3119741952,3119742975,CZ
-3119742976,3119743999,RU
+3119742976,3119743487,GB
+3119743488,3119743999,RU
3119744000,3119745023,DE
3119745024,3119746047,ES
3119746048,3119747071,MD
@@ -107061,7 +107859,8 @@
3119761408,3119762431,DE
3119762432,3119763455,CH
3119763456,3119764479,LB
-3119764480,3119765503,DE
+3119764480,3119764735,US
+3119764736,3119765503,DE
3119765504,3119766527,NO
3119766528,3119767551,RU
3119767552,3119768575,DK
@@ -107099,7 +107898,7 @@
3119803392,3119804415,RO
3119804416,3119805439,CH
3119805440,3119806463,TR
-3119806464,3119807487,DE
+3119806464,3119807487,US
3119807488,3119808511,NL
3119808512,3119809535,RO
3119809536,3119810559,RU
@@ -107130,7 +107929,7 @@
3119830784,3119831039,US
3119831040,3119832063,NL
3119832064,3119833087,MD
-3119833088,3119834111,GB
+3119833088,3119834111,US
3119834112,3119836159,ES
3119836160,3119837183,GB
3119837184,3119838207,MK
@@ -107142,7 +107941,7 @@
3119843328,3119844351,DK
3119844352,3119845375,HR
3119845376,3119846399,DK
-3119846400,3119847423,GB
+3119846400,3119847423,US
3119847424,3119848447,FR
3119848448,3119849471,DE
3119849472,3119850495,ES
@@ -107179,7 +107978,7 @@
3119884288,3119885311,DE
3119885312,3119886335,IS
3119886336,3119887359,ES
-3119887360,3119888383,DE
+3119887360,3119888383,US
3119888384,3119889407,RU
3119889408,3119890431,ES
3119890432,3119891455,PL
@@ -107199,9 +107998,7 @@
3119904000,3119904255,EE
3119904256,3119904767,RO
3119904768,3119905791,FR
-3119905792,3119906303,DE
-3119906304,3119906815,ES
-3119906816,3119907839,DE
+3119905792,3119907839,DE
3119907840,3119908863,IR
3119908864,3119909887,IT
3119909888,3119910911,ES
@@ -107268,7 +108065,7 @@
3119970304,3119972351,ES
3119972352,3119973375,AM
3119973376,3119974399,ES
-3119974400,3119975423,DE
+3119974400,3119975423,US
3119975424,3119976447,SE
3119976448,3119977471,GB
3119977472,3119978495,UA
@@ -107388,8 +108185,7 @@
3120098304,3120099327,NL
3120099328,3120101375,IT
3120101376,3120103423,GB
-3120103424,3120104447,RO
-3120104448,3120105471,US
+3120103424,3120105471,US
3120105472,3120106495,NO
3120106496,3120108543,IT
3120108544,3120109567,FR
@@ -107437,11 +108233,13 @@
3120153600,3120154623,US
3120154624,3120155647,GB
3120155648,3120157695,ES
-3120157696,3120159743,GB
-3120159744,3120161791,DE
+3120157696,3120159487,GB
+3120159488,3120159743,US
+3120159744,3120160767,DE
+3120160768,3120161791,US
3120161792,3120162815,PL
3120162816,3120163839,ES
-3120163840,3120164863,RO
+3120163840,3120164863,US
3120164864,3120165887,CH
3120165888,3120167935,NL
3120167936,3120169983,RU
@@ -107510,8 +108308,8 @@
3120236544,3120237567,GB
3120237568,3120237823,MD
3120237824,3120238079,RU
-3120238080,3120238591,GB
-3120238592,3120239871,RU
+3120238080,3120239615,GB
+3120239616,3120239871,RU
3120239872,3120240127,CH
3120240128,3120240639,US
3120240640,3120241663,GB
@@ -107611,7 +108409,7 @@
3120338944,3120339967,CZ
3120339968,3120340991,FR
3120340992,3120343039,DE
-3120343040,3120344063,RO
+3120343040,3120344063,US
3120344064,3120345087,ES
3120345088,3120346111,DE
3120346112,3120347135,PL
@@ -107619,18 +108417,19 @@
3120347392,3120347647,DE
3120347648,3120348159,FR
3120348160,3120349183,MK
-3120349184,3120350207,RU
+3120349184,3120350207,GB
3120350208,3120351231,CZ
-3120351232,3120352255,RU
+3120351232,3120352255,GB
3120352256,3120353279,LT
-3120353280,3120354815,RU
+3120353280,3120354303,GB
+3120354304,3120354815,RU
3120354816,3120355327,US
3120355328,3120355839,RU
3120355840,3120356351,CN
3120356352,3120357375,GB
3120357376,3120358399,ES
3120358400,3120359423,RU
-3120359424,3120360447,DE
+3120359424,3120360447,US
3120360448,3120361471,FR
3120361472,3120362495,CH
3120362496,3120363519,NL
@@ -107639,7 +108438,7 @@
3120365568,3120366591,GB
3120366592,3120367103,RU
3120367104,3120367615,US
-3120367616,3120368639,RU
+3120367616,3120368639,GB
3120368640,3120369663,DE
3120369664,3120370687,AT
3120370688,3120374783,RU
@@ -107711,10 +108510,10 @@
3120441344,3120442367,NL
3120442368,3120443391,LT
3120443392,3120444415,NL
-3120444416,3120445439,CH
+3120444416,3120445439,TR
3120445440,3120446463,GB
3120446464,3120447487,DE
-3120447488,3120448511,RO
+3120447488,3120448511,US
3120448512,3120449535,NL
3120449536,3120450559,FR
3120450560,3120451583,CH
@@ -107736,7 +108535,7 @@
3120466944,3120467967,AT
3120467968,3120468991,FR
3120468992,3120470015,GB
-3120470016,3120471039,DE
+3120470016,3120471039,US
3120471040,3120473087,ES
3120473088,3120474111,FR
3120474112,3120475135,IT
@@ -107754,7 +108553,8 @@
3120489472,3120490495,IT
3120490496,3120491519,AT
3120491520,3120492543,IT
-3120492544,3120493567,GB
+3120492544,3120492799,GB
+3120492800,3120493567,JP
3120493568,3120494591,DE
3120494592,3120495615,SK
3120495616,3120496639,HR
@@ -107783,7 +108583,7 @@
3120518144,3120519167,FR
3120519168,3120520191,IR
3120520192,3120521215,TR
-3120521216,3120522239,UA
+3120521216,3120522239,LT
3120522240,3120523263,DE
3120523264,3120524287,ES
3120524288,3120525311,GB
@@ -107845,8 +108645,9 @@
3120734720,3120735231,BZ
3120735232,3120735487,RU
3120735488,3120735743,NL
-3120735744,3120735999,BZ
-3120736000,3120736255,RU
+3120735744,3120736149,BZ
+3120736150,3120736150,RU
+3120736151,3120736255,BZ
3120736256,3120736511,EC
3120736512,3120736767,BZ
3120736768,3120737535,RU
@@ -107985,15 +108786,11 @@
3132227584,3132293119,EC
3132293120,3132298007,HN
3132298008,3132298015,US
-3132298016,3132300383,HN
-3132300384,3132300391,US
-3132300392,3132301727,HN
+3132298016,3132301727,HN
3132301728,3132301743,NL
3132301744,3132305143,HN
3132305144,3132305151,NL
-3132305152,3132308367,HN
-3132308368,3132308375,US
-3132308376,3132308775,HN
+3132305152,3132308775,HN
3132308776,3132308783,US
3132308784,3132309503,HN
3132309504,3132313599,CR
@@ -108011,7 +108808,8 @@
3132948480,3132964863,AW
3132964864,3132981247,AR
3132981248,3132997631,AW
-3132997632,3133014015,AR
+3132997632,3133005823,GT
+3133005824,3133014015,AR
3133014016,3133046783,HT
3133046784,3133067263,AR
3133067264,3133073407,PA
@@ -108194,7 +108992,8 @@
3158329344,3158331391,BE
3158331392,3158333439,PL
3158333440,3158335487,IT
-3158335488,3158337535,IL
+3158335488,3158337023,ES
+3158337024,3158337535,IL
3158337536,3158339583,SI
3158339584,3158341631,RU
3158341632,3158343679,IT
@@ -108206,14 +109005,16 @@
3158355968,3158358015,LV
3158358016,3158360063,GB
3158360064,3158362111,DE
-3158362112,3158364159,IL
+3158362112,3158365183,IL
+3158365184,3158366207,AT
3158366208,3158368255,RU
-3158368256,3158370303,FR
3158370304,3158372351,BE
3158372352,3158374399,FR
3158374400,3158376447,DE
3158376448,3158378495,IT
3158378496,3158380543,RU
+3158380544,3158381567,CN
+3158381568,3158382591,ES
3158382592,3158384639,OM
3158384640,3158386687,GB
3158386688,3158388735,PL
@@ -108246,7 +109047,8 @@
3158439936,3158441983,GB
3158441984,3158444031,EE
3158444032,3158446079,BE
-3158446080,3158448127,NL
+3158446080,3158449151,NL
+3158449152,3158450175,RS
3158450176,3158452223,RU
3158452224,3158454271,DE
3158458368,3158474751,GB
@@ -108276,7 +109078,7 @@
3158858240,3158858495,SG
3158858496,3158859519,NL
3158859520,3158859775,GB
-3158859776,3158859903,RU
+3158859776,3158859903,NL
3158859904,3158860031,CZ
3158860032,3158860287,GB
3158860288,3158860543,NL
@@ -108338,6 +109140,8 @@
3160170496,3160172543,CZ
3160172544,3160174591,RU
3160174592,3160176639,DE
+3160176640,3160177663,NL
+3160177664,3160178687,ES
3160178688,3160180735,DE
3160180736,3160182783,GB
3160182784,3160184831,CH
@@ -108405,6 +109209,8 @@
3160315904,3160317951,KZ
3160317952,3160322047,RU
3160322048,3160324095,CH
+3160324096,3160325119,NL
+3160325120,3160326143,GB
3160326144,3160328191,IT
3160328192,3160330239,FR
3160330240,3160332287,RU
@@ -108422,12 +109228,15 @@
3160358912,3160360959,JO
3160360960,3160363007,IT
3160363008,3160365055,GB
+3160365056,3160366079,RU
+3160366080,3160367103,CZ
3160367104,3160369151,NL
3160369152,3160371199,RU
3160371200,3160373247,ES
3160373248,3160375295,CZ
3160375296,3160377343,GB
3160377344,3160379391,NL
+3160379392,3160381439,CZ
3160381440,3160383487,UA
3160383488,3160385535,SA
3160385536,3160387583,NL
@@ -108769,9 +109578,7 @@
3164961728,3164961735,ES
3164961736,3164962143,FR
3164962144,3164962151,ES
-3164962152,3164962443,FR
-3164962444,3164962447,NL
-3164962448,3164962455,FR
+3164962152,3164962455,FR
3164962456,3164962459,IE
3164962460,3164962471,FR
3164962472,3164962475,ES
@@ -108845,7 +109652,9 @@
3164974438,3164974438,IT
3164974439,3164974463,GB
3164974464,3164974495,DE
-3164974496,3164975199,FR
+3164974496,3164974935,FR
+3164974936,3164974939,PT
+3164974940,3164975199,FR
3164975200,3164975215,ES
3164975216,3164975311,FR
3164975312,3164975327,ES
@@ -108883,17 +109692,13 @@
3164979156,3164995345,FR
3164995346,3164995346,GB
3164995347,3164995583,FR
-3164995584,3165030399,NL
-3165030400,3165031423,GB
-3165031424,3165032447,NL
-3165032448,3165036543,GB
-3165036544,3165038591,DE
-3165038592,3165040639,GB
-3165040640,3165044735,SG
-3165044736,3165045759,DE
-3165045760,3165046783,SG
-3165046784,3165047807,NL
-3165047808,3165061119,SG
+3164995584,3165015495,NL
+3165015496,3165015496,RU
+3165015497,3165054692,NL
+3165054693,3165054693,SG
+3165054694,3165056589,NL
+3165056590,3165056590,SG
+3165056591,3165061119,NL
3165061120,3165126655,SK
3165126656,3165192191,RU
3165192192,3165257727,GE
@@ -108983,7 +109788,9 @@
3166697472,3166699519,RO
3166699520,3166961663,DE
3166961664,3167223807,SI
-3167223808,3167748095,NL
+3167223808,3167643322,NL
+3167643323,3167643323,ES
+3167643324,3167748095,NL
3167748096,3167752191,ES
3167752192,3167752959,RO
3167752960,3167753215,IT
@@ -109033,9 +109840,13 @@
3167844352,3167846399,GB
3167846400,3167850495,IR
3167850496,3167852543,AU
-3167852544,3167866879,IR
+3167852544,3167854591,IR
+3167854592,3167862783,AU
+3167862784,3167866879,IR
3167866880,3167867903,SY
-3167867904,3167868927,RO
+3167867904,3167868159,RO
+3167868160,3167868415,NL
+3167868416,3167868927,RO
3167868928,3167879167,MD
3167879168,3167895551,DE
3167895552,3167901695,IR
@@ -109060,8 +109871,7 @@
3167951488,3167951615,KR
3167951616,3167952895,RO
3167952896,3167985663,IR
-3167985664,3167986431,GB
-3167986432,3167986687,UA
+3167985664,3167986687,GB
3167986688,3167987711,RO
3167987712,3167987967,NL
3167987968,3167988223,IE
@@ -109090,7 +109900,7 @@
3168018688,3168018943,ES
3168018944,3168019455,GB
3168019456,3168020223,RO
-3168020224,3168020479,PL
+3168020224,3168020479,CA
3168020480,3168022527,MD
3168022528,3168035839,IR
3168035840,3168036863,RO
@@ -109126,8 +109936,7 @@
3168079872,3168080127,IT
3168080128,3168081919,RO
3168081920,3168083967,FR
-3168083968,3168084223,DE
-3168084224,3168084991,RO
+3168083968,3168084991,RO
3168084992,3168086015,MD
3168086016,3168088063,IT
3168088064,3168089087,RO
@@ -109182,7 +109991,7 @@
3168155648,3168156415,RO
3168156416,3168156671,ES
3168156672,3168157695,MD
-3168157696,3168161791,IR
+3168157696,3168161791,AU
3168161792,3168162303,RO
3168162304,3168162815,IT
3168162816,3168163839,IR
@@ -109282,6 +110091,8 @@
3168993280,3169026047,RU
3169026048,3169034239,CZ
3169034240,3169042431,GB
+3169042432,3169043455,GE
+3169043456,3169044479,SY
3169044480,3169046527,NL
3169046528,3169050623,AZ
3169050624,3169052671,HU
@@ -109326,7 +110137,9 @@
3169828864,3169845247,UA
3169845248,3169845503,RO
3169845504,3169845759,CZ
-3169845760,3169849087,RO
+3169845760,3169848575,RO
+3169848576,3169848831,NL
+3169848832,3169849087,RO
3169849088,3169849343,FR
3169849344,3169849855,RO
3169849856,3169850367,SE
@@ -109394,7 +110207,9 @@
3169927424,3169927679,NL
3169927680,3169928191,RO
3169928192,3169928447,SE
-3169928448,3169935359,RO
+3169928448,3169933055,RO
+3169933056,3169933311,NL
+3169933312,3169935359,RO
3169935360,3169937407,ES
3169937408,3169937919,RO
3169937920,3169938431,GB
@@ -109451,9 +110266,9 @@
3170500608,3170631679,PT
3170631680,3170664447,PL
3170664448,3170697215,HR
-3170697216,3170699263,IR
-3170699264,3170701311,AU
-3170701312,3170729983,IR
+3170697216,3170701311,IR
+3170701312,3170705407,AU
+3170705408,3170729983,IR
3170729984,3170762751,AZ
3170762752,3170795519,RU
3170795520,3170828287,BG
@@ -109515,15 +110330,13 @@
3187940572,3187940575,HN
3187940576,3187940631,GT
3187940632,3187940639,HN
-3187940640,3187940823,GT
-3187940824,3187940831,HN
-3187940832,3187941711,GT
+3187940640,3187941711,GT
3187941712,3187941715,HN
-3187941716,3187942271,GT
-3187942272,3187942279,HN
-3187942280,3187942655,GT
+3187941716,3187942655,GT
3187942656,3187942663,HN
-3187942664,3187942975,GT
+3187942664,3187942775,GT
+3187942776,3187942783,HN
+3187942784,3187942975,GT
3187942976,3187942991,HN
3187942992,3187943119,GT
3187943120,3187943127,HN
@@ -109541,19 +110354,15 @@
3187945344,3187945471,HN
3187945472,3187945983,GT
3187945984,3187946111,HN
-3187946112,3187946975,GT
-3187946976,3187946979,HN
-3187946980,3187947999,GT
+3187946112,3187947363,GT
+3187947364,3187947367,HN
+3187947368,3187947999,GT
3187948000,3187948159,HN
3187948160,3187948367,GT
3187948368,3187948375,HN
-3187948376,3187948799,GT
-3187948800,3187948927,HN
-3187948928,3187949023,GT
+3187948376,3187949023,GT
3187949024,3187949031,HN
-3187949032,3187949115,GT
-3187949116,3187949119,HN
-3187949120,3187949239,GT
+3187949032,3187949239,GT
3187949240,3187949247,HN
3187949248,3187949567,GT
3187949568,3187949816,BQ
@@ -109588,11 +110397,11 @@
3188125696,3188146175,AR
3188146176,3188147623,CO
3188147624,3188147631,PE
-3188147632,3188148911,CO
-3188148912,3188148915,PE
-3188148916,3188149335,CO
+3188147632,3188149335,CO
3188149336,3188149339,PE
-3188149340,3188151423,CO
+3188149340,3188150323,CO
+3188150324,3188150327,PE
+3188150328,3188151423,CO
3188151424,3188151439,PE
3188151440,3188153015,CO
3188153016,3188153023,EC
@@ -109687,9 +110496,7 @@
3191099392,3191103487,AR
3191103488,3191107327,VE
3191107328,3191107583,CR
-3191107584,3191108271,PE
-3191108272,3191108287,MX
-3191108288,3191108959,PE
+3191107584,3191108959,PE
3191108960,3191108991,CO
3191108992,3191109119,PE
3191109120,3191110655,MX
@@ -109732,16 +110539,14 @@
3191709952,3191714815,CO
3191714816,3191715071,AR
3191715072,3191719935,CO
-3191719936,3191720015,AR
-3191720016,3191720959,CO
+3191719936,3191719999,AR
+3191720000,3191720959,CO
3191720960,3191721471,AR
3191721472,3191721983,CO
3191721984,3191722495,AR
3191722496,3191724799,CO
3191724800,3191725311,AR
-3191725312,3191732735,CO
-3191732736,3191732991,AR
-3191732992,3191734271,CO
+3191725312,3191734271,CO
3191734272,3191799807,SV
3191799808,3191865343,EC
3191865344,3191930879,UY
@@ -109759,15 +110564,13 @@
3193575168,3193575295,PE
3193575296,3193575311,CO
3193575312,3193575327,PE
-3193575328,3193579263,CO
-3193579264,3193579391,EC
-3193579392,3193582847,CO
+3193575328,3193582847,CO
3193582848,3193583103,EC
3193583104,3193590527,CO
3193590528,3193590783,EC
-3193590784,3193591807,CO
-3193591808,3193592063,EC
-3193592064,3193595391,CO
+3193590784,3193592319,CO
+3193592320,3193592575,EC
+3193592576,3193595391,CO
3193595392,3193595647,EC
3193595648,3193604351,CO
3193604352,3193604607,EC
@@ -109781,8 +110584,8 @@
3193618432,3193618559,US
3193618560,3193618943,CO
3193618944,3193619071,EC
-3193619072,3193621887,CO
-3193621888,3193622271,EC
+3193619072,3193622015,CO
+3193622016,3193622271,EC
3193622272,3193622943,CO
3193622944,3193622975,EC
3193622976,3193623039,CO
@@ -109811,8 +110614,8 @@
3193782272,3193798655,TT
3193798656,3193806847,CO
3193806848,3193808895,CR
-3193808896,3193809919,US
-3193809920,3193810943,CR
+3193808896,3193809407,US
+3193809408,3193810943,CR
3193810944,3193811967,PY
3193815040,3193823231,AR
3193823232,3193827327,CL
@@ -109854,15 +110657,11 @@
3194130304,3194130431,BR
3194130432,3194130943,AR
3194130944,3194131455,BR
-3194131456,3194132991,AR
-3194132992,3194133247,CL
-3194133248,3194134527,AR
+3194131456,3194134527,AR
3194134528,3194135039,CL
3194135040,3194135551,AR
3194135552,3194136063,BR
-3194136064,3194136319,AR
-3194136320,3194136447,CO
-3194136448,3194136575,AR
+3194136064,3194136575,AR
3194136576,3194137087,BR
3194137088,3194139647,AR
3194139648,3194140159,BR
@@ -109898,7 +110697,9 @@
3194448688,3194448695,CL
3194448696,3194449031,CO
3194449032,3194449047,CL
-3194449048,3194450263,CO
+3194449048,3194449847,CO
+3194449848,3194449855,PE
+3194449856,3194450263,CO
3194450264,3194450271,CL
3194450272,3194451415,CO
3194451416,3194451423,EC
@@ -109992,9 +110793,7 @@
3194929152,3194937343,EC
3194937344,3194945535,AR
3194945536,3194953727,GT
-3194953728,3194961407,AR
-3194961408,3194961663,US
-3194961664,3194961919,AR
+3194953728,3194961919,AR
3194961920,3194970111,EC
3194974208,3194976255,AR
3194976256,3194977279,VE
@@ -110032,7 +110831,8 @@
3195142912,3195143039,EC
3195143040,3195143167,UY
3195143168,3195143295,GT
-3195143296,3195143679,PA
+3195143296,3195143423,PA
+3195143424,3195143679,BO
3195143680,3195143935,AR
3195143936,3195144447,PA
3195144448,3195144703,CR
@@ -110252,7 +111052,17 @@
3201867776,3201875967,PE
3201875968,3201880063,CO
3201880064,3201884159,EC
-3201884160,3201894399,VE
+3201884160,3201888767,VE
+3201888768,3201889235,AR
+3201889236,3201889239,VE
+3201889240,3201889263,AR
+3201889264,3201889279,VE
+3201889280,3201889535,AR
+3201889536,3201889791,VE
+3201889792,3201891071,AR
+3201891072,3201891327,VE
+3201891328,3201891583,AR
+3201891584,3201894399,VE
3201894400,3201896447,AR
3201896448,3201897471,CO
3201897472,3201898495,AR
@@ -110275,10 +111085,8 @@
3201920069,3201920639,AR
3201920640,3201920655,CO
3201920656,3201921023,AR
-3201921024,3201922047,CO
-3201922048,3201922799,AR
-3201922800,3201922815,CO
-3201922816,3201924863,AR
+3201921024,3201923071,CO
+3201923072,3201924863,AR
3201924864,3201924991,PA
3201924992,3201925119,AR
3201925120,3201957887,CL
@@ -110295,20 +111103,20 @@
3203531520,3203531775,PA
3203531776,3203532799,CO
3203532800,3203534847,PA
-3203534848,3203536895,CO
+3203534848,3203535871,CO
+3203535872,3203536383,PA
+3203536384,3203536895,CO
3203536896,3203537919,HN
3203537920,3203538175,GT
3203538176,3203538943,CO
3203538944,3203539967,BZ
-3203539968,3203543551,CO
-3203543552,3203544575,GT
+3203539968,3203544063,CO
+3203544064,3203544575,GT
3203544576,3203545087,CO
3203545088,3203545599,GT
3203545600,3203547135,CO
3203547136,3203549183,PA
-3203549184,3203556863,CO
-3203556864,3203557119,DO
-3203557120,3203561983,CO
+3203549184,3203561983,CO
3203561984,3203562495,SV
3203562496,3203565055,CO
3203565056,3203566079,CR
@@ -110385,9 +111193,7 @@
3210745472,3210745599,DE
3210745600,3210745855,US
3210745856,3210745871,IT
-3210745872,3210745919,BR
-3210745920,3210746047,US
-3210746048,3210746111,BR
+3210745872,3210746111,BR
3210746112,3210746367,US
3210746368,3210746383,SE
3210746384,3210746495,BR
@@ -110478,9 +111284,7 @@
3210777472,3210777599,BR
3210777600,3210778367,US
3210778368,3210778623,IE
-3210778624,3210781951,US
-3210781952,3210782207,IT
-3210782208,3210782975,US
+3210778624,3210782975,US
3210782976,3210782991,TR
3210782992,3210783039,CL
3210783040,3210783231,BR
@@ -110551,8 +111355,8 @@
3210832896,3210835967,AR
3210835968,3210838015,PY
3210838016,3210868735,AR
-3210868736,3210870527,US
-3210870528,3210870783,AR
+3210868736,3210870271,US
+3210870272,3210870783,AR
3210870784,3210903551,CO
3210903552,3210919935,PE
3210919936,3210920959,GT
@@ -110590,7 +111394,7 @@
3211079936,3211080191,NG
3211080192,3211080703,US
3211080704,3211080959,GB
-3211080960,3211081215,IQ
+3211080960,3211081215,CL
3211081216,3211081727,GB
3211081728,3211082239,HK
3211082240,3211082495,BN
@@ -110700,10 +111504,7 @@
3211097872,3211097887,DE
3211097888,3211098111,CL
3211098112,3211098367,US
-3211098368,3211098383,CL
-3211098384,3211098399,DE
-3211098400,3211098623,CL
-3211098624,3211098879,DE
+3211098368,3211098879,DE
3211098880,3211098895,CL
3211098896,3211098911,DE
3211098912,3211099135,CL
@@ -110773,9 +111574,7 @@
3211145216,3211147263,NI
3211147264,3211148287,CR
3211148288,3211165695,CO
-3211165696,3211166415,US
-3211166416,3211166431,UY
-3211166432,3211166559,US
+3211165696,3211166559,US
3211166560,3211166567,UY
3211166568,3211172271,US
3211172272,3211172279,NL
@@ -110789,9 +111588,7 @@
3211174184,3211174191,CA
3211174192,3211174415,US
3211174416,3211174431,CA
-3211174432,3211175199,US
-3211175200,3211175215,BR
-3211175216,3211177831,US
+3211174432,3211177831,US
3211177832,3211177847,CR
3211177848,3211177983,US
3211177984,3211178583,HN
@@ -111927,6 +112724,8 @@
3225858560,3225858815,US
3225858816,3225859583,JP
3225860096,3225862143,US
+3225862144,3225863167,DE
+3225863168,3225864191,RU
3225864192,3225868287,US
3225868288,3225868543,AU
3225868544,3225869055,US
@@ -112037,7 +112836,9 @@
3226068480,3226110719,US
3226110720,3226128639,AU
3226128640,3226140927,US
-3226140928,3226143487,CA
+3226140928,3226141695,CA
+3226141696,3226141951,PE
+3226141952,3226143487,CA
3226143488,3226143743,US
3226143744,3226145535,CA
3226145536,3226145791,US
@@ -112105,9 +112906,7 @@
3226333824,3226333951,NL
3226333952,3226335231,US
3226335232,3226335487,RO
-3226335488,3226374143,US
-3226374144,3226375167,DE
-3226375168,3226376703,US
+3226335488,3226376703,US
3226376704,3226376959,AT
3226376960,3226384639,US
3226384640,3226385407,BE
@@ -112162,8 +112961,7 @@
3226582016,3226582271,GB
3226582272,3226583551,US
3226583552,3226583807,SE
-3226583808,3226590207,US
-3226590208,3226591231,NL
+3226583808,3226591231,US
3226591232,3226592255,CA
3226592256,3226592767,US
3226592768,3226593023,DE
@@ -112172,7 +112970,10 @@
3226594048,3226612735,US
3226612736,3226613759,PH
3226613760,3226615807,MY
-3226615808,3226626047,US
+3226615808,3226623999,MN
+3226624000,3226625023,US
+3226625024,3226625279,MN
+3226625280,3226626047,US
3226626048,3226626303,CA
3226626304,3226629375,US
3226629376,3226629631,CA
@@ -112370,8 +113171,8 @@
3227025920,3227026175,GB
3227026176,3227026687,US
3227026688,3227026943,GB
-3227026944,3227027455,CA
-3227027456,3227040511,US
+3227026944,3227027199,AU
+3227027200,3227040511,US
3227040512,3227040767,AU
3227040768,3227041279,US
3227041280,3227041535,AU
@@ -112556,8 +113357,8 @@
3227468288,3227468799,CA
3227468800,3227484159,US
3227484160,3227517183,CA
-3227517184,3227518975,ZA
-3227518976,3227519231,MU
+3227517184,3227518719,ZA
+3227518720,3227519231,MU
3227519232,3227521279,ZA
3227521280,3227521791,US
3227521792,3227522047,ZA
@@ -112621,8 +113422,8 @@
3227579392,3227579647,US
3227579648,3227580159,ZA
3227580160,3227580415,MU
-3227580416,3227580927,ZA
-3227580928,3227581695,MU
+3227580416,3227580671,ZA
+3227580672,3227581695,MU
3227581696,3227582207,ZA
3227582208,3227638271,US
3227638272,3227638527,CA
@@ -113267,7 +114068,9 @@
3229186816,3229187327,ES
3229187328,3229187583,IT
3229187584,3229187839,DK
-3229187840,3229192959,SE
+3229187840,3229189119,SE
+3229189120,3229189375,GB
+3229189376,3229192959,SE
3229192960,3229193727,FR
3229193728,3229194239,SE
3229194240,3229194495,FR
@@ -113658,9 +114461,8 @@
3230267136,3230267903,CA
3230267904,3230269695,US
3230269696,3230271743,GB
-3230271744,3230277631,US
-3230277632,3230281727,DE
-3230281728,3230291455,US
+3230271744,3230272511,US
+3230273536,3230291455,US
3230291456,3230291711,PT
3230291712,3230295039,US
3230295040,3230295295,AU
@@ -113831,9 +114633,7 @@
3230844928,3230845183,AU
3230845184,3230845951,US
3230845952,3230846207,CZ
-3230846208,3230846975,US
-3230846976,3230847231,DE
-3230847232,3230849535,US
+3230846208,3230849535,US
3230849536,3230850047,NZ
3230850048,3230851839,US
3230851840,3230852095,NO
@@ -113988,7 +114788,11 @@
3231051264,3231051519,GB
3231051776,3231056895,US
3231056896,3231057919,CA
-3231057920,3231070463,US
+3231057920,3231058164,US
+3231058165,3231058167,IE
+3231058168,3231059967,US
+3231059968,3231060223,IN
+3231060224,3231070463,US
3231070720,3231074559,SE
3231074560,3231075071,US
3231075072,3231075583,NL
@@ -114226,9 +115030,7 @@
3231411056,3231411063,AU
3231411064,3231423999,US
3231424000,3231424511,PR
-3231424512,3231455521,US
-3231455522,3231455522,DE
-3231455523,3231477759,US
+3231424512,3231477759,US
3231477760,3231478015,CA
3231478016,3231482879,US
3231482880,3231483135,BE
@@ -114274,23 +115076,19 @@
3231519232,3231526911,US
3231526912,3231527423,CA
3231527424,3231528191,US
-3231528192,3231528287,CA
-3231528288,3231528303,US
-3231528304,3231528311,NO
-3231528312,3231528383,US
-3231528384,3231528703,CA
+3231528192,3231528703,CA
3231528704,3231528959,US
3231528960,3231528975,CA
3231528976,3231528983,US
3231528984,3231528999,CA
3231529000,3231529015,US
-3231529016,3231529055,CA
+3231529016,3231529023,CA
+3231529024,3231529031,US
+3231529032,3231529055,CA
3231529056,3231529071,US
3231529072,3231529191,CA
3231529192,3231529199,US
-3231529200,3231529435,CA
-3231529436,3231529439,US
-3231529440,3231529679,CA
+3231529200,3231529679,CA
3231529680,3231529687,US
3231529688,3231529727,CA
3231529728,3231529983,US
@@ -114311,8 +115109,7 @@
3231553024,3231553791,JP
3231553792,3231554047,CH
3231554048,3231555327,DE
-3231555328,3231556095,US
-3231556352,3231556607,US
+3231555328,3231556607,US
3231556608,3231556863,CA
3231556864,3231557631,US
3231557632,3231557887,AT
@@ -114323,7 +115120,9 @@
3231559168,3231559423,GB
3231559424,3231559679,US
3231559680,3231559935,GB
-3231559936,3231561983,US
+3231559936,3231560367,US
+3231560368,3231560375,DE
+3231560376,3231561983,US
3231561984,3231562239,IT
3231562240,3231562495,US
3231562496,3231562751,GB
@@ -114609,7 +115408,11 @@
3232156672,3232157695,FR
3232157696,3232159743,DE
3232159744,3232161791,PL
+3232161792,3232162815,NL
+3232162816,3232163839,UZ
3232163840,3232165887,RU
+3232165888,3232166911,AT
+3232166912,3232167935,DE
3232167936,3232168959,GB
3232169216,3232169727,DE
3232169728,3232169983,PL
@@ -114702,236 +115505,172 @@
3233292288,3233431551,US
3233431552,3233448287,CA
3233448288,3233448295,US
-3233448296,3233448447,CA
-3233448448,3233448463,US
-3233448464,3233448479,CA
-3233448480,3233448495,US
-3233448496,3233448527,CA
-3233448528,3233448543,US
-3233448544,3233448575,CA
-3233448576,3233448607,US
-3233448608,3233448655,CA
-3233448656,3233448671,US
-3233448672,3233448823,CA
+3233448296,3233448591,CA
+3233448592,3233448607,US
+3233448608,3233448823,CA
3233448824,3233448831,US
3233448832,3233448863,CA
3233448864,3233448871,US
-3233448872,3233448879,FI
-3233448880,3233448895,US
-3233448896,3233448903,CA
-3233448904,3233448927,US
-3233448928,3233449071,CA
-3233449072,3233449079,US
-3233449080,3233449095,CA
+3233448872,3233448903,CA
+3233448904,3233448911,US
+3233448912,3233449095,CA
3233449096,3233449103,GB
3233449104,3233449199,CA
-3233449200,3233449207,US
-3233449208,3233449311,CA
+3233449200,3233449215,US
+3233449216,3233449311,CA
3233449312,3233449319,RO
3233449320,3233449359,CA
3233449360,3233449367,US
-3233449368,3233449519,CA
-3233449520,3233449567,US
-3233449568,3233449583,CA
-3233449584,3233449631,US
-3233449632,3233449647,CA
-3233449648,3233449663,US
-3233449664,3233449727,CA
-3233449728,3233449775,US
-3233449776,3233449823,CA
-3233449824,3233449839,US
-3233449840,3233450047,CA
+3233449368,3233449535,CA
+3233449536,3233449567,US
+3233449568,3233449615,CA
+3233449616,3233449631,US
+3233449632,3233449639,CA
+3233449640,3233449663,US
+3233449664,3233450047,CA
3233450048,3233450111,US
3233450112,3233450127,CA
3233450128,3233450135,US
3233450136,3233450199,CA
3233450200,3233450207,GB
-3233450208,3233450775,CA
-3233450776,3233450783,SE
+3233450208,3233450783,CA
3233450784,3233450815,US
-3233450816,3233450847,CA
-3233450848,3233450887,US
-3233450888,3233450895,CA
-3233450896,3233450959,US
-3233450960,3233450991,CA
-3233450992,3233451263,US
+3233450816,3233450863,CA
+3233450864,3233450879,US
+3233450880,3233450895,CA
+3233450896,3233450911,US
+3233450912,3233450927,CA
+3233450928,3233450959,US
+3233450960,3233451007,CA
+3233451008,3233451263,US
3233451264,3233451519,CA
-3233451520,3233451647,GB
-3233451648,3233451711,US
-3233451712,3233451751,GB
-3233451752,3233451807,US
-3233451808,3233451823,CA
-3233451824,3233451831,US
-3233451832,3233451879,CA
-3233451880,3233451951,US
+3233451520,3233451775,GB
+3233451776,3233451935,CA
+3233451936,3233451951,US
3233451952,3233452031,CA
3233452032,3233452287,US
3233452288,3233452303,CA
3233452304,3233452319,US
-3233452320,3233452335,CA
-3233452336,3233452351,US
-3233452352,3233452383,CA
-3233452384,3233452415,US
-3233452416,3233452487,CA
-3233452488,3233452495,US
-3233452496,3233452511,CA
-3233452512,3233452527,US
-3233452528,3233452543,CA
-3233452544,3233452879,US
-3233452880,3233452959,CA
-3233452960,3233453199,US
-3233453200,3233453247,CA
-3233453248,3233453279,US
-3233453280,3233453295,CA
+3233452320,3233452399,CA
+3233452400,3233452415,US
+3233452416,3233452543,CA
+3233452544,3233452831,US
+3233452832,3233452847,CA
+3233452848,3233452879,US
+3233452880,3233452991,CA
+3233452992,3233453007,US
+3233453008,3233453055,CA
+3233453056,3233453199,US
+3233453200,3233453295,CA
3233453296,3233453311,US
3233453312,3233453455,CA
3233453456,3233453471,US
3233453472,3233453567,CA
-3233453568,3233453623,IT
-3233453624,3233454079,US
+3233453568,3233453631,IT
+3233453632,3233454079,US
3233454080,3233454303,CA
3233454304,3233454335,US
-3233454336,3233454399,CA
-3233454400,3233454447,US
-3233454448,3233454511,CA
+3233454336,3233454511,CA
3233454512,3233454527,US
3233454528,3233454559,CA
3233454560,3233454575,US
-3233454576,3233454591,CA
-3233454592,3233454599,SE
-3233454600,3233454639,CA
-3233454640,3233454647,US
-3233454648,3233454687,CA
-3233454688,3233454695,US
-3233454696,3233454735,CA
-3233454736,3233454743,US
-3233454744,3233454799,CA
-3233454800,3233454807,US
-3233454808,3233454831,CA
-3233454832,3233454839,US
-3233454840,3233455039,CA
-3233455040,3233455071,US
-3233455072,3233455087,CA
-3233455088,3233455103,US
-3233455104,3233455327,CA
-3233455328,3233455335,US
-3233455336,3233455351,CA
-3233455352,3233455359,US
-3233455360,3233455423,CA
-3233455424,3233455447,US
-3233455448,3233455455,CA
-3233455456,3233455487,US
-3233455488,3233455519,CA
-3233455520,3233455551,US
-3233455552,3233455663,CA
-3233455664,3233455711,US
-3233455712,3233455743,CA
-3233455744,3233455807,US
-3233455808,3233455839,CA
-3233455840,3233455871,US
-3233455872,3233455935,CA
-3233455936,3233455967,US
-3233455968,3233455999,CA
-3233456000,3233456047,US
-3233456048,3233456063,CA
+3233454576,3233454815,CA
+3233454816,3233454823,US
+3233454824,3233455743,CA
+3233455744,3233455775,US
+3233455776,3233455855,CA
+3233455856,3233455871,US
+3233455872,3233456015,CA
+3233456016,3233456031,US
+3233456032,3233456063,CA
3233456064,3233456111,US
-3233456112,3233456119,CA
-3233456120,3233456191,US
+3233456112,3233456127,CA
+3233456128,3233456191,US
3233456192,3233456255,LV
3233456256,3233456383,US
3233456384,3233456391,UA
3233456392,3233456399,NO
-3233456400,3233456415,UA
-3233456416,3233456639,US
+3233456400,3233456447,UA
+3233456448,3233456639,US
3233456640,3233456655,CA
3233456656,3233456671,US
-3233456672,3233456791,CA
-3233456792,3233456847,US
-3233456848,3233456863,CA
-3233456864,3233456895,US
-3233456896,3233456943,CA
-3233456944,3233456999,US
-3233457000,3233457023,CA
+3233456672,3233456799,CA
+3233456800,3233456831,US
+3233456832,3233456943,CA
+3233456944,3233456959,US
+3233456960,3233456975,CA
+3233456976,3233456991,US
+3233456992,3233457023,CA
3233457024,3233457039,US
-3233457040,3233457087,CA
-3233457088,3233457535,US
-3233457536,3233457631,CA
+3233457040,3233457151,CA
+3233457152,3233457471,US
+3233457472,3233457631,CA
3233457632,3233457647,US
-3233457648,3233457663,CA
-3233457664,3233457671,US
-3233457672,3233457735,CA
-3233457736,3233457775,US
-3233457776,3233457831,CA
-3233457832,3233457895,US
-3233457896,3233457919,CA
-3233457920,3233458207,US
-3233458208,3233458223,CA
+3233457648,3233457855,CA
+3233457856,3233457863,US
+3233457864,3233457919,CA
+3233457920,3233458191,US
+3233458192,3233458223,CA
3233458224,3233458271,US
3233458272,3233458303,CA
-3233458304,3233458527,US
-3233458528,3233458535,CA
-3233458536,3233458543,US
-3233458544,3233458591,CA
+3233458304,3233458335,US
+3233458336,3233458367,CA
+3233458368,3233458399,US
+3233458400,3233458431,CA
+3233458432,3233458463,US
+3233458464,3233458479,CA
+3233458480,3233458527,US
+3233458528,3233458591,CA
3233458592,3233458607,US
3233458608,3233458687,CA
3233458688,3233458943,US
3233458944,3233458959,BG
-3233458960,3233459631,US
-3233459632,3233459647,CA
-3233459648,3233459695,US
-3233459696,3233459711,CA
-3233459712,3233459839,US
+3233458960,3233458975,US
+3233458976,3233459007,BG
+3233459008,3233459455,US
+3233459456,3233459519,CA
+3233459520,3233459631,US
+3233459632,3233459711,CA
+3233459712,3233459727,US
+3233459728,3233459775,CA
+3233459776,3233459807,US
+3233459808,3233459823,CA
+3233459824,3233459839,US
3233459840,3233459967,CA
3233459968,3233459999,US
3233460000,3233460015,CA
-3233460016,3233460047,US
-3233460048,3233460119,CA
-3233460120,3233460159,US
-3233460160,3233460223,CA
+3233460016,3233460031,US
+3233460032,3233460223,CA
3233460224,3233460479,US
-3233460480,3233460487,CA
-3233460488,3233460511,US
+3233460480,3233460495,CA
+3233460496,3233460511,US
3233460512,3233460519,SE
-3233460520,3233460527,CA
-3233460528,3233460535,US
-3233460536,3233460671,CA
-3233460672,3233461279,US
-3233461280,3233461303,CA
-3233461304,3233461319,US
-3233461320,3233461343,CA
-3233461344,3233461351,US
-3233461352,3233461375,CA
+3233460520,3233460671,CA
+3233460672,3233461247,US
+3233461248,3233461375,CA
3233461376,3233461407,US
-3233461408,3233461471,CA
-3233461472,3233461543,US
-3233461544,3233461567,CA
+3233461408,3233461487,CA
+3233461488,3233461503,US
+3233461504,3233461567,CA
3233461568,3233461583,US
3233461584,3233461599,CA
-3233461600,3233461631,US
-3233461632,3233461639,CA
-3233461640,3233461679,US
-3233461680,3233461687,CA
-3233461688,3233461711,US
-3233461712,3233461727,CA
+3233461600,3233461615,US
+3233461616,3233461647,CA
+3233461648,3233461663,US
+3233461664,3233461727,CA
3233461728,3233461743,US
3233461744,3233461759,CA
-3233461760,3233461855,US
-3233461856,3233461871,CA
+3233461760,3233461823,US
+3233461824,3233461871,CA
3233461872,3233462015,US
-3233462016,3233462063,CA
-3233462064,3233462071,US
-3233462072,3233462127,CA
-3233462128,3233462143,US
-3233462144,3233462527,CA
+3233462016,3233462527,CA
3233462528,3233462783,US
3233462784,3233463295,CA
3233463296,3233463551,US
-3233463552,3233463807,CA
-3233463808,3233463855,US
-3233463856,3233463871,CA
-3233463872,3233463887,US
-3233463888,3233463919,CA
-3233463920,3233463999,US
+3233463552,3233463839,CA
+3233463840,3233463855,US
+3233463856,3233463935,CA
+3233463936,3233463999,US
3233464000,3233464063,CA
3233464064,3233484799,US
3233484800,3233487359,ES
@@ -115274,82 +116013,48 @@
3234201344,3234203647,US
3234203648,3234205695,AR
3234205696,3234226175,US
-3234226176,3234226207,CA
-3234226208,3234226239,US
-3234226240,3234226263,CA
-3234226264,3234226271,US
-3234226272,3234226279,CA
-3234226280,3234226303,US
-3234226304,3234226359,CA
-3234226360,3234226367,US
-3234226368,3234226559,CA
-3234226560,3234226575,US
-3234226576,3234226711,CA
-3234226712,3234226767,US
-3234226768,3234226847,CA
+3234226176,3234226287,CA
+3234226288,3234226303,US
+3234226304,3234226719,CA
+3234226720,3234226751,US
+3234226752,3234226847,CA
3234226848,3234226863,US
3234226864,3234226879,CA
3234226880,3234226943,US
-3234226944,3234226959,CA
-3234226960,3234226967,US
-3234226968,3234227007,CA
+3234226944,3234227007,CA
3234227008,3234227023,US
-3234227024,3234227135,CA
-3234227136,3234227143,US
-3234227144,3234227159,CA
-3234227160,3234227167,FI
-3234227168,3234227191,CA
+3234227024,3234227191,CA
3234227192,3234227455,US
-3234227456,3234227611,CA
-3234227612,3234227615,US
-3234227616,3234227619,CA
+3234227456,3234227619,CA
3234227620,3234227623,US
-3234227624,3234227639,CA
-3234227640,3234227643,US
-3234227644,3234227695,CA
-3234227696,3234227699,US
-3234227700,3234227707,CA
-3234227708,3234227743,US
-3234227744,3234227775,CA
-3234227776,3234227807,US
-3234227808,3234227839,CA
-3234227840,3234227879,US
-3234227880,3234227903,CA
+3234227624,3234227839,CA
+3234227840,3234227871,US
+3234227872,3234227903,CA
3234227904,3234227935,US
3234227936,3234227951,CA
3234227952,3234228223,US
3234228224,3234228287,CA
-3234228288,3234228383,US
-3234228384,3234228463,CA
-3234228464,3234228479,US
-3234228480,3234228607,CA
+3234228288,3234228351,US
+3234228352,3234228607,CA
3234228608,3234228639,US
3234228640,3234228671,CA
-3234228672,3234228735,US
+3234228672,3234228703,US
+3234228704,3234228719,CA
+3234228720,3234228735,US
3234228736,3234229039,CA
3234229040,3234229047,US
-3234229048,3234229063,CA
-3234229064,3234229079,US
-3234229080,3234229111,CA
-3234229112,3234229119,US
-3234229120,3234229191,CA
-3234229192,3234229199,US
-3234229200,3234229215,CA
+3234229048,3234229071,CA
+3234229072,3234229079,US
+3234229080,3234229215,CA
3234229216,3234229223,SE
-3234229224,3234229239,CA
-3234229240,3234229503,US
+3234229224,3234229247,CA
+3234229248,3234229503,US
3234229504,3234229567,CA
3234229568,3234229599,US
-3234229600,3234229607,CA
-3234229608,3234229615,US
-3234229616,3234229695,CA
-3234229696,3234229759,US
-3234229760,3234229839,CA
-3234229840,3234229847,US
-3234229848,3234229895,CA
-3234229896,3234229903,US
-3234229904,3234229911,CA
-3234229912,3234229951,US
+3234229600,3234229695,CA
+3234229696,3234229743,US
+3234229744,3234229919,CA
+3234229920,3234229951,US
3234229952,3234230015,CA
3234230016,3234230207,ES
3234230208,3234230271,US
@@ -115357,54 +116062,43 @@
3234230400,3234230431,US
3234230432,3234230527,CA
3234230528,3234230783,US
-3234230784,3234230911,CA
-3234230912,3234230991,US
-3234230992,3234230999,CA
-3234231000,3234231047,US
-3234231048,3234231055,CA
-3234231056,3234231063,US
-3234231064,3234231087,CA
+3234230784,3234230927,CA
+3234230928,3234230991,US
+3234230992,3234231007,CA
+3234231008,3234231039,US
+3234231040,3234231087,CA
3234231088,3234231103,US
-3234231104,3234231143,CA
-3234231144,3234231159,US
-3234231160,3234231199,CA
-3234231200,3234231215,US
-3234231216,3234231231,CA
-3234231232,3234231247,US
-3234231248,3234231255,CA
-3234231256,3234231279,US
-3234231280,3234231287,CA
-3234231288,3234231295,SE
-3234231296,3234231423,CA
+3234231104,3234231423,CA
3234231424,3234231551,US
3234231552,3234231807,CA
-3234231808,3234232159,US
-3234232160,3234232247,CA
-3234232248,3234232255,US
-3234232256,3234232319,CA
+3234231808,3234232111,US
+3234232112,3234232127,CA
+3234232128,3234232159,US
+3234232160,3234232319,CA
3234232320,3234232575,EG
-3234232576,3234233063,US
-3234233064,3234233071,SE
-3234233072,3234233375,US
-3234233376,3234233399,CA
-3234233400,3234233407,US
-3234233408,3234233471,CA
+3234232576,3234233343,US
+3234233344,3234233471,CA
3234233472,3234233487,US
-3234233488,3234233495,CA
-3234233496,3234233503,SE
-3234233504,3234233599,US
-3234233600,3234233631,CA
-3234233632,3234233759,US
+3234233488,3234233519,CA
+3234233520,3234233599,US
+3234233600,3234233647,CA
+3234233648,3234233663,US
+3234233664,3234233727,CA
+3234233728,3234233759,US
3234233760,3234233791,CA
3234233792,3234233823,US
3234233824,3234233855,CA
-3234233856,3234234199,US
+3234233856,3234234127,US
+3234234128,3234234143,CA
+3234234144,3234234199,US
3234234200,3234234207,CA
3234234208,3234234239,US
-3234234240,3234234247,CA
-3234234248,3234234271,US
+3234234240,3234234255,CA
+3234234256,3234234271,US
3234234272,3234234287,CA
-3234234288,3234238463,US
+3234234288,3234234335,US
+3234234336,3234234367,CA
+3234234368,3234238463,US
3234238464,3234239487,MY
3234239488,3234267135,US
3234267136,3234267391,CA
@@ -115708,9 +116402,7 @@
3236157952,3236158207,GB
3236158208,3236167935,US
3236167936,3236175871,CA
-3236175872,3236182783,US
-3236182784,3236183039,FI
-3236183040,3236200447,US
+3236175872,3236200447,US
3236200448,3236233215,MY
3236233216,3236239359,US
3236239360,3236241407,CA
@@ -115908,76 +116600,44 @@
3237036128,3237036135,CA
3237036136,3237036159,US
3237036160,3237036255,CA
-3237036256,3237036383,US
+3237036256,3237036351,US
+3237036352,3237036367,CA
+3237036368,3237036383,US
3237036384,3237036415,CA
3237036416,3237036495,US
3237036496,3237036511,CA
3237036512,3237036543,US
-3237036544,3237036551,CA
-3237036552,3237036555,US
-3237036556,3237036679,CA
-3237036680,3237036687,SE
-3237036688,3237036703,CA
-3237036704,3237036711,US
-3237036712,3237036799,CA
+3237036544,3237036799,CA
3237036800,3237037311,US
3237037312,3237037567,CA
3237037568,3237037583,US
-3237037584,3237037607,CA
-3237037608,3237037631,US
-3237037632,3237037647,CA
-3237037648,3237037655,SE
-3237037656,3237037703,CA
-3237037704,3237037711,US
-3237037712,3237037751,CA
+3237037584,3237037615,CA
+3237037616,3237037631,US
+3237037632,3237037751,CA
3237037752,3237037759,US
-3237037760,3237037767,CA
-3237037768,3237037775,NO
-3237037776,3237037815,CA
-3237037816,3237037823,US
-3237037824,3237037887,CA
-3237037888,3237037895,US
-3237037896,3237037943,CA
+3237037760,3237037943,CA
3237037944,3237037959,US
-3237037960,3237037967,CA
-3237037968,3237037975,US
-3237037976,3237037999,CA
-3237038000,3237038007,US
-3237038008,3237038031,CA
+3237037960,3237038031,CA
3237038032,3237038047,US
3237038048,3237038367,CA
3237038368,3237038399,US
3237038400,3237038415,CA
3237038416,3237038431,US
3237038432,3237038495,CA
-3237038496,3237038591,US
-3237038592,3237038607,CA
-3237038608,3237038615,US
-3237038616,3237038663,CA
-3237038664,3237038671,US
-3237038672,3237038679,CA
-3237038680,3237038687,US
-3237038688,3237038743,CA
-3237038744,3237038751,US
-3237038752,3237038767,CA
-3237038768,3237038775,US
-3237038776,3237038783,CA
-3237038784,3237038791,US
-3237038792,3237038823,CA
-3237038824,3237038839,US
-3237038840,3237038863,CA
+3237038496,3237038575,US
+3237038576,3237038823,CA
+3237038824,3237038831,US
+3237038832,3237038863,CA
3237038864,3237038879,US
3237038880,3237038911,CA
3237038912,3237038927,US
-3237038928,3237038943,CA
-3237038944,3237038959,US
-3237038960,3237038975,CA
-3237038976,3237039055,US
-3237039056,3237039103,CA
+3237038928,3237038991,CA
+3237038992,3237039007,US
+3237039008,3237039103,CA
3237039104,3237039183,US
3237039184,3237039199,CA
-3237039200,3237039231,US
-3237039232,3237039295,CA
+3237039200,3237039215,US
+3237039216,3237039295,CA
3237039296,3237039343,US
3237039344,3237039359,CA
3237039360,3237039615,US
@@ -115985,8 +116645,8 @@
3237039936,3237040063,US
3237040064,3237040143,CA
3237040144,3237040159,US
-3237040160,3237040255,CA
-3237040256,3237040303,US
+3237040160,3237040287,CA
+3237040288,3237040303,US
3237040304,3237040319,CA
3237040320,3237040335,US
3237040336,3237040351,CA
@@ -115996,98 +116656,69 @@
3237040896,3237041151,CA
3237041152,3237041183,US
3237041184,3237041199,CA
-3237041200,3237041823,US
-3237041824,3237041935,CA
+3237041200,3237041407,US
+3237041408,3237041663,CA
+3237041664,3237041791,US
+3237041792,3237041935,CA
3237041936,3237041983,US
-3237041984,3237042047,CA
-3237042048,3237042079,US
-3237042080,3237042127,CA
+3237041984,3237042127,CA
3237042128,3237042431,US
-3237042432,3237042463,CA
-3237042464,3237042471,US
-3237042472,3237042479,CA
+3237042432,3237042479,CA
3237042480,3237042495,US
-3237042496,3237042511,CA
-3237042512,3237042527,US
-3237042528,3237042607,CA
+3237042496,3237042607,CA
3237042608,3237042623,US
-3237042624,3237042631,CA
-3237042632,3237042639,US
-3237042640,3237042647,CA
-3237042648,3237042671,US
-3237042672,3237042679,CA
-3237042680,3237043455,US
+3237042624,3237042687,CA
+3237042688,3237043455,US
3237043456,3237043711,CA
3237043712,3237043967,US
3237043968,3237044223,CH
3237044224,3237044287,US
3237044288,3237044351,CA
3237044352,3237044479,US
-3237044480,3237044623,CA
-3237044624,3237044631,US
-3237044632,3237044639,CA
-3237044640,3237044647,US
-3237044648,3237044695,CA
-3237044696,3237044703,US
-3237044704,3237044711,CA
-3237044712,3237044719,US
-3237044720,3237044727,CA
-3237044728,3237044735,US
-3237044736,3237044815,CA
+3237044480,3237044815,CA
3237044816,3237044831,US
3237044832,3237044887,CA
3237044888,3237044895,US
-3237044896,3237045031,CA
-3237045032,3237045039,US
-3237045040,3237045223,CA
-3237045224,3237045231,US
-3237045232,3237045247,CA
+3237044896,3237045247,CA
3237045248,3237045503,US
-3237045504,3237045591,CA
-3237045592,3237045599,SE
-3237045600,3237045663,CA
-3237045664,3237045671,FI
-3237045672,3237045711,CA
-3237045712,3237045719,US
-3237045720,3237045759,CA
-3237045760,3237046559,US
-3237046560,3237046607,CA
-3237046608,3237046639,US
-3237046640,3237046647,CA
+3237045504,3237045759,CA
+3237045760,3237046527,US
+3237046528,3237046607,CA
+3237046608,3237046623,US
+3237046624,3237046647,CA
3237046648,3237046655,SE
-3237046656,3237046767,US
-3237046768,3237046775,CA
-3237046776,3237046943,US
-3237046944,3237047039,CA
+3237046656,3237046671,CA
+3237046672,3237046767,US
+3237046768,3237046783,CA
+3237046784,3237046815,US
+3237046816,3237047039,CA
3237047040,3237047295,FR
-3237047296,3237047823,US
-3237047824,3237047839,CA
+3237047296,3237047807,US
+3237047808,3237047839,CA
3237047840,3237047871,US
3237047872,3237047935,CA
3237047936,3237048031,US
-3237048032,3237048063,CA
-3237048064,3237048143,US
+3237048032,3237048079,CA
+3237048080,3237048111,US
+3237048112,3237048127,CA
+3237048128,3237048143,US
3237048144,3237048159,CA
3237048160,3237048191,US
3237048192,3237048255,CA
3237048256,3237048575,US
3237048576,3237048767,CA
3237048768,3237048783,US
-3237048784,3237048799,CA
-3237048800,3237048815,US
-3237048816,3237049855,CA
+3237048784,3237049855,CA
3237049856,3237050111,US
3237050112,3237050159,GB
3237050160,3237050175,US
-3237050176,3237050191,GB
-3237050192,3237050207,US
-3237050208,3237050303,GB
+3237050176,3237050303,GB
3237050304,3237051903,US
3237051904,3237052159,TR
-3237052160,3237052287,CA
-3237052288,3237052383,US
-3237052384,3237052399,CA
-3237052400,3237125295,US
+3237052160,3237052319,CA
+3237052320,3237052383,US
+3237052384,3237052415,CA
+3237052416,3237125295,US
3237125296,3237125311,CR
3237125312,3237154815,US
3237154816,3237155839,ES
@@ -116222,197 +116853,7 @@
3237797888,3237801983,CA
3237801984,3237858303,US
3237858304,3237863423,CA
-3237863424,3237863431,US
-3237863432,3237863439,CN
-3237863440,3237863447,US
-3237863448,3237863463,CN
-3237863464,3237863471,US
-3237863472,3237863559,CN
-3237863560,3237863567,US
-3237863568,3237863591,CN
-3237863592,3237863599,US
-3237863600,3237863607,CN
-3237863608,3237863623,US
-3237863624,3237863639,CN
-3237863640,3237863655,US
-3237863656,3237863663,CN
-3237863664,3237863687,US
-3237863688,3237863735,CN
-3237863736,3237863751,US
-3237863752,3237863775,CN
-3237863776,3237863791,US
-3237863792,3237863823,CN
-3237863824,3237863839,US
-3237863840,3237863871,CN
-3237863872,3237863879,US
-3237863880,3237863887,CN
-3237863888,3237863903,US
-3237863904,3237863927,CN
-3237863928,3237863935,US
-3237863936,3237863951,CN
-3237863952,3237863959,US
-3237863960,3237863967,CN
-3237863968,3237863975,US
-3237863976,3237863983,CN
-3237863984,3237863991,US
-3237863992,3237864007,CN
-3237864008,3237864015,US
-3237864016,3237864079,CN
-3237864080,3237864087,US
-3237864088,3237864127,CN
-3237864128,3237864135,US
-3237864136,3237864143,CN
-3237864144,3237864151,US
-3237864152,3237864159,CN
-3237864160,3237864167,US
-3237864168,3237864199,CN
-3237864200,3237864207,US
-3237864208,3237864215,CN
-3237864216,3237864231,US
-3237864232,3237864247,CN
-3237864248,3237864255,US
-3237864256,3237864263,CN
-3237864264,3237864271,US
-3237864272,3237864335,CN
-3237864336,3237864343,US
-3237864344,3237864351,CN
-3237864352,3237864359,US
-3237864360,3237864375,CN
-3237864376,3237864383,US
-3237864384,3237864423,CN
-3237864424,3237864431,US
-3237864432,3237864439,CN
-3237864440,3237864447,US
-3237864448,3237864527,CN
-3237864528,3237864543,US
-3237864544,3237864583,CN
-3237864584,3237864591,US
-3237864592,3237864631,CN
-3237864632,3237864639,US
-3237864640,3237864679,CN
-3237864680,3237864703,US
-3237864704,3237864711,CN
-3237864712,3237864735,US
-3237864736,3237864791,CN
-3237864792,3237864799,US
-3237864800,3237864807,CN
-3237864808,3237864815,US
-3237864816,3237864903,CN
-3237864904,3237864911,US
-3237864912,3237864919,CN
-3237864920,3237864935,US
-3237864936,3237864975,CN
-3237864976,3237864983,US
-3237864984,3237864999,CN
-3237865000,3237865007,US
-3237865008,3237865079,CN
-3237865080,3237865111,US
-3237865112,3237865127,CN
-3237865128,3237865135,US
-3237865136,3237865167,CN
-3237865168,3237865183,US
-3237865184,3237865255,CN
-3237865256,3237865263,US
-3237865264,3237865311,CN
-3237865312,3237865319,US
-3237865320,3237865375,CN
-3237865376,3237865383,US
-3237865384,3237865415,CN
-3237865416,3237865463,US
-3237865464,3237865471,CN
-3237865472,3237865487,US
-3237865488,3237865495,CN
-3237865496,3237865519,US
-3237865520,3237865591,CN
-3237865592,3237865599,US
-3237865600,3237865631,CN
-3237865632,3237865639,US
-3237865640,3237865647,CN
-3237865648,3237865663,US
-3237865664,3237865679,CN
-3237865680,3237865687,US
-3237865688,3237865767,CN
-3237865768,3237865775,US
-3237865776,3237865799,CN
-3237865800,3237865807,US
-3237865808,3237865815,CN
-3237865816,3237865839,US
-3237865840,3237865855,CN
-3237865856,3237865871,US
-3237865872,3237865879,CN
-3237865880,3237865895,US
-3237865896,3237866039,CN
-3237866040,3237866055,US
-3237866056,3237866071,CN
-3237866072,3237866087,US
-3237866088,3237866095,CN
-3237866096,3237866103,US
-3237866104,3237866143,CN
-3237866144,3237866151,US
-3237866152,3237866215,CN
-3237866216,3237866223,US
-3237866224,3237866287,CN
-3237866288,3237866295,US
-3237866296,3237866319,CN
-3237866320,3237866327,US
-3237866328,3237866391,CN
-3237866392,3237866399,US
-3237866400,3237866439,CN
-3237866440,3237866455,US
-3237866456,3237866527,CN
-3237866528,3237866535,US
-3237866536,3237866591,CN
-3237866592,3237866615,US
-3237866616,3237866655,CN
-3237866656,3237866687,US
-3237866688,3237866735,CN
-3237866736,3237866759,US
-3237866760,3237866767,CN
-3237866768,3237866775,US
-3237866776,3237866823,CN
-3237866824,3237866831,US
-3237866832,3237866839,CN
-3237866840,3237866855,US
-3237866856,3237866863,CN
-3237866864,3237866903,US
-3237866904,3237866911,CN
-3237866912,3237866919,US
-3237866920,3237866975,CN
-3237866976,3237866983,US
-3237866984,3237867007,CN
-3237867008,3237867015,US
-3237867016,3237867023,CN
-3237867024,3237867031,US
-3237867032,3237867039,CN
-3237867040,3237867055,US
-3237867056,3237867063,CN
-3237867064,3237867071,US
-3237867072,3237867079,CN
-3237867080,3237867087,US
-3237867088,3237867103,CN
-3237867104,3237867119,US
-3237867120,3237867175,CN
-3237867176,3237867183,US
-3237867184,3237867239,CN
-3237867240,3237867247,US
-3237867248,3237867255,CN
-3237867256,3237867279,US
-3237867280,3237867287,CN
-3237867288,3237867295,US
-3237867296,3237867319,CN
-3237867320,3237867327,US
-3237867328,3237867343,CN
-3237867344,3237867359,US
-3237867360,3237867407,CN
-3237867408,3237867423,US
-3237867424,3237867447,CN
-3237867448,3237867455,US
-3237867456,3237867471,CN
-3237867472,3237867479,US
-3237867480,3237867495,CN
-3237867496,3237867503,US
-3237867504,3237867511,CN
-3237867512,3237867519,US
+3237863424,3237867519,US
3237867520,3237867775,HK
3237867776,3237868031,AU
3237868032,3237868159,HK
@@ -116592,6 +117033,8 @@
3238547456,3238548479,PL
3238548992,3238549503,CZ
3238549504,3238555647,CH
+3238555648,3238556671,ES
+3238556672,3238557695,FR
3238557696,3238558719,ES
3238559232,3238559487,SE
3238559744,3238562303,CH
@@ -116634,6 +117077,12 @@
3238599168,3238599679,HU
3238599680,3238599935,US
3238608896,3238621183,SE
+3238621184,3238621439,CZ
+3238621440,3238621695,GB
+3238621696,3238621951,BE
+3238621952,3238622079,BG
+3238622080,3238622207,RO
+3238622208,3238623231,DE
3238623232,3238623487,LV
3238623488,3238623743,PL
3238623744,3238623999,CH
@@ -116641,7 +117090,7 @@
3238624256,3238625279,HU
3238625280,3238630399,LU
3238630400,3238631423,GR
-3238631424,3238632447,RO
+3238631424,3238632447,US
3238632960,3238633215,UA
3238633216,3238653951,DK
3238653952,3238655999,RU
@@ -116675,7 +117124,13 @@
3239024640,3239026687,SE
3239026688,3239028735,HR
3239028736,3239051263,SE
-3239051264,3239059455,DE
+3239051264,3239053311,DE
+3239053312,3239053567,GB
+3239053568,3239054335,AT
+3239054336,3239055359,CZ
+3239055360,3239059455,DE
+3239059456,3239060479,RU
+3239060480,3239061503,DE
3239062272,3239062527,ES
3239062528,3239062783,CH
3239062784,3239063039,UA
@@ -116748,6 +117203,8 @@
3239120896,3239121663,DE
3239121664,3239121919,FR
3239121920,3239124991,DE
+3239124992,3239126015,RU
+3239126016,3239127039,JE
3239127296,3239127551,PL
3239127552,3239127807,IL
3239127808,3239128063,RU
@@ -116778,6 +117235,7 @@
3239137280,3239138303,IT
3239138304,3239138559,PL
3239138560,3239138815,CH
+3239139328,3239141375,RU
3239141376,3239145471,US
3239145472,3239147519,DE
3239147520,3239149567,SG
@@ -116789,7 +117247,7 @@
3239161344,3239161599,PL
3239161600,3239161855,HU
3239162368,3239162623,DE
-3239162880,3239163903,ES
+3239162880,3239163903,US
3239163904,3239164159,PL
3239164160,3239164671,DE
3239164672,3239164927,GB
@@ -116875,6 +117333,8 @@
3239296000,3239297023,GB
3239297024,3239298047,RO
3239298048,3239299071,GB
+3239299072,3239300095,MD
+3239300096,3239301119,LT
3239301120,3239302143,FR
3239302144,3239303167,PL
3239303168,3239304191,FR
@@ -116923,6 +117383,8 @@
3239472128,3239474943,DE
3239474944,3239475199,ES
3239475200,3239477247,DE
+3239477248,3239478271,GB
+3239478272,3239479295,NL
3239479296,3239480319,IT
3239480320,3239480575,UA
3239480832,3239481087,CH
@@ -116974,7 +117436,7 @@
3239540480,3239540735,DE
3239540736,3239540991,GB
3239540992,3239541247,FR
-3239541248,3239541503,UA
+3239541248,3239541503,RU
3239541504,3239541759,FR
3239541760,3239542015,GB
3239542784,3239543807,MD
@@ -116986,7 +117448,7 @@
3239546112,3239546367,GB
3239546368,3239546623,RU
3239546624,3239546879,NL
-3239546880,3239547903,IN
+3239546880,3239547903,RU
3239547904,3239549951,DE
3239549952,3239550207,TR
3239550208,3239550463,UA
@@ -117025,7 +117487,10 @@
3239582720,3239582975,GB
3239582976,3239583231,IT
3239583232,3239583487,UA
-3239583744,3239591935,DE
+3239583744,3239585791,DE
+3239585792,3239586815,IT
+3239586816,3239587839,ES
+3239587840,3239591935,DE
3239591936,3239592447,FI
3239592448,3239592703,US
3239592704,3239593983,FI
@@ -117117,7 +117582,10 @@
3239714560,3239714815,HU
3239714816,3239723007,DE
3239723008,3239731199,GB
-3239731200,3239739391,DE
+3239731200,3239735295,DE
+3239735296,3239736319,NL
+3239736320,3239737343,GB
+3239737344,3239739391,DE
3239739392,3239739647,IT
3239739648,3239739903,RO
3239739904,3239740159,CH
@@ -117126,7 +117594,8 @@
3239740928,3239741183,UA
3239741184,3239741439,RU
3239741440,3239744511,DE
-3239744512,3239745535,ES
+3239744512,3239746559,ES
+3239746560,3239747583,AT
3239747584,3239759871,DE
3239760128,3239760383,UA
3239761408,3239761663,RU
@@ -117147,6 +117616,10 @@
3239774976,3239775231,PT
3239775232,3239776255,RO
3239776256,3239778303,DE
+3239778304,3239779327,RS
+3239779328,3239780351,IT
+3239780352,3239781375,GB
+3239781376,3239782399,RU
3239782400,3239782655,AT
3239782656,3239782911,RU
3239782912,3239783167,GB
@@ -117191,7 +117664,10 @@
3239830016,3239830527,CH
3239831040,3239831551,RU
3239831552,3239832575,LB
-3239832576,3239834623,RU
+3239832576,3239834111,RU
+3239834112,3239834572,UA
+3239834573,3239834573,RU
+3239834574,3239834623,UA
3239834624,3239835135,AT
3239836160,3239836671,DK
3239836672,3239837183,DE
@@ -117299,7 +117775,7 @@
3239916800,3239917055,KZ
3239917056,3239917311,DE
3239917312,3239917567,BG
-3239919616,3239938815,DE
+3239917568,3239938815,DE
3239938816,3239939071,NL
3239939072,3239948543,DE
3239949312,3239950335,RU
@@ -117325,6 +117801,7 @@
3239968512,3239968767,PL
3239968768,3239969023,NO
3239969536,3239970047,DE
+3239970816,3239972863,ES
3239972864,3239974911,DE
3239974912,3239975935,GB
3239975936,3239976191,RO
@@ -117336,6 +117813,8 @@
3239979264,3239979519,GB
3239979520,3239979775,DE
3239980032,3239993343,DE
+3239993344,3239994367,LB
+3239994368,3239995391,ES
3239995392,3239996415,DE
3239996416,3239996671,GB
3239996928,3239997183,BE
@@ -117366,7 +117845,10 @@
3240034560,3240035327,DE
3240036096,3240037375,DE
3240037888,3240038143,AT
-3240038400,3240040447,DE
+3240038400,3240041471,DE
+3240041472,3240042495,GB
+3240046592,3240047615,ES
+3240047616,3240048639,DE
3240048640,3240049663,UA
3240049664,3240050687,DE
3240054784,3240058879,DE
@@ -117397,6 +117879,7 @@
3240114176,3240114431,CZ
3240114432,3240114687,UA
3240114688,3240114943,RO
+3240114944,3240115199,NL
3240115200,3240116223,RU
3240116224,3240116479,DE
3240116480,3240116735,DK
@@ -117410,12 +117893,14 @@
3240122368,3240123391,GB
3240123392,3240123903,RU
3240123904,3240124415,DE
-3240124416,3240125439,RU
+3240124416,3240125439,JP
3240125440,3240125695,RO
3240125696,3240125951,GB
3240126208,3240128511,GB
3240128512,3240129535,ME
3240130048,3240132607,GB
+3240161280,3240162303,ES
+3240162304,3240163327,DK
3240163328,3240165375,GB
3240165376,3240165887,PL
3240165888,3240166399,ES
@@ -117605,10 +118090,17 @@
3240285184,3240286207,PL
3240286208,3240287231,UA
3240287232,3240288255,PL
-3240288256,3240296447,GB
+3240288256,3240290303,GB
+3240290304,3240291327,RU
+3240291328,3240292351,CZ
+3240292352,3240293375,ES
+3240293376,3240294399,IR
+3240294400,3240296447,GB
3240296448,3240296703,RO
3240297472,3240298495,IT
3240298496,3240300543,GB
+3240300544,3240301567,DE
+3240301568,3240302591,PS
3240302848,3240303103,UA
3240303616,3240304639,GB
3240304640,3240305663,RU
@@ -117639,7 +118131,13 @@
3240328448,3240334335,GB
3240334336,3240335359,NL
3240335360,3240336383,BG
-3240336384,3240361983,GB
+3240336384,3240347647,GB
+3240347648,3240348671,TR
+3240348672,3240349695,PT
+3240349696,3240351743,DE
+3240351744,3240353791,GB
+3240353792,3240355839,RU
+3240355840,3240361983,GB
3240361984,3240362239,TR
3240362240,3240362495,DE
3240362496,3240362751,GB
@@ -117659,8 +118157,13 @@
3240373504,3240373759,FR
3240373760,3240374015,DE
3240374016,3240374271,GB
-3240378368,3240386559,GB
-3240394752,3240403455,GB
+3240378368,3240384511,GB
+3240384512,3240385535,RU
+3240385536,3240386559,IE
+3240394752,3240398847,GB
+3240398848,3240399871,ES
+3240399872,3240400895,NO
+3240400896,3240403455,GB
3240403968,3240404991,NL
3240404992,3240407039,DE
3240407040,3240407295,IL
@@ -117678,9 +118181,13 @@
3240419840,3240420095,AT
3240420608,3240420863,NL
3240420864,3240421119,GB
+3240421376,3240422399,MD
+3240422400,3240423423,DE
3240423424,3240435711,GB
3240436480,3240436735,GB
-3240436736,3240437759,DE
+3240436736,3240439807,DE
+3240448000,3240449023,GB
+3240449024,3240450047,ES
3240450048,3240455167,GB
3240455168,3240456191,NL
3240456192,3240460287,GB
@@ -117715,6 +118222,9 @@
3240488192,3240488447,GB
3240488448,3240488703,BG
3240488960,3240491007,GB
+3240491008,3240492031,RU
+3240492032,3240492799,US
+3240492800,3240493055,SK
3240493056,3240493567,SE
3240493568,3240494079,GB
3240494080,3240494335,SE
@@ -117724,11 +118234,13 @@
3240505600,3240505855,GB
3240506368,3240506623,GB
3240507392,3240525823,GB
+3240525824,3240526847,FR
+3240526848,3240527871,IT
3240527872,3240528127,GB
3240528128,3240528383,CH
3240528384,3240528639,NL
3240528640,3240528895,JP
-3240529408,3240529919,GB
+3240528896,3240529919,GB
3240534016,3240550399,GB
3240558592,3240559615,FR
3240559616,3240560127,GB
@@ -117747,6 +118259,8 @@
3240577792,3240578559,UA
3240578816,3240579071,IL
3240579072,3240581119,GB
+3240581120,3240582143,RO
+3240582144,3240583167,ES
3240583168,3240587263,GB
3240587264,3240587519,NL
3240587520,3240587775,RU
@@ -117761,10 +118275,18 @@
3240594176,3240594431,DK
3240594432,3240594943,GB
3240595456,3240599551,GB
+3240599552,3240600575,RU
+3240600576,3240601599,FR
3240601600,3240602623,RU
3240602624,3240605695,GB
+3240605696,3240606719,NL
+3240606720,3240607743,CZ
+3240607744,3240608767,RU
+3240608768,3240609791,BG
3240609792,3240611839,DE
3240611840,3240613887,GB
+3240613888,3240614911,ES
+3240614912,3240615935,RU
3240615936,3240620031,GB
3240620032,3240621055,LT
3240621824,3240622079,GB
@@ -117907,6 +118429,8 @@
3240812544,3240813567,GB
3240813568,3240814591,PL
3240814592,3240816639,IT
+3240816640,3240817663,PL
+3240817664,3240818687,RU
3240818688,3240820735,NL
3240820736,3240820799,FR
3240820800,3240820831,CY
@@ -117925,6 +118449,8 @@
3240828928,3240830975,IT
3240830976,3240831999,GB
3240832000,3240837119,IT
+3240837120,3240838143,ES
+3240838144,3240839167,DE
3240839424,3240839679,IT
3240840192,3240840447,IT
3240840448,3240840703,PL
@@ -117977,6 +118503,10 @@
3241018112,3241018367,FR
3241018368,3241022463,AT
3241022464,3241023487,IT
+3241023488,3241024511,DE
+3241024512,3241025535,IT
+3241025536,3241026559,ES
+3241026560,3241027583,DE
3241027584,3241029119,AT
3241029120,3241029375,UA
3241029376,3241029631,PL
@@ -118018,6 +118548,8 @@
3241064448,3241064703,DE
3241064704,3241065471,PL
3241065472,3241066495,AT
+3241066496,3241067519,ES
+3241067520,3241068543,DE
3241068800,3241069311,UA
3241069312,3241069567,FR
3241069824,3241070079,GB
@@ -118035,7 +118567,8 @@
3241077760,3241078015,LV
3241078016,3241078271,PL
3241078272,3241078527,ES
-3241078528,3241078783,DE
+3241078528,3241079807,DE
+3241079808,3241080831,RU
3241080832,3241082879,AT
3241082880,3241083135,FR
3241083136,3241091071,CH
@@ -118096,7 +118629,7 @@
3241131520,3241131775,CH
3241131776,3241132031,DK
3241132032,3241142783,CH
-3241143296,3241144319,RO
+3241143296,3241144319,US
3241144320,3241145343,RU
3241145856,3241146111,HR
3241146112,3241146367,PL
@@ -118133,7 +118666,9 @@
3241501952,3241502463,BE
3241503232,3241503487,RS
3241503488,3241503999,BE
-3241504000,3241505023,DE
+3241504000,3241504831,DE
+3241504832,3241504847,BE
+3241504848,3241505023,DE
3241505024,3241508095,BE
3241508096,3241508351,NL
3241508864,3241539839,BE
@@ -118153,11 +118688,15 @@
3241705216,3241705727,FR
3241706496,3241707519,GB
3241707520,3241709567,FR
+3241709568,3241710591,ES
+3241710592,3241711615,UA
3241711616,3241712639,NL
3241712896,3241713151,FR
3241713664,3241714175,FR
3241714688,3241715711,ES
3241715712,3241717759,FR
+3241717760,3241718783,GB
+3241718784,3241719807,DE
3241719808,3241721855,FR
3241722112,3241722367,FR
3241722880,3241723903,FI
@@ -118167,7 +118706,9 @@
3241725952,3241726975,FR
3241726976,3241727999,PL
3241728000,3241728255,DE
-3241728256,3241738239,FR
+3241728256,3241736191,FR
+3241736192,3241737215,MD
+3241737216,3241738239,RO
3241738240,3241739263,DE
3241739264,3241742335,FR
3241742336,3241743359,GB
@@ -118176,6 +118717,7 @@
3241745408,3241746431,AM
3241746432,3241747455,FR
3241747456,3241748479,ES
+3241748480,3241750527,UA
3241750528,3241751039,FR
3241751552,3241752575,MD
3241752576,3241752831,FR
@@ -118194,9 +118736,12 @@
3241777152,3241779199,FR
3241779200,3241780223,ES
3241780736,3241780991,FR
-3241781248,3241795583,FR
+3241781248,3241791487,FR
+3241791488,3241792511,TJ
+3241792512,3241793535,SK
+3241793536,3241795583,FR
3241795840,3241796095,FR
-3241796608,3241797631,GB
+3241796608,3241797631,US
3241797632,3241803775,FR
3241803776,3241803823,CY
3241803832,3241803839,GB
@@ -118213,7 +118758,7 @@
3241826304,3241827327,DE
3241827328,3241828351,BE
3241836544,3241837567,BE
-3241837568,3241838591,DE
+3241837568,3241838591,US
3241838592,3241840639,BE
3241840640,3241841663,ES
3241841664,3241842175,BE
@@ -118431,6 +118976,8 @@
3243535360,3243536383,KZ
3243536384,3243536639,AT
3243537408,3243537919,CZ
+3243538432,3243539455,CH
+3243539456,3243540479,PL
3243540480,3243540991,CZ
3243541504,3243542527,MD
3243542528,3243543551,DE
@@ -119367,9 +119914,7 @@
3245260288,3245260799,BE
3245260800,3245261823,DE
3245261824,3245262847,DK
-3245262848,3245263359,NL
-3245263360,3245263615,HK
-3245263616,3245263871,NL
+3245262848,3245263871,HK
3245263872,3245264895,DE
3245264896,3245266943,TR
3245266944,3245268991,BG
@@ -119471,11 +120016,17 @@
3245339648,3245340671,LV
3245340672,3245342719,RU
3245342720,3245408255,CN
-3245408256,3245498367,GB
+3245408256,3245473791,GB
+3245473792,3245481983,JP
+3245481984,3245498367,GB
3245498368,3245514751,AU
-3245514752,3245555711,GB
-3245555712,3245572095,AU
-3245572096,3245621247,GB
+3245514752,3245547519,GB
+3245547520,3245555711,JP
+3245555712,3245568533,AU
+3245568534,3245568534,GB
+3245568535,3245572095,AU
+3245572096,3245613055,GB
+3245613056,3245621247,JP
3245621248,3245637631,AU
3245637632,3245654015,GB
3245654016,3245670399,AU
@@ -119649,6 +120200,8 @@
3247086592,3247087615,DE
3247087616,3247088639,IT
3247088640,3247089663,DE
+3247089664,3247090687,FR
+3247090688,3247091711,PT
3247091712,3247092735,RU
3247092736,3247093759,DE
3247093760,3247094783,UA
@@ -119676,16 +120229,14 @@
3247250432,3247253503,NL
3247253504,3247255039,DE
3247255040,3247256831,NL
-3247256832,3247258879,DE
+3247257088,3247258623,DE
3247258880,3247259135,DK
3247259136,3247260671,DE
3247260672,3247266559,NL
3247266560,3247267071,DE
3247267072,3247267839,NL
3247267840,3247271679,DE
-3247271680,3247275519,NL
-3247275520,3247276031,DE
-3247276032,3247278847,NL
+3247271680,3247278847,NL
3247278848,3247279615,DE
3247279616,3247279871,NL
3247279872,3247280127,DE
@@ -119697,7 +120248,6 @@
3247299365,3247300607,GB
3247300608,3247301119,DE
3247301120,3247302143,NL
-3247302144,3247302655,DE
3247302656,3247308799,NL
3247308800,3247309055,BG
3247309056,3247309567,FI
@@ -119730,6 +120280,8 @@
3247340544,3247340799,UA
3247340800,3247341055,CH
3247341312,3247341567,DE
+3247341568,3247342591,FR
+3247342592,3247343615,DE
3247343616,3247345663,FI
3247345920,3247346175,HU
3247346944,3247347199,SI
@@ -119742,6 +120294,8 @@
3247349760,3247353855,SE
3247353856,3247356927,FI
3247356928,3247357951,DE
+3247357952,3247358975,GB
+3247358976,3247359999,IT
3247360000,3247361023,DE
3247361024,3247361279,FI
3247362048,3247362303,RO
@@ -119772,6 +120326,7 @@
3247376384,3247378431,FI
3247379200,3247379455,FI
3247379456,3247380479,NL
+3247380480,3247382527,DE
3247382528,3247390719,FI
3247390720,3247391743,RU
3247392256,3247393791,FI
@@ -119795,6 +120350,11 @@
3247703552,3247704063,FR
3247704064,3247705087,BE
3247705856,3247706111,RU
+3247706112,3247706367,JP
+3247706368,3247706623,GB
+3247706624,3247706879,US
+3247706880,3247707135,ES
+3247707136,3247708159,NL
3247708160,3247711743,ES
3247711744,3247712255,IT
3247712256,3247713279,TR
@@ -119949,6 +120509,8 @@
3248546816,3248547839,RU
3248547840,3248548863,GB
3248549632,3248549887,SE
+3248549888,3248550911,IT
+3248550912,3248551935,DE
3248551936,3248553215,NO
3248553728,3248553983,RU
3248553984,3248554239,RO
@@ -119963,7 +120525,12 @@
3248562084,3248562175,DK
3248562176,3248575487,NO
3248575488,3248576511,CZ
-3248576512,3248586751,NO
+3248576512,3248582655,NO
+3248582656,3248583679,SK
+3248583680,3248584703,IT
+3248584704,3248586751,NO
+3248586752,3248587775,LT
+3248587776,3248588799,BG
3248589312,3248589823,NO
3248589824,3248590847,FI
3248590848,3248591871,NO
@@ -120022,11 +120589,12 @@
3248791040,3248791295,BE
3248791296,3248791551,DE
3248791552,3248792063,GB
-3248792320,3248792343,GB
-3248792352,3248792399,GB
-3248792416,3248792439,GB
-3248792488,3248792527,GB
-3248792536,3248792575,GB
+3248792320,3248792335,GB
+3248792352,3248792359,GB
+3248792368,3248792399,GB
+3248792416,3248792431,GB
+3248792496,3248792527,GB
+3248792544,3248792575,GB
3248796608,3248796863,GB
3248798976,3248799231,GB
3248799736,3248799743,GB
@@ -120199,7 +120767,10 @@
3249598464,3249599487,IR
3249600256,3249600511,AT
3249600512,3249601535,UA
-3249601536,3249650687,NL
+3249601536,3249635327,NL
+3249635328,3249636351,DE
+3249636352,3249637375,CH
+3249637376,3249650687,NL
3249650688,3249651711,FI
3249651712,3249668095,NL
3249668096,3249676287,IE
@@ -120219,6 +120790,8 @@
3249698048,3249698303,PL
3249698304,3249698559,RU
3249698560,3249698815,HU
+3249698816,3249699839,RU
+3249699840,3249700863,IT
3249701120,3249701631,SE
3249701632,3249701887,RU
3249701888,3249702143,PL
@@ -120483,6 +121056,8 @@
3250277888,3250278399,UA
3250278400,3250279423,RU
3250279424,3250280447,DE
+3250280448,3250281471,SE
+3250281472,3250282495,RU
3250307072,3250323199,AT
3250323200,3250323455,RU
3250323456,3250323711,PL
@@ -120947,6 +121522,7 @@
3251239936,3251240191,IN
3251240960,3251241215,BE
3251241216,3251243007,GB
+3251243008,3251245055,RU
3251245056,3251245311,DE
3251245312,3251245567,BE
3251245568,3251245823,TR
@@ -120962,6 +121538,7 @@
3251256832,3251257343,GB
3251257344,3251259903,BE
3251260416,3251261439,FR
+3251261440,3251263487,RU
3251263488,3251265535,FR
3251265536,3251267839,NL
3251267840,3251268351,GB
@@ -120991,6 +121568,8 @@
3251302400,3251306495,LI
3251306496,3251307007,AT
3251307776,3251308031,GB
+3251308544,3251309567,RU
+3251309568,3251310591,DE
3251311104,3251311615,RS
3251311616,3251312127,GB
3251312384,3251312639,RS
@@ -121203,6 +121782,8 @@
3252518656,3252518911,DE
3252518912,3252527103,NL
3252527104,3252535295,BE
+3252539392,3252540415,DE
+3252540416,3252541439,RU
3252541952,3252542207,CI
3252542464,3252543487,DE
3252543488,3252551679,BE
@@ -121218,6 +121799,8 @@
3252567552,3252567807,RU
3252567808,3252568063,RO
3252568064,3252576255,CH
+3252576256,3252577279,DE
+3252577280,3252578303,AT
3252578816,3252579327,CH
3252579328,3252579583,FR
3252579584,3252579839,RU
@@ -121260,7 +121843,7 @@
3252643840,3252644863,AT
3252645120,3252645375,CH
3252645888,3252680703,CH
-3252680704,3252681727,RU
+3252680704,3252681727,IN
3252682240,3252682751,CH
3252682752,3252813823,HU
3252813824,3252830207,RO
@@ -121329,13 +121912,20 @@
3252945152,3252945407,GB
3252945408,3252945663,UA
3252945920,3252947455,AT
-3252947968,3252948991,RO
+3252947968,3252948991,US
3252948992,3252957183,AT
-3252959232,3252960255,RU
-3252960256,3252972543,AT
-3252972544,3252973567,RU
+3252957184,3252958207,RU
+3252958208,3252959231,UA
+3252959232,3252960255,IN
+3252960256,3252963327,AT
+3252963328,3252964351,DE
+3252964352,3252965375,DK
+3252965376,3252972543,AT
+3252972544,3252973567,JP
3252973568,3252976639,AT
3252976640,3252977663,GB
+3252977664,3252978687,DE
+3252978688,3252979711,RU
3252979712,3252980735,GB
3252980992,3252981247,GB
3252981504,3252981759,SE
@@ -121350,7 +121940,7 @@
3252984576,3252984831,GB
3252984832,3252985087,FR
3252985088,3252985343,SE
-3252985344,3252985855,RU
+3252985344,3252987903,RU
3252988416,3252988927,AT
3252989440,3252989695,PL
3252989952,3252993023,AT
@@ -121359,7 +121949,7 @@
3252995072,3252996095,CH
3252996096,3253002239,AT
3253003008,3253003263,AT
-3253003264,3253004287,RU
+3253003264,3253004287,GB
3253004288,3253004799,AT
3253004800,3253005055,CZ
3253005312,3253006335,CH
@@ -121484,9 +122074,7 @@
3253607424,3253608447,NG
3253608448,3253610495,UA
3253610496,3253611519,PL
-3253611520,3253612031,RU
-3253612032,3253612287,NL
-3253612288,3253613567,RU
+3253611520,3253613567,RU
3253613568,3253614591,ES
3253614592,3253615615,RO
3253615616,3253616639,DE
@@ -121494,8 +122082,7 @@
3253617664,3253618687,GB
3253618688,3253619711,UA
3253619712,3253620735,IT
-3253620736,3253621759,GB
-3253621760,3253622783,RU
+3253620736,3253622783,GB
3253622784,3253623807,DE
3253623808,3253624831,PL
3253624832,3253625855,UA
@@ -121677,9 +122264,7 @@
3253751232,3253751287,GB
3253751288,3253751291,ES
3253751292,3253751295,IT
-3253751296,3253752271,GB
-3253752272,3253752287,ZA
-3253752288,3253752627,GB
+3253751296,3253752627,GB
3253752628,3253752631,AG
3253752632,3253754191,GB
3253754192,3253754207,FR
@@ -121687,7 +122272,9 @@
3253755236,3253755239,IE
3253755240,3253755551,GB
3253755552,3253755559,IT
-3253755560,3253760511,GB
+3253755560,3253756807,GB
+3253756808,3253756811,NL
+3253756812,3253760511,GB
3253760512,3253760767,FR
3253760768,3253761407,GB
3253761408,3253761416,ES
@@ -121701,9 +122288,7 @@
3253763072,3253763327,SE
3253763328,3253764767,GB
3253764768,3253764783,FR
-3253764784,3253764799,GB
-3253764800,3253764831,SI
-3253764832,3253765119,GB
+3253764784,3253765119,GB
3253765120,3253765183,ES
3253765184,3253765247,FR
3253765248,3253765279,PL
@@ -121916,9 +122501,7 @@
3254137856,3254138879,IE
3254138880,3254156799,CH
3254156800,3254157055,LI
-3254157056,3254177279,CH
-3254177280,3254177535,LI
-3254177536,3254255615,CH
+3254157056,3254255615,CH
3254255616,3254256127,RE
3254256128,3254256639,GP
3254256640,3254257151,YT
@@ -121945,9 +122528,7 @@
3254487200,3254487263,FR
3254487264,3254487295,KM
3254487296,3254487419,CF
-3254487420,3254488431,FR
-3254488432,3254488447,MG
-3254488448,3254489087,FR
+3254487420,3254489087,FR
3254489088,3254489343,DZ
3254489344,3254489365,FR
3254489366,3254489367,MR
@@ -122011,6 +122592,8 @@
3254616064,3254648831,FR
3254648832,3254649855,AL
3254649856,3254650879,SE
+3254650880,3254651903,ES
+3254651904,3254652927,IT
3254653440,3254654847,DE
3254654848,3254654975,FI
3254654976,3254655999,IT
@@ -122178,7 +122761,6 @@
3254836224,3254836479,PL
3254836736,3254836991,AT
3254837248,3254837503,HR
-3254837504,3254837759,RU
3254837760,3254838015,IE
3254838528,3254838783,CH
3254838784,3254839039,AT
@@ -122276,9 +122858,16 @@
3254962422,3254962422,NL
3254962423,3255019519,FR
3255019520,3255019775,GP
-3255019776,3255067647,FR
+3255019776,3255052287,FR
+3255052288,3255053311,IT
+3255053312,3255054335,SE
+3255058432,3255059455,GB
+3255059456,3255060479,EE
+3255060480,3255067647,FR
3255067648,3255068671,ES
3255068672,3255078911,FR
+3255078912,3255079935,IT
+3255079936,3255080959,RU
3255080960,3255081471,FR
3255081984,3255083007,NL
3255087104,3255107583,FR
@@ -122286,25 +122875,40 @@
3255113728,3255113983,GB
3255113984,3255114751,NL
3255115264,3255117823,FR
+3255117824,3255118847,IR
+3255118848,3255119871,GB
3255120640,3255120895,DE
3255121664,3255121919,FR
3255121920,3255122943,ES
3255123712,3255123967,DE
+3255123968,3255124991,ES
+3255124992,3255126015,HR
3255126016,3255126527,FR
3255128064,3255128575,FR
3255129856,3255130111,HR
3255130112,3255130623,FR
3255131136,3255131647,RU
-3255131648,3255132159,TR
+3255131648,3255132159,RO
+3255132160,3255132671,NL
+3255132672,3255132927,UA
+3255132928,3255133183,NL
+3255133184,3255134207,DE
3255134208,3255135231,GB
3255135232,3255140351,FR
3255140352,3255141375,CH
3255141376,3255146495,FR
+3255146496,3255148543,DE
3255148544,3255149567,SY
3255150080,3255152639,FR
+3255152640,3255153663,IR
+3255153664,3255154687,EE
3255154688,3255155711,AT
3255155712,3255160831,FR
+3255164928,3255165951,DE
+3255165952,3255166975,CH
3255166976,3255169023,FR
+3255169024,3255170047,DE
+3255170048,3255171071,PL
3255171072,3255172095,RO
3255172352,3255172607,DE
3255173120,3255173631,SH
@@ -122500,8 +123104,7 @@
3255416320,3255417855,DE
3255417856,3255418879,GB
3255418880,3255422975,DE
-3255422976,3255423999,RU
-3255424000,3255425023,LV
+3255422976,3255425023,LV
3255425024,3255426047,DE
3255426048,3255426559,IT
3255426816,3255427071,PL
@@ -122604,7 +123207,9 @@
3255544576,3255544831,AT
3255544832,3255548927,CH
3255548928,3255549951,DE
-3255549952,3255558143,CH
+3255549952,3255550975,PL
+3255550976,3255551999,DE
+3255552000,3255558143,CH
3255558400,3255558655,UA
3255558912,3255559167,GB
3255559168,3255559679,CH
@@ -122625,6 +123230,8 @@
3255631872,3255649279,NL
3255649280,3255650303,DE
3255650304,3255652351,NL
+3255652352,3255653375,DE
+3255653376,3255654399,ES
3255654400,3255659519,NL
3255660288,3255660543,GR
3255660544,3255663615,NL
@@ -122659,7 +123266,8 @@
3255751168,3255751423,DK
3255751424,3255752959,SE
3255752960,3255753215,RO
-3255753216,3255762431,SE
+3255753216,3255753471,SE
+3255753728,3255762431,SE
3255762432,3255762943,BE
3255762944,3255771135,DE
3255779328,3255787519,DE
@@ -122725,21 +123333,29 @@
3256417792,3256418303,GB
3256418304,3256483839,DE
3256483840,3256484095,NL
-3256484864,3256485887,LB
+3256484864,3256485887,NG
3256485888,3256487935,NL
-3256487936,3256488959,RU
+3256487936,3256488959,GB
3256489472,3256489983,GR
3256489984,3256490239,BE
3256490496,3256490751,CH
3256491008,3256491263,NL
-3256492032,3256509439,NL
-3256509440,3256510463,RU
+3256492032,3256502271,NL
+3256502272,3256503295,IR
+3256503296,3256509439,NL
+3256509440,3256510463,GB
3256510464,3256513023,NL
-3256513536,3256514559,RU
+3256513536,3256514559,GB
3256514560,3256524287,NL
3256524288,3256524799,DE
3256524800,3256525823,NL
3256525824,3256526847,UA
+3256526848,3256527871,NL
+3256527872,3256528895,ES
+3256528896,3256529151,US
+3256529152,3256529407,RO
+3256529408,3256529919,US
+3256529920,3256530943,DE
3256530944,3256531967,NL
3256531968,3256532991,DE
3256532992,3256549375,NL
@@ -122782,7 +123398,9 @@
3256649728,3256650751,GB
3256650752,3256652799,UA
3256652800,3256653823,DE
-3256653824,3256656895,RU
+3256653824,3256654847,RU
+3256654848,3256655871,TR
+3256655872,3256656895,RU
3256656896,3256657919,GB
3256657920,3256658943,PL
3256658944,3256662015,UA
@@ -122902,10 +123520,17 @@
3256898048,3256898303,GB
3256898560,3256899071,TR
3256899072,3256899583,RU
+3256899584,3256900607,RO
+3256900608,3256901631,DE
3256913920,3256914943,SE
3256915456,3256915711,RS
3256915712,3256915967,SE
-3256918016,3256934399,GB
+3256915968,3256916991,BE
+3256916992,3256918015,RU
+3256918016,3256920063,GB
+3256920064,3256921087,FR
+3256921088,3256922111,IT
+3256922112,3256934399,GB
3256942592,3256944639,GB
3256945408,3256945663,GB
3256945664,3256945919,SI
@@ -122919,7 +123544,8 @@
3256950528,3256950783,GB
3256951040,3256951295,GB
3256951808,3256952831,RU
-3256954880,3256958975,GB
+3256952832,3256953855,MD
+3256953856,3256958975,GB
3256958976,3256959999,RO
3256960000,3256960255,SA
3256960256,3256960511,HU
@@ -122948,7 +123574,10 @@
3256972288,3256973311,PL
3256973312,3256973823,DE
3256973824,3256975359,IR
-3256975360,3256988671,GB
+3256975360,3256981503,GB
+3256981504,3256982527,CH
+3256982528,3256983551,DE
+3256983552,3256988671,GB
3256988672,3256988927,RU
3256988928,3256989183,UA
3256989440,3256989695,GB
@@ -122971,10 +123600,15 @@
3257029632,3257030655,SG
3257030656,3257031679,US
3257031680,3257032703,GB
-3257036800,3257049087,GB
+3257036800,3257040895,GB
+3257040896,3257041919,RO
+3257041920,3257042943,FI
+3257042944,3257047039,GB
+3257047040,3257048063,IE
+3257048064,3257049087,DE
3257049088,3257050111,IR
3257050112,3257057279,GB
-3257057280,3257058303,DE
+3257057280,3257058303,US
3257058816,3257059071,PL
3257059328,3257060351,DE
3257060352,3257065471,GB
@@ -123006,6 +123640,8 @@
3257144576,3257144831,GB
3257144832,3257145087,FR
3257145088,3257145343,GB
+3257145344,3257146367,IE
+3257146368,3257147391,ES
3257151488,3257154047,GB
3257154560,3257155583,DE
3257155584,3257157631,GB
@@ -123022,6 +123658,8 @@
3257171968,3257174015,GB
3257174016,3257174271,US
3257175040,3257176063,RO
+3257176064,3257177087,DE
+3257177088,3257178111,RU
3257178112,3257180159,GB
3257180160,3257180415,TR
3257180416,3257180671,RU
@@ -123040,7 +123678,11 @@
3257204736,3257225215,AT
3257225216,3257226239,NL
3257226240,3257227263,DE
-3257229312,3257268223,AT
+3257227264,3257228287,HU
+3257228288,3257229311,TR
+3257229312,3257230335,RO
+3257230336,3257231359,UA
+3257231360,3257268223,AT
3257268224,3257268479,UA
3257268480,3257268735,SE
3257269248,3257269503,IT
@@ -123053,6 +123695,8 @@
3257335808,3257342975,DE
3257342976,3257343999,FR
3257348096,3257352191,DE
+3257352192,3257353215,RU
+3257353216,3257354239,CZ
3257354240,3257356799,DE
3257357312,3257357567,PT
3257357568,3257357823,SI
@@ -123065,9 +123709,13 @@
3257372416,3257372671,GB
3257372672,3257373695,IT
3257374208,3257376767,DE
+3257376768,3257377791,HU
+3257377792,3257378815,GB
3257378816,3257379839,HU
3257379840,3257385983,DE
3257385984,3257387007,PL
+3257387008,3257388031,NL
+3257388032,3257389055,DE
3257389056,3257390079,FR
3257390592,3257390847,DE
3257391104,3257393151,DE
@@ -123092,6 +123740,10 @@
3257472512,3257475071,GB
3257475072,3257476095,DK
3257476864,3257477119,DE
+3257477120,3257478143,BA
+3257478144,3257479167,HU
+3257479168,3257480191,IR
+3257480192,3257481215,RU
3257481472,3257481727,DE
3257482240,3257482751,GB
3257482752,3257483007,NL
@@ -123163,7 +123815,6 @@
3257743616,3257747199,NL
3257747200,3257747455,DE
3257747456,3257748479,NL
-3257748480,3257749503,DE
3257749504,3257753087,NL
3257753088,3257756415,DE
3257756416,3257761279,NL
@@ -123173,7 +123824,7 @@
3257763840,3257765375,NL
3257765376,3257768703,DE
3257768704,3257771263,NL
-3257771264,3257772543,DE
+3257771264,3257772287,DE
3257772544,3257775359,NL
3257775360,3257775615,DE
3257775616,3257776127,NL
@@ -123195,14 +123846,20 @@
3257926144,3257926399,AT
3257926656,3257949183,AT
3257949184,3257950207,NL
+3257950208,3257951231,RU
+3257951232,3257952255,DE
3257952256,3257953279,CH
3257953280,3257961471,AT
3257961472,3257962495,ES
+3257962496,3257963519,DE
+3257963520,3257964543,ES
3257964544,3257965567,RU
3257965568,3257967615,AT
3257967616,3257968639,LT
3257968640,3257969663,DE
3257969664,3257970175,AT
+3257970688,3257971711,ES
+3257971712,3257972735,IT
3257972736,3257974783,AT
3257975296,3257975807,DE
3257975808,3257977855,AT
@@ -123222,6 +123879,7 @@
3257981440,3257981695,RU
3257981696,3257981951,PL
3257981952,3257982975,FI
+3257982976,3257985023,DE
3257985024,3257986047,GB
3257986048,3257987327,AT
3257987328,3257987583,CZ
@@ -123231,6 +123889,8 @@
3257990656,3257990911,AT
3257991168,3257992191,ES
3257992960,3257993215,DE
+3257993216,3257994239,ES
+3257994240,3257995263,GB
3257996032,3257996287,DE
3257996544,3257996799,CH
3257996800,3258003967,DE
@@ -123242,7 +123902,8 @@
3258012928,3258013183,DE
3258013696,3258014719,NL
3258014720,3258014975,DE
-3258017792,3258018815,PL
+3258015744,3258016767,LT
+3258016768,3258018815,PL
3258019328,3258019583,DE
3258019840,3258021887,DE
3258021888,3258022911,RU
@@ -123256,6 +123917,10 @@
3258059008,3258059519,RU
3258059520,3258059775,RO
3258059776,3258060799,RU
+3258060800,3258061055,NL
+3258061056,3258061567,GB
+3258061568,3258061823,DE
+3258061824,3258062847,NL
3258062848,3258063103,RU
3258063360,3258063871,CZ
3258063872,3258064127,AT
@@ -123367,6 +124032,8 @@
3258104320,3258104575,PL
3258104576,3258104831,DE
3258105600,3258105855,DE
+3258105856,3258106879,US
+3258106880,3258107903,DE
3258107904,3258109951,CZ
3258109952,3258110207,DK
3258110464,3258110975,CZ
@@ -123389,16 +124056,22 @@
3258253312,3258254335,NL
3258254336,3258255359,FR
3258255360,3258265599,NL
+3258265600,3258266623,FR
+3258266624,3258267647,RU
3258267648,3258268671,NL
3258268672,3258268927,IT
3258269184,3258269695,NL
+3258269696,3258271743,DE
3258271744,3258272767,NL
3258272768,3258273791,FR
3258273792,3258279935,NL
+3258279936,3258281983,DE
3258281984,3258284031,NL
3258284288,3258284543,NL
3258285056,3258286079,RS
3258286080,3258288127,NL
+3258288128,3258289151,GB
+3258289152,3258290175,DE
3258294272,3258297343,NL
3258297344,3258297599,BE
3258297600,3258298111,NL
@@ -123431,38 +124104,44 @@
3258362892,3258362892,GB
3258362893,3258363903,IM
3258363904,3258364927,RU
-3258364928,3258365951,XK
+3258364928,3258365951,RS
3258365952,3258366975,UA
3258366976,3258367999,PL
3258368000,3258384383,KW
3258384384,3258385407,DE
3258385408,3258386431,PL
-3258388480,3258395647,DE
+3258386432,3258387455,EE
+3258387456,3258395647,DE
3258395648,3258396671,IT
3258396672,3258404863,DE
-3258404864,3258405887,RO
+3258404864,3258405887,US
3258405888,3258407935,DE
3258407936,3258408959,UZ
-3258408960,3258420735,DE
-3258420736,3258420991,SC
-3258420992,3258422271,DE
+3258408960,3258422271,DE
3258422272,3258423295,IT
3258423296,3258424319,RO
3258424320,3258426367,DE
3258426368,3258427391,RU
3258427648,3258427903,RO
3258427904,3258428159,DE
-3258428416,3258441727,DE
-3258443776,3258444287,DE
+3258428416,3258444287,DE
3258444800,3258445823,RU
3258445824,3258447871,DE
3258447872,3258448895,SE
3258448896,3258449919,DE
-3258449920,3258486783,CH
+3258449920,3258468351,CH
+3258468352,3258469119,HR
+3258469120,3258469375,SI
+3258469376,3258470399,US
+3258470400,3258486783,CH
3258486784,3258487807,LI
3258487808,3258488831,GB
3258488832,3258495999,CH
3258496000,3258497023,GB
+3258497024,3258498047,TR
+3258498048,3258499071,CH
+3258499072,3258500095,ES
+3258500096,3258501119,GB
3258501120,3258503935,CH
3258503936,3258504191,PL
3258504704,3258504959,DE
@@ -123510,7 +124189,9 @@
3258643968,3258644223,RU
3258644224,3258644479,PS
3258644480,3258646527,SY
-3258646528,3258659839,DE
+3258646528,3258652671,DE
+3258652672,3258653695,HU
+3258653696,3258659839,DE
3258659840,3258660863,SE
3258660864,3258681343,DE
3258681344,3258682367,NL
@@ -123533,6 +124214,11 @@
3258703616,3258707967,DE
3258707968,3258708991,CZ
3258709760,3258710015,DE
+3258710016,3258710271,RO
+3258710272,3258710527,FR
+3258710528,3258710783,SE
+3258710784,3258711039,US
+3258711040,3258712063,DE
3258712064,3258728447,GB
3258728448,3258729471,FR
3258729472,3258729727,DE
@@ -123557,6 +124243,8 @@
3258764288,3258764543,DE
3258764800,3258765055,BE
3258765056,3258765311,NL
+3258765312,3258766335,IR
+3258766336,3258767359,IT
3258767360,3258767615,GB
3258767616,3258767871,CH
3258767872,3258769919,GB
@@ -123583,9 +124271,13 @@
3258795008,3258796031,PL
3258796032,3258797055,EE
3258797568,3258798079,GB
+3258798080,3258799103,RO
+3258799104,3258800127,NL
3258800128,3258801151,AM
3258801152,3258802175,GB
3258802176,3258806271,LU
+3258806272,3258807295,DE
+3258807296,3258808319,TR
3258808832,3258809343,GB
3258809344,3258810367,SY
3258814464,3258816511,GB
@@ -123602,22 +124294,31 @@
3258853376,3258854399,RU
3258854400,3258856447,GB
3258856448,3258857471,FR
+3258857472,3258858495,ES
+3258858496,3258859519,IT
3258859520,3258859775,BY
3258859776,3258860031,GB
3258860544,3258867711,GB
3258867712,3258868735,LT
3258868736,3258869759,GB
+3258869760,3258871807,RU
3258871808,3258875903,GB
3258880000,3258881023,GB
3258881024,3258882047,SA
3258882048,3258883071,SE
3258883072,3258883327,GB
+3258884096,3258885119,FR
+3258885120,3258886143,RU
3258886144,3258887167,DK
3258887168,3258889215,GB
3258889216,3258890239,NL
3258890240,3258894335,GB
3258894336,3258895359,IT
3258895360,3258898431,GB
+3258898432,3258899455,DK
+3258899456,3258900479,DE
+3258900480,3258901503,GR
+3258901504,3258902527,NL
3258902528,3258902783,GB
3258903040,3258903295,FR
3258903296,3258903551,GB
@@ -123806,15 +124507,19 @@
3259652096,3259656191,GB
3259658240,3259760639,GB
3259760640,3259768831,DE
-3259768832,3259769855,RO
-3259770368,3259789311,DE
+3259768832,3259769855,US
+3259770368,3259790335,DE
+3259790336,3259791359,IT
3259791872,3259792383,DE
3259792384,3259793407,RU
+3259793408,3259795455,NL
3259795456,3259796479,LV
3259796480,3259807743,DE
3259808512,3259808767,DE
3259808768,3259809791,UA
3259809792,3259811839,DE
+3259811840,3259812863,SE
+3259812864,3259813887,MD
3259813888,3259814399,DE
3259814400,3259814655,AT
3259814656,3259821055,DE
@@ -123854,8 +124559,7 @@
3260021760,3260022271,GR
3260022272,3260022783,NL
3260022784,3260284927,GB
-3260284928,3260415487,RU
-3260415488,3260415999,BY
+3260284928,3260415999,RU
3260416000,3260481535,FI
3260481536,3260503039,RU
3260503040,3260504063,US
@@ -123937,6 +124641,8 @@
3260678144,3260743679,IL
3260743680,3260809215,JP
3260809216,3260874751,PL
+3260891136,3260892159,EE
+3260892160,3260893183,DE
3260893184,3260894207,SE
3260894208,3260895231,AT
3260895232,3260898303,SE
@@ -123966,8 +124672,10 @@
3261270016,3261271039,FR
3261271040,3261272063,DE
3261276160,3261278207,DE
+3261278208,3261279231,NO
+3261279232,3261280255,NL
3261280256,3261282559,DE
-3261283328,3261284351,RU
+3261283328,3261284351,JP
3261284352,3261292543,DE
3261293056,3261293567,DE
3261293568,3261294591,FR
@@ -124019,8 +124727,15 @@
3261570304,3261570559,IT
3261570560,3261595647,SE
3261595648,3261595903,NL
-3261596672,3261597695,RU
-3261601792,3261632511,NL
+3261596672,3261597695,TR
+3261597696,3261598719,RU
+3261598720,3261599743,LU
+3261599744,3261600767,FR
+3261600768,3261601791,UA
+3261601792,3261622271,NL
+3261622272,3261623295,LT
+3261623296,3261624319,DE
+3261624320,3261632511,NL
3261632512,3261633535,RU
3261634048,3261634559,NL
3261634560,3261635583,DE
@@ -124087,6 +124802,8 @@
3261798400,3261805567,AT
3261805568,3261806591,DE
3261806592,3261810687,AT
+3261810688,3261811711,CZ
+3261811712,3261812735,NL
3261812736,3261812991,RU
3261812992,3261815807,AT
3261816064,3261816575,AT
@@ -124110,20 +124827,28 @@
3261825024,3261827071,AT
3261827072,3261828095,ES
3261828096,3261833215,AT
-3261833216,3261834239,RU
+3261833216,3261834239,IN
3261834752,3261837311,AT
+3261837312,3261838335,UA
+3261838336,3261839359,NL
3261839360,3261844479,AT
3261844480,3261845503,DE
-3261845504,3261857791,AT
+3261845504,3261855743,AT
+3261855744,3261856767,GB
+3261856768,3261857791,DE
3261857792,3261923327,CZ
3261923328,3261988863,NL
3261988864,3261989119,SE
3261990400,3261990655,UA
+3261990912,3261991935,RU
+3261991936,3261992959,DE
3261993472,3261993727,RU
3261994752,3261995263,FI
3261995264,3261995519,DE
3261995520,3261995775,PL
3261996800,3262001151,FI
+3262001152,3262002175,DE
+3262002176,3262003199,RU
3262003200,3262004223,IT
3262004736,3262005247,FI
3262005248,3262005759,PL
@@ -124158,6 +124883,8 @@
3262028544,3262028799,AE
3262028800,3262029823,DE
3262030848,3262031871,FR
+3262031872,3262032895,TR
+3262032896,3262033919,DE
3262033920,3262034511,FI
3262034512,3262034519,AX
3262034520,3262034943,FI
@@ -124239,14 +124966,22 @@
3262151936,3262152191,DE
3262152664,3262152671,DE
3262152704,3262185471,AT
-3262185472,3262196223,DE
+3262185472,3262191615,DE
+3262191616,3262192639,RU
+3262192640,3262193663,ES
+3262193664,3262196223,DE
3262196736,3262197759,GB
-3262197760,3262203903,DE
+3262197760,3262201855,DE
+3262201856,3262202879,US
+3262203648,3262203903,DE
3262203904,3262204927,CZ
3262204928,3262207999,DE
3262208000,3262209023,IT
3262209280,3262209535,DE
-3262210048,3262224383,DE
+3262210048,3262212095,DE
+3262212096,3262213119,RU
+3262213120,3262214143,GB
+3262214144,3262224383,DE
3262224896,3262225151,AT
3262225408,3262226431,ES
3262226432,3262227455,DE
@@ -124260,6 +124995,7 @@
3262239744,3262240767,GB
3262240768,3262243327,DE
3262243840,3262244863,CH
+3262244864,3262246911,RU
3262246912,3262283775,DE
3262283776,3262284799,RU
3262284800,3262285823,UA
@@ -126253,13 +126989,14 @@
3262682880,3262686207,NL
3262686208,3262686463,DE
3262686464,3262687743,NL
-3262687744,3262689023,DE
+3262687744,3262687999,DE
+3262688256,3262689023,DE
3262689024,3262690815,NL
3262690816,3262691583,DE
3262691584,3262692607,NL
3262692608,3262701567,DE
3262701568,3262703103,NL
-3262703104,3262704383,DE
+3262703360,3262704383,DE
3262704384,3262707807,NL
3262707808,3262707839,DE
3262707840,3262707967,NL
@@ -126286,9 +127023,13 @@
3262832640,3262840319,DE
3262840320,3262906367,NL
3262906368,3262914559,CH
+3262922752,3262923775,AT
+3262923776,3262924799,ES
3262924800,3262925823,IT
3262926336,3262954495,CH
3262954496,3262955519,LI
+3262955520,3262956543,FR
+3262956544,3262957567,NL
3262957568,3262958591,CH
3262958592,3262959615,DE
3262959616,3262961663,CH
@@ -126336,7 +127077,7 @@
3263084544,3263085567,RO
3263085568,3263086591,NL
3263086592,3263086847,DK
-3263086848,3263087103,NL
+3263086848,3263087103,FR
3263087360,3263087871,DE
3263087872,3263088127,SI
3263088128,3263088383,DE
@@ -126394,17 +127135,21 @@
3263107072,3263109119,US
3263109120,3263109951,DE
3263109952,3263109959,FR
-3263109960,3263130623,DE
+3263109960,3263129599,DE
+3263130368,3263130623,DE
3263130624,3263131647,IQ
-3263131648,3263137791,DE
+3263131648,3263132671,RU
+3263132672,3263133695,NO
+3263133696,3263137791,DE
3263137792,3263138303,PL
3263138304,3263138559,DE
3263138560,3263138815,AT
-3263138816,3263144959,DE
+3263138816,3263143935,DE
+3263144192,3263144447,DE
3263144960,3263145983,EE
3263145984,3263165439,DE
3263165440,3263167487,FR
-3263167488,3263168511,DE
+3263168000,3263168255,DE
3263168512,3263430655,GB
3263430656,3263433471,SE
3263433472,3263433727,NO
@@ -126420,9 +127165,7 @@
3263446272,3263446527,CH
3263446528,3263447039,DE
3263447040,3263449087,SE
-3263449088,3263449343,GB
-3263449344,3263449599,SE
-3263449600,3263450111,GB
+3263449088,3263450111,GB
3263450112,3263450367,DK
3263450368,3263458047,SE
3263458048,3263458303,DE
@@ -126649,7 +127392,8 @@
3264345088,3264346111,NL
3264346112,3264347135,SE
3264347136,3264348159,DE
-3264352256,3264355327,FR
+3264352256,3264354303,FR
+3264355072,3264355327,FR
3264355328,3264356351,ES
3264356352,3264357375,LB
3264357632,3264357887,DE
@@ -126657,7 +127401,8 @@
3264359936,3264360191,FR
3264360448,3264362495,FR
3264362496,3264363519,RS
-3264363520,3264369151,FR
+3264364032,3264364287,FR
+3264364544,3264369151,FR
3264369664,3264370687,RU
3264370688,3264371711,FR
3264372736,3264373759,FR
@@ -126707,11 +127452,16 @@
3264409600,3264410623,RU
3264410624,3264411647,NO
3264411648,3264413695,PL
-3264413696,3264423935,CH
+3264417792,3264419839,CH
+3264419840,3264420863,IT
+3264420864,3264422911,RU
+3264422912,3264423935,GB
3264423936,3264424959,BE
3264424960,3264425983,CH
3264425984,3264427007,RU
-3264427008,3264430079,CH
+3264427008,3264428031,CH
+3264428032,3264429055,DE
+3264429056,3264430079,AT
3264430592,3264430847,CH
3264431104,3264431615,LI
3264431616,3264431871,CH
@@ -126720,12 +127470,16 @@
3264441344,3264441599,PL
3264442368,3264442879,CH
3264443392,3264444415,ES
+3264444416,3264445439,GB
+3264445440,3264446463,LB
3264446464,3264447487,DE
3264447488,3264447743,CH
3264447744,3264447999,DE
3264448000,3264450559,CH
3264450560,3264451583,ES
3264452352,3264452607,CH
+3264452608,3264453631,FR
+3264453632,3264454655,PS
3264454656,3264455679,CH
3264455680,3264456703,IR
3264456704,3264457215,CH
@@ -126955,12 +127709,19 @@
3264929792,3264937983,SK
3264937984,3265003519,GB
3265003520,3265005567,DE
+3265005568,3265006591,IT
+3265006592,3265007615,NL
+3265007616,3265008639,PL
+3265008640,3265009663,DE
3265009664,3265009919,FR
3265009920,3265010175,DE
3265010688,3265018879,DE
3265018880,3265019903,HK
-3265036288,3265043711,DE
-3265043712,3265044479,GB
+3265036288,3265038335,DE
+3265040384,3265042943,DE
+3265043456,3265043711,DE
+3265043712,3265043967,HK
+3265043968,3265044479,GB
3265044736,3265044991,DE
3265045760,3265046015,TR
3265046528,3265048575,DE
@@ -126969,9 +127730,10 @@
3265053696,3265054207,DE
3265055232,3265055743,FR
3265056256,3265056511,DE
-3265056768,3265063935,DE
+3265056768,3265060863,DE
+3265062912,3265063935,DE
3265063936,3265064959,TR
-3265064960,3265069055,DE
+3265064960,3265067007,DE
3265069056,3265134591,FI
3265134592,3265134847,CH
3265134848,3265134879,BE
@@ -126981,7 +127743,9 @@
3265135040,3265135071,BE
3265135072,3265136127,CH
3265136128,3265136383,GB
-3265136384,3265137551,CH
+3265136384,3265136463,CH
+3265136464,3265136467,FR
+3265136468,3265137551,CH
3265137552,3265137555,NL
3265137556,3265137983,CH
3265137984,3265138047,NL
@@ -127233,17 +127997,19 @@
3266543616,3266576383,IT
3266576384,3266578431,DE
3266578432,3266579455,AT
-3266579456,3266591743,DE
+3266579456,3266584575,DE
+3266588672,3266591743,DE
3266591744,3266592767,IE
3266592768,3266603007,DE
3266603008,3266604031,GB
-3266604032,3266606079,DE
+3266604800,3266606079,DE
3266606080,3266607103,FR
3266607104,3266616575,DE
3266617328,3266617343,GB
-3266617344,3266623487,DE
+3266617344,3266621439,DE
3266623488,3266624511,GB
-3266624512,3266627583,DE
+3266625024,3266625279,DE
+3266625536,3266627583,DE
3266627584,3266628095,SE
3266628096,3266629119,DE
3266629632,3266632703,DE
@@ -127274,7 +128040,9 @@
3266797824,3266798207,ES
3266798208,3266798847,GB
3266798848,3266798879,CZ
-3266798880,3266802367,GB
+3266798880,3266801845,GB
+3266801846,3266801846,BG
+3266801847,3266802367,GB
3266802368,3266802399,BG
3266802400,3266803215,GB
3266803216,3266803219,FR
@@ -127295,7 +128063,7 @@
3267041280,3267042303,GB
3267042304,3267043327,UA
3267043328,3267044351,GB
-3267044352,3267045375,RU
+3267044352,3267045375,TR
3267045376,3267046399,PL
3267046400,3267047423,NL
3267047424,3267048447,UA
@@ -127439,7 +128207,8 @@
3268223200,3268223231,GB
3268224768,3268225023,US
3268226368,3268226399,GB
-3268226496,3268226655,GB
+3268226496,3268226631,GB
+3268226640,3268226655,GB
3268226688,3268226815,GB
3268227328,3268227391,GB
3268227520,3268227615,GB
@@ -127453,13 +128222,12 @@
3268232384,3268232415,GB
3268232480,3268232575,GB
3268232960,3268233087,GB
-3268233984,3268234047,GB
3268234176,3268234239,GB
3268234560,3268234623,GB
3268235008,3268235263,GB
3268235264,3268235519,DE
3268235520,3268235775,GB
-3268235936,3268236031,GB
+3268235968,3268236031,GB
3268236192,3268236207,GB
3268236544,3268236607,GB
3268236672,3268236799,GB
@@ -127469,9 +128237,9 @@
3268238384,3268238399,GB
3268238472,3268238511,GB
3268238536,3268238543,GB
-3268238552,3268238623,GB
-3268238632,3268238783,GB
-3268238816,3268238831,GB
+3268238560,3268238623,GB
+3268238632,3268238719,GB
+3268238752,3268238783,GB
3268239584,3268240127,GB
3268240160,3268240191,GB
3268240384,3268240399,GB
@@ -127488,7 +128256,6 @@
3268243328,3268243391,GB
3268244776,3268244783,GB
3268244792,3268244799,GB
-3268245504,3268245759,GB
3268246272,3268246783,GB
3268246976,3268246991,GB
3268248320,3268248447,GB
@@ -127512,7 +128279,8 @@
3268257416,3268257419,GB
3268257432,3268257439,IT
3268257464,3268257471,GB
-3268257488,3268257527,GB
+3268257488,3268257503,GB
+3268257512,3268257527,GB
3268258560,3268258623,GB
3268258688,3268258751,GB
3268259520,3268259527,GB
@@ -127538,7 +128306,6 @@
3268267616,3268267647,GB
3268267744,3268267775,GB
3268267952,3268267959,GB
-3268268032,3268272127,GB
3268272728,3268272735,GB
3268273024,3268273151,GB
3268274112,3268274175,GB
@@ -127667,7 +128434,6 @@
3269291776,3269292287,ES
3269293120,3269293151,DE
3269293208,3269293215,DE
-3269293248,3269293279,DE
3269293376,3269293391,DE
3269293856,3269293887,DE
3269293920,3269293951,DE
@@ -127716,8 +128482,8 @@
3269459968,3269525503,ES
3269525504,3269591039,IR
3269591040,3269621759,RU
-3269621760,3269623551,BY
-3269623552,3269656575,RU
+3269621760,3269623295,BY
+3269623296,3269656575,RU
3269656576,3269722111,GB
3269722112,3269787647,CZ
3269787648,3269853183,NL
@@ -128051,7 +128817,8 @@
3271753728,3271770111,FR
3271770112,3271786495,AT
3271786496,3271788543,UA
-3271788544,3271790591,RU
+3271788544,3271789567,TR
+3271789568,3271790591,RU
3271790592,3271791615,LV
3271791616,3271792639,UA
3271792640,3271793663,PL
@@ -128086,7 +128853,8 @@
3271910400,3271910911,DK
3271910912,3271911423,LV
3271911424,3271911935,LI
-3271911936,3271912959,UA
+3271911936,3271912447,UA
+3271912448,3271912959,RU
3271912960,3271913215,SK
3271913216,3271913471,SE
3271913472,3271913983,NO
@@ -128213,11 +128981,11 @@
3272213632,3272213639,NL
3272213656,3272213663,IT
3272213672,3272213679,IT
-3272213696,3272213735,IT
3272213752,3272213759,IT
3272213760,3272214015,NL
3272214016,3272214271,ES
-3272214272,3272214351,GB
+3272214272,3272214303,GB
+3272214336,3272214351,GB
3272214352,3272214407,FR
3272214432,3272214463,SE
3272214528,3272215039,FR
@@ -128235,6 +129003,7 @@
3272216040,3272216047,GB
3272216048,3272216055,IT
3272216216,3272216223,FR
+3272216264,3272216271,IT
3272216480,3272216480,IR
3272216992,3272217007,GB
3272217088,3272217151,GB
@@ -128245,7 +129014,7 @@
3272217344,3272217599,GB
3272217600,3272217631,CH
3272217856,3272217875,ES
-3272217880,3272217895,IT
+3272217880,3272217887,IT
3272217896,3272217919,ES
3272217920,3272217983,DE
3272217984,3272218079,ES
@@ -128273,8 +129042,8 @@
3272223024,3272223039,GB
3272223232,3272223487,NL
3272223488,3272223503,SG
-3272223520,3272223551,HK
-3272223744,3272225023,GB
+3272223744,3272224511,GB
+3272224768,3272225023,GB
3272225280,3272225535,IT
3272225536,3272225791,GB
3272225792,3272225815,IT
@@ -128287,9 +129056,7 @@
3272227360,3272227511,GB
3272227520,3272227583,GB
3272227584,3272227839,FR
-3272227840,3272228095,ES
-3272228096,3272228223,GB
-3272228224,3272228351,ES
+3272227840,3272228351,ES
3272228352,3272228607,FR
3272228624,3272228631,CY
3272228632,3272228639,NL
@@ -128324,7 +129091,7 @@
3272267264,3272267519,RU
3272267776,3272268031,LV
3272268032,3272268287,MT
-3272268288,3272268543,UA
+3272268288,3272268543,GI
3272268800,3272269055,IL
3272269056,3272269311,GB
3272269568,3272351743,GB
@@ -128340,7 +129107,8 @@
3272359936,3272368127,RU
3272368128,3272376319,KZ
3272376320,3272384511,SK
-3272384512,3272392703,LT
+3272384512,3272392447,LT
+3272392448,3272392703,NL
3272392704,3272400895,AT
3272401184,3272401199,SG
3272401216,3272401247,PL
@@ -128443,7 +129211,7 @@
3272871936,3272872959,FI
3272872960,3272873983,DE
3272873984,3272875007,BG
-3272875008,3272876031,RU
+3272875008,3272876031,UA
3272876032,3272884223,NL
3272884224,3272892415,DE
3272892416,3272892927,UA
@@ -128617,8 +129385,10 @@
3273329424,3273329439,DE
3273329440,3273329599,GB
3273329632,3273329639,GB
-3273329664,3273329887,GB
-3273329904,3273330171,GB
+3273329664,3273329823,GB
+3273329832,3273329887,GB
+3273329904,3273330111,GB
+3273330128,3273330171,GB
3273330176,3273330183,IR
3273330232,3273330235,GB
3273330288,3273330295,IE
@@ -128652,7 +129422,7 @@
3273335936,3273335999,DE
3273336848,3273336863,DE
3273336864,3273336871,GB
-3273336872,3273336895,DE
+3273336880,3273336895,DE
3273336960,3273337087,DE
3273337856,3273338111,DE
3273338624,3273338879,DE
@@ -128664,7 +129434,7 @@
3273339984,3273340095,GB
3273340096,3273340111,GI
3273340112,3273340119,GB
-3273340144,3273340415,GB
+3273340160,3273340415,GB
3273340928,3273341711,FR
3273341752,3273341823,FR
3273341856,3273341951,FR
@@ -128676,7 +129446,7 @@
3273342240,3273342255,AE
3273342464,3273342975,DE
3273342976,3273343999,GB
-3273344000,3273344767,DE
+3273344000,3273344511,DE
3273345024,3273345279,DE
3273346560,3273346815,OM
3273346816,3273347071,DE
@@ -128719,6 +129489,7 @@
3273369872,3273369903,FR
3273369912,3273369919,FR
3273369976,3273369983,FR
+3273370032,3273370039,FR
3273370624,3273371135,DE
3273371712,3273371743,DE
3273371760,3273371775,DE
@@ -128733,7 +129504,7 @@
3273373568,3273374847,GB
3273374856,3273374863,GB
3273374896,3273374903,GB
-3273374912,3273374931,GB
+3273374928,3273374931,GB
3273375168,3273375168,GB
3273375232,3273375551,DE
3273375744,3273375871,DE
@@ -128913,7 +129684,9 @@
3274080256,3274088447,DE
3274088448,3274096639,KG
3274096640,3274113023,NL
-3274113024,3274145791,CZ
+3274113024,3274140383,CZ
+3274140384,3274140391,PL
+3274140392,3274145791,CZ
3274145792,3274162175,KW
3274162176,3274162687,GB
3274163200,3274163711,UA
@@ -129109,11 +129882,13 @@
3274472960,3274483711,GB
3274489600,3274489855,GB
3274490176,3274490895,GB
-3274490912,3274491199,GB
+3274490912,3274491023,GB
+3274491040,3274491199,GB
3274491208,3274491247,GB
3274491256,3274491295,GB
-3274491304,3274491319,GB
-3274491328,3274491383,GB
+3274491312,3274491319,GB
+3274491328,3274491335,GB
+3274491344,3274491383,GB
3274491392,3274504447,GB
3274505728,3274505791,GB
3274505793,3274505855,GB
@@ -129438,7 +130213,6 @@
3275423744,3275423751,GB
3275423808,3275423839,GB
3275423872,3275424295,GB
-3275424320,3275424383,GB
3275424432,3275424439,GB
3275424480,3275424487,GB
3275424496,3275424639,GB
@@ -129446,11 +130220,13 @@
3275424712,3275424743,GB
3275424752,3275424863,GB
3275424904,3275424911,GB
-3275424960,3275425063,GB
+3275424960,3275424975,GB
+3275424992,3275425031,GB
+3275425040,3275425063,GB
3275425072,3275425135,GB
-3275425144,3275425311,GB
+3275425144,3275425303,GB
3275425328,3275425343,GB
-3275425536,3275425559,GB
+3275425552,3275425559,GB
3275425568,3275425583,GB
3275425792,3275426559,GB
3275426576,3275427103,GB
@@ -129468,11 +130244,12 @@
3275431936,3275432863,GB
3275432872,3275432883,GB
3275433984,3275436543,GB
-3275436800,3275438623,GB
+3275436800,3275438615,GB
3275438648,3275438655,GB
3275438672,3275438847,GB
-3275439104,3275439455,GB
-3275439460,3275439679,GB
+3275439104,3275439447,GB
+3275439460,3275439463,GB
+3275439472,3275439679,GB
3275439688,3275439695,GB
3275439712,3275439839,GB
3275439872,3275439935,GB
@@ -129494,14 +130271,17 @@
3275444224,3275444735,GB
3275446272,3275446783,GB
3275446800,3275446815,GB
-3275446848,3275447039,GB
-3275447056,3275447135,GB
-3275448320,3275449359,GB
-3275449376,3275449399,GB
+3275446848,3275446911,GB
+3275446976,3275447039,GB
+3275447056,3275447087,GB
+3275447104,3275447135,GB
+3275448320,3275449023,GB
+3275449088,3275449343,GB
+3275449392,3275449399,GB
3275449440,3275449471,GB
3275449488,3275449519,GB
3275449520,3275449527,FR
-3275449528,3275449567,GB
+3275449528,3275449559,GB
3275449584,3275449887,GB
3275449904,3275449911,GB
3275449920,3275449927,GB
@@ -129516,20 +130296,22 @@
3275451776,3275451779,GB
3275451784,3275451791,GB
3275452416,3275453023,GB
-3275453056,3275453151,GB
+3275453120,3275453151,GB
3275453168,3275453399,GB
3275453408,3275453839,GB
3275453848,3275453919,GB
3275453936,3275453951,GB
-3275453960,3275454063,GB
-3275454096,3275454127,GB
-3275454144,3275454175,GB
-3275454192,3275454263,GB
+3275453984,3275454063,GB
+3275454112,3275454127,GB
+3275454144,3275454159,GB
+3275454168,3275454175,GB
+3275454192,3275454255,GB
3275454272,3275454303,GB
3275454336,3275454383,GB
-3275454416,3275455231,GB
+3275454432,3275455231,GB
3275455248,3275455295,GB
-3275455360,3275456391,GB
+3275455360,3275455487,GB
+3275455744,3275456391,GB
3275456416,3275458303,GB
3275458304,3275458559,FK
3275458560,3275459071,IE
@@ -129542,12 +130324,13 @@
3275460608,3275460863,HK
3275460864,3275463183,GB
3275463192,3275463199,GB
-3275463216,3275463239,GB
+3275463216,3275463231,GB
3275463248,3275463279,GB
3275463296,3275463423,GB
3275463456,3275463495,GB
3275463504,3275463523,GB
-3275463528,3275463635,GB
+3275463528,3275463599,GB
+3275463616,3275463635,GB
3275463640,3275464031,GB
3275464032,3275464047,IE
3275464048,3275468655,GB
@@ -129559,12 +130342,14 @@
3275468800,3275469071,GB
3275469072,3275469087,IE
3275469088,3275473151,GB
-3275473232,3275473311,GB
+3275473232,3275473295,GB
+3275473304,3275473311,GB
3275473328,3275473343,GB
3275473352,3275473359,GB
3275473368,3275473895,GB
3275473904,3275474047,GB
-3275474088,3275474735,GB
+3275474088,3275474703,GB
+3275474720,3275474735,GB
3275474752,3275474887,GB
3275474896,3275474911,GB
3275474936,3275474951,GB
@@ -129572,7 +130357,8 @@
3275475044,3275475287,GB
3275475292,3275475295,GB
3275475376,3275475399,GB
-3275475408,3275475447,GB
+3275475408,3275475439,GB
+3275475444,3275475447,GB
3275475456,3275475759,GB
3275475800,3275475807,GB
3275475824,3275475831,GB
@@ -129585,14 +130371,18 @@
3275476704,3275476735,GB
3275476944,3275476959,GB
3275476976,3275477015,GB
-3275477040,3275477095,GB
-3275477104,3275477151,GB
-3275477160,3275477247,GB
-3275477440,3275477567,GB
+3275477040,3275477087,GB
+3275477104,3275477135,GB
+3275477160,3275477167,GB
+3275477184,3275477191,GB
+3275477200,3275477231,GB
+3275477440,3275477447,GB
+3275477456,3275477567,GB
3275477760,3275478271,GB
3275478528,3275481087,GB
3275481344,3275481599,GB
-3275482112,3275482455,GB
+3275482112,3275482431,GB
+3275482448,3275482455,GB
3275482480,3275483647,GB
3275484160,3275484415,GB
3275485184,3275485215,GB
@@ -129697,7 +130487,7 @@
3275627008,3275627519,AT
3275627520,3275628031,GB
3275628032,3275628543,IL
-3275628544,3275629311,RU
+3275629056,3275629311,RU
3275629312,3275629567,TR
3275629568,3275630079,UA
3275630080,3275630591,RU
@@ -129894,7 +130684,9 @@
3276038144,3276039423,FR
3276039424,3276040871,GB
3276040872,3276040879,FR
-3276040880,3276042087,GB
+3276040880,3276041727,GB
+3276041728,3276041983,ES
+3276041984,3276042087,GB
3276042088,3276042095,FR
3276042096,3276042239,GB
3276042240,3276044287,FR
@@ -130074,6 +130866,7 @@
3276500108,3276500111,DE
3276500160,3276500163,DE
3276500168,3276500171,DE
+3276501040,3276501043,DE
3276501104,3276501119,DE
3276501128,3276501135,DE
3276501148,3276501151,DE
@@ -130492,7 +131285,8 @@
3276799808,3276799839,FR
3276799840,3276799871,ES
3276799872,3276799999,NL
-3276800000,3276824575,GB
+3276800000,3276808191,GB
+3276816384,3276824575,GB
3276824576,3276832767,EE
3276832768,3276834815,PL
3276834816,3276835071,RU
@@ -130761,7 +131555,8 @@
3277351424,3277351935,NO
3277351936,3277352447,DE
3277352448,3277352959,SE
-3277352960,3277353471,RU
+3277352960,3277353215,UA
+3277353216,3277353471,RU
3277353472,3277353983,PL
3277353984,3277354495,DE
3277354496,3277355007,GB
@@ -130841,7 +131636,9 @@
3277403808,3277404159,GB
3277404160,3277404415,DE
3277404416,3277404671,IT
-3277404672,3277404735,CH
+3277404672,3277404703,CH
+3277404704,3277404719,GB
+3277404720,3277404735,CH
3277404736,3277404927,GB
3277404928,3277404975,NL
3277404976,3277405183,GB
@@ -130855,7 +131652,9 @@
3277455360,3277463551,DE
3277463552,3277471743,US
3277471744,3277473791,PL
-3277473792,3277480447,GB
+3277473792,3277475839,GB
+3277475840,3277476863,NO
+3277476864,3277480447,GB
3277480960,3277481471,DK
3277481472,3277481983,PL
3277481984,3277482495,SE
@@ -131015,7 +131814,6 @@
3277830656,3277830911,PL
3277830912,3277831167,GB
3277831168,3277831423,PL
-3277831424,3277831679,UA
3277831680,3277832191,IE
3277833216,3277833727,BE
3277833728,3277834239,NL
@@ -133508,9 +134306,15 @@
3280386048,3280388095,SA
3280388096,3280390719,GB
3280390720,3280390751,FR
-3280390752,3280396287,GB
+3280390752,3280391909,GB
+3280391910,3280391910,NL
+3280391911,3280394085,GB
+3280394086,3280394086,BE
+3280394087,3280396287,GB
3280396288,3280404479,US
-3280404480,3280437247,IT
+3280404480,3280416767,FR
+3280416768,3280420863,ES
+3280420864,3280437247,IT
3280437248,3280453631,DE
3280453632,3280454655,IT
3280454656,3280455679,UA
@@ -133635,8 +134439,7 @@
3280663408,3280663423,IT
3280663424,3280663999,DE
3280664000,3280664063,IT
-3280664064,3280664319,CZ
-3280664320,3280664831,DE
+3280664064,3280664831,DE
3280664832,3280665087,CZ
3280665088,3280666623,DE
3280666624,3280732159,NO
@@ -133691,14 +134494,18 @@
3280952332,3280952335,DE
3280952336,3280952783,GB
3280952784,3280952799,DE
-3280952800,3280955707,GB
+3280952800,3280953441,GB
+3280953442,3280953442,TR
+3280953443,3280955707,GB
3280955708,3280955711,DE
3280955712,3280958919,GB
3280958920,3280958927,DE
3280958928,3280960679,GB
3280960680,3280960683,ES
3280960684,3280961023,GB
-3280961024,3280961279,ES
+3280961024,3280961273,ES
+3280961274,3280961274,PT
+3280961275,3280961279,ES
3280961280,3280963375,GB
3280963376,3280963383,DE
3280963384,3280985279,GB
@@ -133747,7 +134554,7 @@
3281027696,3281027743,GB
3281027776,3281027807,GB
3281027840,3281027903,GB
-3281028064,3281028159,GB
+3281028096,3281028159,GB
3281028992,3281029055,GB
3281030400,3281035263,GB
3281035264,3281043455,CH
@@ -133791,7 +134598,7 @@
3281345280,3281345535,SA
3281346048,3281346303,SI
3281346304,3281346559,PL
-3281346560,3281346815,UA
+3281346560,3281346815,GI
3281346816,3281347071,DE
3281347072,3281347327,PL
3281347328,3281347583,DE
@@ -133841,7 +134648,6 @@
3281920000,3281928191,DE
3281928192,3281944575,MT
3281944576,3281960959,DE
-3281960960,3281969151,JO
3281969152,3281969663,RU
3281969664,3281970175,PL
3281970176,3281970687,RU
@@ -134850,6 +135656,7 @@
3285935872,3285936127,GB
3285936136,3285936147,FR
3285936152,3285936231,FR
+3285936240,3285936243,FR
3285939136,3285939175,GB
3285939184,3285939191,GB
3285939744,3285939759,GB
@@ -135268,7 +136075,6 @@
3287433728,3287434239,DE
3287434240,3287434751,PL
3287434752,3287435263,GB
-3287435264,3287435775,NL
3287436288,3287436799,RS
3287436800,3287437311,RO
3287437312,3287437823,UA
@@ -135331,7 +136137,7 @@
3287467008,3287468031,SA
3287468032,3287469055,UA
3287469056,3287470079,DE
-3287470080,3287471103,RO
+3287470080,3287471103,AU
3287471360,3287471615,CH
3287472128,3287472639,RU
3287472640,3287473151,UA
@@ -135688,7 +136494,6 @@
3288545280,3288545535,AU
3288545536,3288545791,ZA
3288545792,3288546303,KE
-3288547072,3288547327,NG
3288547328,3288547583,GH
3288547584,3288547839,IN
3288547840,3288548095,SA
@@ -135820,9 +136625,13 @@
3289124864,3289128959,ZA
3289128960,3289137151,IN
3289137152,3289153535,BM
-3289153536,3289157631,GB
+3289153536,3289155839,GB
+3289155840,3289156351,RW
+3289156352,3289157631,GB
3289157632,3289158655,RW
-3289158656,3289159679,MU
+3289158656,3289159167,MU
+3289159168,3289159423,RW
+3289159424,3289159679,MU
3289159680,3289160703,RW
3289160704,3289161727,MU
3289161728,3289169919,PR
@@ -135880,9 +136689,7 @@
3289251072,3289251327,EG
3289251328,3289251583,ZA
3289251584,3289251839,KE
-3289251840,3289319423,ZA
-3289319424,3289319679,MU
-3289319680,3289321471,ZA
+3289251840,3289321471,ZA
3289321472,3289325567,IN
3289325568,3289333759,SA
3289333760,3289382911,ZA
@@ -136052,9 +136859,7 @@
3289809664,3289809919,KE
3289809920,3289812991,ZA
3289812992,3289817087,MU
-3289817088,3289907199,ZA
-3289907200,3289908223,LS
-3289908224,3289923583,ZA
+3289817088,3289923583,ZA
3289923584,3289924607,SZ
3289924608,3290031103,ZA
3290031104,3290031359,LS
@@ -136073,7 +136878,9 @@
3290171904,3290172159,NG
3290172160,3290172415,KE
3290172416,3290181631,ZA
-3290181632,3290185105,PR
+3290181632,3290184191,PR
+3290184192,3290184703,US
+3290184704,3290185105,PR
3290185106,3290185106,US
3290185107,3290185107,PR
3290185108,3290185108,US
@@ -136110,7 +136917,6 @@
3290486784,3290488831,MA
3290488832,3290489343,NG
3290489344,3290489855,KE
-3290489856,3290490367,EG
3290490368,3290492927,ZA
3290492928,3290494975,TZ
3290494976,3290718975,ZA
@@ -136119,7 +136925,6 @@
3290955776,3290980351,CR
3290980352,3290984447,ZA
3290984448,3290988543,MZ
-3290988544,3290992639,KE
3290992640,3290996735,GH
3290996736,3291000831,NG
3291000832,3291004927,ZA
@@ -136184,7 +136989,7 @@
3291207168,3291207423,MG
3291207424,3291207679,NG
3291207680,3291207935,BW
-3291208192,3291208447,KE
+3291207936,3291208447,KE
3291208448,3291208703,EG
3291208704,3291208959,KE
3291208960,3291209215,TZ
@@ -136227,7 +137032,7 @@
3291287552,3291291647,ZA
3291291648,3291295743,TZ
3291295744,3291299839,NG
-3291299840,3291312127,ZA
+3291308032,3291312127,ZA
3291312128,3291313151,MU
3291313152,3291314175,NG
3291314176,3291315199,ZA
@@ -136278,9 +137083,11 @@
3291412480,3291414527,DZ
3291414528,3291426815,ZA
3291426816,3291430911,NA
-3291430912,3291432703,ZA
-3291432704,3291432959,NA
-3291432960,3291435263,ZA
+3291430912,3291431167,ZA
+3291431168,3291432959,NA
+3291432960,3291433471,ZA
+3291433472,3291433983,NA
+3291433984,3291435263,ZA
3291435264,3291435519,NA
3291435520,3291435775,ZA
3291435776,3291438847,NA
@@ -136345,60 +137152,62 @@
3291742720,3291744767,US
3291744768,3291745023,MX
3291745024,3291745791,US
-3291745792,3291746047,MX
+3291745792,3291746047,GB
3291746048,3291750399,US
-3291750400,3291750655,IT
-3291750656,3291750911,US
+3291750400,3291750655,RU
+3291750656,3291750911,JP
3291750912,3291751167,SG
-3291751168,3291751423,US
-3291751424,3291751679,SG
-3291751680,3291751935,US
+3291751168,3291751423,JP
+3291751424,3291751679,RU
+3291751680,3291751935,FR
3291751936,3291752191,HK
3291752192,3291752447,US
3291752448,3291752959,CA
-3291752960,3291753471,US
+3291752960,3291753215,FR
+3291753216,3291753471,US
3291753472,3291753727,GB
3291753728,3291753983,KH
3291753984,3291754239,CA
-3291754240,3291754495,US
-3291754496,3291754751,AU
-3291754752,3291755007,GB
-3291755008,3291755519,US
-3291755520,3291755775,AU
-3291755776,3291756543,US
-3291756544,3291756799,AU
-3291756800,3291757311,US
-3291757312,3291757567,GB
+3291754240,3291754495,IL
+3291754496,3291755007,MX
+3291755008,3291755263,IT
+3291755264,3291755519,SG
+3291755520,3291755775,US
+3291755776,3291756031,IN
+3291756032,3291757311,US
+3291757312,3291757567,IT
3291757568,3291757823,AU
3291757824,3291758079,US
-3291758080,3291758335,GB
+3291758080,3291758335,CA
3291758336,3291760639,US
-3291760640,3291760895,AU
-3291760896,3291761151,CA
+3291760640,3291761151,CA
3291761152,3291762175,US
-3291762176,3291762431,GB
-3291762432,3291762687,AU
+3291762176,3291762431,TR
+3291762432,3291762687,PL
3291762688,3291762943,US
3291762944,3291763199,BZ
-3291763200,3291763455,GB
+3291763200,3291763455,PL
3291763456,3291763711,US
3291763712,3291763967,GB
-3291763968,3291766015,US
+3291763968,3291764223,DE
+3291764224,3291765503,US
+3291765504,3291765759,DE
+3291765760,3291766015,AU
3291766016,3291766271,NL
3291766272,3291766527,AU
-3291766528,3291766783,US
-3291766784,3291767039,AU
+3291766528,3291767039,NO
3291767040,3291768831,US
3291768832,3291769087,CA
-3291769088,3291808255,US
+3291769088,3291769343,IL
+3291769344,3291807999,US
+3291808000,3291808255,SE
3291808256,3291808511,CA
-3291808512,3291813375,US
-3291813376,3291813631,GB
-3291813632,3291813887,US
-3291813888,3291814143,GB
-3291814144,3291814399,US
+3291808512,3291809791,US
+3291809792,3291810047,SE
+3291810048,3291814399,US
3291814400,3291814655,NL
-3291814656,3291815423,US
+3291814656,3291814911,TW
+3291814912,3291815423,US
3291815424,3291815679,GB
3291815680,3291817471,US
3291817472,3291817983,NL
@@ -136417,7 +137226,8 @@
3291826176,3291826431,CA
3291826432,3291827199,US
3291827200,3291827455,CA
-3291827456,3291828735,US
+3291827456,3291827711,TW
+3291827712,3291828735,US
3291828736,3291829247,CA
3291829248,3291830271,US
3291830272,3291831295,KH
@@ -136429,15 +137239,31 @@
3291835392,3291836159,DE
3291836160,3291837439,US
3291837440,3291838463,JP
-3291838464,3291873535,US
+3291838464,3291856895,US
+3291856896,3291857151,HU
+3291857152,3291857407,CH
+3291857408,3291857663,PT
+3291857664,3291873535,US
3291873536,3291873791,CA
3291873792,3291875327,US
3291875328,3291875839,CA
-3291875840,3291878655,US
+3291875840,3291876095,US
+3291876096,3291876351,GB
+3291876352,3291877375,US
+3291877376,3291877631,RU
+3291877632,3291877887,IT
+3291877888,3291878143,AU
+3291878144,3291878399,US
+3291878400,3291878655,NO
3291878656,3291878911,GB
3291878912,3291879935,US
-3291879936,3291880191,AU
-3291880192,3291883775,US
+3291879936,3291880191,HU
+3291880192,3291880447,US
+3291880448,3291880703,CH
+3291880704,3291881471,US
+3291881472,3291881727,PT
+3291881728,3291882239,AR
+3291882240,3291883775,US
3291883776,3291884031,CA
3291884032,3291884287,US
3291884288,3291884543,NZ
@@ -136470,7 +137296,8 @@
3291943936,3291944959,MX
3291944960,3291945727,US
3291945728,3291945983,GB
-3291945984,3291964927,US
+3291945984,3291964671,US
+3291964672,3291964927,CN
3291964928,3291965439,DE
3291965440,3291966463,NZ
3291966464,3291971583,US
@@ -136484,17 +137311,23 @@
3292005888,3292006143,US
3292006144,3292006399,SC
3292006400,3292007167,US
-3292007168,3292007679,SC
-3292007680,3292008191,US
+3292007168,3292007935,SC
+3292007936,3292008191,US
3292008192,3292008447,SC
-3292008448,3292009727,US
+3292008448,3292009215,US
+3292009216,3292009471,SC
+3292009472,3292009727,US
3292009728,3292009983,SC
-3292009984,3292011519,US
+3292009984,3292010751,US
+3292010752,3292011007,SC
+3292011008,3292011519,US
3292011520,3292011775,SC
-3292011776,3292013055,US
+3292011776,3292012543,US
+3292012544,3292012799,SC
+3292012800,3292013055,US
3292013056,3292013311,SC
-3292013312,3292013823,US
-3292013824,3292014079,SC
+3292013312,3292013567,US
+3292013568,3292014079,SC
3292014080,3292014335,US
3292014336,3292014591,SC
3292014592,3292014847,US
@@ -136502,9 +137335,7 @@
3292015104,3292016127,US
3292016128,3292016383,SC
3292016384,3292016895,US
-3292016896,3292017407,SC
-3292017408,3292017663,US
-3292017664,3292017919,SC
+3292016896,3292017919,SC
3292017920,3292018431,US
3292018432,3292018687,SC
3292018688,3292019199,US
@@ -136514,13 +137345,15 @@
3292019968,3292020479,US
3292020480,3292020735,SC
3292020736,3292020991,US
-3292020992,3292022271,SC
-3292022272,3292023039,US
+3292020992,3292021247,SC
+3292021248,3292021503,US
+3292021504,3292022015,SC
+3292022016,3292023039,US
3292023040,3292023551,SC
3292023552,3292024831,US
3292024832,3292025599,SC
-3292025600,3292027647,US
-3292027648,3292027903,SC
+3292025600,3292027391,US
+3292027392,3292027903,SC
3292027904,3292028415,US
3292028416,3292028671,SC
3292028672,3292029951,US
@@ -136538,9 +137371,7 @@
3292036096,3292036607,US
3292036608,3292036863,SC
3292036864,3292038143,US
-3292038144,3292038399,SC
-3292038400,3292038655,US
-3292038656,3292038911,SC
+3292038144,3292038911,SC
3292038912,3292039935,US
3292039936,3292040447,SC
3292040448,3292040959,US
@@ -136553,17 +137384,19 @@
3292044032,3292044287,SC
3292044288,3292044543,US
3292044544,3292045055,SC
-3292045056,3292045311,US
-3292045312,3292045567,SC
-3292045568,3292047615,US
+3292045056,3292047615,US
3292047616,3292047871,SC
3292047872,3292048383,US
3292048384,3292049151,SC
3292049152,3292049663,US
3292049664,3292049919,SC
-3292049920,3292051711,US
+3292049920,3292050175,US
+3292050176,3292050431,SC
+3292050432,3292051711,US
3292051712,3292052223,SC
-3292052224,3292053503,US
+3292052224,3292052479,US
+3292052480,3292052735,SC
+3292052736,3292053503,US
3292053504,3292053759,SC
3292053760,3292054015,US
3292054016,3292054527,SC
@@ -136571,34 +137404,30 @@
3292055808,3292056063,SC
3292056064,3292056319,US
3292056320,3292056831,SC
-3292056832,3292057343,US
-3292057344,3292057855,SC
+3292056832,3292057599,US
+3292057600,3292057855,SC
3292057856,3292059391,US
3292059392,3292059647,SC
-3292059648,3292060927,US
-3292060928,3292061183,SC
+3292059648,3292060671,US
+3292060672,3292061183,SC
3292061184,3292062719,US
3292062720,3292063231,SC
3292063232,3292063487,US
-3292063488,3292063743,SC
-3292063744,3292063999,US
-3292064000,3292064767,SC
+3292063488,3292064767,SC
3292064768,3292065791,US
-3292065792,3292066047,SC
-3292066048,3292066303,US
-3292066304,3292066815,SC
+3292065792,3292066815,SC
3292066816,3292067327,US
3292067328,3292068607,SC
3292068608,3292069119,US
-3292069120,3292069631,SC
+3292069120,3292069375,SC
+3292069376,3292069631,DE
3292069632,3292069887,AU
3292069888,3292070143,SE
3292070144,3292070399,DK
-3292070400,3292070655,US
-3292070656,3292070911,SC
+3292070400,3292070911,US
3292070912,3292071167,CZ
-3292071168,3292071935,US
-3292071936,3292072447,SC
+3292071168,3292071679,US
+3292071680,3292072447,SC
3292072448,3292072703,US
3292072704,3292073471,SC
3292073472,3292073727,US
@@ -136616,16 +137445,20 @@
3292077568,3292077823,US
3292077824,3292078079,SC
3292078080,3292078335,US
-3292078336,3292079103,SC
-3292079104,3292079359,US
-3292079360,3292079615,SC
+3292078336,3292079615,SC
3292079616,3292080127,US
3292080128,3292080383,SC
3292080384,3292081663,US
3292081664,3292081919,SC
3292081920,3292082431,US
3292082432,3292082687,SC
-3292082688,3292084735,US
+3292082688,3292082943,US
+3292082944,3292083199,SC
+3292083200,3292083455,US
+3292083456,3292083711,SC
+3292083712,3292083967,US
+3292083968,3292084223,SC
+3292084224,3292084735,US
3292084736,3292084991,SC
3292084992,3292085247,US
3292085248,3292085503,SC
@@ -136637,13 +137470,17 @@
3292088576,3292088831,SC
3292088832,3292089087,US
3292089088,3292089343,SC
-3292089344,3292090367,US
+3292089344,3292089599,US
+3292089600,3292089855,SC
+3292089856,3292090367,US
3292090368,3292090623,SC
3292090624,3292091135,US
3292091136,3292091391,SC
3292091392,3292091903,US
3292091904,3292092159,SC
-3292092160,3292093439,US
+3292092160,3292092671,US
+3292092672,3292092927,SC
+3292092928,3292093439,US
3292093440,3292093951,SC
3292093952,3292094463,US
3292094464,3292094975,SC
@@ -136660,8 +137497,10 @@
3292098816,3292099327,US
3292099328,3292099839,SC
3292099840,3292100095,US
-3292100096,3292100351,SC
-3292100352,3292102143,US
+3292100096,3292100863,SC
+3292100864,3292101631,US
+3292101632,3292101887,SC
+3292101888,3292102143,US
3292102144,3292102655,SC
3292102656,3292102911,US
3292102912,3292103167,SC
@@ -136673,7 +137512,9 @@
3292104448,3292104703,SC
3292104704,3292104959,US
3292104960,3292105215,SC
-3292105216,3292105983,US
+3292105216,3292105471,US
+3292105472,3292105727,SC
+3292105728,3292105983,US
3292105984,3292106239,SC
3292106240,3292106751,US
3292106752,3292107263,SC
@@ -136684,11 +137525,11 @@
3292109312,3292109567,US
3292109568,3292109823,SC
3292109824,3292110079,US
-3292110080,3292110847,SC
-3292110848,3292111615,US
+3292110080,3292110591,SC
+3292110592,3292111615,US
3292111616,3292111871,SC
-3292111872,3292112895,US
-3292112896,3292113151,SC
+3292111872,3292112639,US
+3292112640,3292113151,SC
3292113152,3292113407,US
3292113408,3292113663,SC
3292113664,3292113919,US
@@ -136699,9 +137540,7 @@
3292115968,3292116479,SC
3292116480,3292116735,US
3292116736,3292116991,SC
-3292116992,3292117247,US
-3292117248,3292117503,SC
-3292117504,3292117759,US
+3292116992,3292117759,US
3292117760,3292118015,SC
3292118016,3292119039,US
3292119040,3292119295,SC
@@ -136717,8 +137556,8 @@
3292124928,3292125183,SC
3292125184,3292125439,US
3292125440,3292125951,SC
-3292125952,3292126719,US
-3292126720,3292127487,SC
+3292125952,3292126463,US
+3292126464,3292127487,SC
3292127488,3292128767,US
3292128768,3292129023,SC
3292129024,3292129535,US
@@ -136730,9 +137569,7 @@
3292132864,3292133119,US
3292133120,3292133375,SC
3292133376,3292133887,US
-3292133888,3292134143,SC
-3292134144,3292134399,US
-3292134400,3292135167,SC
+3292133888,3292135167,SC
3292135168,3292135423,AU
3292135424,3292135679,SE
3292135680,3292135935,DK
@@ -136765,27 +137602,31 @@
3292146944,3292147455,SC
3292147456,3292147967,US
3292147968,3292148479,SC
-3292148480,3292148991,US
-3292148992,3292149247,SC
+3292148480,3292148735,US
+3292148736,3292149247,SC
3292149248,3292149503,US
3292149504,3292149759,SC
3292149760,3292150015,US
-3292150016,3292150783,SC
-3292150784,3292151807,US
+3292150016,3292151039,SC
+3292151040,3292151807,US
3292151808,3292152319,SC
-3292152320,3292153343,US
-3292153344,3292153855,SC
+3292152320,3292153087,US
+3292153088,3292153343,SC
+3292153344,3292153599,US
+3292153600,3292153855,SC
3292153856,3292154111,US
3292154112,3292154623,SC
-3292154624,3292157439,US
-3292157440,3292157695,SC
+3292154624,3292157183,US
+3292157184,3292157695,SC
3292157696,3292157951,US
3292157952,3292158463,SC
3292158464,3292158719,US
3292158720,3292158975,SC
3292158976,3292159999,US
3292160000,3292160511,SC
-3292160512,3292161535,US
+3292160512,3292160767,US
+3292160768,3292161023,SC
+3292161024,3292161535,US
3292161536,3292162303,SC
3292162304,3292162559,US
3292162560,3292163071,SC
@@ -136801,7 +137642,9 @@
3292167936,3292168191,SC
3292168192,3292168703,US
3292168704,3292170239,SC
-3292170240,3292171775,US
+3292170240,3292171263,US
+3292171264,3292171519,SC
+3292171520,3292171775,US
3292171776,3292172287,SC
3292172288,3292172799,US
3292172800,3292174079,SC
@@ -136816,16 +137659,18 @@
3292176640,3292177151,US
3292177152,3292177407,SC
3292177408,3292178175,US
-3292178176,3292179967,SC
-3292179968,3292180479,US
+3292178176,3292180223,SC
+3292180224,3292180479,US
3292180480,3292180735,SC
3292180736,3292180991,US
3292180992,3292181759,SC
3292181760,3292182271,US
3292182272,3292182527,SC
-3292182528,3292183039,US
-3292183040,3292183551,SC
-3292183552,3292184575,US
+3292182528,3292183295,US
+3292183296,3292183551,SC
+3292183552,3292183807,US
+3292183808,3292184063,SC
+3292184064,3292184575,US
3292184576,3292184831,SC
3292184832,3292185599,US
3292185600,3292186111,SC
@@ -136859,12 +137704,12 @@
3292197888,3292198143,SC
3292198144,3292198399,US
3292198400,3292198655,SC
-3292198656,3292199167,US
-3292199168,3292199423,SC
+3292198656,3292198911,US
+3292198912,3292199423,SC
3292199424,3292199679,US
3292199680,3292200191,SC
3292200192,3292200447,US
-3292200448,3292200703,SC
+3292200448,3292200703,DE
3292200704,3292200959,AU
3292200960,3292201215,SC
3292201216,3292201471,DK
@@ -136876,9 +137721,11 @@
3292204032,3292204287,SC
3292204288,3292204799,US
3292204800,3292205055,SC
-3292205056,3292206335,US
-3292206336,3292206847,SC
-3292206848,3292209151,US
+3292205056,3292205311,US
+3292205312,3292205567,SC
+3292205568,3292206335,US
+3292206336,3292207103,SC
+3292207104,3292209151,US
3292209152,3292209407,SC
3292209408,3292210175,US
3292210176,3292210687,SC
@@ -136924,22 +137771,22 @@
3292229888,3292230143,SC
3292230144,3292231935,US
3292231936,3292232191,SC
-3292232192,3292233215,US
-3292233216,3292233727,SC
-3292233728,3292234495,US
+3292232192,3292232447,US
+3292232448,3292232703,SC
+3292232704,3292232959,US
+3292232960,3292233983,SC
+3292233984,3292234495,US
3292234496,3292234751,SC
3292234752,3292235007,US
-3292235008,3292235263,SC
-3292235264,3292235775,US
-3292235776,3292236031,SC
-3292236032,3292236287,US
-3292236288,3292236543,SC
+3292235008,3292235519,SC
+3292235520,3292235775,US
+3292235776,3292236543,SC
3292236544,3292237311,US
3292237312,3292237823,SC
3292237824,3292238591,US
3292238592,3292238847,SC
-3292238848,3292239359,US
-3292239360,3292239871,SC
+3292238848,3292239103,US
+3292239104,3292239871,SC
3292239872,3292240639,US
3292240640,3292240895,SC
3292240896,3292241151,US
@@ -136954,8 +137801,8 @@
3292245504,3292245759,SC
3292245760,3292247295,US
3292247296,3292248319,SC
-3292248320,3292249343,US
-3292249344,3292249855,SC
+3292248320,3292249087,US
+3292249088,3292249855,SC
3292249856,3292250367,US
3292250368,3292250623,SC
3292250624,3292250879,US
@@ -136968,11 +137815,11 @@
3292253440,3292253695,SC
3292253696,3292254207,US
3292254208,3292255743,SC
-3292255744,3292257023,US
-3292257024,3292257279,SC
-3292257280,3292257535,US
+3292255744,3292257535,US
3292257536,3292257791,SC
-3292257792,3292258559,US
+3292257792,3292258047,US
+3292258048,3292258303,SC
+3292258304,3292258559,US
3292258560,3292258815,SC
3292258816,3292259327,US
3292259328,3292259583,SC
@@ -136981,8 +137828,10 @@
3292261376,3292261631,US
3292261632,3292261887,SC
3292261888,3292262399,US
-3292262400,3292263167,SC
-3292263168,3292263935,US
+3292262400,3292262911,SC
+3292262912,3292263167,US
+3292263168,3292263679,SC
+3292263680,3292263935,US
3292263936,3292264191,SC
3292264192,3292264447,US
3292264448,3292264703,SC
@@ -137020,8 +137869,7 @@
3292389376,3292391423,ZA
3292391424,3292393471,MA
3292393472,3292397567,ZA
-3292397568,3292430335,PK
-3292430336,3292463103,US
+3292397568,3292463103,PK
3292463104,3292528639,ZA
3292528640,3294625791,MA
3294625792,3295674367,KE
@@ -137060,9 +137908,7 @@
3301172224,3301173759,UG
3301173760,3301174271,ZA
3301174272,3301175295,UG
-3301175296,3301178897,AF
-3301178898,3301178898,DE
-3301178899,3301179391,AF
+3301175296,3301179391,AF
3301179392,3301179903,RU
3301179904,3301181439,SC
3301181440,3301185535,US
@@ -137098,17 +137944,13 @@
3301246976,3301247999,SC
3301248000,3301250047,US
3301250048,3301251071,SC
-3301251072,3301256191,US
-3301256192,3301257215,PR
-3301257216,3301262335,US
+3301251072,3301262335,US
3301262336,3301263359,SC
-3301263360,3301272575,US
-3301272576,3301275647,SC
-3301275648,3301276671,PR
+3301263360,3301273599,US
+3301273600,3301275647,SC
+3301275648,3301276671,US
3301276672,3301277695,SC
-3301277696,3301279743,US
-3301279744,3301280767,PR
-3301280768,3301284863,US
+3301277696,3301284863,US
3301284864,3301286911,SC
3301286912,3301287935,NL
3301287936,3301288959,CH
@@ -137133,11 +137975,14 @@
3301308416,3301309439,SG
3301309440,3301310463,BR
3301310464,3301310975,US
-3301310976,3301311487,SC
+3301310976,3301311231,SC
+3301311232,3301311487,FR
3301311488,3301311743,DE
3301311744,3301313023,SC
3301313024,3301313279,AU
-3301313280,3301314303,SC
+3301313280,3301313791,SC
+3301313792,3301314047,LU
+3301314048,3301314303,SC
3301314304,3301314559,NO
3301314560,3301315071,SC
3301315072,3301315327,ES
@@ -137145,8 +137990,10 @@
3301315584,3301315839,NL
3301315840,3301316095,SC
3301316096,3301316351,US
-3301316352,3301317375,SC
-3301317376,3301317631,PR
+3301316352,3301316607,SC
+3301316608,3301316863,US
+3301316864,3301317375,SC
+3301317376,3301317631,US
3301317632,3301317887,SC
3301317888,3301318143,US
3301318144,3301318655,SC
@@ -137157,14 +138004,16 @@
3301320448,3301320959,US
3301320960,3301321215,SC
3301321216,3301321471,US
-3301321472,3301322751,SC
+3301321472,3301321983,SC
+3301321984,3301322239,US
+3301322240,3301322751,SC
3301322752,3301323007,CA
3301323008,3301323263,SC
3301323264,3301323519,US
3301323520,3301324287,SC
3301324288,3301324543,US
-3301324544,3301325567,SC
-3301325568,3301325823,US
+3301324544,3301325311,SC
+3301325312,3301325823,US
3301325824,3301329151,SC
3301329152,3301329407,DK
3301329408,3301330687,SC
@@ -137180,9 +138029,7 @@
3301333248,3301333503,SC
3301333504,3301334015,US
3301334016,3301334527,SC
-3301334528,3301334783,US
-3301334784,3301335039,PR
-3301335040,3301335295,US
+3301334528,3301335295,US
3301335296,3301337087,SC
3301337088,3301337343,US
3301337344,3301337855,SC
@@ -137190,12 +138037,13 @@
3301338112,3301340159,SC
3301340160,3301340415,US
3301340416,3301340671,SC
-3301340672,3301340927,PR
-3301340928,3301341183,SC
-3301341184,3301341439,US
-3301341440,3301342975,SC
+3301340672,3301341439,US
+3301341440,3301342207,SC
+3301342208,3301342463,US
+3301342464,3301342975,SC
3301342976,3301343743,US
-3301343744,3301344511,SC
+3301343744,3301344255,SC
+3301344256,3301344511,RU
3301344512,3301344767,IN
3301344768,3301345023,AT
3301345024,3301345279,FR
@@ -137208,7 +138056,9 @@
3301348096,3301348351,NO
3301348352,3301349119,SC
3301349120,3301349375,CH
-3301349376,3301351423,SC
+3301349376,3301349631,SC
+3301349632,3301349887,GB
+3301349888,3301351423,SC
3301351424,3301351935,US
3301351936,3301352703,SC
3301352704,3301352959,US
@@ -137243,10 +138093,9 @@
3301365504,3301365759,SC
3301365760,3301366015,NL
3301366016,3301367551,SC
-3301367552,3301367807,PR
+3301367552,3301367807,US
3301367808,3301368319,SC
-3301368320,3301368575,US
-3301368576,3301368831,PR
+3301368320,3301368831,US
3301368832,3301371391,SC
3301371392,3301372159,US
3301372160,3301373183,SC
@@ -137258,13 +138107,12 @@
3301374720,3301375231,SC
3301375232,3301376511,US
3301376512,3301378815,SC
-3301378816,3301379071,PR
-3301379072,3301379327,US
+3301378816,3301379327,US
3301379328,3301379583,SC
-3301379584,3301379839,US
-3301379840,3301380095,SC
+3301379584,3301380095,US
3301380096,3301380351,CA
-3301380352,3301382655,US
+3301380352,3301380607,SC
+3301380608,3301382655,US
3301382656,3301382911,SC
3301382912,3301383423,US
3301383424,3301383679,SC
@@ -137281,11 +138129,15 @@
3301387520,3301387775,PL
3301387776,3301388287,SC
3301388288,3301388543,LU
-3301388544,3301389055,US
+3301388544,3301388799,SC
+3301388800,3301389055,US
3301389056,3301389567,SC
-3301389568,3301390079,US
+3301389568,3301389823,BE
+3301389824,3301390079,US
3301390080,3301390335,SC
-3301390336,3301391359,US
+3301390336,3301390591,US
+3301390592,3301390847,DE
+3301390848,3301391359,US
3301391360,3301391615,IN
3301391616,3301391871,RU
3301391872,3301392895,US
@@ -137294,8 +138146,7 @@
3301393408,3301393663,SC
3301393664,3301394687,US
3301394688,3301395199,SC
-3301395200,3301395455,PR
-3301395456,3301396223,US
+3301395200,3301396223,US
3301396224,3301398527,SC
3301398528,3301399039,US
3301399040,3301399551,SC
@@ -137305,9 +138156,7 @@
3301400320,3301400575,SC
3301400576,3301401343,US
3301401344,3301401599,SC
-3301401600,3301401855,US
-3301401856,3301402111,SC
-3301402112,3301402623,US
+3301401600,3301402623,US
3301402624,3301402879,GB
3301402880,3301403135,NL
3301403136,3301403391,SC
@@ -137320,34 +138169,35 @@
3301404928,3301405183,HU
3301405184,3301405439,US
3301405440,3301405695,AU
-3301405696,3301405951,SC
+3301405696,3301405951,AT
3301405952,3301406463,US
3301406464,3301406719,CZ
3301406720,3301406975,DK
3301406976,3301407231,SC
3301407232,3301407487,FR
-3301407488,3301408767,SC
+3301407488,3301408255,SC
+3301408256,3301408511,SG
+3301408512,3301408767,BR
3301408768,3301409023,US
-3301409024,3301409279,SC
-3301409280,3301409535,US
-3301409536,3301410303,SC
-3301410304,3301410559,US
-3301410560,3301410815,SC
+3301409024,3301410815,SC
3301410816,3301411071,US
3301411072,3301411583,SC
-3301411584,3301411839,PR
-3301411840,3301412863,US
+3301411584,3301412607,US
+3301412608,3301412863,SC
3301412864,3301413119,CA
3301413120,3301413375,SC
-3301413376,3301416191,US
+3301413376,3301414143,US
+3301414144,3301414399,SC
+3301414400,3301414655,US
+3301414656,3301414911,SC
+3301414912,3301416191,US
3301416192,3301416447,SC
-3301416448,3301416703,PR
-3301416704,3301417471,US
+3301416448,3301417471,US
3301417472,3301417727,SC
3301417728,3301418239,US
3301418240,3301418495,SC
-3301418496,3301419007,US
-3301419008,3301419263,SC
+3301418496,3301418751,US
+3301418752,3301419263,SC
3301419264,3301419519,NL
3301419520,3301419775,CH
3301419776,3301420287,SC
@@ -137367,9 +138217,7 @@
3301425664,3301425919,SC
3301425920,3301426431,US
3301426432,3301427199,SC
-3301427200,3301427967,US
-3301427968,3301428223,PR
-3301428224,3301428479,US
+3301427200,3301428479,US
3301428480,3301428735,SC
3301428736,3301429503,US
3301429504,3301430015,SC
@@ -137379,12 +138227,9 @@
3301431296,3301432063,SC
3301432064,3301432319,US
3301432320,3301432575,SC
-3301432576,3301432831,US
-3301432832,3301433087,PR
+3301432576,3301433087,US
3301433088,3301433343,SC
-3301433344,3301433855,US
-3301433856,3301434111,PR
-3301434112,3301435391,US
+3301433344,3301435391,US
3301435392,3301435647,SC
3301435648,3301435903,NL
3301435904,3301436159,SC
@@ -137395,7 +138240,8 @@
3301437440,3301437695,LU
3301437696,3301437951,SC
3301437952,3301438207,HK
-3301438208,3301438719,SC
+3301438208,3301438463,SC
+3301438464,3301438719,AT
3301438720,3301439487,US
3301439488,3301439743,DK
3301439744,3301439999,SC
@@ -137590,7 +138436,9 @@
3303537408,3304022271,TN
3304022272,3304022527,CF
3304022528,3304062975,TN
-3304062976,3304065279,SC
+3304062976,3304063999,SC
+3304064000,3304064255,US
+3304064256,3304065279,SC
3304065280,3304065535,US
3304065536,3304066047,SC
3304066048,3304066559,US
@@ -137600,7 +138448,7 @@
3304067328,3304071167,SC
3304071168,3304071423,US
3304071424,3304071679,SC
-3304071680,3304071935,PR
+3304071680,3304071935,US
3304071936,3304072447,SC
3304072448,3304072703,US
3304072704,3304072959,SC
@@ -137629,17 +138477,15 @@
3304079360,3304080895,SC
3304080896,3304081407,US
3304081408,3304081919,SC
-3304081920,3304082175,US
-3304082176,3304082431,PR
-3304082432,3304082687,US
+3304081920,3304082687,US
3304082688,3304083199,SC
3304083200,3304083455,US
3304083456,3304083711,SC
3304083712,3304083967,US
3304083968,3304084991,SC
3304084992,3304085503,US
-3304085504,3304086015,SC
-3304086016,3304086271,US
+3304085504,3304085759,SC
+3304085760,3304086271,US
3304086272,3304086527,SC
3304086528,3304086783,US
3304086784,3304087295,SC
@@ -137651,7 +138497,7 @@
3304090368,3304090623,ES
3304090624,3304091135,SC
3304091136,3304091391,NO
-3304091392,3304091647,SC
+3304091392,3304091647,NZ
3304091648,3304091903,LU
3304091904,3304092159,SC
3304092160,3304092415,HK
@@ -137675,7 +138521,9 @@
3304099840,3304100095,CA
3304100096,3304100607,SC
3304100608,3304101119,US
-3304101120,3304102143,SC
+3304101120,3304101375,SC
+3304101376,3304101631,US
+3304101632,3304102143,SC
3304102144,3304103167,US
3304103168,3304103679,SC
3304103680,3304103935,US
@@ -137693,7 +138541,8 @@
3304109056,3304109311,SC
3304109312,3304109567,BE
3304109568,3304109823,LV
-3304109824,3304111615,SC
+3304109824,3304110079,CZ
+3304110080,3304111615,SC
3304111616,3304111871,SG
3304111872,3304113151,SC
3304113152,3304113407,US
@@ -137714,7 +138563,7 @@
3304118784,3304119039,SC
3304119040,3304119551,US
3304119552,3304119807,SC
-3304119808,3304120063,PR
+3304119808,3304120063,US
3304120064,3304120575,SC
3304120576,3304120831,US
3304120832,3304121087,SC
@@ -137729,7 +138578,8 @@
3304124416,3304125183,SC
3304125184,3304125439,AU
3304125440,3304125695,AT
-3304125696,3304126463,SC
+3304125696,3304125951,BE
+3304125952,3304126463,SC
3304126464,3304126719,DK
3304126720,3304126975,DE
3304126976,3304127231,FR
@@ -137740,7 +138590,9 @@
3304194560,3304194815,AT
3304194816,3304195071,SC
3304195072,3304195327,DE
-3304195328,3304198143,SC
+3304195328,3304196351,SC
+3304196352,3304196607,AT
+3304196608,3304198143,SC
3304198144,3304198399,PL
3304198400,3304198655,PT
3304198656,3304198911,ES
@@ -137750,8 +138602,10 @@
3304199680,3304201471,SC
3304201472,3304201983,US
3304201984,3304202751,SC
-3304202752,3304203007,US
-3304203008,3304204543,SC
+3304202752,3304203263,US
+3304203264,3304203519,SC
+3304203520,3304203775,US
+3304203776,3304204543,SC
3304204544,3304204799,US
3304204800,3304205567,SC
3304205568,3304205823,US
@@ -137775,14 +138629,14 @@
3304213760,3304214015,AT
3304214016,3304214783,SC
3304214784,3304215039,LU
-3304215040,3304216063,SC
+3304215040,3304215295,NZ
+3304215296,3304216063,SC
3304216064,3304216319,ES
3304216320,3304216575,CH
3304216576,3304216831,NL
3304216832,3304217087,GB
3304217088,3304218367,SC
-3304218368,3304218623,PR
-3304218624,3304219135,US
+3304218368,3304219135,US
3304219136,3304222207,SC
3304222208,3304222463,US
3304222464,3304223231,SC
@@ -137813,16 +138667,16 @@
3304233216,3304233471,GB
3304233472,3304233983,US
3304233984,3304234751,SC
-3304234752,3304235007,PR
+3304234752,3304235007,US
3304235008,3304235775,SC
-3304235776,3304236031,PR
-3304236032,3304236799,SC
+3304235776,3304236287,US
+3304236288,3304236799,SC
3304236800,3304237055,US
3304237056,3304237567,SC
3304237568,3304238079,US
3304238080,3304238591,SC
-3304238592,3304239103,US
-3304239104,3304240383,SC
+3304238592,3304239359,US
+3304239360,3304240383,SC
3304240384,3304240639,US
3304240640,3304240895,SC
3304240896,3304241151,US
@@ -137845,8 +138699,7 @@
3304249344,3304249599,NL
3304249600,3304249855,GB
3304249856,3304250879,SC
-3304250880,3304251135,US
-3304251136,3304251391,PR
+3304250880,3304251391,US
3304251392,3304251903,SC
3304251904,3304252159,US
3304252160,3304254463,SC
@@ -137857,7 +138710,7 @@
3304256000,3304256255,US
3304256256,3304256511,CA
3304256512,3304257023,SC
-3304257024,3304257279,PR
+3304257024,3304257279,US
3304257280,3304257535,SC
3304257536,3304257791,US
3304257792,3304325375,SC
@@ -137879,7 +138732,7 @@
3304332032,3304332543,SC
3304332544,3304332799,US
3304332800,3304333055,SC
-3304333056,3304333311,PR
+3304333056,3304333311,US
3304333312,3304333823,SC
3304333824,3304334079,US
3304334080,3304334591,SC
@@ -137915,8 +138768,7 @@
3304347392,3304348671,SC
3304348672,3304348927,US
3304348928,3304349183,SC
-3304349184,3304349439,US
-3304349440,3304349695,PR
+3304349184,3304349695,US
3304349696,3304350975,SC
3304350976,3304351487,US
3304351488,3304352255,SC
@@ -137924,7 +138776,7 @@
3304352768,3304353023,SC
3304353024,3304353791,US
3304353792,3304355327,SC
-3304355328,3304355583,PR
+3304355328,3304355583,US
3304355584,3304356607,SC
3304356608,3304357375,US
3304357376,3304357631,SC
@@ -137945,9 +138797,8 @@
3304364032,3304365055,SC
3304365056,3304365567,US
3304365568,3304365823,SC
-3304365824,3304366079,PR
-3304366080,3304366591,US
-3304366592,3304367103,SC
+3304365824,3304366847,US
+3304366848,3304367103,SC
3304367104,3304367359,US
3304367360,3304367871,SC
3304367872,3304368127,US
@@ -137965,7 +138816,7 @@
3304376320,3304376575,DE
3304376576,3304376831,DK
3304376832,3304377087,CZ
-3304377088,3304377343,SC
+3304377088,3304377343,LV
3304377344,3304377599,BE
3304377600,3304380671,SC
3304380672,3304380927,GB
@@ -137982,26 +138833,25 @@
3304385536,3304386047,SC
3304386048,3304386303,US
3304386304,3304388095,SC
-3304388096,3304388351,PR
-3304388352,3304389887,SC
+3304388096,3304388351,US
+3304388352,3304388607,SC
+3304388608,3304388863,US
+3304388864,3304389887,SC
3304389888,3304390143,US
3304390144,3304390399,SC
3304390400,3304390655,US
3304390656,3304391679,SC
3304391680,3304400895,US
3304400896,3304401919,SC
-3304401920,3304402943,PR
-3304402944,3304403967,US
+3304401920,3304403967,US
3304403968,3304404991,SC
3304404992,3304407039,US
3304407040,3304408063,CA
-3304408064,3304414207,US
-3304414208,3304416255,SC
+3304408064,3304415231,US
+3304415232,3304416255,SC
3304416256,3304421375,US
3304421376,3304423423,SC
-3304423424,3304425471,US
-3304425472,3304426495,PR
-3304426496,3304428543,US
+3304423424,3304428543,US
3304428544,3304429567,SK
3304429568,3304430591,US
3304430592,3304431615,SC
@@ -138028,7 +138878,7 @@
3304450048,3304451071,FR
3304451072,3304452095,AT
3304452096,3304453119,IN
-3304453120,3304454143,RU
+3304453120,3304454143,RO
3304454144,3304455167,SG
3304455168,3304456191,BR
3304456192,3304521727,ZA
@@ -138865,12 +139715,11 @@
3323224064,3323232255,NL
3323232256,3323240447,US
3323240448,3323240703,RU
-3323240704,3323240959,US
-3323240960,3323241215,CA
-3323241216,3323241247,GB
+3323240704,3323241215,US
+3323241216,3323241247,IN
3323241248,3323241279,EE
3323241280,3323241311,US
-3323241312,3323241343,GB
+3323241312,3323241343,IN
3323241344,3323241351,CA
3323241352,3323241375,US
3323241376,3323241407,CA
@@ -138900,24 +139749,25 @@
3323241680,3323241687,US
3323241688,3323241695,CN
3323241696,3323241727,EE
-3323241728,3323241819,CA
-3323241820,3323241823,US
-3323241824,3323241883,CA
-3323241884,3323241887,US
-3323241888,3323242255,CA
+3323241728,3323241983,US
+3323241984,3323242255,CA
3323242256,3323242271,US
3323242272,3323242287,CA
3323242288,3323242303,US
3323242304,3323242311,CA
3323242312,3323242319,SE
-3323242320,3323242367,CA
+3323242320,3323242335,CA
+3323242336,3323242367,IN
3323242368,3323242511,US
3323242512,3323242527,BD
-3323242528,3323242575,CA
+3323242528,3323242559,IN
+3323242560,3323242575,CA
3323242576,3323242591,US
3323242592,3323242607,CA
3323242608,3323242623,US
-3323242624,3323242703,CA
+3323242624,3323242655,CA
+3323242656,3323242687,IN
+3323242688,3323242703,CA
3323242704,3323243007,US
3323243008,3323243055,CA
3323243056,3323243063,US
@@ -138937,16 +139787,15 @@
3323243232,3323243239,CA
3323243240,3323243255,US
3323243256,3323243263,CA
-3323243264,3323243391,US
-3323243392,3323243455,CA
+3323243264,3323243455,US
3323243456,3323243487,GB
3323243488,3323243519,CA
3323243520,3323243535,US
3323243536,3323243551,BD
3323243552,3323243583,CA
3323243584,3323243615,US
-3323243616,3323243647,CA
-3323243648,3323243711,US
+3323243616,3323243663,CA
+3323243664,3323243711,US
3323243712,3323243743,CA
3323243744,3323243791,US
3323243792,3323243799,CA
@@ -138954,9 +139803,11 @@
3323243808,3323243815,CA
3323243816,3323243823,US
3323243824,3323243903,CA
-3323243904,3323243967,US
-3323243968,3323244095,CA
-3323244096,3323244255,US
+3323243904,3323244031,US
+3323244032,3323244095,CA
+3323244096,3323244159,US
+3323244160,3323244175,CA
+3323244176,3323244255,US
3323244256,3323244287,CA
3323244288,3323244327,US
3323244328,3323244399,CA
@@ -138964,25 +139815,25 @@
3323244408,3323244487,CA
3323244488,3323244503,US
3323244504,3323244511,CA
-3323244512,3323244527,US
-3323244528,3323244687,CA
-3323244688,3323244695,US
+3323244512,3323244695,US
3323244696,3323244703,CA
3323244704,3323244735,US
-3323244736,3323244767,CA
+3323244736,3323244767,IN
3323244768,3323244783,US
3323244784,3323244799,CA
3323244800,3323244927,US
3323244928,3323245055,CA
3323245056,3323245087,US
3323245088,3323245119,GB
-3323245120,3323245383,US
+3323245120,3323245247,US
+3323245248,3323245255,CA
+3323245256,3323245383,US
3323245384,3323245391,IN
3323245392,3323245399,GB
3323245400,3323245407,TR
-3323245408,3323245415,AE
+3323245408,3323245415,IN
3323245416,3323245423,TR
-3323245424,3323245439,CA
+3323245424,3323245439,IN
3323245440,3323245471,GB
3323245472,3323245487,CA
3323245488,3323245495,BE
@@ -138993,10 +139844,8 @@
3323245560,3323245567,CN
3323245568,3323245655,US
3323245656,3323245663,TH
-3323245664,3323245855,US
-3323245856,3323245951,CA
-3323245952,3323245959,US
-3323245960,3323245967,TH
+3323245664,3323245959,US
+3323245960,3323245967,CN
3323245968,3323245983,CA
3323245984,3323246015,US
3323246016,3323246079,CA
@@ -139006,9 +139855,7 @@
3323246240,3323246271,CA
3323246272,3323246463,US
3323246464,3323246591,CN
-3323246592,3323247359,US
-3323247360,3323247423,CA
-3323247424,3323247575,US
+3323246592,3323247575,US
3323247576,3323247583,CA
3323247584,3323248383,US
3323248384,3323248639,CA
@@ -139154,7 +140001,7 @@
3323678144,3323678147,CA
3323678148,3323678151,US
3323678152,3323678159,CA
-3323678160,3323678167,VE
+3323678160,3323678167,PK
3323678168,3323678171,CA
3323678172,3323678175,US
3323678176,3323678195,CA
@@ -139226,7 +140073,8 @@
3323682972,3323682975,CY
3323682976,3323682991,CA
3323682992,3323682999,CH
-3323683000,3323683007,CA
+3323683000,3323683003,CA
+3323683004,3323683007,SI
3323683008,3323683039,AU
3323683040,3323683071,CA
3323683072,3323683103,BA
@@ -139237,8 +140085,8 @@
3323683224,3323683295,CA
3323683296,3323683299,CL
3323683300,3323683303,BR
-3323683304,3323683359,CA
-3323683360,3323683371,IN
+3323683304,3323683367,CA
+3323683368,3323683371,IN
3323683372,3323683399,CA
3323683400,3323683403,BR
3323683404,3323683427,CA
@@ -139252,7 +140100,7 @@
3323683488,3323683503,US
3323683504,3323683515,CA
3323683516,3323683519,MX
-3323683520,3323683523,IN
+3323683520,3323683523,US
3323683524,3323683527,DE
3323683528,3323683535,CA
3323683536,3323683551,US
@@ -139290,9 +140138,11 @@
3323684448,3323684451,US
3323684452,3323684455,BR
3323684456,3323684459,PE
-3323684460,3323684463,CA
-3323684464,3323684479,US
-3323684480,3323684511,CA
+3323684460,3323684471,CA
+3323684472,3323684479,US
+3323684480,3323684503,CA
+3323684504,3323684507,ES
+3323684508,3323684511,CA
3323684512,3323684515,GB
3323684516,3323684539,CA
3323684540,3323684559,US
@@ -139303,7 +140153,8 @@
3323684736,3323684739,IN
3323684740,3323684783,CA
3323684784,3323684799,CO
-3323684800,3323684831,CA
+3323684800,3323684807,US
+3323684808,3323684831,CA
3323684832,3323684835,PE
3323684836,3323684839,MX
3323684840,3323684843,CA
@@ -139315,9 +140166,12 @@
3323684896,3323684911,HR
3323684912,3323684959,CA
3323684960,3323684975,BZ
-3323684976,3323685023,CA
+3323684976,3323684991,GB
+3323684992,3323685023,CA
3323685024,3323685039,RO
-3323685040,3323685167,CA
+3323685040,3323685055,CA
+3323685056,3323685067,BR
+3323685068,3323685167,CA
3323685168,3323685183,MX
3323685184,3323685215,CA
3323685216,3323685231,US
@@ -139333,7 +140187,7 @@
3323685316,3323685319,CA
3323685320,3323685327,CO
3323685328,3323685343,BR
-3323685344,3323685347,BZ
+3323685344,3323685347,IL
3323685348,3323685351,IN
3323685352,3323685407,CA
3323685408,3323685411,MX
@@ -139348,7 +140202,8 @@
3323685776,3323685799,CA
3323685800,3323685823,US
3323685824,3323685831,BR
-3323685832,3323685847,CA
+3323685832,3323685839,AR
+3323685840,3323685847,CA
3323685848,3323685855,DE
3323685856,3323685871,CA
3323685872,3323685887,US
@@ -139359,7 +140214,7 @@
3323685920,3323685923,CA
3323685924,3323685927,BR
3323685928,3323685931,CA
-3323685932,3323685935,MT
+3323685932,3323685935,US
3323685936,3323685943,CA
3323685944,3323685951,NL
3323685952,3323686047,CA
@@ -139373,7 +140228,10 @@
3323686136,3323686143,MX
3323686144,3323686159,NO
3323686160,3323686163,US
-3323686164,3323686191,CA
+3323686164,3323686167,CA
+3323686168,3323686175,BD
+3323686176,3323686183,CA
+3323686184,3323686191,BR
3323686192,3323686195,PE
3323686196,3323686199,VI
3323686200,3323686255,CA
@@ -139390,7 +140248,7 @@
3323686440,3323686447,BR
3323686448,3323686591,CA
3323686592,3323686595,FR
-3323686596,3323686599,DK
+3323686596,3323686599,CA
3323686600,3323686607,BR
3323686608,3323686623,CA
3323686624,3323686631,NL
@@ -139404,17 +140262,20 @@
3323686684,3323686687,IN
3323686688,3323686731,CA
3323686732,3323686735,US
-3323686736,3323686807,CA
+3323686736,3323686799,CA
+3323686800,3323686807,BR
3323686808,3323686811,CR
3323686812,3323686815,BR
3323686816,3323686823,CA
-3323686824,3323686827,US
+3323686824,3323686827,FR
3323686828,3323686847,CA
3323686848,3323686851,US
3323686852,3323686883,CA
3323686884,3323686887,US
3323686888,3323686895,MX
-3323686896,3323686911,CA
+3323686896,3323686899,CA
+3323686900,3323686903,MX
+3323686904,3323686911,CA
3323686912,3323686943,BR
3323686944,3323686979,IN
3323686980,3323687015,CA
@@ -139435,8 +140296,8 @@
3323687216,3323687231,US
3323687232,3323687235,CA
3323687236,3323687239,SK
-3323687240,3323687255,CA
-3323687256,3323687259,US
+3323687240,3323687251,CA
+3323687252,3323687259,US
3323687260,3323687279,CA
3323687280,3323687287,US
3323687288,3323687427,CA
@@ -139453,9 +140314,8 @@
3323687732,3323687735,AE
3323687736,3323687743,CA
3323687744,3323687747,ES
-3323687748,3323687775,CA
-3323687776,3323687783,MT
-3323687784,3323687791,CA
+3323687748,3323687783,CA
+3323687784,3323687791,US
3323687792,3323687799,AU
3323687800,3323687815,CA
3323687816,3323687819,US
@@ -139480,7 +140340,9 @@
3323688136,3323688143,US
3323688144,3323688163,CA
3323688164,3323688175,BR
-3323688176,3323688207,CA
+3323688176,3323688183,CA
+3323688184,3323688187,BR
+3323688188,3323688207,CA
3323688208,3323688215,AR
3323688216,3323688255,CA
3323688256,3323688271,BR
@@ -139492,7 +140354,9 @@
3323688344,3323688351,AE
3323688352,3323688391,CA
3323688392,3323688395,ID
-3323688396,3323688415,CA
+3323688396,3323688407,CA
+3323688408,3323688411,US
+3323688412,3323688415,CA
3323688416,3323688447,DE
3323688448,3323688455,CA
3323688456,3323688459,BR
@@ -139509,9 +140373,7 @@
3323688568,3323688571,VE
3323688572,3323688603,CA
3323688604,3323688607,FR
-3323688608,3323688655,CA
-3323688656,3323688659,IN
-3323688660,3323688675,CA
+3323688608,3323688675,CA
3323688676,3323688679,US
3323688680,3323688839,CA
3323688840,3323688843,US
@@ -139522,25 +140384,29 @@
3323688912,3323688927,HN
3323688928,3323688959,CA
3323688960,3323688975,US
-3323688976,3323689055,CA
+3323688976,3323689039,CA
+3323689040,3323689043,US
+3323689044,3323689055,CA
3323689056,3323689059,FR
3323689060,3323689071,CA
3323689072,3323689079,ID
3323689080,3323689175,CA
3323689176,3323689183,US
-3323689184,3323689191,PE
-3323689192,3323689247,CA
+3323689184,3323689187,RU
+3323689188,3323689247,CA
3323689248,3323689251,IN
3323689252,3323689279,CA
3323689280,3323689295,US
-3323689296,3323689347,CA
+3323689296,3323689303,IE
+3323689304,3323689347,CA
3323689348,3323689351,VE
3323689352,3323689359,CA
3323689360,3323689367,US
-3323689368,3323689383,CA
+3323689368,3323689371,IN
+3323689372,3323689383,CA
3323689384,3323689391,BR
3323689392,3323689403,CA
-3323689404,3323689407,BR
+3323689404,3323689407,US
3323689408,3323689427,CA
3323689428,3323689431,EC
3323689432,3323689435,CA
@@ -139558,7 +140424,9 @@
3323689584,3323689595,CA
3323689596,3323689599,BR
3323689600,3323689663,US
-3323689664,3323689711,CA
+3323689664,3323689691,CA
+3323689692,3323689695,US
+3323689696,3323689711,CA
3323689712,3323689715,BR
3323689716,3323689719,US
3323689720,3323689807,CA
@@ -139568,7 +140436,8 @@
3323689872,3323689879,IT
3323689880,3323689903,CA
3323689904,3323689911,BR
-3323689912,3323689927,CA
+3323689912,3323689919,IE
+3323689920,3323689927,CA
3323689928,3323689935,US
3323689936,3323689983,CA
3323689984,3323690015,RS
@@ -139586,8 +140455,7 @@
3323690224,3323690235,US
3323690236,3323690351,CA
3323690352,3323690359,AE
-3323690360,3323690363,US
-3323690364,3323690403,CA
+3323690360,3323690403,CA
3323690404,3323690407,DM
3323690408,3323690463,CA
3323690464,3323690495,PE
@@ -139690,22 +140558,23 @@
3324601088,3324601343,GB
3324601344,3324604671,US
3324604672,3324604927,GB
-3324604928,3324614143,US
-3324614144,3324614399,LU
+3324604928,3324613887,US
+3324613888,3324614399,LU
3324614400,3324614655,US
3324614656,3324615679,LU
3324615680,3324624895,US
3324633088,3324634111,PE
3324634112,3324635647,AR
-3324635648,3324635903,HK
-3324635904,3324636159,US
+3324635648,3324636159,US
3324636160,3324637183,NZ
3324637184,3324638207,DE
3324638208,3324638719,IN
3324638720,3324638975,US
3324638976,3324639231,DE
3324639232,3324639487,US
-3324639488,3324641279,DE
+3324639488,3324639743,DE
+3324639744,3324639999,US
+3324640000,3324641279,DE
3324641280,3324642303,US
3324642304,3324642559,CA
3324642560,3324645887,US
@@ -140173,17 +141042,23 @@
3324822016,3324822527,CA
3324822528,3324824575,US
3324824576,3324824831,DE
-3324824832,3324937087,US
+3324824832,3324867583,US
+3324867584,3324868095,KZ
+3324868096,3324937087,US
3324937088,3324937095,BD
3324937096,3324937999,US
3324938000,3324938007,PK
3324938008,3324938159,US
3324938160,3324938167,GB
-3324938168,3324939455,US
-3324939456,3324939519,IL
-3324939520,3324939735,US
+3324938168,3324938175,US
+3324938176,3324938183,IN
+3324938184,3324939735,US
3324939736,3324939739,CA
-3324939740,3324943215,US
+3324939740,3324942927,US
+3324942928,3324942935,IN
+3324942936,3324943111,US
+3324943112,3324943119,IN
+3324943120,3324943215,US
3324943216,3324943231,GB
3324943232,3324945407,US
3324945408,3324945663,CA
@@ -140211,7 +141086,9 @@
3324950528,3324950655,EE
3324950656,3324950783,US
3324950784,3324950911,EE
-3324950912,3324953087,US
+3324950912,3324951039,US
+3324951040,3324951103,BD
+3324951104,3324953087,US
3324953088,3324953151,EE
3324953152,3324954367,US
3324954368,3324954431,EE
@@ -140231,7 +141108,8 @@
3324957760,3324957823,EE
3324957824,3324957951,US
3324957952,3324958015,EE
-3324958016,3324958655,US
+3324958016,3324958079,GB
+3324958080,3324958655,US
3324958656,3324958719,EE
3324958720,3324963579,US
3324963580,3324963583,RO
@@ -140510,8 +141388,7 @@
3325192720,3325192727,US
3325192728,3325192735,CA
3325192736,3325192743,DZ
-3325192744,3325192751,MN
-3325192752,3325192759,CA
+3325192744,3325192759,CA
3325192760,3325192767,BR
3325192768,3325192775,US
3325192776,3325192783,CA
@@ -140580,7 +141457,9 @@
3325193496,3325193503,CA
3325193504,3325193511,BR
3325193512,3325193519,MY
-3325193520,3325193583,CA
+3325193520,3325193535,CA
+3325193536,3325193543,BR
+3325193544,3325193583,CA
3325193584,3325193591,US
3325193592,3325193639,CA
3325193640,3325193647,US
@@ -140800,7 +141679,10 @@
3325196184,3325196191,ID
3325196192,3325196223,CA
3325196224,3325196231,IN
-3325196232,3325196287,CA
+3325196232,3325196239,PK
+3325196240,3325196247,US
+3325196248,3325196255,AE
+3325196256,3325196287,CA
3325196288,3325196295,US
3325196296,3325196303,CA
3325196304,3325196311,IN
@@ -140909,7 +141791,9 @@
3325197312,3325197319,GR
3325197320,3325198343,CA
3325198344,3325198347,BR
-3325198348,3325198415,CA
+3325198348,3325198367,CA
+3325198368,3325198375,MD
+3325198376,3325198415,CA
3325198416,3325198419,VE
3325198420,3325198423,US
3325198424,3325198535,CA
@@ -140922,16 +141806,13 @@
3325198592,3325198619,CA
3325198620,3325198623,AR
3325198624,3325198627,ES
-3325198628,3325198639,CA
-3325198640,3325198643,BR
+3325198628,3325198643,CA
3325198644,3325198647,BD
-3325198648,3325198655,CA
-3325198656,3325198659,PE
+3325198648,3325198659,CA
3325198660,3325198663,IN
3325198664,3325198695,CA
3325198696,3325198703,IL
-3325198704,3325198719,US
-3325198720,3325198727,CA
+3325198704,3325198727,CA
3325198728,3325198735,FR
3325198736,3325198751,CA
3325198752,3325198755,LK
@@ -140944,8 +141825,7 @@
3325198824,3325198831,CA
3325198832,3325198847,US
3325198848,3325198855,HR
-3325198856,3325198863,ID
-3325198864,3325198895,CA
+3325198856,3325198895,CA
3325198896,3325198911,BE
3325198912,3325198943,NP
3325198944,3325198963,CA
@@ -140957,8 +141837,8 @@
3325199064,3325199071,CA
3325199072,3325199079,US
3325199080,3325199083,CA
-3325199084,3325199087,BR
-3325199088,3325199143,CA
+3325199084,3325199095,BR
+3325199096,3325199143,CA
3325199144,3325199147,US
3325199148,3325199151,GT
3325199152,3325199291,CA
@@ -140974,10 +141854,8 @@
3325199492,3325199495,BR
3325199496,3325199559,CA
3325199560,3325199567,US
-3325199568,3325199615,CA
-3325199616,3325199619,BR
-3325199620,3325199779,CA
-3325199780,3325199783,US
+3325199568,3325199775,CA
+3325199776,3325199783,US
3325199784,3325199807,CA
3325199808,3325199839,US
3325199840,3325199855,BR
@@ -141030,8 +141908,8 @@
3325200728,3325200731,US
3325200732,3325200739,CA
3325200740,3325200747,US
-3325200748,3325200751,CA
-3325200752,3325200759,GB
+3325200748,3325200755,CA
+3325200756,3325200759,BR
3325200760,3325200767,CA
3325200768,3325200783,US
3325200784,3325200807,CA
@@ -141042,7 +141920,8 @@
3325200864,3325200879,ES
3325200880,3325200891,CA
3325200892,3325200895,US
-3325200896,3325201011,CA
+3325200896,3325200903,RO
+3325200904,3325201011,CA
3325201012,3325201015,US
3325201016,3325201039,CA
3325201040,3325201047,BR
@@ -141054,13 +141933,15 @@
3325201076,3325201087,CA
3325201088,3325201111,US
3325201112,3325201115,CA
-3325201116,3325201119,IN
+3325201116,3325201119,PK
3325201120,3325201187,CA
3325201188,3325201191,BR
3325201192,3325201247,CA
3325201248,3325201255,CL
3325201256,3325201259,AU
-3325201260,3325201427,CA
+3325201260,3325201407,CA
+3325201408,3325201415,ES
+3325201416,3325201427,CA
3325201428,3325201431,US
3325201432,3325201439,CA
3325201440,3325201447,IN
@@ -141069,7 +141950,8 @@
3325201536,3325201551,CA
3325201552,3325201559,US
3325201560,3325201563,IN
-3325201564,3325201591,CA
+3325201564,3325201587,CA
+3325201588,3325201591,SI
3325201592,3325201599,PT
3325201600,3325201607,CA
3325201608,3325201615,US
@@ -141084,7 +141966,9 @@
3325201688,3325201739,CA
3325201740,3325201759,US
3325201760,3325201763,SA
-3325201764,3325201795,CA
+3325201764,3325201775,CA
+3325201776,3325201779,PK
+3325201780,3325201795,CA
3325201796,3325201799,DM
3325201800,3325201811,CA
3325201812,3325201815,US
@@ -141098,9 +141982,7 @@
3325202016,3325202031,ES
3325202032,3325202039,CA
3325202040,3325202079,US
-3325202080,3325202115,CA
-3325202116,3325202119,US
-3325202120,3325202199,CA
+3325202080,3325202199,CA
3325202200,3325202203,US
3325202204,3325202211,CA
3325202212,3325202215,IN
@@ -141135,7 +142017,7 @@
3325206636,3325206639,ES
3325206640,3325206671,US
3325206672,3325206679,BR
-3325206680,3325206683,CL
+3325206680,3325206683,LK
3325206684,3325206687,SE
3325206688,3325206719,US
3325206720,3325206799,CA
@@ -141154,14 +142036,13 @@
3325207040,3325207047,CA
3325207048,3325207051,BR
3325207052,3325207055,US
-3325207056,3325207059,GB
-3325207060,3325207071,CA
+3325207056,3325207071,CA
3325207072,3325207103,MX
3325207104,3325207119,CA
3325207120,3325207123,FR
3325207124,3325207131,CA
3325207132,3325207135,US
-3325207136,3325207167,BD
+3325207136,3325207167,DE
3325207168,3325207263,CA
3325207264,3325207271,IN
3325207272,3325207283,CA
@@ -141172,7 +142053,7 @@
3325207416,3325207423,US
3325207424,3325207439,UA
3325207440,3325207503,CA
-3325207504,3325207519,US
+3325207504,3325207519,BE
3325207520,3325207575,CA
3325207576,3325207583,BR
3325207584,3325207591,CA
@@ -141212,7 +142093,7 @@
3325208484,3325208487,CA
3325208488,3325208491,AE
3325208492,3325208495,US
-3325208496,3325208499,IN
+3325208496,3325208499,CO
3325208500,3325208543,CA
3325208544,3325208547,US
3325208548,3325208639,CA
@@ -141221,9 +142102,7 @@
3325208648,3325208651,HR
3325208652,3325208747,CA
3325208748,3325208751,CZ
-3325208752,3325208767,CA
-3325208768,3325208783,US
-3325208784,3325208827,CA
+3325208752,3325208827,CA
3325208828,3325208831,EG
3325208832,3325208835,CO
3325208836,3325208943,CA
@@ -141266,8 +142145,8 @@
3325209476,3325209479,US
3325209480,3325209483,GB
3325209484,3325209543,CA
-3325209544,3325209551,US
-3325209552,3325209567,CA
+3325209544,3325209559,US
+3325209560,3325209567,CA
3325209568,3325209575,US
3325209576,3325209579,CA
3325209580,3325209583,US
@@ -141284,7 +142163,9 @@
3325209768,3325209775,US
3325209776,3325209779,CA
3325209780,3325209783,ID
-3325209784,3325209879,CA
+3325209784,3325209823,CA
+3325209824,3325209855,GB
+3325209856,3325209879,CA
3325209880,3325209887,BD
3325209888,3325209915,CA
3325209916,3325209919,FR
@@ -141297,7 +142178,7 @@
3325209960,3325209963,US
3325209964,3325209967,CA
3325209968,3325209983,US
-3325209984,3325209987,DE
+3325209984,3325209987,IN
3325209988,3325209991,CA
3325209992,3325209995,MX
3325209996,3325210011,CA
@@ -141345,10 +142226,11 @@
3325210768,3325210771,AR
3325210772,3325210775,CA
3325210776,3325210779,US
-3325210780,3325210787,CA
+3325210780,3325210783,CA
+3325210784,3325210787,MX
3325210788,3325210791,BR
3325210792,3325210799,US
-3325210800,3325210815,AE
+3325210800,3325210815,CA
3325210816,3325210823,BR
3325210824,3325210847,CA
3325210848,3325210851,US
@@ -141387,11 +142269,11 @@
3325212008,3325212063,CA
3325212064,3325212071,US
3325212072,3325212087,CA
-3325212088,3325212091,BZ
+3325212088,3325212091,IL
3325212092,3325212095,US
3325212096,3325212119,CA
3325212120,3325212127,US
-3325212128,3325212143,CA
+3325212128,3325212143,TW
3325212144,3325212151,US
3325212152,3325212167,CA
3325212168,3325212171,BZ
@@ -141407,14 +142289,16 @@
3325212512,3325212515,CY
3325212516,3325212519,CA
3325212520,3325212527,PK
-3325212528,3325212551,CA
-3325212552,3325212575,BR
+3325212528,3325212559,CA
+3325212560,3325212575,BR
3325212576,3325212583,CA
3325212584,3325212587,HN
3325212588,3325212591,BR
-3325212592,3325212611,CA
-3325212612,3325212615,BR
-3325212616,3325212647,CA
+3325212592,3325212595,SI
+3325212596,3325212611,CA
+3325212612,3325212615,ES
+3325212616,3325212619,BD
+3325212620,3325212647,CA
3325212648,3325212655,US
3325212656,3325212719,CA
3325212720,3325212727,ID
@@ -141429,7 +142313,8 @@
3325213072,3325213087,NZ
3325213088,3325213103,CA
3325213104,3325213111,US
-3325213112,3325213191,CA
+3325213112,3325213183,CA
+3325213184,3325213191,MD
3325213192,3325213199,DE
3325213200,3325213423,CA
3325213424,3325213431,US
@@ -141472,7 +142357,9 @@
3325214152,3325214155,US
3325214156,3325214163,CA
3325214164,3325214167,BR
-3325214168,3325214187,CA
+3325214168,3325214179,CA
+3325214180,3325214183,BR
+3325214184,3325214187,CA
3325214188,3325214191,US
3325214192,3325214255,CA
3325214256,3325214259,SA
@@ -141491,9 +142378,7 @@
3325214624,3325214639,DE
3325214640,3325214667,CA
3325214668,3325214671,US
-3325214672,3325214687,CA
-3325214688,3325214695,US
-3325214696,3325214703,CA
+3325214672,3325214703,CA
3325214704,3325214719,AU
3325214720,3325214735,CA
3325214736,3325214739,US
@@ -141518,7 +142403,8 @@
3325215208,3325215211,FR
3325215212,3325215223,CA
3325215224,3325215231,US
-3325215232,3325215263,CA
+3325215232,3325215247,FR
+3325215248,3325215263,CA
3325215264,3325215279,RU
3325215280,3325215299,US
3325215300,3325215303,IN
@@ -141526,7 +142412,9 @@
3325215320,3325215327,BR
3325215328,3325215335,CA
3325215336,3325215343,US
-3325215344,3325215455,CA
+3325215344,3325215439,CA
+3325215440,3325215447,LK
+3325215448,3325215455,CA
3325215456,3325215459,US
3325215460,3325215467,CA
3325215468,3325215471,BR
@@ -141534,14 +142422,13 @@
3325215476,3325215479,PE
3325215480,3325215495,CA
3325215496,3325215503,BR
-3325215504,3325215607,CA
-3325215608,3325215611,IN
+3325215504,3325215611,CA
3325215612,3325215615,BR
-3325215616,3325215667,CA
+3325215616,3325215655,CA
+3325215656,3325215659,IL
+3325215660,3325215667,CA
3325215668,3325215675,BR
-3325215676,3325215719,CA
-3325215720,3325215727,MX
-3325215728,3325215731,CA
+3325215676,3325215731,CA
3325215732,3325215735,BR
3325215736,3325215743,CA
3325215744,3325215751,IN
@@ -141555,9 +142442,7 @@
3325215904,3325215911,DE
3325215912,3325215915,IN
3325215916,3325215919,GB
-3325215920,3325215931,CA
-3325215932,3325215935,US
-3325215936,3325215951,CA
+3325215920,3325215951,CA
3325215952,3325215967,BE
3325215968,3325215983,CA
3325215984,3325215999,VE
@@ -141570,7 +142455,8 @@
3325216036,3325216039,CA
3325216040,3325216043,AR
3325216044,3325216047,EG
-3325216048,3325216063,CA
+3325216048,3325216059,CA
+3325216060,3325216063,IL
3325216064,3325216067,ES
3325216068,3325216071,CA
3325216072,3325216079,US
@@ -141578,15 +142464,15 @@
3325216096,3325216115,CA
3325216116,3325216119,US
3325216120,3325216127,CA
-3325216128,3325216159,MX
-3325216160,3325216207,CA
+3325216128,3325216143,BE
+3325216144,3325216207,CA
3325216208,3325216215,JO
-3325216216,3325216247,CA
+3325216216,3325216223,MU
+3325216224,3325216247,CA
3325216248,3325216251,BR
3325216252,3325216319,CA
3325216320,3325216327,US
-3325216328,3325216355,CA
-3325216356,3325216359,US
+3325216328,3325216359,CA
3325216360,3325216363,GB
3325216364,3325216367,CA
3325216368,3325216383,US
@@ -141607,7 +142493,9 @@
3325216964,3325216967,US
3325216968,3325216975,CA
3325216976,3325216979,FR
-3325216980,3325217167,CA
+3325216980,3325216991,CA
+3325216992,3325217023,PT
+3325217024,3325217167,CA
3325217168,3325217183,PE
3325217184,3325217199,CA
3325217200,3325217215,US
@@ -141634,7 +142522,9 @@
3325217700,3325217703,BR
3325217704,3325217711,CA
3325217712,3325217715,US
-3325217716,3325217823,CA
+3325217716,3325217727,CA
+3325217728,3325217743,MD
+3325217744,3325217823,CA
3325217824,3325217831,BR
3325217832,3325217835,CA
3325217836,3325217839,CL
@@ -141662,9 +142552,12 @@
3325218208,3325218239,US
3325218240,3325218251,CA
3325218252,3325218255,PL
-3325218256,3325218447,CA
+3325218256,3325218311,CA
+3325218312,3325218319,RU
+3325218320,3325218447,CA
3325218448,3325218455,AR
-3325218456,3325218479,CA
+3325218456,3325218463,MD
+3325218464,3325218479,CA
3325218480,3325218483,BR
3325218484,3325218487,CA
3325218488,3325218491,US
@@ -141685,15 +142578,15 @@
3325218672,3325218687,IT
3325218688,3325218695,CA
3325218696,3325218703,EC
-3325218704,3325218719,US
-3325218720,3325218783,CA
+3325218704,3325218783,CA
3325218784,3325218815,AU
3325218816,3325219079,CA
3325219080,3325219083,BR
-3325219084,3325219087,BZ
-3325219088,3325219091,CA
+3325219084,3325219091,CA
3325219092,3325219095,VE
-3325219096,3325219159,CA
+3325219096,3325219103,CA
+3325219104,3325219107,BR
+3325219108,3325219159,CA
3325219160,3325219167,RO
3325219168,3325219175,CA
3325219176,3325219183,US
@@ -141702,17 +142595,18 @@
3325219412,3325219415,CA
3325219416,3325219419,US
3325219420,3325219423,BR
-3325219424,3325219455,CA
-3325219456,3325219459,US
+3325219424,3325219459,CA
3325219460,3325219463,BR
3325219464,3325219467,CA
3325219468,3325219471,DE
3325219472,3325219475,US
-3325219476,3325219483,CA
+3325219476,3325219479,CA
+3325219480,3325219483,IN
3325219484,3325219487,US
3325219488,3325219503,CA
3325219504,3325219511,VG
-3325219512,3325219535,CA
+3325219512,3325219515,FR
+3325219516,3325219535,CA
3325219536,3325219551,PK
3325219552,3325219583,CA
3325219584,3325219599,US
@@ -141723,7 +142617,7 @@
3325219696,3325219699,US
3325219700,3325219759,CA
3325219760,3325219767,US
-3325219768,3325219775,GB
+3325219768,3325219775,CA
3325219776,3325219779,PA
3325219780,3325219791,CA
3325219792,3325219799,UY
@@ -141745,27 +142639,21 @@
3325220032,3325220039,BR
3325220040,3325220043,US
3325220044,3325220047,BR
-3325220048,3325220055,CA
-3325220056,3325220063,GB
-3325220064,3325220079,CA
+3325220048,3325220079,CA
3325220080,3325220095,PA
3325220096,3325220107,CA
3325220108,3325220111,PE
3325220112,3325220295,CA
3325220296,3325220303,FR
3325220304,3325220383,CA
-3325220384,3325220399,NL
-3325220400,3325220411,CA
-3325220412,3325220415,BZ
-3325220416,3325220463,CA
+3325220384,3325220399,SG
+3325220400,3325220463,CA
3325220464,3325220479,US
3325220480,3325220511,CA
3325220512,3325220519,BR
3325220520,3325220543,CA
3325220544,3325220559,US
-3325220560,3325220579,CA
-3325220580,3325220583,BZ
-3325220584,3325220591,CA
+3325220560,3325220591,CA
3325220592,3325220595,BE
3325220596,3325220607,CA
3325220608,3325220623,US
@@ -141774,9 +142662,9 @@
3325220637,3325220647,CA
3325220648,3325220651,MX
3325220652,3325220655,BR
-3325220656,3325220667,CA
-3325220668,3325220671,BR
-3325220672,3325220703,CA
+3325220656,3325220687,CA
+3325220688,3325220691,BR
+3325220692,3325220703,CA
3325220704,3325220719,US
3325220720,3325220831,CA
3325220832,3325220879,US
@@ -141784,7 +142672,9 @@
3325220896,3325220927,FR
3325220928,3325220959,CA
3325220960,3325220967,EC
-3325220968,3325221043,CA
+3325220968,3325220971,CA
+3325220972,3325220975,ES
+3325220976,3325221043,CA
3325221044,3325221047,CL
3325221048,3325221051,BR
3325221052,3325221055,CA
@@ -141795,7 +142685,9 @@
3325221216,3325221247,US
3325221248,3325221263,CA
3325221264,3325221279,TW
-3325221280,3325221439,CA
+3325221280,3325221391,CA
+3325221392,3325221407,NL
+3325221408,3325221439,CA
3325221440,3325221443,PE
3325221444,3325221451,CA
3325221452,3325221455,US
@@ -141810,15 +142702,15 @@
3325221576,3325221583,CA
3325221584,3325221599,US
3325221600,3325221615,CA
-3325221616,3325221623,GB
+3325221616,3325221623,CO
3325221624,3325221627,MX
3325221628,3325221727,CA
3325221728,3325221731,US
3325221732,3325221739,CA
-3325221740,3325221751,BR
+3325221740,3325221743,BR
+3325221744,3325221751,CA
3325221752,3325221755,IN
-3325221756,3325221779,CA
-3325221780,3325221783,US
+3325221756,3325221783,CA
3325221784,3325221787,IE
3325221788,3325221791,US
3325221792,3325221795,CA
@@ -141826,13 +142718,17 @@
3325221800,3325221807,BR
3325221808,3325221831,CA
3325221832,3325221839,BG
-3325221840,3325221903,CA
+3325221840,3325221887,CA
+3325221888,3325221891,US
+3325221892,3325221903,CA
3325221904,3325221907,US
3325221908,3325221911,CA
3325221912,3325221915,ES
-3325221916,3325221927,CA
+3325221916,3325221919,US
+3325221920,3325221927,CA
3325221928,3325221931,IN
-3325221932,3325221999,CA
+3325221932,3325221983,CA
+3325221984,3325221999,US
3325222000,3325222015,CH
3325222016,3325222143,US
3325222144,3325222179,CA
@@ -141844,7 +142740,9 @@
3325222392,3325222395,BD
3325222396,3325222399,DM
3325222400,3325222463,US
-3325222464,3325222567,CA
+3325222464,3325222523,CA
+3325222524,3325222527,BR
+3325222528,3325222567,CA
3325222568,3325222571,US
3325222572,3325222575,LK
3325222576,3325222607,CA
@@ -141866,11 +142764,13 @@
3325222720,3325222735,AU
3325222736,3325222751,US
3325222752,3325222783,MX
-3325222784,3325222843,CA
-3325222844,3325222847,US
+3325222784,3325222839,CA
+3325222840,3325222847,US
3325222848,3325222851,CA
3325222852,3325222855,BZ
-3325222856,3325222947,CA
+3325222856,3325222879,CA
+3325222880,3325222911,BR
+3325222912,3325222947,CA
3325222948,3325222951,AE
3325222952,3325222959,BR
3325222960,3325222963,CA
@@ -141894,11 +142794,14 @@
3325223104,3325223119,US
3325223120,3325223231,CA
3325223232,3325223239,BR
-3325223240,3325223247,CA
+3325223240,3325223243,CA
+3325223244,3325223247,US
3325223248,3325223263,BR
3325223264,3325223279,CA
3325223280,3325223283,FR
-3325223284,3325223323,CA
+3325223284,3325223303,CA
+3325223304,3325223311,GB
+3325223312,3325223323,CA
3325223324,3325223327,DM
3325223328,3325223351,CA
3325223352,3325223355,MX
@@ -141923,11 +142826,14 @@
3325223664,3325223723,CA
3325223724,3325223727,US
3325223728,3325223731,AR
-3325223732,3325223795,CA
+3325223732,3325223791,CA
+3325223792,3325223795,BR
3325223796,3325223799,US
3325223800,3325223807,CA
3325223808,3325223811,HK
-3325223812,3325223839,CA
+3325223812,3325223819,CA
+3325223820,3325223823,IT
+3325223824,3325223839,CA
3325223840,3325223843,PE
3325223844,3325223847,CA
3325223848,3325223855,MX
@@ -141936,7 +142842,8 @@
3325223908,3325223911,VE
3325223912,3325223919,CA
3325223920,3325223935,BR
-3325223936,3325223967,CA
+3325223936,3325223963,CA
+3325223964,3325223967,IL
3325223968,3325223991,US
3325223992,3325224031,CA
3325224032,3325224039,US
@@ -141949,7 +142856,10 @@
3325224072,3325224079,HR
3325224080,3325224087,CA
3325224088,3325224091,BZ
-3325224092,3325224479,CA
+3325224092,3325224095,UA
+3325224096,3325224451,CA
+3325224452,3325224455,SI
+3325224456,3325224479,CA
3325224480,3325224511,US
3325224512,3325224551,CA
3325224552,3325224559,BR
@@ -141972,7 +142882,7 @@
3325224808,3325224815,GB
3325224816,3325224823,FR
3325224824,3325224831,CA
-3325224832,3325224847,US
+3325224832,3325224847,GB
3325224848,3325224855,CA
3325224856,3325224863,MX
3325224864,3325224871,CA
@@ -142004,14 +142914,12 @@
3325225368,3325225371,IN
3325225372,3325225407,CA
3325225408,3325225411,IN
-3325225412,3325225415,CA
-3325225416,3325225419,AR
-3325225420,3325225439,CA
-3325225440,3325225455,HK
+3325225412,3325225455,CA
3325225456,3325225459,BD
3325225460,3325225463,US
3325225464,3325225467,BR
-3325225468,3325225483,CA
+3325225468,3325225479,CA
+3325225480,3325225483,MX
3325225484,3325225487,CL
3325225488,3325225495,CA
3325225496,3325225499,MX
@@ -142019,21 +142927,26 @@
3325225632,3325225647,US
3325225648,3325225671,CA
3325225672,3325225675,US
-3325225676,3325225731,CA
+3325225676,3325225727,CA
+3325225728,3325225731,US
3325225732,3325225735,GB
3325225736,3325225743,US
3325225744,3325225775,CA
3325225776,3325225783,US
-3325225784,3325225799,CA
+3325225784,3325225791,CA
+3325225792,3325225795,BR
+3325225796,3325225799,CA
3325225800,3325225807,IN
3325225808,3325225819,CA
3325225820,3325225823,US
-3325225824,3325225899,CA
+3325225824,3325225859,CA
+3325225860,3325225863,PK
+3325225864,3325225899,CA
3325225900,3325225911,CY
3325225912,3325225915,CA
3325225916,3325225919,BR
3325225920,3325225923,EG
-3325225924,3325225927,IN
+3325225924,3325225927,CA
3325225928,3325225935,CO
3325225936,3325225943,CA
3325225944,3325225951,PL
@@ -142049,8 +142962,7 @@
3325226072,3325226075,BR
3325226076,3325226079,CA
3325226080,3325226087,ES
-3325226088,3325226091,EC
-3325226092,3325226095,CA
+3325226088,3325226095,CA
3325226096,3325226099,PL
3325226100,3325226159,CA
3325226160,3325226167,FR
@@ -142074,7 +142986,7 @@
3325226444,3325226447,CA
3325226448,3325226451,LT
3325226452,3325226455,CA
-3325226456,3325226463,US
+3325226456,3325226463,VE
3325226464,3325226495,CA
3325226496,3325227007,US
3325227008,3325227039,CA
@@ -142087,9 +142999,9 @@
3325227200,3325227215,GB
3325227216,3325227279,CA
3325227280,3325227295,BR
-3325227296,3325227331,CA
-3325227332,3325227335,MX
-3325227336,3325227371,CA
+3325227296,3325227303,CA
+3325227304,3325227311,MD
+3325227312,3325227371,CA
3325227372,3325227375,DM
3325227376,3325227383,CA
3325227384,3325227387,MA
@@ -142105,8 +143017,9 @@
3325227504,3325227519,CA
3325227520,3325227527,VG
3325227528,3325227531,PE
-3325227532,3325227543,CA
-3325227544,3325227551,BD
+3325227532,3325227535,CA
+3325227536,3325227539,PK
+3325227540,3325227551,CA
3325227552,3325227555,BR
3325227556,3325227567,CA
3325227568,3325227571,IN
@@ -142134,7 +143047,9 @@
3325228256,3325228263,US
3325228264,3325228287,CA
3325228288,3325228415,US
-3325228416,3325228607,CA
+3325228416,3325228543,CA
+3325228544,3325228551,US
+3325228552,3325228607,CA
3325228608,3325228615,DM
3325228616,3325228623,US
3325228624,3325228675,CA
@@ -142154,7 +143069,9 @@
3325228932,3325228935,LU
3325228936,3325228991,CA
3325228992,3325229007,BR
-3325229008,3325229055,CA
+3325229008,3325229023,CA
+3325229024,3325229027,ES
+3325229028,3325229055,CA
3325229056,3325229063,US
3325229064,3325229071,JO
3325229072,3325229079,IN
@@ -142190,16 +143107,16 @@
3325229556,3325229559,PL
3325229560,3325229591,CA
3325229592,3325229599,US
-3325229600,3325229615,CA
+3325229600,3325229607,CA
+3325229608,3325229611,CO
+3325229612,3325229615,CA
3325229616,3325229619,MX
3325229620,3325229647,CA
3325229648,3325229663,FR
3325229664,3325229695,MX
3325229696,3325229735,CA
3325229736,3325229739,DM
-3325229740,3325229747,CA
-3325229748,3325229755,CY
-3325229756,3325229795,CA
+3325229740,3325229795,CA
3325229796,3325229799,PA
3325229800,3325229815,CA
3325229816,3325229823,US
@@ -142233,8 +143150,8 @@
3325230208,3325230211,NL
3325230212,3325230319,CA
3325230320,3325230323,US
-3325230324,3325230447,CA
-3325230448,3325230455,US
+3325230324,3325230451,CA
+3325230452,3325230455,US
3325230456,3325230495,CA
3325230496,3325230511,US
3325230512,3325230527,CA
@@ -142242,7 +143159,7 @@
3325230544,3325230559,US
3325230560,3325230715,CA
3325230716,3325230719,AR
-3325230720,3325230751,US
+3325230720,3325230751,GB
3325230752,3325230779,CA
3325230780,3325230783,BR
3325230784,3325230815,CA
@@ -143019,22 +143936,24 @@
3331983104,3331983359,CA
3331983360,3331988479,US
3331988480,3331989503,CA
-3331989504,3332001791,US
-3332001792,3332002047,CA
-3332002048,3332002063,US
-3332002064,3332002071,CA
+3331989504,3332002071,US
3332002072,3332002079,FI
3332002080,3332002111,CA
-3332002112,3332002215,US
+3332002112,3332002143,US
+3332002144,3332002159,CA
+3332002160,3332002215,US
3332002216,3332002223,CA
3332002224,3332002303,US
3332002304,3332002431,CA
3332002432,3332002495,US
3332002496,3332002527,CA
-3332002528,3332003839,US
-3332003840,3332004607,CA
-3332004608,3332004671,US
-3332004672,3332004863,CA
+3332002528,3332003711,US
+3332003712,3332003839,IT
+3332003840,3332004095,ID
+3332004096,3332004351,SC
+3332004352,3332004607,CA
+3332004608,3332004735,US
+3332004736,3332004863,IL
3332004864,3332005631,US
3332005632,3332005632,CA
3332005633,3332005886,US
@@ -143175,7 +144094,7 @@
3333396675,3333427967,US
3333427968,3333428223,GB
3333428224,3333435647,US
-3333435648,3333435903,CN
+3333435648,3333435903,HK
3333435904,3333444095,US
3333444096,3333444607,GB
3333444608,3333444863,SG
@@ -143198,10 +144117,9 @@
3333504288,3333504431,CN
3333504432,3333504447,US
3333504448,3333505023,CN
-3333505024,3333519359,US
-3333519360,3333519871,HK
-3333519872,3333520383,US
-3333520384,3333520639,NL
+3333505024,3333519615,US
+3333519616,3333519871,HK
+3333519872,3333520639,US
3333520640,3333520895,DE
3333520896,3333566463,US
3333566464,3333568511,GB
@@ -143246,7 +144164,11 @@
3333717760,3333718015,NL
3333718016,3333721599,US
3333721600,3333721855,JP
-3333721856,3333781503,US
+3333721856,3333766400,US
+3333766401,3333766402,CA
+3333766403,3333766404,US
+3333766405,3333766405,CA
+3333766406,3333781503,US
3333781504,3333783551,CA
3333783552,3333801727,US
3333801728,3333801983,CA
@@ -143270,9 +144192,7 @@
3334020096,3334021119,CA
3334021120,3334068479,US
3334068480,3334068735,CA
-3334068736,3334079487,US
-3334079488,3334079999,DE
-3334080000,3334138623,US
+3334068736,3334138623,US
3334138624,3334138879,BM
3334138880,3334187775,US
3334187776,3334188031,BM
@@ -143280,8 +144200,8 @@
3334932224,3334932479,CA
3334932480,3334934015,US
3334934016,3334934527,CA
-3334934528,3334962175,US
-3334962176,3334963199,NL
+3334934528,3334962431,US
+3334962432,3334963199,NL
3334963200,3334995967,US
3334995968,3334998527,PH
3334998528,3335004159,US
@@ -143385,9 +144305,7 @@
3335573760,3335574015,IN
3335574016,3335719071,US
3335719072,3335719087,IN
-3335719088,3335747071,US
-3335747072,3335749631,NL
-3335749632,3335784191,US
+3335719088,3335784191,US
3335784192,3335784447,CA
3335784448,3335860991,US
3335860992,3335861247,MX
@@ -143503,13 +144421,10 @@
3337961528,3337961535,US
3337961536,3337961679,CA
3337961680,3337961687,TH
-3337961688,3337961815,CA
-3337961816,3337961823,TH
-3337961824,3337961983,CA
-3337961984,3337961999,US
+3337961688,3337961999,US
3337962000,3337962007,CA
3337962008,3337962015,US
-3337962016,3337962047,CA
+3337962016,3337962047,IN
3337962048,3337962111,US
3337962112,3337962119,TH
3337962120,3337962143,CA
@@ -143527,27 +144442,25 @@
3337962520,3337962559,CA
3337962560,3337962575,US
3337962576,3337962599,CA
-3337962600,3337962623,US
-3337962624,3337962799,CA
-3337962800,3337962807,US
-3337962808,3337962815,CA
-3337962816,3337962943,US
+3337962600,3337962807,US
+3337962808,3337962831,CA
+3337962832,3337962943,US
3337962944,3337962951,CA
3337962952,3337962959,NO
3337962960,3337962967,CA
3337962968,3337962975,US
3337962976,3337962983,CA
3337962984,3337962991,US
-3337962992,3337963071,CA
+3337962992,3337963071,SC
3337963072,3337963167,US
-3337963168,3337963271,CA
+3337963168,3337963271,DE
3337963272,3337963279,US
3337963280,3337963295,CA
3337963296,3337963311,US
3337963312,3337963319,CA
3337963320,3337963327,US
3337963328,3337963335,CA
-3337963336,3337963343,US
+3337963336,3337963343,CN
3337963344,3337963359,CA
3337963360,3337963367,US
3337963368,3337963375,CA
@@ -143558,10 +144471,10 @@
3337963424,3337963439,US
3337963440,3337963447,CA
3337963448,3337963455,US
-3337963456,3337963487,CA
+3337963456,3337963487,GB
3337963488,3337963495,US
-3337963496,3337963519,CA
-3337963520,3337963631,US
+3337963496,3337963535,CA
+3337963536,3337963631,US
3337963632,3337963647,CA
3337963648,3337963743,US
3337963744,3337963759,CA
@@ -143580,13 +144493,15 @@
3337963904,3337963911,MA
3337963912,3337963919,CA
3337963920,3337963951,US
-3337963952,3337964031,CA
+3337963952,3337964007,CA
+3337964008,3337964015,US
+3337964016,3337964031,CA
3337964032,3337964287,US
3337964288,3337964295,CA
3337964296,3337964335,US
3337964336,3337964351,CA
3337964352,3337964415,US
-3337964416,3337964543,CA
+3337964416,3337964543,CL
3337964544,3337964671,US
3337964672,3337964735,IN
3337964736,3337964751,US
@@ -143709,8 +144624,8 @@
3338359017,3338359033,US
3338359034,3338359034,DE
3338359035,3338359295,US
-3338359296,3338359359,BR
-3338359360,3338359817,US
+3338359296,3338359551,BR
+3338359552,3338359817,US
3338359818,3338359818,GB
3338359819,3338359847,US
3338359848,3338359848,RO
@@ -144241,7 +145156,8 @@
3341535024,3341535031,PA
3341535032,3341535039,VN
3341535040,3341535047,MA
-3341535048,3341535055,GH
+3341535048,3341535051,US
+3341535052,3341535055,GH
3341535056,3341535087,US
3341535088,3341535091,GH
3341535092,3341535095,TH
@@ -145658,9 +146574,7 @@
3351384320,3351384575,CA
3351384576,3351385343,US
3351385344,3351385599,CA
-3351385600,3351386111,US
-3351386112,3351386367,PR
-3351386368,3351386623,US
+3351385600,3351386623,US
3351386624,3351386879,CA
3351386880,3351387135,US
3351387136,3351387391,CA
@@ -145748,9 +146662,7 @@
3351441920,3351442175,CA
3351442176,3351474687,US
3351474688,3351475199,CA
-3351475200,3351475711,US
-3351475712,3351475967,IS
-3351475968,3351483391,US
+3351475200,3351483391,US
3351483392,3351484415,CA
3351484416,3351486463,US
3351486464,3351488511,CA
@@ -145930,7 +146842,9 @@
3353335607,3353335614,US
3353335615,3353335616,NL
3353335617,3353335619,US
-3353335620,3353335655,NL
+3353335620,3353335639,NL
+3353335640,3353335643,US
+3353335644,3353335655,NL
3353335656,3353335666,US
3353335667,3353335668,NL
3353335669,3353335670,US
@@ -146372,11 +147286,7 @@
3355052288,3355052543,AU
3355052544,3355053055,CA
3355053056,3355082751,US
-3355082752,3355083263,PS
-3355083264,3355083519,US
-3355083520,3355083775,PS
-3355083776,3355084031,US
-3355084032,3355090943,PS
+3355082752,3355090943,PS
3355090944,3355249151,US
3355249152,3355249663,CA
3355249664,3355260927,US
@@ -146669,10 +147579,9 @@
3355939840,3355940863,SR
3355940864,3355942911,AR
3355942912,3355947007,BO
-3355947008,3355949055,AR
-3355949056,3355950847,CW
+3355947008,3355950847,AR
3355950848,3355950851,MX
-3355950852,3355951103,CW
+3355950852,3355951103,AR
3355951104,3355967487,EC
3355967488,3356033023,VE
3356033024,3356033791,BR
@@ -146951,8 +147860,8 @@
3356393472,3356413183,CL
3356413184,3356413311,CO
3356413312,3356413567,CL
-3356413568,3356413951,CO
-3356413952,3356419839,CL
+3356413568,3356413823,CO
+3356413824,3356419839,CL
3356419840,3356419967,CO
3356419968,3356420287,CL
3356420288,3356420351,CO
@@ -147073,31 +147982,26 @@
3357442336,3357442343,HN
3357442344,3357442431,GT
3357442432,3357442439,HN
-3357442440,3357442655,GT
-3357442656,3357442671,NI
-3357442672,3357443007,GT
+3357442440,3357443007,GT
3357443008,3357443071,SV
-3357443072,3357443599,GT
-3357443600,3357443615,HN
-3357443616,3357444207,GT
+3357443072,3357444207,GT
3357444208,3357444215,HN
3357444216,3357444351,GT
3357444352,3357444607,HN
3357444608,3357448311,GT
3357448312,3357448319,SV
-3357448320,3357448967,GT
-3357448968,3357448975,HN
-3357448976,3357449151,GT
-3357449152,3357449727,HN
+3357448320,3357449215,GT
+3357449216,3357449727,HN
3357449728,3357451167,GT
3357451168,3357451175,HN
3357451176,3357452287,GT
3357452288,3357452543,HN
-3357452544,3357452799,GT
-3357452800,3357453055,NI
+3357452544,3357453055,GT
3357453056,3357453311,SV
3357453312,3357453567,HN
-3357453568,3357456639,GT
+3357453568,3357454591,GT
+3357454592,3357454847,NI
+3357454848,3357456639,GT
3357456640,3357456895,HN
3357456896,3357457919,GT
3357457920,3357458431,HN
@@ -147114,14 +148018,10 @@
3357478912,3357478991,AR
3357478992,3357479007,CO
3357479008,3357479079,AR
-3357479080,3357479095,CO
-3357479096,3357480031,AR
+3357479080,3357479087,CO
+3357479088,3357480031,AR
3357480032,3357480039,CO
-3357480040,3357480103,AR
-3357480104,3357480111,CO
-3357480112,3357480159,AR
-3357480160,3357480175,CO
-3357480176,3357480463,AR
+3357480040,3357480463,AR
3357480464,3357480479,CO
3357480480,3357480559,AR
3357480560,3357480575,CO
@@ -147135,19 +148035,19 @@
3357523968,3357532159,CO
3357532160,3357556991,AR
3357556992,3357557247,MX
-3357557248,3357558175,AR
-3357558176,3357558183,EC
-3357558184,3357559007,AR
+3357557248,3357559007,AR
3357559008,3357559015,EC
3357559016,3357559039,AR
3357559040,3357559167,EC
-3357559168,3357559295,AR
-3357559296,3357559551,CA
-3357559552,3357560319,AR
+3357559168,3357560319,AR
3357560320,3357560575,MX
-3357560576,3357560831,AR
-3357560832,3357561855,CO
-3357561856,3357581311,AR
+3357560576,3357561167,AR
+3357561168,3357561175,CO
+3357561176,3357561199,AR
+3357561200,3357561215,CO
+3357561216,3357561247,AR
+3357561248,3357561279,CO
+3357561280,3357581311,AR
3357581312,3357589503,CL
3357589504,3357605887,BZ
3357605888,3357606911,MX
@@ -147214,7 +148114,9 @@
3357784504,3357784511,SV
3357784512,3357785535,GT
3357785536,3357785567,SV
-3357785568,3357786111,GT
+3357785568,3357785855,GT
+3357785856,3357785983,NI
+3357785984,3357786111,GT
3357786112,3357802495,VE
3357802496,3357868031,MX
3357868032,3357933567,PE
@@ -147224,14 +148126,15 @@
3358064640,3358130175,UY
3358130176,3358131199,EC
3358131200,3358132223,CO
-3358132224,3358142719,AR
+3358132224,3358133631,AR
+3358133632,3358133759,VE
+3358133760,3358142719,AR
3358142720,3358142975,US
3358142976,3358143231,CO
-3358143232,3358143311,AR
+3358143232,3358143295,VE
+3358143296,3358143311,AR
3358143312,3358143327,VE
-3358143328,3358143359,AR
-3358143360,3358143367,VE
-3358143368,3358143487,AR
+3358143328,3358143487,AR
3358143488,3358143999,US
3358144000,3358144127,CL
3358144128,3358144255,AR
@@ -147247,11 +148150,11 @@
3358151168,3358151551,AR
3358151552,3358151679,EC
3358151680,3358151807,PE
-3358151808,3358152063,AR
-3358152064,3358152191,PE
-3358152192,3358153679,AR
-3358153680,3358153695,PR
-3358153696,3358154431,AR
+3358151808,3358153679,AR
+3358153680,3358153695,US
+3358153696,3358153727,AR
+3358153728,3358153855,EC
+3358153856,3358154431,AR
3358154432,3358154447,CL
3358154448,3358154751,AR
3358154752,3358158847,PE
@@ -147268,30 +148171,27 @@
3358457856,3358482175,PA
3358482176,3358482431,BZ
3358482432,3358523391,PA
-3358523392,3358526719,AR
-3358526720,3358527487,VE
-3358527488,3358530815,AR
+3358523392,3358525439,AR
+3358525440,3358525951,VE
+3358525952,3358526719,AR
+3358526720,3358526975,VE
+3358526976,3358530815,AR
3358530816,3358531839,VE
3358531840,3358532095,AR
-3358532096,3358532351,VE
-3358532352,3358532607,AR
-3358532608,3358532863,VE
-3358532864,3358533887,AR
-3358533888,3358534143,VE
+3358532096,3358532863,VE
+3358532864,3358533631,AR
+3358533632,3358534143,VE
3358534144,3358543615,AR
3358543616,3358543871,VE
3358543872,3358544127,MX
3358544128,3358547967,AR
3358547968,3358548479,VE
-3358548480,3358548735,AR
-3358548736,3358548991,VE
-3358548992,3358549503,AR
+3358548480,3358549503,AR
3358549504,3358550015,VE
3358550016,3358553599,AR
3358553600,3358553855,VE
3358553856,3358563327,AR
-3358563328,3358563839,CO
-3358563840,3358564095,VE
+3358563328,3358564095,CO
3358564096,3358567423,AR
3358567424,3358568447,CO
3358568448,3358578687,AR
@@ -147386,20 +148286,14 @@
3359899648,3359916031,CL
3359916032,3359932415,AR
3359932416,3359948799,MX
-3359948800,3359988735,AR
-3359988736,3359989247,CO
-3359989248,3359989503,US
-3359989504,3359989759,AR
-3359989760,3359997951,CO
+3359948800,3359981567,AR
+3359981568,3359997951,CO
3359997952,3360006143,AR
3360006144,3360014335,EC
3360014336,3360096255,AR
3360096256,3360104447,UY
3360104448,3360112639,CO
-3360112640,3360113663,BR
-3360113664,3360114687,CO
-3360114688,3360115711,BR
-3360115712,3360116735,CO
+3360112640,3360116735,BR
3360116736,3360118783,BO
3360118784,3360120831,AR
3360124928,3360125951,VE
@@ -147445,13 +148339,13 @@
3360710656,3360718847,HT
3360718848,3360763903,AR
3360765952,3360767999,CO
-3360768000,3360781055,AR
-3360781056,3360781071,BR
-3360781072,3360781551,AR
+3360768000,3360781551,AR
3360781552,3360781555,VE
3360781556,3360781599,AR
3360781600,3360781615,BS
-3360781616,3360788479,AR
+3360781616,3360782079,AR
+3360782080,3360782087,VE
+3360782088,3360788479,AR
3360788480,3360790527,CL
3360790528,3360849919,AR
3360849920,3360882687,VE
@@ -147463,7 +148357,9 @@
3361030144,3361034239,VE
3361034240,3361036287,EC
3361036288,3361046527,AR
-3361046528,3361052671,BO
+3361046528,3361048575,BO
+3361048576,3361049599,AR
+3361049600,3361052671,BO
3361052672,3361054463,AR
3361054464,3361054719,PE
3361054720,3361058815,NI
@@ -147521,8 +148417,8 @@
3362447360,3362447871,SV
3362447872,3362449407,HN
3362449408,3362450175,SV
-3362450176,3362451199,HN
-3362451200,3362451455,SV
+3362450176,3362450943,HN
+3362450944,3362451455,SV
3362451456,3362452479,AR
3362452480,3362452991,BO
3362452992,3362453247,HN
@@ -147554,7 +148450,9 @@
3362552432,3362552447,MX
3362552448,3362552575,AR
3362552576,3362552591,MX
-3362552592,3362552991,AR
+3362552592,3362552623,AR
+3362552624,3362552639,MX
+3362552640,3362552991,AR
3362552992,3362553007,MX
3362553008,3362553791,AR
3362553792,3362553807,VI
@@ -147586,9 +148484,7 @@
3362711552,3362713599,EC
3362713600,3362714623,VE
3362714624,3362714879,HN
-3362714880,3362716415,VE
-3362716416,3362716671,CR
-3362716672,3362717695,VE
+3362714880,3362717695,VE
3362717696,3362815999,CL
3362816000,3362832383,AR
3362832384,3362838527,CO
@@ -147639,9 +148535,7 @@
3363553920,3363554303,US
3363554304,3363555583,AR
3363555584,3363555839,US
-3363555840,3363556095,AR
-3363556096,3363556351,US
-3363556352,3363557375,AR
+3363555840,3363557375,AR
3363557376,3363559423,BZ
3363559424,3363561471,AR
3363565568,3363569663,AR
@@ -147791,8 +148685,8 @@
3381387264,3381448703,MX
3381448704,3381452799,BR
3381452800,3381453823,AR
-3381453824,3381455871,BR
-3381455872,3381456895,US
+3381453824,3381456383,BR
+3381456384,3381456895,US
3381456896,3381460991,BR
3381460992,3381944319,MX
3381944320,3381946367,BR
@@ -147993,12 +148887,8 @@
3387572224,3387576319,CO
3387576320,3387578367,EC
3387578368,3387584511,AR
-3387584512,3387585535,PE
-3387585536,3387586047,AR
-3387586048,3387586303,PE
-3387586304,3387586559,AR
-3387586560,3387587583,PE
-3387587584,3387600895,AR
+3387584512,3387588607,PE
+3387588608,3387600895,AR
3387600896,3387604991,CO
3387604992,3387613183,EC
3387613184,3387617279,VE
@@ -148014,7 +148904,9 @@
3387949056,3388014591,PE
3388014592,3388080127,CL
3388080128,3388211199,VE
-3388211200,3388342271,CO
+3388211200,3388317959,CO
+3388317960,3388317967,VE
+3388317968,3388342271,CO
3388342272,3388407807,CL
3388407808,3388473343,SV
3388473344,3388604415,VE
@@ -149737,9 +150629,7 @@
3394011136,3394027519,AU
3394027520,3394035711,JP
3394035712,3394039807,MY
-3394039808,3394040575,SG
-3394040576,3394040831,IN
-3394040832,3394041087,SG
+3394039808,3394041087,SG
3394041088,3394041343,MY
3394041344,3394041855,SG
3394041856,3394042879,AU
@@ -150087,8 +150977,8 @@
3395200512,3395200767,TH
3395200768,3395201023,MY
3395201024,3395202047,TH
-3395202048,3395203071,IN
-3395203072,3395215359,JP
+3395202048,3395202559,IN
+3395202560,3395215359,JP
3395215360,3395219455,HK
3395219456,3395223551,TH
3395223552,3395231743,CN
@@ -150649,12 +151539,8 @@
3399548928,3399557119,AU
3399557120,3399565311,SG
3399565312,3399581695,AU
-3399581696,3399584255,US
-3399584256,3399584511,BD
-3399584512,3399587839,US
-3399587840,3399588095,BD
-3399588096,3399589631,US
-3399589632,3399589887,NP
+3399581696,3399581951,HK
+3399581952,3399589887,US
3399589888,3399593983,HK
3399593984,3399598079,BD
3399598080,3399614463,JP
@@ -150739,11 +151625,7 @@
3399925760,3399933951,NP
3399933952,3399942143,CN
3399942144,3399954943,AU
-3399954944,3399974911,US
-3399974912,3399979007,HK
-3399979008,3399983744,US
-3399983745,3399983745,SG
-3399983746,3399991295,US
+3399954944,3399991295,SG
3399991296,3399995391,IN
3399995392,3399999487,KR
3399999488,3400000255,JP
@@ -150825,7 +151707,8 @@
3400271360,3400271615,AU
3400271616,3400271871,CN
3400271872,3400273919,AU
-3400273920,3400275967,TH
+3400273920,3400274943,TH
+3400274944,3400275967,KH
3400275968,3400278015,JP
3400278016,3400286207,SG
3400286208,3400294399,JP
@@ -151278,7 +152161,9 @@
3406372864,3406373119,CN
3406373120,3406373887,AU
3406373888,3406374399,CN
-3406374400,3406379263,AU
+3406374400,3406374911,AU
+3406374912,3406376959,CA
+3406376960,3406379263,AU
3406379264,3406379519,CN
3406379520,3406380799,AU
3406380800,3406381055,CN
@@ -151818,8 +152703,7 @@
3407309824,3407310847,AU
3407310848,3407311103,CN
3407311104,3407314687,AU
-3407314688,3407314943,HK
-3407314944,3407315199,CA
+3407314688,3407315199,HK
3407315200,3407315455,AU
3407315456,3407315711,CN
3407315712,3407318015,AU
@@ -152524,9 +153408,7 @@
3409447936,3409448191,CN
3409448192,3409451007,AU
3409451008,3409451263,CN
-3409451264,3409453055,AU
-3409453056,3409453567,NZ
-3409453568,3409454591,AU
+3409451264,3409454591,AU
3409454592,3409454847,CN
3409454848,3409455103,AU
3409455104,3409455359,CN
@@ -152734,9 +153616,13 @@
3410959872,3410960383,AU
3410960384,3410960447,GB
3410960448,3410960463,SG
-3410960464,3410962175,GB
+3410960464,3410961151,GB
+3410961152,3410961407,HK
+3410961408,3410962175,GB
3410962176,3410962207,SG
-3410962208,3410962431,GB
+3410962208,3410962239,GB
+3410962240,3410962303,HK
+3410962304,3410962431,GB
3410962432,3410964223,HK
3410964224,3410964479,GB
3410964480,3410968575,JP
@@ -152766,7 +153652,7 @@
3411053568,3411054591,HK
3411054592,3411058687,CN
3411058688,3411060735,KH
-3411060736,3411061247,AU
+3411060736,3411060991,AU
3411061248,3411061759,KH
3411061760,3411062783,AU
3411062784,3411064831,HK
@@ -153112,7 +153998,7 @@
3413229568,3413245951,AU
3413245952,3413262335,JP
3413262336,3413263359,PH
-3413263360,3413264383,US
+3413263360,3413264383,TH
3413264384,3413264639,SG
3413264640,3413264895,AU
3413264896,3413265151,ID
@@ -154264,7 +155150,9 @@
3420436480,3420437503,AU
3420437504,3420438527,IN
3420438528,3420454911,HK
-3420454912,3422552063,KR
+3420454912,3422000535,KR
+3422000536,3422000537,IN
+3422000538,3422552063,KR
3422552064,3422846975,US
3422846976,3422855167,GB
3422855168,3423076351,US
@@ -154793,9 +155681,7 @@
3430780672,3430780927,CA
3430780928,3430782463,US
3430782464,3430782719,CA
-3430782720,3430793983,US
-3430793984,3430794239,PR
-3430794240,3430795007,US
+3430782720,3430795007,US
3430795008,3430795263,CA
3430795264,3430805759,US
3430805760,3430806015,CA
@@ -155011,11 +155897,7 @@
3436684198,3436684198,DK
3436684199,3436697087,US
3436697088,3436697343,VE
-3436697344,3436838911,US
-3436838912,3436965929,DE
-3436965930,3436965930,US
-3436965931,3436969983,DE
-3436969984,3437232383,US
+3436697344,3437232383,US
3437232384,3437232639,CA
3437232640,3437242879,US
3437242880,3437243135,CA
@@ -155044,7 +155926,9 @@
3437310976,3437311487,US
3437311488,3437317119,CA
3437317120,3437318143,US
-3437318144,3437331711,CA
+3437318144,3437318655,CA
+3437318656,3437319167,US
+3437319168,3437331711,CA
3437331712,3437331967,US
3437331968,3437332479,CA
3437332480,3437332735,US
@@ -155198,9 +156082,7 @@
3439059712,3439059967,PR
3439059968,3439071103,US
3439071104,3439071135,MX
-3439071136,3444220159,US
-3444220160,3444220415,JP
-3444220416,3448377343,US
+3439071136,3448377343,US
3448377344,3448377855,AG
3448377856,3448379647,US
3448379648,3448379903,SG
@@ -155456,9 +156338,7 @@
3451821568,3451821823,PR
3451821824,3451824127,US
3451824128,3451824383,CA
-3451824384,3451827455,US
-3451827456,3451827711,PR
-3451827712,3451828991,US
+3451824384,3451828991,US
3451828992,3451829247,CA
3451829248,3451835903,US
3451835904,3451836159,CA
@@ -155476,7 +156356,9 @@
3451896320,3451896575,DE
3451896576,3451912191,US
3451912192,3452174335,CA
-3452174336,3452436479,US
+3452174336,3452305407,US
+3452305408,3452313599,HK
+3452313600,3452436479,US
3452436480,3452502015,CA
3452502016,3452506111,HK
3452506112,3452516095,US
@@ -155954,13 +156836,47 @@
3456360448,3456364543,BG
3456364544,3456892927,US
3456892928,3456958463,CA
-3456958464,3457756351,US
+3456958464,3457551871,US
+3457551872,3457552127,CA
+3457552128,3457553407,US
+3457553408,3457553663,CA
+3457553664,3457554175,US
+3457554176,3457554431,CA
+3457554432,3457555711,US
+3457555712,3457555967,CA
+3457555968,3457564927,US
+3457564928,3457565183,CA
+3457565184,3457575167,US
+3457575168,3457575423,CA
+3457575424,3457577727,US
+3457577728,3457578239,CA
+3457578240,3457580543,US
+3457580544,3457580799,CA
+3457580800,3457582591,US
+3457582592,3457582847,CA
+3457582848,3457592319,US
+3457592320,3457592575,CA
+3457592576,3457595391,US
+3457595392,3457595903,CA
+3457595904,3457596671,US
+3457596672,3457597695,CA
+3457597696,3457598207,US
+3457598208,3457598463,CA
+3457598464,3457600511,US
+3457600512,3457600767,CA
+3457600768,3457683967,US
+3457683968,3457684479,CA
+3457684480,3457684735,US
+3457684736,3457684991,CA
+3457684992,3457756351,US
3457756352,3457756383,GB
3457756384,3457762303,US
3457762304,3457765375,CA
3457765376,3458039807,US
3458039808,3458043903,CA
-3458043904,3458233343,US
+3458043904,3458195455,US
+3458195456,3458196479,SG
+3458196480,3458233343,US
3458233344,3458234367,CA
3458234368,3458813951,US
3458813952,3458818047,CA
@@ -155979,32 +156895,39 @@
3459252224,3459257343,US
3459257344,3459258367,AW
3459258368,3459266559,US
-3459266560,3459267327,AG
-3459267328,3459267583,AI
-3459267584,3459267839,US
-3459267840,3459268095,DM
-3459268096,3459268607,AG
+3459266560,3459268607,AG
3459268608,3459277823,US
3459277824,3459278847,AW
-3459278848,3459310591,US
+3459278848,3459285503,US
+3459285504,3459285759,CL
+3459285760,3459310591,US
3459310592,3459310847,KY
-3459310848,3459343359,US
+3459310848,3459312639,US
+3459312640,3459312671,MX
+3459312672,3459312767,US
+3459312768,3459312895,MX
+3459312896,3459327487,US
+3459327488,3459327999,CO
+3459328000,3459341055,US
+3459341056,3459341311,MX
+3459341312,3459343359,US
3459343360,3459343615,CA
-3459343616,3459352263,US
-3459352264,3459352271,VE
-3459352272,3459363583,US
-3459363584,3459363839,CO
-3459363840,3459364159,US
-3459364160,3459364191,CO
-3459364192,3459366399,US
-3459366400,3459366911,AR
-3459366912,3459367679,US
-3459367680,3459367935,VE
-3459367936,3459368191,US
-3459368192,3459368703,VE
-3459368704,3459373311,US
-3459373312,3459373567,CL
-3459373568,3459448831,US
+3459343616,3459350527,US
+3459350528,3459352575,VE
+3459352576,3459354623,US
+3459354624,3459357183,NI
+3459357184,3459357439,VE
+3459357440,3459359999,US
+3459360000,3459360511,VE
+3459360512,3459362815,US
+3459362816,3459364863,CO
+3459364864,3459366911,AR
+3459366912,3459368959,VE
+3459368960,3459371007,MX
+3459371008,3459373055,PE
+3459373056,3459373311,US
+3459373312,3459375103,CL
+3459375104,3459448831,US
3459448832,3459449087,PR
3459449088,3459450623,CA
3459450624,3459450879,US
@@ -156026,22 +156949,40 @@
3459618001,3459620863,CA
3459620864,3459624959,US
3459624960,3459629055,BM
-3459629056,3459688447,US
-3459688448,3459688479,NL
-3459688480,3459689215,US
-3459689216,3459689471,NL
-3459689472,3459731455,US
+3459629056,3459686399,US
+3459686400,3459689471,NL
+3459689472,3459690239,US
+3459690240,3459690751,NL
+3459690752,3459691007,US
+3459691008,3459691519,NL
+3459691520,3459691775,US
+3459691776,3459692543,NL
+3459692544,3459731455,US
3459731456,3459735551,CA
-3459735552,3459847807,US
+3459735552,3459745535,US
+3459745536,3459745791,IT
+3459745792,3459847807,US
3459847808,3459847871,JP
3459847872,3459848959,US
3459848960,3459849215,FR
3459849216,3459873311,US
3459873312,3459873327,MX
-3459873328,3460111971,US
+3459873328,3460104703,US
+3460104704,3460105215,MX
+3460105216,3460111971,US
3460111972,3460111972,MX
3460111973,3460111973,PE
-3460111974,3460762367,US
+3460111974,3460114431,US
+3460114432,3460116479,SR
+3460116480,3460161535,US
+3460161536,3460165631,PR
+3460165632,3460374527,US
+3460374528,3460375551,MX
+3460375552,3460453631,US
+3460453632,3460453887,BS
+3460453888,3460507647,US
+3460507648,3460507903,MX
+3460507904,3460762367,US
3460762368,3460762623,CA
3460762624,3460763391,US
3460763392,3460763647,VG
@@ -156092,13 +157033,23 @@
3460947968,3460952575,US
3460952576,3460952831,ES
3460952832,3461021695,US
-3461021696,3461087231,CA
-3461087232,3461356543,US
+3461021696,3461031935,CA
+3461031936,3461032191,US
+3461032192,3461087231,CA
+3461087232,3461330943,US
+3461330944,3461331199,SG
+3461331200,3461331711,US
+3461331712,3461331967,SG
+3461331968,3461332223,US
+3461332224,3461332479,SG
+3461332480,3461332735,US
+3461332736,3461332991,SG
+3461332992,3461356543,US
3461356544,3461357311,AS
3461357312,3461410047,US
3461410048,3461410303,CA
-3461410304,3461410815,US
-3461410816,3461414911,CA
+3461410304,3461410559,US
+3461410560,3461414911,CA
3461414912,3461419007,US
3461419008,3461423103,DE
3461423104,3461462015,US
@@ -156127,11 +157078,41 @@
3461950720,3461951231,CA
3461951232,3461953535,US
3461953536,3461953791,CA
-3461953792,3462148607,US
+3461953792,3461968127,US
+3461968128,3461968383,CA
+3461968384,3461970431,US
+3461970432,3461970687,CA
+3461970688,3461972223,US
+3461972224,3461972479,CA
+3461972480,3461977855,US
+3461977856,3461978111,CA
+3461978112,3461992703,US
+3461992704,3461992959,CA
+3461992960,3462000895,US
+3462000896,3462001151,CA
+3462001152,3462001919,US
+3462001920,3462002431,CA
+3462002432,3462148607,US
3462148608,3462148863,CA
-3462148864,3462160895,US
-3462160896,3462161151,PR
-3462161152,3462194175,US
+3462148864,3462163967,US
+3462163968,3462164223,CA
+3462164224,3462168319,US
+3462168320,3462168575,CA
+3462168576,3462169599,US
+3462169600,3462169855,CA
+3462169856,3462170623,US
+3462170624,3462171135,CA
+3462171136,3462171391,US
+3462171392,3462171647,CA
+3462171648,3462173695,US
+3462173696,3462173951,CA
+3462173952,3462174463,US
+3462174464,3462174719,CA
+3462174720,3462179839,US
+3462179840,3462180095,CA
+3462180096,3462181375,US
+3462181376,3462181887,CA
+3462181888,3462194175,US
3462194176,3462194431,CA
3462194432,3462231039,US
3462231040,3462231295,CA
@@ -156157,17 +157138,33 @@
3462350848,3462351103,CA
3462351104,3462593791,US
3462593792,3462594559,GN
-3462594560,3462633823,US
+3462594560,3462633471,US
+3462633472,3462633727,SG
+3462633728,3462633823,US
3462633824,3462633855,SG
-3462633856,3462660295,US
+3462633856,3462633983,US
+3462633984,3462634239,SG
+3462634240,3462634751,US
+3462634752,3462635007,SG
+3462635008,3462635263,US
+3462635264,3462635519,SG
+3462635520,3462660295,US
3462660296,3462660303,SG
3462660304,3462660327,US
3462660328,3462660335,SG
3462660336,3462661375,US
3462661376,3462661631,SG
-3462661632,3463017471,US
-3463017472,3463017599,HN
-3463017600,3463176447,US
+3462661632,3463004159,US
+3463004160,3463006207,CO
+3463006208,3463043071,US
+3463043072,3463044095,ES
+3463044096,3463089151,US
+3463089152,3463090175,CA
+3463090176,3463116799,US
+3463116800,3463118847,CO
+3463118848,3463156735,US
+3463156736,3463157759,BO
+3463157760,3463176447,US
3463176448,3463176703,CW
3463176704,3463184383,US
3463184384,3463194623,CA
@@ -156177,11 +157174,17 @@
3463215104,3463243775,CA
3463243776,3463245055,US
3463245056,3463249663,CA
-3463249664,3463708671,US
+3463249664,3463518207,US
+3463518208,3463520255,NL
+3463520256,3463708671,US
3463708672,3463774207,CA
-3463774208,3464128083,US
-3464128084,3464128084,DE
-3464128085,3464167679,US
+3463774208,3464108031,US
+3464108032,3464108287,DE
+3464108288,3464127999,US
+3464128000,3464128255,DE
+3464128256,3464129535,US
+3464129536,3464130047,DE
+3464130048,3464167679,US
3464167680,3464169215,CA
3464169216,3464169471,US
3464169472,3464171775,CA
@@ -156200,7 +157203,9 @@
3464203264,3464203519,DE
3464203520,3464204799,US
3464204800,3464205055,KW
-3464205056,3464205823,US
+3464205056,3464205311,NL
+3464205312,3464205567,SE
+3464205568,3464205823,US
3464205824,3464205951,AF
3464205952,3464206079,UZ
3464206080,3464206207,TJ
@@ -156278,33 +157283,59 @@
3464783872,3464785919,AR
3464785920,3464802303,US
3464802304,3464806399,CA
-3464806400,3465461759,US
+3464806400,3465154559,US
+3465154560,3465158655,BS
+3465158656,3465177087,US
+3465177088,3465179135,PE
+3465179136,3465461759,US
3465461760,3465469951,GB
3465469952,3465470207,US
3465470208,3465470463,GB
-3465470464,3465510911,US
+3465470464,3465474047,US
+3465474048,3465476095,GB
+3465476096,3465510911,US
3465510912,3465543679,JP
3465543680,3465953279,US
3465953280,3465961471,CA
3465961472,3466069055,US
-3466069056,3466069071,CA
-3466069072,3466071807,US
+3466069056,3466069087,CA
+3466069088,3466069343,US
+3466069344,3466069375,CA
+3466069376,3466069447,US
+3466069448,3466069455,CA
+3466069456,3466071807,US
3466071808,3466072063,CA
-3466072064,3466073055,US
+3466072064,3466072431,US
+3466072432,3466072439,CA
+3466072440,3466072775,US
+3466072776,3466072783,CA
+3466072784,3466073055,US
3466073056,3466073087,CA
3466073088,3466074111,US
3466074112,3466076159,CA
-3466076160,3466080255,US
+3466076160,3466080191,US
+3466080192,3466080199,CA
+3466080200,3466080255,US
3466080256,3466084351,CA
3466084352,3466158079,US
3466158080,3466166271,PA
-3466166272,3466564744,US
+3466166272,3466489855,US
+3466489856,3466490111,CA
+3466490112,3466564744,US
3466564745,3466564745,BH
3466564746,3466756095,US
3466756096,3466772479,CA
3466772480,3466846207,US
3466846208,3466854399,CA
-3466854400,3466926285,US
+3466854400,3466860799,US
+3466860800,3466861311,FR
+3466861312,3466901503,US
+3466901504,3466903551,DE
+3466903552,3466907647,US
+3466907648,3466909695,DE
+3466909696,3466914303,US
+3466914304,3466914559,FR
+3466914560,3466926285,US
3466926286,3466926286,FR
3466926287,3466926551,US
3466926552,3466926559,IT
@@ -156316,7 +157347,9 @@
3466937671,3466937727,DE
3466937728,3466938807,US
3466938808,3466938811,GB
-3466938812,3467051007,US
+3466938812,3466958079,US
+3466958080,3466958335,CA
+3466958336,3467051007,US
3467051008,3467051263,CA
3467051264,3467051519,US
3467051520,3467056639,CA
@@ -156332,27 +157365,181 @@
3467378688,3467444223,CA
3467444224,3467554815,US
3467554816,3467567103,CA
-3467567104,3467706367,US
+3467567104,3467619935,US
+3467619936,3467619967,CA
+3467619968,3467706367,US
3467706368,3467902975,CA
3467902976,3467964415,US
3467964416,3467968511,CA
-3467968512,3468296191,US
+3467968512,3468034047,US
+3468034048,3468036095,GB
+3468036096,3468036351,BE
+3468036352,3468036607,DE
+3468036608,3468036863,ES
+3468036864,3468037375,DE
+3468037376,3468037887,US
+3468037888,3468038143,IE
+3468038144,3468038655,FR
+3468038656,3468038911,NL
+3468038912,3468039167,SE
+3468039168,3468039423,FR
+3468039424,3468041215,US
+3468041216,3468041471,FI
+3468041472,3468041727,US
+3468041728,3468041983,TW
+3468041984,3468042367,US
+3468042368,3468042431,IT
+3468042432,3468042495,US
+3468042496,3468042751,AT
+3468042752,3468043135,US
+3468043136,3468043263,DK
+3468043264,3468044799,US
+3468044800,3468044927,GB
+3468044928,3468045055,DK
+3468045056,3468045311,DE
+3468045312,3468045695,US
+3468045696,3468045823,ZA
+3468045824,3468046079,NO
+3468046080,3468046335,ZA
+3468046336,3468046591,FR
+3468046592,3468046719,US
+3468046720,3468046847,DE
+3468046848,3468047103,IT
+3468047104,3468047359,US
+3468047360,3468047615,DE
+3468047616,3468047743,US
+3468047744,3468047807,LU
+3468047808,3468047871,US
+3468047872,3468047887,ES
+3468047888,3468047999,US
+3468048000,3468048127,DE
+3468048128,3468048383,US
+3468048384,3468048639,FR
+3468048640,3468049407,US
+3468049408,3468049663,GB
+3468049664,3468049919,US
+3468049920,3468050175,IT
+3468050176,3468050431,US
+3468050432,3468050687,SE
+3468050688,3468050943,US
+3468050944,3468051007,IT
+3468051008,3468051231,US
+3468051232,3468051263,DK
+3468051264,3468051327,AT
+3468051328,3468052479,US
+3468052480,3468052735,ES
+3468052736,3468052991,GB
+3468052992,3468053759,US
+3468053760,3468054015,CH
+3468054016,3468054271,DE
+3468054272,3468055551,US
+3468055552,3468055807,IT
+3468055808,3468056575,US
+3468056576,3468056831,NO
+3468056832,3468056959,DK
+3468056960,3468057023,IN
+3468057024,3468057087,US
+3468057088,3468057215,LU
+3468057216,3468057375,GB
+3468057376,3468057599,US
+3468057600,3468057855,IL
+3468057856,3468058111,US
+3468058112,3468058175,BE
+3468058176,3468058239,CH
+3468058240,3468058367,GB
+3468058368,3468058368,US
+3468058369,3468058432,IT
+3468058433,3468058559,US
+3468058560,3468058623,SG
+3468058624,3468058687,US
+3468058688,3468058719,ES
+3468058720,3468059647,US
+3468059648,3468059903,FR
+3468059904,3468060159,DE
+3468060160,3468060671,FR
+3468060672,3468060927,US
+3468060928,3468060991,FR
+3468060992,3468061119,US
+3468061120,3468061183,CH
+3468061184,3468061695,US
+3468061696,3468061951,JP
+3468061952,3468062079,US
+3468062080,3468062143,GB
+3468062144,3468062335,US
+3468062336,3468062399,TW
+3468062400,3468062463,DE
+3468062464,3468062719,AT
+3468062720,3468063231,NL
+3468063232,3468063359,US
+3468063360,3468063423,RO
+3468063424,3468063487,US
+3468063488,3468063743,BE
+3468063744,3468063999,US
+3468064000,3468064255,HK
+3468064256,3468064511,US
+3468064512,3468064527,BE
+3468064528,3468064543,US
+3468064544,3468064575,NO
+3468064576,3468064639,US
+3468064640,3468064703,LU
+3468064704,3468064735,US
+3468064736,3468064767,CH
+3468064768,3468065023,DE
+3468065024,3468065279,US
+3468065280,3468065535,DE
+3468065536,3468065791,US
+3468065792,3468065919,IT
+3468065920,3468065951,GB
+3468065952,3468065983,LU
+3468065984,3468065999,CZ
+3468066000,3468066015,BE
+3468066016,3468066047,DE
+3468066048,3468066239,US
+3468066240,3468066271,IE
+3468066272,3468066319,US
+3468066320,3468066327,FR
+3468066328,3468066463,US
+3468066464,3468066495,SE
+3468066496,3468066527,CH
+3468066528,3468066559,US
+3468066560,3468066623,IT
+3468066624,3468068095,US
+3468068096,3468068351,MC
+3468068352,3468068863,US
+3468068864,3468069631,CA
+3468069632,3468081407,US
+3468081408,3468081663,DE
+3468081664,3468081919,AT
+3468081920,3468082431,US
+3468082432,3468082687,NO
+3468082688,3468083967,US
+3468083968,3468084223,AU
+3468084224,3468084735,US
+3468084736,3468084991,SG
+3468084992,3468085759,US
+3468085760,3468086015,ID
+3468086016,3468087807,US
+3468087808,3468088063,SG
+3468088064,3468091391,US
+3468091392,3468091647,NL
+3468091648,3468093695,US
+3468093696,3468093951,DE
+3468093952,3468095231,US
+3468095232,3468095487,SE
+3468095488,3468096511,US
+3468096512,3468096767,NO
+3468096768,3468099327,US
+3468099328,3468099583,FR
+3468099584,3468127743,US
+3468127744,3468128255,IN
+3468128256,3468296191,US
3468296192,3468361727,CA
3468361728,3468443647,US
3468443648,3468460031,CA
3468460032,3468468223,BM
-3468468224,3468492799,US
-3468492800,3468496895,NL
+3468468224,3468496895,US
3468496896,3468500991,GB
-3468500992,3468505087,SG
-3468505088,3468509183,DE
-3468509184,3468513279,US
-3468513280,3468517375,SG
-3468517376,3468521471,NL
-3468521472,3468525567,GB
-3468525568,3468529663,IN
-3468529664,3468533759,SG
-3468533760,3468554239,US
+3468500992,3468554239,US
3468554240,3468555263,NL
3468555264,3468556287,GB
3468556288,3468557311,DE
@@ -156365,7 +157552,9 @@
3468613632,3468614655,PR
3468614656,3468623871,US
3468623872,3468656639,CA
-3468656640,3468682159,US
+3468656640,3468658175,US
+3468658176,3468658431,KY
+3468658432,3468682159,US
3468682160,3468682175,SG
3468682176,3468682191,US
3468682192,3468682207,SG
@@ -156394,7 +157583,9 @@
3468685824,3468687087,US
3468687088,3468687263,NL
3468687264,3468687455,US
-3468687456,3468687583,IE
+3468687456,3468687551,IE
+3468687552,3468687567,US
+3468687568,3468687583,IE
3468687584,3468687615,US
3468687616,3468687631,IE
3468687632,3468687647,NL
@@ -156449,7 +157640,11 @@
3469055744,3469055999,CA
3469056000,3469131775,US
3469131776,3469132799,CA
-3469132800,3469272063,US
+3469132800,3469176319,US
+3469176320,3469176575,MX
+3469176576,3469186303,US
+3469186304,3469186559,MX
+3469186560,3469272063,US
3469272064,3469272575,DE
3469272576,3469279231,US
3469279232,3469283327,PH
@@ -156458,10 +157653,14 @@
3469901824,3469989887,US
3469989888,3469990399,CA
3469990400,3470131199,US
-3470131200,3470137343,AG
+3470131200,3470135295,AG
+3470135296,3470136319,LC
+3470136320,3470137343,AG
3470137344,3470139391,VG
3470139392,3470192639,US
-3470192640,3470196735,CA
+3470192640,3470194927,CA
+3470194928,3470194935,US
+3470194936,3470196735,CA
3470196736,3470453247,US
3470453248,3470453759,GB
3470453760,3470458879,US
@@ -156515,7 +157714,13 @@
3470884864,3470885887,HK
3470885888,3470886655,US
3470886656,3470886911,GB
-3470886912,3471061503,US
+3470886912,3471057919,US
+3471057920,3471058943,VE
+3471058944,3471059967,US
+3471059968,3471060223,ES
+3471060224,3471060991,US
+3471060992,3471061247,NL
+3471061248,3471061503,US
3471061504,3471061759,NL
3471061760,3471093615,US
3471093616,3471093616,SK
@@ -156554,13 +157759,19 @@
3473067008,3473068031,CA
3473068032,3473276927,US
3473276928,3473342463,CA
-3473342464,3473764729,US
+3473342464,3473755391,US
+3473755392,3473755647,HN
+3473755648,3473764729,US
3473764730,3473764730,HK
3473764731,3473765771,US
3473765772,3473765772,UG
-3473765773,3473786059,US
+3473765773,3473765887,US
+3473765888,3473766399,EC
+3473766400,3473786059,US
3473786060,3473786060,ZA
-3473786061,3473835659,US
+3473786061,3473786111,US
+3473786112,3473786127,PR
+3473786128,3473835659,US
3473835660,3473835660,VE
3473835661,3473843248,US
3473843249,3473843249,ID
@@ -156576,39 +157787,51 @@
3474309120,3474325503,CA
3474325504,3474391039,US
3474391040,3474456575,CA
-3474456576,3475112191,US
+3474456576,3474463231,US
+3474463232,3474463487,GB
+3474463488,3474464255,US
+3474464256,3474464767,GB
+3474464768,3474548223,US
+3474548224,3474548479,JP
+3474548480,3475112191,US
3475112192,3475113215,CA
3475113216,3475115007,US
3475115008,3475120127,CA
3475120128,3475124223,US
-3475124224,3475243007,CA
+3475124224,3475171071,CA
+3475171072,3475171199,US
+3475171200,3475243007,CA
3475243008,3475358719,US
3475358720,3475359231,GB
3475359232,3475386367,US
3475386368,3475390463,CA
3475390464,3475569595,US
3475569596,3475569596,TR
-3475569597,3475670271,US
+3475569597,3475670015,US
+3475670016,3475670271,AG
3475670272,3475670527,AI
3475670528,3475670783,LC
3475670784,3475670847,DM
-3475670848,3475670857,US
+3475670848,3475670857,AG
3475670858,3475670858,DM
-3475670859,3475684873,US
+3475670859,3475671039,AG
+3475671040,3475684873,US
3475684874,3475684874,HN
3475684875,3475723779,US
3475723780,3475723780,TW
3475723781,3475766769,US
3475766770,3475766770,BR
-3475766771,3475885951,US
+3475766771,3475882767,US
+3475882768,3475882783,FR
+3475882784,3475882799,US
+3475882800,3475882815,FR
+3475882816,3475885951,US
3475885952,3475885999,CA
3475886000,3475896319,US
3475896320,3475897343,FR
3475897344,3475897471,US
3475897472,3475897503,FR
-3475897504,3475901823,US
-3475901824,3475901951,TH
-3475901952,3475906711,US
+3475897504,3475906711,US
3475906712,3475906715,IE
3475906716,3475907735,US
3475907736,3475907739,SG
@@ -156631,8 +157854,8 @@
3475910832,3475910895,SG
3475910896,3475910911,US
3475910912,3475911039,SG
-3475911040,3475911167,US
-3475911168,3475911427,SG
+3475911040,3475911295,US
+3475911296,3475911427,SG
3475911428,3475911435,US
3475911436,3475911519,SG
3475911520,3475911551,HK
@@ -156738,9 +157961,11 @@
3475955712,3475959807,SG
3475959808,3475996671,US
3475996672,3476029439,CA
-3476029440,3476418559,US
-3476418560,3476422655,CA
-3476422656,3476447231,US
+3476029440,3476111359,US
+3476111360,3476111871,CA
+3476111872,3476348927,US
+3476348928,3476349183,CA
+3476349184,3476447231,US
3476447232,3476455423,CA
3476455424,3476881407,US
3476881408,3476946943,CA
@@ -156772,7 +157997,9 @@
3478192128,3478257663,CA
3478257664,3478261775,US
3478261776,3478261791,SG
-3478261792,3478275983,US
+3478261792,3478274823,US
+3478274824,3478274831,GB
+3478274832,3478275983,US
3478275984,3478275999,GB
3478276000,3478277951,US
3478277952,3478277983,GB
@@ -156804,15 +158031,134 @@
3479969410,3479969410,DE
3479969411,3480223743,US
3480223744,3480256511,CA
-3480256512,3480444927,US
+3480256512,3480284159,US
+3480284160,3480284671,CA
+3480284672,3480444927,US
3480444928,3480449023,CA
-3480449024,3481591807,US
-3481591808,3481595903,BH
-3481595904,3481665535,US
+3480449024,3480551423,US
+3480551424,3480551679,JP
+3480551680,3480551935,DE
+3480551936,3480552191,GB
+3480552192,3480552447,US
+3480552448,3480552703,CH
+3480552704,3480552959,US
+3480552960,3480553215,AT
+3480553216,3480553471,US
+3480553472,3480553727,SG
+3480553728,3480553983,HK
+3480553984,3480554239,US
+3480554240,3480554495,GB
+3480554496,3480554751,SG
+3480554752,3480555263,US
+3480555264,3480555519,NO
+3480555520,3480555775,FR
+3480555776,3480556287,SG
+3480556288,3480556543,HK
+3480556544,3480557055,US
+3480557056,3480557311,HK
+3480557312,3480557567,US
+3480557568,3480557823,JP
+3480557824,3480558079,CA
+3480558080,3480558591,US
+3480558592,3480558847,DO
+3480558848,3480560895,US
+3480560896,3480561151,BR
+3480561152,3480561919,US
+3480561920,3480562175,JP
+3480562176,3480564735,US
+3480564736,3480564991,DE
+3480564992,3480567039,US
+3480567040,3480567551,GB
+3480567552,3480568319,US
+3480568320,3480568575,HK
+3480568576,3480569599,US
+3480569600,3480569855,HK
+3480569856,3480570111,US
+3480570112,3480570367,FR
+3480570368,3480570623,ES
+3480570624,3480570879,JP
+3480570880,3480571391,CH
+3480571392,3480571647,BE
+3480571648,3480575231,US
+3480575232,3480575487,IL
+3480575488,3480575743,US
+3480575744,3480577023,IT
+3480577024,3480580607,US
+3480580608,3480580863,SE
+3480580864,3480581119,DK
+3480581120,3480581631,US
+3480581632,3480581887,CL
+3480581888,3480582143,NO
+3480582144,3480582399,US
+3480582400,3480582655,RU
+3480582656,3480583423,MX
+3480583424,3480588799,US
+3480588800,3480589055,SE
+3480589056,3480591103,US
+3480591104,3480591359,ZA
+3480591360,3480591615,US
+3480591616,3480592127,ID
+3480592128,3480592383,NO
+3480592384,3480592639,CH
+3480592640,3480592895,IE
+3480592896,3480593151,SG
+3480593152,3480593407,DK
+3480593408,3480593663,SG
+3480593664,3480593919,CN
+3480593920,3480594175,ZA
+3480594176,3480594431,BE
+3480594432,3480595711,US
+3480595712,3480595967,TH
+3480595968,3480596991,SG
+3480596992,3480597247,US
+3480597248,3480598271,AU
+3480598272,3480598527,FR
+3480598528,3480599039,AU
+3480599040,3480599295,JP
+3480599296,3480599551,CA
+3480599552,3480599807,SG
+3480599808,3480600575,US
+3480600576,3480601087,DE
+3480601088,3480601343,BE
+3480601344,3480601599,AU
+3480601600,3480601855,GB
+3480601856,3480602111,FR
+3480602112,3480602879,US
+3480602880,3480603647,IT
+3480603648,3480603903,BE
+3480603904,3480604159,HK
+3480604160,3480604671,ES
+3480604672,3480604927,IL
+3480604928,3480605183,GB
+3480605184,3480605439,MX
+3480605440,3480605695,PH
+3480605696,3480605951,MX
+3480605952,3480606207,PH
+3480606208,3480606463,MX
+3480606464,3480606719,BE
+3480606720,3480606975,GR
+3480606976,3480607231,US
+3480607232,3480607487,IT
+3480607488,3480610303,US
+3480610304,3480610559,ES
+3480610560,3480611327,US
+3480611328,3480611583,JP
+3480611584,3480611839,MX
+3480611840,3480612095,BR
+3480612096,3480612351,LU
+3480612352,3480839423,US
+3480839424,3480839935,GB
+3480839936,3480907263,US
+3480907264,3480907775,FR
+3480907776,3480968191,US
+3480968192,3480968447,AU
+3480968448,3481665535,US
3481665536,3481731071,CA
3481731072,3481796607,US
3481796608,3481812991,AU
-3481812992,3481829375,CA
+3481812992,3481822063,CA
+3481822064,3481822079,US
+3481822080,3481829375,CA
3481829376,3481951977,US
3481951978,3481951978,DE
3481951979,3481959020,US
@@ -156822,54 +158168,111 @@
3481964580,3481993791,US
3481993792,3481993799,CA
3481993800,3481994239,US
-3481994240,3481994495,CA
-3481994496,3481996543,US
-3481996544,3481996799,CA
-3481996800,3481997567,US
-3481997568,3481997823,CA
-3481997824,3481999103,US
+3481994240,3481994751,CA
+3481994752,3481995007,US
+3481995008,3481995263,CA
+3481995264,3481996031,US
+3481996032,3481996287,CA
+3481996288,3481996543,US
+3481996544,3481997311,CA
+3481997312,3481997567,US
+3481997568,3481998591,CA
+3481998592,3481998847,AG
+3481998848,3481999103,US
3481999104,3481999359,CA
-3481999360,3482000639,US
-3482000640,3482000895,CA
-3482000896,3482001151,US
-3482001152,3482001663,CA
-3482001664,3482002943,US
-3482002944,3482003455,CA
+3481999360,3481999615,US
+3481999616,3482001663,CA
+3482001664,3482001919,US
+3482001920,3482002175,CA
+3482002176,3482002431,US
+3482002432,3482003455,CA
3482003456,3482004479,US
-3482004480,3482005247,CA
-3482005248,3482005503,US
-3482005504,3482005759,CA
-3482005760,3482008319,US
-3482008320,3482008831,CA
-3482008832,3482009087,US
-3482009088,3482009343,CA
-3482009344,3482014463,US
-3482014464,3482014719,CA
-3482014720,3482017535,US
+3482004480,3482006015,CA
+3482006016,3482007551,US
+3482007552,3482008063,CA
+3482008064,3482008319,US
+3482008320,3482011135,CA
+3482011136,3482011647,US
+3482011648,3482012159,CA
+3482012160,3482012927,US
+3482012928,3482013951,CA
+3482013952,3482014207,US
+3482014208,3482014719,CA
+3482014720,3482014863,US
+3482014864,3482014879,CA
+3482014880,3482016255,US
+3482016256,3482016767,CA
+3482016768,3482017023,US
+3482017024,3482017279,CA
+3482017280,3482017535,US
3482017536,3482017791,CA
-3482017792,3482023423,US
-3482023424,3482024191,CA
-3482024192,3482024959,US
+3482017792,3482018047,US
+3482018048,3482018303,CA
+3482018304,3482019327,US
+3482019328,3482019583,CA
+3482019584,3482020607,US
+3482020608,3482020863,CA
+3482020864,3482021119,US
+3482021120,3482022143,CA
+3482022144,3482022911,US
+3482022912,3482024703,CA
+3482024704,3482024959,US
3482024960,3482025215,CA
-3482025216,3482028799,US
-3482028800,3482029055,CA
-3482029056,3482033407,US
-3482033408,3482033663,CA
-3482033664,3482035967,US
+3482025216,3482025471,US
+3482025472,3482028543,CA
+3482028544,3482028799,US
+3482028800,3482029311,CA
+3482029312,3482029567,US
+3482029568,3482030335,CA
+3482030336,3482030591,US
+3482030592,3482032895,CA
+3482032896,3482033151,US
+3482033152,3482033663,CA
+3482033664,3482033919,US
+3482033920,3482034431,CA
+3482034432,3482035199,US
+3482035200,3482035711,CA
+3482035712,3482035967,US
3482035968,3482036223,CA
-3482036224,3482039551,US
-3482039552,3482039807,CA
-3482039808,3482045439,US
-3482045440,3482045695,CA
+3482036224,3482036479,US
+3482036480,3482036735,CA
+3482036736,3482036991,US
+3482036992,3482037247,CA
+3482037248,3482037759,US
+3482037760,3482038015,CA
+3482038016,3482038271,US
+3482038272,3482038783,CA
+3482038784,3482039551,US
+3482039552,3482040319,CA
+3482040320,3482041087,US
+3482041088,3482041343,CA
+3482041344,3482041599,US
+3482041600,3482041855,CA
+3482041856,3482042111,US
+3482042112,3482042367,CA
+3482042368,3482043903,US
+3482043904,3482044927,CA
+3482044928,3482045183,US
+3482045184,3482045695,CA
3482045696,3482046975,US
3482046976,3482047487,CA
3482047488,3482047743,US
3482047744,3482047999,CA
-3482048000,3482049791,US
-3482049792,3482050047,CA
-3482050048,3482052607,US
-3482052608,3482052863,CA
-3482052864,3482058239,US
+3482048000,3482048511,US
+3482048512,3482048767,CA
+3482048768,3482049791,US
+3482049792,3482050559,CA
+3482050560,3482051327,US
+3482051328,3482051583,CA
+3482051584,3482051839,US
+3482051840,3482052863,CA
+3482052864,3482053631,US
+3482053632,3482053887,CA
+3482053888,3482053999,US
+3482054000,3482054015,CA
+3482054016,3482054143,US
+3482054144,3482054655,CA
+3482054656,3482058239,US
3482058240,3482058495,CA
3482058496,3482591231,US
3482591232,3482595327,HK
@@ -156879,26 +158282,78 @@
3482605568,3482612735,JP
3482612736,3482615807,SG
3482615808,3482632191,CA
-3482632192,3482758499,US
+3482632192,3482755081,US
+3482755082,3482755091,MX
+3482755092,3482755101,US
+3482755102,3482755111,CN
+3482755112,3482755211,US
+3482755212,3482755221,CA
+3482755222,3482755377,US
+3482755378,3482755387,RU
+3482755388,3482755623,US
+3482755624,3482755633,AQ
+3482755634,3482755733,US
+3482755734,3482755743,GB
+3482755744,3482755753,US
+3482755754,3482755763,FI
+3482755764,3482756361,US
+3482756362,3482756371,RU
+3482756372,3482756381,BR
+3482756382,3482756401,US
+3482756402,3482756411,ES
+3482756412,3482756421,US
+3482756422,3482756431,AZ
+3482756432,3482756501,US
+3482756502,3482756511,DM
+3482756512,3482756531,US
+3482756532,3482756541,LK
+3482756542,3482756893,US
+3482756894,3482756903,BR
+3482756904,3482756913,FR
+3482756914,3482757741,US
+3482757742,3482757751,JO
+3482757752,3482758499,US
3482758500,3482758527,VE
-3482758528,3482760447,US
+3482758528,3482759823,US
+3482759824,3482759831,BR
+3482759832,3482760049,US
+3482760050,3482760062,NL
+3482760063,3482760447,US
3482760448,3482760703,AI
-3482760704,3482775551,US
+3482760704,3482760799,US
+3482760800,3482760815,BR
+3482760816,3482761503,US
+3482761504,3482761519,IL
+3482761520,3482761599,US
+3482761600,3482761727,IT
+3482761728,3482775551,US
3482775552,3482779647,PR
3482779648,3482910719,US
3482910720,3482927103,CA
-3482927104,3483025407,US
-3483025408,3483041791,DE
-3483041792,3483254783,US
+3482927104,3483254783,US
3483254784,3483271167,AU
-3483271168,3483336703,US
-3483336704,3483344895,CA
+3483271168,3483336959,US
+3483336960,3483337215,CA
+3483337216,3483337983,US
+3483337984,3483338239,CA
+3483338240,3483339263,US
+3483339264,3483339519,CA
+3483339520,3483340287,US
+3483340288,3483341055,CA
+3483341056,3483341311,US
+3483341312,3483341567,CA
+3483341568,3483342591,US
+3483342592,3483344895,CA
3483344896,3483435007,US
3483435008,3483533311,CA
3483533312,3483631615,US
3483631616,3483697151,CA
3483697152,3483791359,US
-3483791360,3483795455,PR
+3483791360,3483791623,PR
+3483791624,3483791631,US
+3483791632,3483791815,PR
+3483791816,3483791823,US
+3483791824,3483795455,PR
3483795456,3483828223,US
3483828224,3483836415,CA
3483836416,3483844607,US
@@ -156908,48 +158363,88 @@
3483880928,3483893759,CA
3483893760,3484006911,US
3484006912,3484007167,AU
-3484007168,3484320767,US
+3484007168,3484013055,US
+3484013056,3484013567,DE
+3484013568,3484320767,US
3484321792,3484322047,PR
3484322048,3484325887,US
3484326912,3484327423,US
3484327424,3484327935,CA
3484327936,3484332031,US
3484332032,3484336127,HK
-3484336128,3484451071,US
-3484451072,3484451839,CA
-3484451840,3484453119,US
-3484453120,3484453375,CA
-3484453376,3484454143,US
-3484454144,3484454399,CA
-3484454400,3484455935,US
+3484336128,3484438527,US
+3484438528,3484438783,ZM
+3484438784,3484439551,US
+3484439552,3484439807,ZM
+3484439808,3484450815,US
+3484450816,3484451839,CA
+3484451840,3484452095,US
+3484452096,3484453631,CA
+3484453632,3484453887,US
+3484453888,3484454911,CA
+3484454912,3484455423,US
+3484455424,3484455679,CA
+3484455680,3484455935,US
3484455936,3484456191,CA
-3484456192,3484457215,US
-3484457216,3484457471,CA
-3484457472,3484458239,US
-3484458240,3484458495,CA
-3484458496,3484465663,US
+3484456192,3484456703,US
+3484456704,3484457727,CA
+3484457728,3484457983,US
+3484457984,3484458751,CA
+3484458752,3484459007,US
+3484459008,3484459775,CA
+3484459776,3484460687,US
+3484460688,3484460703,CA
+3484460704,3484460735,US
+3484460736,3484460751,CA
+3484460752,3484460799,US
+3484460800,3484461055,CA
+3484461056,3484461823,US
+3484461824,3484462079,CA
+3484462080,3484462335,US
+3484462336,3484462591,CA
+3484462592,3484463615,US
+3484463616,3484464127,CA
+3484464128,3484464319,US
+3484464320,3484464335,CA
+3484464336,3484464895,US
+3484464896,3484465151,CA
+3484465152,3484465663,US
3484465664,3484465919,CA
-3484465920,3484466943,US
-3484466944,3484467199,CA
-3484467200,3484467967,US
-3484467968,3484468223,CA
-3484468224,3484471807,US
+3484465920,3484466175,US
+3484466176,3484466431,CA
+3484466432,3484466687,US
+3484466688,3484468223,CA
+3484468224,3484468479,US
+3484468480,3484468991,CA
+3484468992,3484469247,US
+3484469248,3484469759,CA
+3484469760,3484470015,US
+3484470016,3484470527,CA
+3484470528,3484471807,US
3484471808,3484472063,CA
-3484472064,3484473343,US
+3484472064,3484472319,US
+3484472320,3484472575,CA
+3484472576,3484473343,US
3484473344,3484473599,CA
-3484473600,3484475647,US
-3484475648,3484476159,CA
-3484476160,3484476671,US
-3484476672,3484476927,CA
-3484476928,3484480255,US
-3484480256,3484480511,CA
-3484480512,3484481791,US
-3484481792,3484482047,CA
+3484473600,3484473855,US
+3484473856,3484474879,CA
+3484474880,3484475135,US
+3484475136,3484477183,CA
+3484477184,3484477695,US
+3484477696,3484477951,CA
+3484477952,3484478719,US
+3484478720,3484478975,CA
+3484478976,3484479231,US
+3484479232,3484479487,CA
+3484479488,3484479743,US
+3484479744,3484479999,CA
+3484480000,3484480255,US
+3484480256,3484481279,CA
+3484481280,3484481535,US
+3484481536,3484482047,CA
3484482048,3484482559,US
-3484482560,3484482815,CA
-3484482816,3484483071,US
-3484483072,3484483327,CA
-3484483328,3484616392,US
+3484482560,3484483583,CA
+3484483584,3484616392,US
3484616393,3484616393,DE
3484616394,3484647423,US
3484647424,3484663807,CA
@@ -157003,7 +158498,15 @@
3485275648,3485277951,US
3485277952,3485278207,CA
3485278208,3485313023,US
-3485313024,3485314047,HK
+3485313024,3485313279,HK
+3485313280,3485313407,TH
+3485313408,3485313519,HK
+3485313520,3485313599,TH
+3485313600,3485313663,MY
+3485313664,3485313791,TH
+3485313792,3485314007,MY
+3485314008,3485314031,HK
+3485314032,3485314047,MY
3485314048,3485317119,US
3485317120,3485318143,IN
3485318144,3485319167,US
@@ -157014,19 +158517,29 @@
3485464576,3485466623,LC
3485466624,3485597695,US
3485597696,3485695999,CA
-3485696000,3485876223,US
-3485876224,3485886719,CA
+3485696000,3485883903,US
+3485883904,3485884159,CA
+3485884160,3485884671,US
+3485884672,3485886719,CA
3485886720,3485887231,US
-3485887232,3485890854,CA
-3485890855,3485890855,US
-3485890856,3485892607,CA
-3485892608,3485960703,US
+3485887232,3485889023,CA
+3485889024,3485890047,US
+3485890048,3485890815,CA
+3485890816,3485891327,US
+3485891328,3485891839,CA
+3485891840,3485958399,US
+3485958400,3485958655,CA
+3485958656,3485959423,US
+3485959424,3485960191,CA
+3485960192,3485960703,US
3485960704,3485960959,CA
3485960960,3485962751,US
3485962752,3485963007,CA
-3485963008,3485965823,US
-3485965824,3485966079,CA
-3485966080,3485967615,US
+3485963008,3485965311,US
+3485965312,3485965567,CA
+3485965568,3485965568,US
+3485965569,3485966335,CA
+3485966336,3485967615,US
3485967616,3485967616,GB
3485967617,3485967871,US
3485967872,3485968127,CA
@@ -157038,25 +158551,254 @@
3485970432,3485970943,CA
3485970944,3485972991,US
3485972992,3485973247,CA
-3485973248,3485974271,US
-3485974272,3485974527,CA
+3485973248,3485973503,US
+3485973504,3485974527,CA
3485974528,3486023679,US
3486023680,3486031871,CA
3486031872,3486269439,US
3486269440,3486285823,JM
3486285824,3486302207,PR
3486302208,3486310399,CA
-3486310400,3486646271,US
+3486310400,3486580735,US
+3486580736,3486580991,GB
+3486580992,3486581503,DE
+3486581504,3486581759,TW
+3486581760,3486582015,GB
+3486582016,3486582271,NO
+3486582272,3486582527,BE
+3486582528,3486582783,AU
+3486582784,3486583039,DE
+3486583040,3486583295,CH
+3486583296,3486583807,US
+3486583808,3486584063,KR
+3486584064,3486584319,US
+3486584320,3486584831,CA
+3486584832,3486585343,US
+3486585344,3486585599,PT
+3486585600,3486586367,FR
+3486586368,3486586623,NZ
+3486586624,3486586879,US
+3486586880,3486587135,AU
+3486587136,3486587391,FR
+3486587392,3486587647,NL
+3486587648,3486587903,CL
+3486587904,3486588415,GB
+3486588416,3486588671,FR
+3486588672,3486589119,US
+3486589120,3486589151,NL
+3486589152,3486589247,US
+3486589248,3486589279,ZA
+3486589280,3486589951,US
+3486589952,3486590207,IT
+3486590208,3486590463,US
+3486590464,3486591743,GB
+3486591744,3486591999,CH
+3486592000,3486592063,FI
+3486592064,3486592255,US
+3486592256,3486592511,NL
+3486592512,3486593023,NO
+3486593024,3486593279,NL
+3486593280,3486593791,DE
+3486593792,3486594047,FR
+3486594048,3486594303,DE
+3486594304,3486594559,BE
+3486594560,3486594719,US
+3486594720,3486594751,LU
+3486594752,3486594783,GB
+3486594784,3486594815,US
+3486594816,3486594943,AR
+3486594944,3486595071,US
+3486595072,3486595327,DK
+3486595328,3486595583,ID
+3486595584,3486595839,PR
+3486595840,3486596095,DK
+3486596096,3486596351,NL
+3486596352,3486596607,NO
+3486596608,3486596735,US
+3486596736,3486596799,CH
+3486596800,3486596863,FR
+3486596864,3486597119,GB
+3486597120,3486597375,IE
+3486597376,3486597631,IT
+3486597632,3486597887,GB
+3486597888,3486598655,US
+3486598656,3486598911,BR
+3486598912,3486599167,NO
+3486599168,3486599423,SE
+3486599424,3486599679,BR
+3486599680,3486599935,US
+3486599936,3486600447,BR
+3486600448,3486601215,US
+3486601216,3486601471,BE
+3486601472,3486601727,US
+3486601728,3486601983,BE
+3486601984,3486602239,NZ
+3486602240,3486603007,US
+3486603008,3486603263,SG
+3486603264,3486603519,US
+3486603520,3486603775,JP
+3486603776,3486604287,US
+3486604288,3486604543,BE
+3486604544,3486605055,US
+3486605056,3486605311,ES
+3486605312,3486605567,NL
+3486605568,3486606079,US
+3486606080,3486606335,MY
+3486606336,3486606591,US
+3486606592,3486606847,FI
+3486606848,3486607359,US
+3486607360,3486607615,JP
+3486607616,3486607871,US
+3486607872,3486608127,PH
+3486608128,3486608383,GB
+3486608384,3486609151,US
+3486609152,3486609663,HK
+3486609664,3486609919,AU
+3486609920,3486610175,SG
+3486610176,3486610431,US
+3486610432,3486610687,SE
+3486610688,3486610943,NL
+3486610944,3486611199,US
+3486611200,3486611215,BR
+3486611216,3486611455,US
+3486611456,3486611711,SG
+3486611712,3486611775,EC
+3486611776,3486611967,US
+3486611968,3486612223,HK
+3486612224,3486612479,SG
+3486612480,3486612607,US
+3486612608,3486612735,FR
+3486612736,3486612991,DE
+3486612992,3486613247,US
+3486613248,3486613759,GB
+3486613760,3486614015,ES
+3486614016,3486614271,US
+3486614272,3486614527,GB
+3486614528,3486614783,US
+3486614784,3486615039,FR
+3486615040,3486615295,BE
+3486615296,3486615551,PH
+3486615552,3486615871,US
+3486615872,3486615903,LU
+3486615904,3486615935,US
+3486615936,3486615967,CH
+3486615968,3486616319,US
+3486616320,3486616831,NO
+3486616832,3486617215,US
+3486617216,3486617343,SE
+3486617344,3486617599,US
+3486617600,3486617855,CH
+3486617856,3486618111,AU
+3486618112,3486618367,NO
+3486618368,3486618623,ES
+3486618624,3486618879,BE
+3486618880,3486619135,FR
+3486619136,3486619391,SG
+3486619392,3486619647,BE
+3486619648,3486619903,CA
+3486619904,3486620159,US
+3486620160,3486620415,SE
+3486620416,3486620671,HK
+3486620672,3486620927,US
+3486620928,3486621183,NL
+3486621184,3486621439,US
+3486621440,3486621695,NL
+3486621696,3486621951,FI
+3486621952,3486622207,ES
+3486622208,3486622463,ZA
+3486622464,3486622719,GB
+3486622720,3486622975,MX
+3486622976,3486623231,DE
+3486623232,3486623487,JP
+3486623488,3486623743,DE
+3486623744,3486623999,US
+3486624000,3486624255,PH
+3486624256,3486624511,SG
+3486624512,3486624767,SE
+3486624768,3486625023,ES
+3486625024,3486625055,US
+3486625056,3486625087,MX
+3486625088,3486625151,US
+3486625152,3486625183,MX
+3486625184,3486625279,US
+3486625280,3486625535,SE
+3486625536,3486625791,NO
+3486625792,3486626047,NL
+3486626048,3486626303,FI
+3486626304,3486626559,IL
+3486626560,3486626567,CH
+3486626568,3486626591,US
+3486626592,3486626623,FI
+3486626624,3486627071,US
+3486627072,3486627327,JP
+3486627328,3486627583,US
+3486627584,3486627839,BE
+3486627840,3486628095,BW
+3486628096,3486628351,ZA
+3486628352,3486628607,US
+3486628608,3486628863,NO
+3486628864,3486629375,PT
+3486629376,3486629631,US
+3486629632,3486629887,CL
+3486629888,3486630143,SE
+3486630144,3486631679,JP
+3486631680,3486631935,ID
+3486631936,3486632447,JP
+3486632448,3486632703,US
+3486632704,3486632959,JP
+3486632960,3486633215,IT
+3486633216,3486633471,GB
+3486633472,3486633599,US
+3486633600,3486633727,CN
+3486633728,3486633983,US
+3486633984,3486634239,HK
+3486634240,3486634495,US
+3486634496,3486634751,KR
+3486634752,3486635007,CH
+3486635008,3486635263,DK
+3486635264,3486635519,FR
+3486635520,3486635775,ES
+3486635776,3486636031,IL
+3486636032,3486636287,ES
+3486636288,3486636543,NL
+3486636544,3486636799,TW
+3486636800,3486637055,DE
+3486637056,3486637311,US
+3486637312,3486637823,BE
+3486637824,3486638335,SE
+3486638336,3486638591,FR
+3486638592,3486638623,US
+3486638624,3486638639,CN
+3486638640,3486638847,US
+3486638848,3486639103,DK
+3486639104,3486639359,BE
+3486639360,3486639615,SG
+3486639616,3486640127,US
+3486640128,3486640383,BE
+3486640384,3486640639,GB
+3486640640,3486642175,US
+3486642176,3486642431,BR
+3486642432,3486642687,PT
+3486642688,3486642943,DK
+3486642944,3486646015,US
+3486646016,3486646143,JP
+3486646144,3486646271,US
3486646272,3486662655,CA
3486662656,3486688255,US
3486688256,3486688511,GB
-3486688512,3487039487,US
+3486688512,3486699519,US
+3486699520,3486699775,CA
+3486699776,3486702591,US
+3486702592,3486702847,CA
+3486702848,3487039487,US
3487039488,3487105023,CA
3487105024,3487177983,US
3487177984,3487178111,NL
3487178112,3487178175,MX
3487178176,3487178239,NL
-3487178240,3487216383,US
+3487178240,3487189247,US
+3487189248,3487189503,DK
+3487189504,3487216383,US
3487216384,3487216639,SE
3487216640,3487236095,US
3487236096,3487301631,CA
@@ -157067,25 +158809,30 @@
3487750416,3487750527,US
3487750528,3487750543,HK
3487750544,3487766527,US
-3487766528,3487767551,CA
-3487767552,3487767807,US
-3487767808,3487768063,CA
-3487768064,3487842303,US
-3487842304,3487858687,CA
-3487858688,3487875071,BM
+3487766528,3487768575,CA
+3487768576,3487842303,US
+3487842304,3487847167,CA
+3487847168,3487847231,US
+3487847232,3487858687,CA
+3487858688,3487861759,BM
+3487861760,3487862015,KY
+3487862016,3487875071,BM
3487875072,3487891455,US
3487891456,3487907839,CA
3487907840,3487913471,US
3487913472,3487913983,CA
3487913984,3487916543,US
3487916544,3487916799,CA
-3487916800,3487920127,US
+3487916800,3487919615,US
+3487919616,3487920127,CA
3487920128,3487921407,NL
3487921408,3487921663,US
3487921664,3487922431,NL
3487922432,3487922687,US
3487922688,3487924223,NL
-3487924224,3488014335,US
+3487924224,3487969791,US
+3487969792,3487970047,KW
+3487970048,3488014335,US
3488014336,3488022527,CA
3488022528,3488071679,US
3488071680,3488072703,CA
@@ -157097,7 +158844,9 @@
3488112640,3488120831,CA
3488120832,3488350207,US
3488350208,3488415743,CA
-3488415744,3488910335,US
+3488415744,3488615935,US
+3488615936,3488616191,AU
+3488616192,3488910335,US
3488910336,3488911359,CA
3488911360,3488940031,US
3488940032,3488956415,CA
@@ -157144,7 +158893,13 @@
3489538048,3489547263,US
3489547264,3489548287,IE
3489548288,3489562623,US
-3489566720,3489685503,US
+3489566720,3489575935,US
+3489575936,3489576191,CN
+3489576192,3489576703,US
+3489576704,3489576959,CN
+3489576960,3489577215,US
+3489577216,3489578239,CN
+3489578240,3489685503,US
3489685504,3489687551,BB
3489687552,3489718271,US
3489718272,3489718527,DM
@@ -157177,9 +158932,7 @@
3490265344,3490267135,CO
3490267136,3490477967,US
3490477968,3490477968,NG
-3490477969,3490488319,US
-3490488320,3490489343,PR
-3490489344,3490703615,US
+3490477969,3490703615,US
3490703616,3490703871,PR
3490703872,3490821127,US
3490821128,3490821128,AE
@@ -157277,13 +159030,12 @@
3493039696,3493039703,RO
3493039704,3493089023,US
3493089024,3493089279,CM
-3493089280,3493101055,US
-3493101056,3493101311,CU
-3493101312,3493244927,US
+3493089280,3493244927,US
3493244928,3493249023,PR
3493249024,3493866495,US
3493866496,3493867519,VG
-3493867520,3493881855,US
+3493867520,3493879807,US
+3493880832,3493881855,US
3493881856,3493882879,CA
3493882880,3493900371,US
3493900372,3493900375,GB
@@ -157771,7 +159523,11 @@
3500813220,3500813223,GB
3500813224,3501183487,US
3501183488,3501183743,GB
-3501183744,3501368831,US
+3501183744,3501328479,US
+3501328480,3501328483,GB
+3501328484,3501328807,US
+3501328808,3501328811,IE
+3501328812,3501368831,US
3501368832,3501369087,NL
3501369088,3501376147,US
3501376148,3501376151,NL
@@ -157877,17 +159633,43 @@
3507055912,3507290111,US
3507290112,3507355647,AR
3507355648,3507421183,US
-3507421184,3507425279,CA
-3507425280,3507425535,US
-3507425536,3507425791,CA
-3507425792,3507426047,US
-3507426048,3507428095,CA
+3507421184,3507421439,CA
+3507421440,3507422207,US
+3507422208,3507422719,CA
+3507422720,3507423231,US
+3507423232,3507423487,CA
+3507423488,3507423743,US
+3507423744,3507423999,CA
+3507424000,3507424511,US
+3507424512,3507424767,CA
+3507424768,3507425023,US
+3507425024,3507425279,CA
+3507425280,3507426303,US
+3507426304,3507426815,CA
+3507426816,3507427583,US
+3507427584,3507427839,CA
+3507427840,3507428095,US
3507428096,3507428351,GB
-3507428352,3507428863,CA
-3507428864,3507429119,US
-3507429120,3507429375,CA
-3507429376,3507430399,US
-3507430400,3507462143,CA
+3507428352,3507430655,US
+3507430656,3507430911,CA
+3507430912,3507433215,US
+3507433216,3507433727,CA
+3507433728,3507433983,US
+3507433984,3507434239,CA
+3507434240,3507434495,US
+3507434496,3507436031,CA
+3507436032,3507436799,US
+3507436800,3507437055,CA
+3507437056,3507437311,US
+3507437312,3507445759,CA
+3507445760,3507449855,US
+3507449856,3507453951,CA
+3507453952,3507454975,US
+3507454976,3507455999,CA
+3507456000,3507456255,US
+3507456256,3507456511,CA
+3507456512,3507458047,US
+3507458048,3507462143,CA
3507462144,3507465727,US
3507465728,3507486719,CA
3507486720,3507585023,US
@@ -157896,27 +159678,252 @@
3507748864,3507749375,CA
3507749376,3507749631,US
3507749632,3507765247,CA
-3507765248,3508109311,US
-3508109312,3508142079,CA
+3507765248,3507809279,US
+3507809280,3507809535,BG
+3507809536,3508109311,US
+3508109312,3508109583,CA
+3508109584,3508109679,US
+3508109680,3508110591,CA
+3508110592,3508111359,US
+3508111360,3508111615,CA
+3508111616,3508111871,US
+3508111872,3508112895,CA
+3508112896,3508113151,US
+3508113152,3508113919,CA
+3508113920,3508114431,US
+3508114432,3508114687,ID
+3508114688,3508117759,CA
+3508117760,3508118015,US
+3508118016,3508119807,CA
+3508119808,3508120319,US
+3508120320,3508120575,CA
+3508120576,3508120831,US
+3508120832,3508122111,CA
+3508122112,3508122367,US
+3508122368,3508122623,CA
+3508122624,3508123135,US
+3508123136,3508123647,CA
+3508123648,3508123903,US
+3508123904,3508125439,CA
+3508125440,3508125951,US
+3508125952,3508126463,CA
+3508126464,3508126719,US
+3508126720,3508127487,CA
+3508127488,3508127743,US
+3508127744,3508130047,CA
+3508130048,3508130303,US
+3508130304,3508130559,CA
+3508130560,3508130815,US
+3508130816,3508132095,CA
+3508132096,3508132351,US
+3508132352,3508132607,CA
+3508132608,3508132863,US
+3508132864,3508134143,CA
+3508134144,3508135423,US
+3508135424,3508135679,CA
+3508135680,3508136447,US
+3508136448,3508137375,CA
+3508137376,3508137407,US
+3508137408,3508142079,CA
3508142080,3508220927,US
3508220928,3508221951,KY
3508221952,3508222975,US
3508222976,3508223999,KY
-3508224000,3508295679,US
+3508224000,3508224255,BM
+3508224256,3508243967,US
+3508243968,3508244223,BM
+3508244224,3508273407,US
+3508273408,3508273663,MX
+3508273664,3508278527,US
+3508278528,3508278783,AU
+3508278784,3508279039,US
+3508279040,3508279295,VE
+3508279296,3508279807,US
+3508279808,3508280063,JP
+3508280064,3508280319,TH
+3508280320,3508280575,JP
+3508280576,3508280831,TW
+3508280832,3508281087,JP
+3508281088,3508281343,KR
+3508281344,3508281599,PH
+3508281600,3508281855,NZ
+3508281856,3508282111,US
+3508282112,3508282367,HK
+3508282368,3508282623,US
+3508282624,3508282879,AU
+3508282880,3508283135,US
+3508283136,3508283391,HK
+3508283392,3508283647,US
+3508283648,3508283903,AU
+3508283904,3508284159,MY
+3508284160,3508284415,SG
+3508284416,3508284671,AU
+3508284672,3508286207,US
+3508286208,3508286463,SE
+3508286464,3508286719,HK
+3508286720,3508288255,US
+3508288256,3508288511,JP
+3508288512,3508289023,US
+3508289024,3508289279,AU
+3508289280,3508289535,US
+3508289536,3508289791,CA
+3508289792,3508291327,US
+3508291328,3508292095,GB
+3508292096,3508292351,CH
+3508292352,3508292863,US
+3508292864,3508294143,DE
+3508294144,3508295679,US
3508295680,3508295935,GB
-3508295936,3508319487,US
+3508295936,3508296959,US
+3508296960,3508297215,CH
+3508297216,3508297471,US
+3508297472,3508297727,IT
+3508297728,3508298239,US
+3508298240,3508298495,DE
+3508298496,3508298751,US
+3508298752,3508299007,ES
+3508299008,3508299263,BE
+3508299264,3508299519,GB
+3508299520,3508299775,US
+3508299776,3508300031,SE
+3508300032,3508300287,DE
+3508300288,3508303615,US
+3508303616,3508303871,DE
+3508303872,3508304383,US
+3508304384,3508304639,DE
+3508304640,3508306943,US
+3508306944,3508307199,CH
+3508307200,3508308991,US
+3508308992,3508309247,BE
+3508309248,3508310527,SE
+3508310528,3508310783,DE
+3508310784,3508311039,BE
+3508311040,3508311295,NL
+3508311296,3508311807,IE
+3508311808,3508312063,US
+3508312064,3508312319,NL
+3508312320,3508312575,CH
+3508312576,3508312831,US
+3508312832,3508313343,DE
+3508313344,3508313599,SE
+3508313600,3508313855,DK
+3508313856,3508314367,GB
+3508314368,3508314623,US
+3508314624,3508314879,DK
+3508314880,3508315135,US
+3508315136,3508315391,NO
+3508315392,3508315647,US
+3508315648,3508315903,FR
+3508315904,3508316159,US
+3508316160,3508316415,PT
+3508316416,3508316671,GB
+3508316672,3508316927,US
+3508316928,3508317183,SE
+3508317184,3508317439,US
+3508317440,3508317695,DE
+3508317696,3508317951,US
+3508317952,3508318463,FI
+3508318464,3508318719,LU
+3508318720,3508318975,IT
+3508318976,3508319487,IL
3508319488,3508319743,RU
-3508319744,3508338687,US
+3508319744,3508319999,CH
+3508320000,3508320255,SE
+3508320256,3508320767,US
+3508320768,3508321791,BE
+3508321792,3508322303,US
+3508322304,3508322559,GB
+3508322560,3508322815,FI
+3508322816,3508323071,NO
+3508323072,3508323327,US
+3508323328,3508323583,NO
+3508323584,3508323839,DE
+3508323840,3508324095,FI
+3508324096,3508324351,IT
+3508324352,3508324607,CH
+3508324608,3508324863,NO
+3508324864,3508325119,GB
+3508325120,3508325375,DE
+3508325376,3508325631,US
+3508325632,3508325887,ZA
+3508325888,3508326399,SE
+3508326400,3508326655,GB
+3508326656,3508326911,ZA
+3508326912,3508327167,IT
+3508327168,3508327679,ES
+3508327680,3508327935,US
+3508327936,3508328447,NE
+3508328448,3508328703,BE
+3508328704,3508329471,IL
+3508329472,3508329727,NL
+3508329728,3508329983,US
+3508329984,3508330495,SE
+3508330496,3508331263,GB
+3508331264,3508331519,BE
+3508331520,3508332031,US
+3508332032,3508332287,GB
+3508332288,3508332543,GR
+3508332544,3508332799,IE
+3508332800,3508333055,NO
+3508333056,3508333311,US
+3508333312,3508333823,CH
+3508333824,3508334591,US
+3508334592,3508334847,AU
+3508334848,3508335103,SG
+3508335104,3508335359,MY
+3508335360,3508335615,AU
+3508335616,3508336127,JP
+3508336128,3508336383,SG
+3508336384,3508336639,HK
+3508336640,3508336895,AU
+3508336896,3508337151,JP
+3508337152,3508337663,PH
+3508337664,3508337919,KR
+3508337920,3508338175,JP
+3508338176,3508338431,US
+3508338432,3508338687,KR
3508338688,3508404223,CA
3508404224,3508690943,US
3508690944,3508695039,CA
3508695040,3508731903,US
-3508731904,3508753663,CA
-3508753664,3508753919,US
-3508753920,3508784895,CA
-3508784896,3508785151,US
-3508785152,3508797439,CA
-3508797440,3509157887,US
+3508731904,3508740095,CA
+3508740096,3508744191,US
+3508744192,3508744447,CA
+3508744448,3508745215,US
+3508745216,3508745471,CA
+3508745472,3508754431,US
+3508754432,3508758527,CA
+3508758528,3508759551,US
+3508759552,3508761343,CA
+3508761344,3508762111,US
+3508762112,3508762879,CA
+3508762880,3508763135,US
+3508763136,3508763391,CA
+3508763392,3508764159,US
+3508764160,3508764415,CA
+3508764416,3508764671,US
+3508764672,3508772863,CA
+3508772864,3508774143,US
+3508774144,3508774399,CA
+3508774400,3508777983,US
+3508777984,3508778239,CA
+3508778240,3508779263,US
+3508779264,3508779519,CA
+3508779520,3508780031,US
+3508780032,3508781055,CA
+3508781056,3508782079,US
+3508782080,3508782591,CA
+3508782592,3508789247,US
+3508789248,3508791295,CA
+3508791296,3508793343,US
+3508793344,3508795391,CA
+3508795392,3508796159,US
+3508796160,3508796415,CA
+3508796416,3508796927,US
+3508796928,3508797439,CA
+3508797440,3509144575,US
+3509144576,3509144831,BR
+3509144832,3509157887,US
3509157888,3509166079,CA
3509166080,3509215231,US
3509215232,3509223423,CA
@@ -157925,12 +159932,18 @@
3509256192,3509305599,US
3509305600,3509305615,GB
3509305616,3509346303,US
-3509346304,3509354495,CA
+3509346304,3509350711,CA
+3509350712,3509350719,US
+3509350720,3509354495,CA
3509354496,3509387263,US
3509387264,3509420031,PE
-3509420032,3509519871,US
+3509420032,3509518847,US
+3509518848,3509519103,CA
+3509519104,3509519871,US
3509519872,3509520127,CA
-3509520128,3509521407,US
+3509520128,3509520895,US
+3509520896,3509521151,CA
+3509521152,3509521407,US
3509521408,3509521663,CA
3509521664,3509522431,US
3509522432,3509522687,KW
@@ -157938,30 +159951,38 @@
3509522944,3509524479,US
3509524480,3509524735,CA
3509524736,3509524991,US
-3509524992,3509525247,CA
-3509525248,3509525503,US
-3509525504,3509525759,CA
-3509525760,3509527807,US
+3509524992,3509525759,CA
+3509525760,3509526527,US
+3509526528,3509526783,CA
+3509526784,3509527807,US
3509527808,3509528063,CA
-3509528064,3509533183,US
-3509533184,3509533439,CA
+3509528064,3509529087,US
+3509529088,3509529215,CA
+3509529216,3509530623,US
+3509530624,3509532671,CA
+3509532672,3509532927,US
+3509532928,3509533439,CA
3509533440,3509534719,US
3509534720,3509535231,CA
3509535232,3509535743,US
3509535744,3509535999,CA
3509536000,3509536255,US
-3509536256,3509536511,CA
-3509536512,3509537279,US
+3509536256,3509536767,CA
+3509536768,3509537279,US
3509537280,3509538303,CA
3509538304,3509538559,US
3509538560,3509538815,CA
3509538816,3509539071,US
3509539072,3509539327,CA
-3509539328,3509541119,US
-3509541120,3509541375,CA
-3509541376,3509543423,US
-3509543424,3509543679,CA
-3509543680,3509544191,US
+3509539328,3509539967,US
+3509539968,3509540031,CA
+3509540032,3509540863,US
+3509540864,3509541503,CA
+3509541504,3509542911,US
+3509542912,3509543167,CA
+3509543168,3509543423,US
+3509543424,3509543935,CA
+3509543936,3509544191,US
3509544192,3509544447,CA
3509544448,3509544703,US
3509544704,3509544959,CA
@@ -157969,40 +159990,46 @@
3509546096,3509546111,CA
3509546112,3509546495,US
3509546496,3509547007,CA
-3509547008,3509552127,US
+3509547008,3509551615,US
+3509551616,3509551871,CA
+3509551872,3509552127,US
3509552128,3509552639,CA
-3509552640,3509554687,US
-3509554688,3509554959,CA
+3509552640,3509554431,US
+3509554432,3509554959,CA
3509554960,3509555199,US
3509555200,3509555455,CA
3509555456,3509555711,US
3509555712,3509556735,CA
-3509556736,3509559039,US
+3509556736,3509557759,US
+3509557760,3509558015,CA
+3509558016,3509559039,US
3509559040,3509559295,KW
3509559296,3509559807,CA
3509559808,3509560063,US
3509560064,3509560319,CA
3509560320,3509560831,US
3509560832,3509561087,CA
-3509561088,3509561855,US
-3509561856,3509562111,CA
-3509562112,3509562367,US
-3509562368,3509562623,CA
-3509562624,3509565183,US
-3509565184,3509565951,CA
-3509565952,3509567487,US
-3509567488,3509567743,CA
-3509567744,3509567999,US
-3509568000,3509568255,CA
-3509568256,3509568767,US
-3509568768,3509569023,CA
-3509569024,3509572863,US
-3509572864,3509573119,CA
-3509573120,3509573439,US
+3509561088,3509561343,US
+3509561344,3509561599,CA
+3509561600,3509561855,US
+3509561856,3509562623,CA
+3509562624,3509563391,US
+3509563392,3509563903,CA
+3509563904,3509564415,US
+3509564416,3509564671,CA
+3509564672,3509565183,US
+3509565184,3509566463,CA
+3509566464,3509567231,US
+3509567232,3509569023,CA
+3509569024,3509572351,US
+3509572352,3509573375,CA
+3509573376,3509573439,US
3509573440,3509573455,CA
-3509573456,3509574143,US
-3509574144,3509574655,CA
-3509574656,3509575935,US
+3509573456,3509573631,US
+3509573632,3509573887,CA
+3509573888,3509574143,US
+3509574144,3509575679,CA
+3509575680,3509575935,US
3509575936,3509576191,CA
3509576192,3509576959,US
3509576960,3509577215,CA
@@ -158010,11 +160037,15 @@
3509577984,3509578239,CA
3509578240,3509579007,US
3509579008,3509579263,CA
-3509579264,3509580031,US
+3509579264,3509579519,US
+3509579520,3509579775,CA
+3509579776,3509580031,US
3509580032,3509580287,CA
3509580288,3509582335,US
3509582336,3509582847,CA
-3509582848,3509731327,US
+3509582848,3509583615,US
+3509583616,3509583871,CA
+3509583872,3509731327,US
3509731328,3509739519,CA
3509739520,3509828095,US
3509828096,3509828159,CA
@@ -158028,25 +160059,59 @@
3510020096,3510021119,JP
3510021120,3510022143,US
3510022144,3510024191,JP
-3510024192,3510280191,US
+3510024192,3510240743,US
+3510240744,3510240751,CA
+3510240752,3510242303,US
+3510242304,3510242559,OM
+3510242560,3510245375,US
+3510245376,3510245631,BD
+3510245632,3510249471,US
+3510249472,3510249983,QA
+3510249984,3510253311,US
+3510253312,3510253567,NC
+3510253568,3510254079,US
+3510254080,3510254591,CA
+3510254592,3510264063,US
+3510264064,3510264319,UG
+3510264320,3510265087,US
+3510265088,3510265343,CA
+3510265344,3510268671,US
+3510268672,3510268927,SY
+3510268928,3510269951,US
+3510269952,3510270719,LY
+3510270720,3510270975,SY
+3510270976,3510280191,US
3510280192,3510286335,SG
3510286336,3510288383,HK
3510288384,3510321151,US
-3510321152,3510323199,AG
+3510321152,3510321663,VG
+3510321664,3510321919,AG
+3510321920,3510322175,KN
+3510322176,3510323199,AG
3510323200,3510324223,KN
3510324224,3510325247,AI
-3510325248,3510326783,AG
-3510326784,3510327295,VG
-3510327296,3510329599,AG
+3510325248,3510326271,AG
+3510326272,3510327295,VG
+3510327296,3510328319,AG
+3510328320,3510328575,KN
+3510328576,3510328831,MS
+3510328832,3510329599,AG
3510329600,3510329855,MS
3510329856,3510331391,AG
3510331392,3510332415,DM
3510332416,3510332927,KN
3510332928,3510333183,LC
-3510333184,3510334975,AG
+3510333184,3510333439,MS
+3510333440,3510333951,KN
+3510333952,3510334975,AG
3510334976,3510335231,KN
-3510335232,3510337535,AG
-3510337536,3510478015,US
+3510335232,3510335743,AI
+3510335744,3510335999,VG
+3510336000,3510337279,AG
+3510337280,3510337535,LC
+3510337536,3510470927,US
+3510470928,3510470935,IL
+3510470936,3510478015,US
3510478016,3510478023,CA
3510478024,3510479103,US
3510479104,3510479359,GU
@@ -158056,17 +160121,31 @@
3510546432,3510550527,CA
3510550528,3510788447,US
3510788448,3510788479,GB
-3510788480,3510935551,US
+3510788480,3510844415,US
+3510844416,3510844927,CA
+3510844928,3510935551,US
3510935552,3510943743,CA
3510943744,3511140351,US
3511140352,3511156735,CA
-3511156736,3511314215,US
+3511156736,3511257855,US
+3511257856,3511258111,CN
+3511258112,3511314215,US
3511314216,3511314223,CA
3511314224,3511812095,US
3511812096,3511832575,CA
3511832576,3511833087,US
3511833088,3511844863,CA
-3511844864,3512043519,US
+3511844864,3512012095,US
+3512012096,3512012159,GB
+3512012160,3512017407,US
+3512017408,3512017663,BR
+3512017664,3512019135,US
+3512019136,3512019151,MX
+3512019152,3512021503,US
+3512021504,3512021759,GB
+3512021760,3512024319,US
+3512024320,3512024575,AU
+3512024576,3512043519,US
3512043520,3512043775,FI
3512043776,3512052735,US
3512052736,3512052991,FI
@@ -158076,40 +160155,75 @@
3512176128,3512176383,GB
3512176384,3512197119,US
3512197120,3512205311,CA
-3512205312,3512210431,US
+3512205312,3512205567,US
+3512205568,3512205823,CL
+3512205824,3512206079,AW
+3512206080,3512206335,CL
+3512206336,3512207103,HN
+3512207104,3512207359,US
+3512207360,3512209407,CO
+3512209408,3512210431,US
3512210432,3512210943,NA
-3512210944,3512221759,US
+3512210944,3512211199,CL
+3512211200,3512211455,AR
+3512211456,3512221695,US
+3512221696,3512221759,AG
3512221760,3512221791,GP
-3512221792,3512221951,US
+3512221792,3512221951,AG
3512221952,3512222207,VG
-3512222208,3512222271,US
+3512222208,3512222271,AG
3512222272,3512222335,KN
-3512222336,3512222463,US
+3512222336,3512222463,AG
3512222464,3512222975,AI
-3512222976,3512223039,US
-3512223040,3512223103,AG
-3512223104,3512233983,US
+3512222976,3512223743,AG
+3512223744,3512225791,ZA
+3512225792,3512227839,PR
+3512227840,3512229887,ZW
+3512229888,3512230143,VE
+3512230144,3512230911,US
+3512230912,3512231167,CL
+3512231168,3512231423,US
+3512231424,3512231679,CL
+3512231680,3512231935,VE
+3512231936,3512233215,US
+3512233216,3512233471,CL
+3512233472,3512233727,US
+3512233728,3512233983,HN
3512233984,3512236031,ZA
-3512236032,3512237055,US
-3512237056,3512237311,MR
-3512237312,3512245503,US
-3512245504,3512245759,IL
-3512245760,3512248831,US
+3512236032,3512236287,US
+3512236288,3512237311,MR
+3512237312,3512237823,US
+3512237824,3512238079,HN
+3512238080,3512240127,AW
+3512240128,3512241663,BS
+3512241664,3512242175,CO
+3512242176,3512242431,CL
+3512242432,3512242687,VE
+3512242688,3512244991,EG
+3512244992,3512246015,IL
+3512246016,3512246783,CL
+3512246784,3512247039,US
+3512247040,3512247295,NG
+3512247296,3512248319,US
+3512248320,3512248831,CO
3512248832,3512249087,CL
-3512249088,3512249343,US
-3512249344,3512249599,IL
-3512249600,3512249855,US
-3512249856,3512250623,IL
-3512250624,3512251135,US
-3512251136,3512251647,IL
-3512251648,3512252159,US
-3512252160,3512253439,IL
-3512253440,3512254463,US
-3512254464,3512256511,IL
-3512256512,3512256767,CL
-3512256768,3512257023,US
-3512257024,3512258559,CL
-3512258560,3512270847,US
+3512249088,3512249343,CO
+3512249344,3512256511,IL
+3512256512,3512258559,CL
+3512258560,3512260607,US
+3512260608,3512261631,GU
+3512261632,3512262655,US
+3512262656,3512263679,GT
+3512263680,3512264703,VE
+3512264704,3512267263,US
+3512267264,3512268031,TG
+3512268032,3512268543,US
+3512268544,3512268799,PR
+3512268800,3512269055,US
+3512269056,3512269311,PR
+3512269312,3512269567,US
+3512269568,3512269823,HN
+3512269824,3512270847,US
3512270848,3512311167,CA
3512311168,3512311295,US
3512311296,3512336383,CA
@@ -158133,8 +160247,30 @@
3512679424,3512679679,HK
3512679680,3512680191,US
3512680192,3512680447,SG
-3512680448,3512688639,US
-3512688640,3512696831,CA
+3512680448,3512689279,US
+3512689280,3512689407,CA
+3512689408,3512689791,US
+3512689792,3512689919,CA
+3512689920,3512690047,US
+3512690048,3512690111,CA
+3512690112,3512690591,US
+3512690592,3512690623,IN
+3512690624,3512690631,US
+3512690632,3512690687,CA
+3512690688,3512695359,US
+3512695360,3512695423,CA
+3512695424,3512695487,US
+3512695488,3512695519,CA
+3512695520,3512695551,US
+3512695552,3512695615,CA
+3512695616,3512695839,US
+3512695840,3512695871,GB
+3512695872,3512695967,US
+3512695968,3512695999,CA
+3512696000,3512696063,US
+3512696064,3512696319,CA
+3512696320,3512696575,US
+3512696576,3512696831,CA
3512696832,3512827903,US
3512827904,3512831999,GB
3512832000,3512836095,US
@@ -158181,16 +160317,44 @@
3514368000,3514403711,CA
3514403712,3514403839,US
3514403840,3514433535,CA
-3514433536,3514718929,US
+3514433536,3514589439,US
+3514589440,3514589695,GT
+3514589696,3514590207,SV
+3514590208,3514590719,NI
+3514590720,3514591103,SV
+3514591104,3514591487,US
+3514591488,3514592255,NI
+3514592256,3514593279,SV
+3514593280,3514596863,US
+3514596864,3514597375,SV
+3514597376,3514718929,US
3514718930,3514718930,GB
-3514718931,3514721386,US
-3514721387,3514721391,BZ
-3514721392,3514724455,US
+3514718931,3514721301,US
+3514721302,3514721303,BZ
+3514721304,3514721385,US
+3514721386,3514721391,BZ
+3514721392,3514723693,US
+3514723694,3514723695,BZ
+3514723696,3514723696,US
+3514723697,3514723697,BZ
+3514723698,3514724455,US
3514724456,3514724456,BZ
3514724457,3514725247,US
3514725248,3514725248,UA
3514725249,3514761215,US
-3514761216,3514843135,CA
+3514761216,3514762167,CA
+3514762168,3514762175,US
+3514762176,3514762927,CA
+3514762928,3514762935,US
+3514762936,3514789887,CA
+3514789888,3514791935,US
+3514791936,3514801663,CA
+3514801664,3514802687,US
+3514802688,3514802975,CA
+3514802976,3514802983,US
+3514802984,3514808831,CA
+3514808832,3514809855,US
+3514809856,3514843135,CA
3514843136,3514993983,US
3514993984,3514993987,FR
3514993988,3514993991,DE
@@ -158204,7 +160368,9 @@
3515301888,3515318271,CA
3515318272,3515596799,US
3515596800,3515613183,CA
-3515613184,3515688686,US
+3515613184,3515678719,US
+3515678720,3515682815,PH
+3515682816,3515688686,US
3515688687,3515688687,PT
3515688688,3515711487,US
3515711488,3515731967,CA
@@ -158217,7 +160383,9 @@
3515965440,3515973631,CA
3515973632,3515990015,US
3515990016,3516006399,CA
-3516006400,3516010495,US
+3516006400,3516008447,US
+3516008448,3516009471,HK
+3516009472,3516010495,US
3516010496,3516014591,PH
3516014592,3516039167,US
3516039168,3516071935,CA
@@ -158227,23 +160395,36 @@
3516094208,3516094208,GB
3516094209,3516095487,US
3516095488,3516095488,GB
-3516095489,3516170239,US
+3516095489,3516139007,US
+3516139008,3516139263,GB
+3516139264,3516170239,US
3516170240,3516203007,CA
3516203008,3516305407,US
3516305408,3516309503,PK
3516309504,3516334079,US
3516334080,3516342271,CA
-3516342272,3516358655,US
+3516342272,3516357631,US
+3516357632,3516357887,MY
+3516357888,3516358143,CA
+3516358144,3516358655,US
3516366848,3516370943,CA
3516370944,3516514303,US
3516514304,3516530687,CA
3516530688,3516643083,US
3516643084,3516643087,PR
-3516643088,3516899839,US
+3516643088,3516899327,US
+3516899328,3516899839,ZA
3516899840,3516900031,NG
3516900032,3516900063,US
3516900064,3516900095,NG
-3516900096,3516903423,US
+3516900096,3516900351,ZA
+3516900352,3516900607,NG
+3516900608,3516900863,ZA
+3516900864,3516902399,US
+3516902400,3516902655,ZA
+3516902656,3516902911,US
+3516902912,3516903167,ZA
+3516903168,3516903423,NG
3516903424,3516907519,CA
3516907520,3517019135,US
3517019136,3517019391,HN
@@ -158256,29 +160437,32 @@
3517095936,3517100031,CA
3517100032,3517112319,US
3517112320,3517120511,CA
-3517120512,3517149951,US
+3517120512,3517136895,US
+3517145088,3517149951,US
3517149952,3517150207,CA
3517150208,3517233151,US
3517233152,3517235199,GU
3517235200,3517382655,US
3517382656,3517383167,CA
3517383168,3517383423,US
-3517383424,3517383679,CA
-3517383680,3517383935,US
-3517383936,3517384191,CA
-3517384192,3517385471,US
+3517383424,3517384703,CA
+3517384704,3517385407,US
+3517385408,3517385439,CA
+3517385440,3517385471,US
3517385472,3517385727,CA
3517385728,3517385983,US
-3517385984,3517387007,CA
-3517387008,3517387519,US
+3517385984,3517387263,CA
+3517387264,3517387519,US
3517387520,3517387775,CA
3517387776,3517388287,US
-3517388288,3517388543,CA
-3517388544,3517389311,US
+3517388288,3517388799,CA
+3517388800,3517389311,US
3517389312,3517389567,CA
-3517389568,3517390079,US
-3517390080,3517390335,CA
-3517390336,3517391871,US
+3517389568,3517389823,US
+3517389824,3517390335,CA
+3517390336,3517390591,US
+3517390592,3517391103,CA
+3517391104,3517391871,US
3517391872,3517392127,CA
3517392128,3517392383,US
3517392384,3517392639,CA
@@ -158288,37 +160472,57 @@
3517394432,3517394943,CA
3517394944,3517395199,US
3517395200,3517395455,CA
-3517395456,3517397247,US
+3517395456,3517396751,US
+3517396752,3517396767,CA
+3517396768,3517397247,US
3517397248,3517397503,CA
3517397504,3517397759,US
3517397760,3517398015,CA
3517398016,3517398527,US
-3517398528,3517398783,CA
-3517398784,3517399807,US
+3517398528,3517399039,CA
+3517399040,3517399807,US
3517399808,3517399871,CA
3517399872,3517400063,US
3517400064,3517400319,CA
3517400320,3517401855,US
-3517401856,3517402111,CA
-3517402112,3517404415,US
-3517404416,3517404671,CA
-3517404672,3517405183,US
+3517401856,3517402367,CA
+3517402368,3517402623,US
+3517402624,3517402879,CA
+3517402880,3517403647,US
+3517403648,3517403903,CA
+3517403904,3517404415,US
+3517404416,3517404927,CA
+3517404928,3517405183,US
3517405184,3517405439,CA
3517405440,3517405695,US
3517405696,3517406719,CA
-3517406720,3517407743,US
+3517406720,3517406975,US
+3517406976,3517407231,CA
+3517407232,3517407743,US
3517407744,3517407999,CA
3517408000,3517408255,US
3517408256,3517408511,CA
3517408512,3517409023,US
3517409024,3517409279,CA
3517409280,3517409791,US
-3517409792,3517410815,CA
-3517410816,3517411327,US
-3517411328,3517413375,CA
-3517413376,3517416919,US
+3517409792,3517411071,CA
+3517411072,3517411327,US
+3517411328,3517414399,CA
+3517414400,3517415167,US
+3517415168,3517415423,CA
+3517415424,3517416919,US
3517416920,3517416927,CA
-3517416928,3517421823,US
+3517416928,3517416959,US
+3517416960,3517417471,CA
+3517417472,3517418495,US
+3517418496,3517419007,CA
+3517419008,3517419519,US
+3517419520,3517420031,CA
+3517420032,3517420375,US
+3517420376,3517420383,CA
+3517420384,3517420799,US
+3517420800,3517421567,CA
+3517421568,3517421823,US
3517421824,3517422079,CA
3517422080,3517422847,US
3517422848,3517423359,CA
@@ -158328,45 +160532,106 @@
3517423488,3517423519,CA
3517423520,3517423871,US
3517423872,3517424127,CA
-3517424128,3517426943,US
-3517426944,3517427199,CA
-3517427200,3517428991,US
-3517428992,3517429503,CA
+3517424128,3517424767,US
+3517424768,3517424831,CA
+3517424832,3517425407,US
+3517425408,3517425919,CA
+3517425920,3517426751,US
+3517426752,3517426815,CA
+3517426816,3517426943,US
+3517426944,3517427711,CA
+3517427712,3517428735,US
+3517428736,3517429503,CA
3517429504,3517430271,US
3517430272,3517430527,CA
3517430528,3517432319,US
-3517432320,3517432575,CA
-3517432576,3517434111,US
+3517432320,3517433343,CA
+3517433344,3517434111,US
3517434112,3517434367,CA
-3517434368,3517437695,US
+3517434368,3517435135,US
+3517435136,3517435391,CA
+3517435392,3517435647,US
+3517435648,3517436415,CA
+3517436416,3517436671,US
+3517436672,3517436927,CA
+3517436928,3517437183,US
+3517437184,3517437439,CA
+3517437440,3517437695,US
3517437696,3517437951,CA
-3517437952,3517438943,US
-3517438944,3517438975,CA
-3517438976,3517439999,US
-3517440000,3517441279,CA
-3517441280,3517442815,US
-3517442816,3517443071,CA
-3517443072,3517445631,US
+3517437952,3517438207,US
+3517438208,3517438463,CA
+3517438464,3517438943,US
+3517438944,3517439231,CA
+3517439232,3517439743,US
+3517439744,3517441279,CA
+3517441280,3517441535,US
+3517441536,3517441791,CA
+3517441792,3517442175,US
+3517442176,3517442207,CA
+3517442208,3517442559,US
+3517442560,3517442623,CA
+3517442624,3517442815,US
+3517442816,3517443583,CA
+3517443584,3517444863,US
+3517444864,3517445119,CA
+3517445120,3517445631,US
3517445632,3517445887,CA
-3517445888,3517446399,US
-3517446400,3517446655,CA
+3517445888,3517446143,US
+3517446144,3517446655,CA
3517446656,3517447167,US
-3517447168,3517447423,CA
-3517447424,3517447863,US
+3517447168,3517447679,CA
+3517447680,3517447863,US
3517447864,3517447871,CA
3517447872,3517447935,US
3517447936,3517448191,CA
3517448192,3517546495,US
3517546496,3517562879,CA
-3517562880,3517644799,US
+3517562880,3517597695,US
+3517597696,3517597951,IE
+3517597952,3517602047,US
+3517602048,3517602303,DE
+3517602304,3517607935,US
+3517607936,3517608191,DE
+3517608192,3517608447,US
+3517608448,3517608703,GB
+3517608704,3517609727,US
+3517609728,3517609743,AT
+3517609744,3517610159,US
+3517610160,3517610175,DE
+3517610176,3517644799,US
3517644800,3517710335,CA
3517710336,3517718527,US
-3517718528,3517726719,CA
-3517726720,3518059519,US
+3517718528,3517720011,CA
+3517720012,3517720015,US
+3517720016,3517726719,CA
+3517726720,3517990911,US
+3517990912,3517991423,CA
+3517991424,3518058495,US
+3518058496,3518059007,CN
+3518059008,3518059263,US
+3518059264,3518059519,CN
3518059520,3518059775,HK
-3518059776,3518062591,US
+3518059776,3518060031,US
+3518060032,3518060287,CN
+3518060288,3518060799,US
+3518060800,3518061055,CN
+3518061056,3518062079,US
+3518062080,3518062591,CN
3518062592,3518066687,CA
-3518066688,3518392575,US
+3518066688,3518075647,US
+3518075648,3518075903,AU
+3518075904,3518076671,US
+3518076672,3518076927,PA
+3518076928,3518374719,US
+3518374720,3518374783,IN
+3518374784,3518380223,US
+3518380224,3518380287,DE
+3518380288,3518381055,US
+3518381056,3518381311,IN
+3518381312,3518381439,US
+3518381440,3518381567,IN
+3518381568,3518381631,DE
+3518381632,3518392575,US
3518392576,3518392831,NL
3518392832,3518393087,US
3518393088,3518393343,SG
@@ -158380,26 +160645,63 @@
3518431232,3518439423,CA
3518439424,3518463999,US
3518464000,3518472191,CA
-3518472192,3519234047,US
+3518472192,3518762495,US
+3518762496,3518762751,GB
+3518762752,3518918143,US
+3518918144,3518918399,IN
+3518918400,3518919423,US
+3518919424,3518919679,IN
+3518919680,3519234047,US
3519234048,3519250431,CA
-3519250432,3519315967,US
-3519315968,3519324159,CA
-3519324160,3519340543,US
+3519250432,3519319807,US
+3519319808,3519320063,CA
+3519320064,3519320319,US
+3519320320,3519322623,CA
+3519322624,3519322879,US
+3519322880,3519323135,CA
+3519323136,3519340543,US
3519340544,3519344639,CA
3519344640,3519354909,US
3519354910,3519354910,BR
3519354911,3519381503,US
3519381504,3519397887,CA
3519397888,3519475711,US
-3519475712,3519477759,DE
-3519477760,3519676415,US
+3519475712,3519476223,BH
+3519476224,3519477759,DE
+3519477760,3519578367,US
+3519578368,3519578623,NA
+3519578624,3519578879,US
+3519578880,3519579135,CA
+3519579136,3519579967,US
+3519579968,3519579983,CY
+3519579984,3519586303,US
+3519586304,3519586559,GB
+3519586560,3519590655,US
+3519590656,3519590911,CA
+3519590912,3519603772,US
+3519603773,3519603781,IN
+3519603782,3519676415,US
3519676416,3519709183,CA
-3519709184,3519741951,US
+3519709184,3519723519,US
+3519723520,3519724031,CA
+3519724032,3519725567,US
+3519725568,3519733759,CA
+3519733760,3519741951,US
3519741952,3519758335,ZA
3519758336,3519772927,US
3519772928,3519773183,AS
-3519773184,3519799295,US
-3519799296,3519807487,CA
+3519773184,3519799807,US
+3519799808,3519800575,CA
+3519800576,3519801087,US
+3519801088,3519801215,CA
+3519801216,3519801223,US
+3519801224,3519801343,CA
+3519801344,3519803647,US
+3519803648,3519803903,CA
+3519803904,3519804159,US
+3519804160,3519805183,CA
+3519805184,3519806975,US
+3519806976,3519807487,CA
3519807488,3519856639,US
3519856640,3519868927,CA
3519868928,3519869183,US
@@ -158408,26 +160710,74 @@
3519870208,3519870463,GB
3519870464,3519871231,US
3519871232,3519871487,GB
-3519871488,3519889407,US
-3519889408,3519901695,CA
+3519871488,3519873023,US
+3519873024,3519874559,CA
+3519874560,3519875071,US
+3519875072,3519877119,CA
+3519877120,3519877167,US
+3519877168,3519877183,CA
+3519877184,3519877887,US
+3519877888,3519878143,CA
+3519878144,3519878271,US
+3519878272,3519878303,CA
+3519878304,3519879727,US
+3519879728,3519879735,CA
+3519879736,3519879935,US
+3519879936,3519880447,CA
+3519880448,3519881983,US
+3519881984,3519882495,CA
+3519882496,3519882751,US
+3519882752,3519884031,CA
+3519884032,3519884287,US
+3519884288,3519901695,CA
3519901696,3519930367,US
3519934464,3519938559,CA
3519938560,3519938815,AT
3519938816,3519939071,BE
-3519939072,3519940095,IL
+3519939072,3519939327,BG
+3519939328,3519939583,HR
+3519939584,3519939839,CY
+3519939840,3519940095,CZ
3519940096,3519940351,DK
-3519940352,3519940607,IL
+3519940352,3519940607,FI
3519940608,3519940863,FR
-3519940864,3519941375,IL
+3519940864,3519941119,GI
+3519941120,3519941375,GR
3519941376,3519941631,HU
-3519941632,3519941887,IL
+3519941632,3519941887,IE
3519941888,3519942143,IT
-3519942144,3519943167,IL
+3519942144,3519942399,LV
+3519942400,3519942655,LT
+3519942656,3519942911,LU
+3519942912,3519943167,NO
3519943168,3519943423,PL
-3519943424,3519944959,IL
+3519943424,3519943679,PT
+3519943680,3519943935,RO
+3519943936,3519944191,RU
+3519944192,3519944447,SK
+3519944448,3519944703,SI
+3519944704,3519944959,ES
3519944960,3519945215,SE
3519945216,3519945471,CH
-3519945472,3519946751,IL
+3519945472,3519945727,TR
+3519945728,3519945983,UA
+3519945984,3519945999,MT
+3519946000,3519946015,RS
+3519946016,3519946031,BY
+3519946032,3519946047,BA
+3519946048,3519946063,MD
+3519946064,3519946079,AL
+3519946080,3519946095,MK
+3519946096,3519946111,EE
+3519946112,3519946127,ME
+3519946128,3519946143,IS
+3519946144,3519946159,IM
+3519946160,3519946175,AD
+3519946176,3519946191,MC
+3519946192,3519946207,LI
+3519946208,3519946223,SM
+3519946224,3519946239,UZ
+3519946240,3519946751,IL
3519946752,3519948287,US
3519948288,3519948799,DE
3519948800,3519967231,US
@@ -158493,12 +160843,24 @@
3521028096,3521032191,CA
3521032192,3521044479,US
3521044480,3521048575,CA
-3521048576,3521216511,US
+3521048576,3521196287,US
+3521196288,3521196543,AR
+3521196544,3521216511,US
3521216512,3521232895,CA
3521232896,3521249279,US
3521249280,3521314815,CA
3521314816,3521347583,US
-3521347584,3521363967,CA
+3521347584,3521358399,CA
+3521358400,3521358463,US
+3521358464,3521358655,CA
+3521358656,3521358719,US
+3521358720,3521358783,CA
+3521358784,3521358815,US
+3521358816,3521361375,CA
+3521361376,3521361391,US
+3521361392,3521361423,CA
+3521361424,3521361439,US
+3521361440,3521363967,CA
3521363968,3521380351,IT
3521380352,3521837055,US
3521837056,3521837311,SG
@@ -158508,15 +160870,36 @@
3521965056,3521966079,DE
3521966080,3522101247,US
3522101248,3522109439,CA
-3522109440,3522131845,US
+3522109440,3522118143,US
+3522118144,3522118655,GB
+3522118656,3522118911,US
+3522118912,3522119679,GB
+3522119680,3522119935,US
+3522119936,3522120191,LY
+3522120192,3522120447,US
+3522120448,3522121215,AE
+3522121216,3522121471,US
+3522121472,3522121983,AE
+3522121984,3522122239,AW
+3522122240,3522123519,US
+3522123520,3522123775,GB
+3522123776,3522125055,US
+3522125056,3522125311,GB
+3522125312,3522131845,US
3522131846,3522131846,BZ
-3522131847,3522131875,US
+3522131847,3522131858,US
+3522131859,3522131859,DE
+3522131860,3522131875,US
3522131876,3522131876,BZ
3522131877,3522131965,US
3522131966,3522131966,BZ
3522131967,3522132126,US
3522132127,3522132127,BZ
-3522132128,3522174975,US
+3522132128,3522133639,US
+3522133640,3522133647,DE
+3522133648,3522133663,US
+3522133664,3522133695,DE
+3522133696,3522174975,US
3522174976,3522179071,BM
3522179072,3522195455,US
3522195456,3522199551,CA
@@ -158532,7 +160915,9 @@
3522893824,3522894847,CA
3522894848,3522902015,US
3522902016,3522903039,CA
-3522903040,3522937855,US
+3522903040,3522903807,US
+3522903808,3522904063,CA
+3522904064,3522937855,US
3522937856,3522938879,GB
3522938880,3522940415,US
3522940416,3522940671,HK
@@ -158704,9 +161089,7 @@
3524743168,3524747263,MP
3524747264,3524755455,PH
3524755456,3524763647,AU
-3524763648,3524781791,PH
-3524781792,3524781823,SG
-3524781824,3524788223,PH
+3524763648,3524788223,PH
3524788224,3524790271,SG
3524790272,3524790527,JP
3524790528,3524790815,SG
@@ -158940,7 +161323,9 @@
3534749696,3534757887,HK
3534757888,3534758143,AU
3534758144,3534758147,JP
-3534758148,3534758911,AU
+3534758148,3534758399,AU
+3534758400,3534758655,HK
+3534758656,3534758911,AU
3534758912,3534758927,PH
3534758928,3534758975,AU
3534758976,3534759039,PH
@@ -159293,7 +161678,8 @@
3558069248,3558080511,NL
3558080512,3558096895,RU
3558096896,3558113279,CZ
-3558113280,3558129663,DE
+3558113280,3558114303,GB
+3558114304,3558129663,DE
3558129664,3558137855,NO
3558137856,3558146047,GB
3558146048,3558154239,RU
@@ -159377,11 +161763,7 @@
3558424576,3558440959,IL
3558440960,3558449151,SE
3558449152,3558457343,IT
-3558457344,3558457407,NL
-3558457408,3558457471,GB
-3558457472,3558457599,NL
-3558457600,3558457727,FR
-3558457728,3558465535,NL
+3558457344,3558465535,NL
3558465536,3558473727,GB
3558473728,3558506495,SA
3558506496,3558514687,UA
@@ -159399,7 +161781,9 @@
3558547456,3558555647,FR
3558555648,3558572031,AT
3558572032,3558580223,DE
-3558580224,3558586879,CH
+3558580224,3558582783,CH
+3558582784,3558583295,GB
+3558583296,3558586879,CH
3558586880,3558587391,GB
3558587392,3558588415,CH
3558588416,3558596607,CZ
@@ -159452,7 +161836,8 @@
3558957056,3558965247,PS
3558965248,3558973439,NO
3558973440,3558981631,SA
-3558981632,3558989823,IR
+3558981632,3558982655,UA
+3558982656,3558989823,IR
3558989824,3558998015,RU
3558998016,3559006207,JO
3559006208,3559014399,RU
@@ -159470,7 +161855,9 @@
3559089936,3559089951,BE
3559089952,3559090239,GB
3559090240,3559090303,BE
-3559090304,3559091023,GB
+3559090304,3559090383,GB
+3559090384,3559090391,BE
+3559090392,3559091023,GB
3559091024,3559091031,BE
3559091032,3559091175,GB
3559091176,3559091183,ES
@@ -159502,9 +161889,9 @@
3559164000,3559164031,NL
3559164032,3559164151,GB
3559164152,3559164159,IT
-3559164160,3559167227,GB
-3559167228,3559167228,DE
-3559167229,3559178239,GB
+3559164160,3559167215,GB
+3559167216,3559167231,DE
+3559167232,3559178239,GB
3559178240,3559186431,LB
3559186432,3559194623,RU
3559194624,3559197551,SE
@@ -159563,7 +161950,9 @@
3559473152,3559489535,CH
3559489536,3559491247,GB
3559491248,3559491263,NL
-3559491264,3559491759,GB
+3559491264,3559491375,GB
+3559491376,3559491391,NL
+3559491392,3559491759,GB
3559491760,3559491767,NL
3559491768,3559505919,GB
3559505920,3559514111,CH
@@ -159626,7 +162015,9 @@
3559907328,3559915519,FR
3559915520,3559923711,IT
3559923712,3559931903,RU
-3559931904,3559940095,GB
+3559931904,3559938181,GB
+3559938182,3559938182,DE
+3559938183,3559940095,GB
3559940096,3559948287,DE
3559948288,3559956479,RU
3559956480,3559964671,IT
@@ -161524,7 +163915,11 @@
3561005056,3561013247,ES
3561013248,3561021439,TR
3561021440,3561022463,DE
-3561022464,3561022719,AT
+3561022464,3561022561,AT
+3561022562,3561022562,DE
+3561022563,3561022563,AT
+3561022564,3561022564,DE
+3561022565,3561022719,AT
3561022720,3561037823,DE
3561037824,3561046015,BE
3561046016,3561054207,RU
@@ -161562,7 +163957,7 @@
3561308160,3561316351,PL
3561316352,3561324543,RU
3561324544,3561325567,CZ
-3561325568,3561326591,RU
+3561325568,3561326591,TR
3561326592,3561328639,IT
3561328640,3561332735,US
3561332736,3561340927,AT
@@ -161601,7 +163996,9 @@
3561562112,3561570303,ES
3561570304,3561578495,AM
3561578496,3561586687,RU
-3561586688,3561594879,BG
+3561586688,3561592575,BG
+3561592576,3561592831,DE
+3561592832,3561594879,BG
3561594880,3561603071,SE
3561603072,3561607167,FR
3561607168,3561607391,GB
@@ -161755,7 +164152,8 @@
3562422272,3562430463,IR
3562430464,3562431231,UA
3562431232,3562431487,RU
-3562431488,3562431999,UA
+3562431488,3562431743,FR
+3562431744,3562431999,UA
3562432000,3562432255,NL
3562432256,3562433279,UA
3562433280,3562433535,CZ
@@ -162101,17 +164499,13 @@
3564519424,3564527615,SI
3564527616,3564543999,SA
3564544000,3564560383,DE
-3564560384,3564571695,GB
-3564571696,3564571703,DE
-3564571704,3564572427,GB
+3564560384,3564572427,GB
3564572428,3564572431,ES
3564572432,3564572527,GB
3564572528,3564572531,DK
3564572532,3564574719,GB
3564574720,3564574975,NL
-3564574976,3564575487,GB
-3564575488,3564575615,DE
-3564575616,3564576767,GB
+3564574976,3564576767,GB
3564584960,3564593151,SA
3564593152,3564601343,RU
3564601344,3564609535,EE
@@ -162215,8 +164609,8 @@
3564895232,3564895743,NL
3564895744,3564895959,GB
3564895960,3564895967,DE
-3564895968,3564896095,GB
-3564896096,3564896111,DE
+3564895968,3564896103,GB
+3564896104,3564896111,DE
3564896112,3564896255,GB
3564896256,3564904447,RU
3564904448,3564912639,DE
@@ -162304,7 +164698,8 @@
3565753840,3565753847,GB
3565753984,3565754367,GB
3565754496,3565754511,GB
-3565754624,3565755263,GB
+3565754624,3565755183,GB
+3565755200,3565755263,GB
3565755280,3565755359,GB
3565755376,3565755583,GB
3565755648,3565755695,GB
@@ -162423,7 +164818,6 @@
3567140864,3567140927,GB
3567141632,3567141887,GB
3567142272,3567142399,GB
-3567143432,3567143439,GB
3567143520,3567143551,GB
3567143680,3567143687,GB
3567143872,3567143935,GB
@@ -163122,7 +165516,9 @@
3575545856,3575562239,FR
3575562240,3575570223,DE
3575570224,3575570239,NL
-3575570240,3575578623,DE
+3575570240,3575570271,DE
+3575570272,3575570272,NL
+3575570273,3575578623,DE
3575578624,3575589631,GB
3575589632,3575589887,CY
3575589888,3575644159,GB
@@ -163252,7 +165648,9 @@
3575676272,3575693311,FR
3575693312,3575697407,DE
3575697408,3575701503,IT
-3575701504,3575703551,GB
+3575701504,3575702591,GB
+3575702592,3575702655,DK
+3575702656,3575703551,GB
3575703552,3575705599,SE
3575705600,3575707647,DK
3575707648,3575708671,LU
@@ -163270,7 +165668,7 @@
3576038336,3576038463,GB
3576038528,3576038591,GB
3576038912,3576038975,GB
-3576039168,3576039231,GB
+3576039168,3576039199,GB
3576039360,3576039383,GB
3576039392,3576039455,GB
3576039520,3576039551,GB
@@ -163283,15 +165681,16 @@
3576040352,3576040383,GB
3576040832,3576040959,GB
3576041472,3576041535,GB
-3576041728,3576041791,GB
+3576041728,3576041775,GB
+3576041784,3576041791,GB
3576041832,3576041847,GB
3576041864,3576041871,GB
3576041880,3576041887,GB
3576041904,3576041919,GB
3576041936,3576041943,GB
-3576041952,3576041975,GB
+3576041952,3576041967,GB
3576042112,3576042239,GB
-3576042496,3576042623,GB
+3576042560,3576042623,GB
3576042688,3576042695,GB
3576042752,3576042815,GB
3576045584,3576045599,GB
@@ -163336,8 +165735,6 @@
3576061584,3576061591,GB
3576061620,3576061631,GB
3576061640,3576061647,GB
-3576061688,3576061695,GB
-3576062464,3576062479,GB
3576064320,3576064448,GB
3576064544,3576064559,GB
3576065856,3576065887,GB
@@ -163375,19 +165772,16 @@
3576080792,3576080799,GB
3576080808,3576080815,GB
3576080824,3576080831,GB
-3576082080,3576082111,GB
-3576082192,3576082223,GB
+3576082080,3576082095,GB
+3576082208,3576082223,GB
3576082688,3576082943,GB
3576084480,3576084543,GB
3576084608,3576084671,GB
3576084704,3576084735,GB
3576084864,3576084927,GB
-3576085184,3576085215,GB
3576086016,3576086143,GB
3576086368,3576086399,GB
-3576086496,3576086527,GB
3576086568,3576086571,GB
-3576086576,3576086591,GB
3576086600,3576086603,GB
3576087808,3576087823,GB
3576087952,3576087967,GB
@@ -163396,13 +165790,11 @@
3576088376,3576088383,GB
3576088480,3576088511,GB
3576088960,3576088967,GB
-3576089024,3576089039,GB
+3576089032,3576089039,GB
3576089440,3576089471,GB
3576089776,3576089791,GB
3576091408,3576091423,GB
3576091456,3576091479,GB
-3576091968,3576091983,GB
-3576092000,3576092031,GB
3576092128,3576092159,GB
3576092864,3576092895,GB
3576093064,3576093071,GB
@@ -163430,7 +165822,9 @@
3576116128,3576116135,DE
3576116136,3576120315,GB
3576120316,3576120319,SG
-3576120320,3576125959,GB
+3576120320,3576124927,GB
+3576124928,3576125183,RO
+3576125184,3576125959,GB
3576125960,3576125963,BE
3576125964,3576126779,GB
3576126780,3576126783,ES
@@ -163444,11 +165838,15 @@
3576168448,3576233983,GB
3576233984,3576236543,FR
3576236544,3576238079,GB
-3576238080,3576240127,FR
+3576238080,3576239103,FR
+3576239104,3576239359,ES
+3576239360,3576240127,FR
3576240128,3576240383,GB
3576240384,3576240511,BE
3576240512,3576240639,ES
-3576240640,3576241991,GB
+3576240640,3576241887,GB
+3576241888,3576241895,FR
+3576241896,3576241991,GB
3576241992,3576241999,FR
3576242000,3576242383,GB
3576242384,3576242391,FR
@@ -163894,9 +166292,7 @@
3582050304,3582058495,NL
3582058496,3582066687,AT
3582066688,3582074879,UA
-3582074880,3582077439,GB
-3582077440,3582077471,DE
-3582077472,3582083071,GB
+3582074880,3582083071,GB
3582083072,3582084095,BG
3582084096,3582084351,NZ
3582084352,3582084607,CA
@@ -164078,7 +166474,7 @@
3583188992,3583197183,RU
3583197184,3583205375,KE
3583205376,3583213567,HR
-3583213568,3583221759,IR
+3583213568,3583221759,ES
3583221760,3583229951,AT
3583229952,3583238143,RU
3583238144,3583246335,GB
@@ -164302,7 +166698,7 @@
3584704512,3584720895,RU
3584720896,3584729087,GB
3584729088,3584737279,DE
-3584745472,3584753663,DK
+3584745472,3584753663,ES
3584753664,3584770047,RU
3584770048,3584778239,NL
3584778240,3584786431,IT
@@ -164340,9 +166736,15 @@
3585048576,3585056767,GB
3585056768,3585064959,LB
3585064960,3585081343,GB
-3585081344,3585089535,IR
+3585081344,3585085439,IR
+3585085440,3585087487,DE
+3585087488,3585088511,TR
+3585088512,3585089535,IR
3585089536,3585097727,FI
-3585097728,3585114111,IR
+3585097728,3585099775,DE
+3585099776,3585101823,IR
+3585101824,3585103871,DE
+3585103872,3585114111,IR
3585114112,3585122303,IS
3585122304,3585130495,ES
3585130496,3585138687,FR
@@ -164412,9 +166814,7 @@
3585551616,3585551871,RU
3585551872,3585552127,NL
3585552128,3585552383,DE
-3585552384,3585552639,RU
-3585552640,3585552895,DE
-3585552896,3585553151,RU
+3585552384,3585553151,RU
3585553152,3585553407,NL
3585553408,3585553663,BG
3585553664,3585555007,RU
@@ -164766,8 +167166,9 @@
3587242672,3587242679,NL
3587242680,3587244031,GB
3587244032,3587260415,IT
-3587260416,3587282943,DE
-3587282944,3587284991,PT
+3587260416,3587277567,DE
+3587277568,3587277823,PT
+3587277824,3587284991,DE
3587284992,3587285247,FR
3587285248,3587285503,IT
3587285504,3587286527,FR
@@ -164787,25 +167188,7 @@
3587415040,3587415807,NL
3587415808,3587424255,BE
3587424256,3587440639,DE
-3587440640,3587440647,SE
-3587440648,3587440655,NO
-3587440656,3587440899,SE
-3587440900,3587440915,NO
-3587440916,3587440923,SE
-3587440924,3587440927,NO
-3587440928,3587440991,SE
-3587440992,3587440999,NO
-3587441000,3587443543,SE
-3587443544,3587443551,NO
-3587443552,3587443603,SE
-3587443604,3587443607,NO
-3587443608,3587443619,SE
-3587443620,3587443623,NO
-3587443624,3587443624,SE
-3587443625,3587443635,NO
-3587443636,3587443639,SE
-3587443640,3587443647,NO
-3587443648,3587443711,SE
+3587440640,3587443711,SE
3587443712,3587444735,NO
3587444736,3587445025,FI
3587445026,3587445026,DK
@@ -164814,25 +167197,9 @@
3587449088,3587449169,DK
3587449170,3587449170,SE
3587449171,3587449343,DK
-3587449344,3587450879,SE
-3587450880,3587450883,NO
-3587450884,3587452927,SE
-3587452928,3587452935,NO
-3587452936,3587452943,SE
-3587452944,3587452959,NO
-3587452960,3587453343,SE
-3587453344,3587453347,NO
-3587453348,3587453351,SE
-3587453352,3587453359,NO
-3587453360,3587453363,SE
-3587453364,3587453375,NO
-3587453376,3587454975,SE
-3587454976,3587454983,NO
-3587454984,3587454995,SE
-3587454996,3587455023,NO
-3587455024,3587455027,SE
-3587455028,3587455075,NO
-3587455076,3587457023,SE
+3587449344,3587453351,SE
+3587453352,3587453355,NO
+3587453356,3587457023,SE
3587457024,3587473407,GB
3587473408,3587489791,IT
3587489792,3587506175,EG
@@ -165047,11 +167414,7 @@
3589599232,3589601279,SE
3589601280,3589603327,RS
3589603328,3589668863,FR
-3589668864,3589670911,LT
-3589670912,3589672959,RU
-3589672960,3589675007,LT
-3589675008,3589676031,RU
-3589676032,3589677055,LT
+3589668864,3589677055,LT
3589677056,3589685247,FR
3589685248,3589718015,GB
3589718016,3589722023,BE
@@ -165064,7 +167427,9 @@
3589767168,3589810431,RU
3589810432,3589810484,PL
3589810485,3589810485,RU
-3589810486,3589810687,PL
+3589810486,3589810537,PL
+3589810538,3589810538,RU
+3589810539,3589810687,PL
3589810688,3589816319,RU
3589816894,3589816894,GB
3589818638,3589818638,DE
@@ -165089,7 +167454,9 @@
3589947392,3589963775,FI
3589963776,3589980159,ES
3589980160,3589996543,CZ
-3589996544,3589998591,GB
+3589996544,3589996733,GB
+3589996734,3589996734,SK
+3589996735,3589998591,GB
3589998592,3589998607,ES
3589998608,3589998639,GB
3589998640,3589998655,DE
@@ -165191,11 +167558,7 @@
3590311232,3590317951,GB
3590317952,3590318015,UA
3590318016,3590324223,GB
-3590324224,3590542591,US
-3590542592,3590542847,SA
-3590542848,3593142178,US
-3593142179,3593142179,DE
-3593142180,3623890943,US
+3590324224,3623890943,US
3623890944,3623891199,ZA
3623891200,3623891455,US
3623891456,3623891711,ZA
@@ -165244,11 +167607,7 @@
3624303872,3624304127,CA
3624304128,3624321023,US
3624321024,3624325119,CA
-3624325120,3624357887,US
-3624357888,3624358143,KN
-3624358144,3624359679,US
-3624359680,3624360703,CW
-3624360704,3624386559,US
+3624325120,3624386559,US
3624386560,3624394751,CA
3624394752,3624402943,US
3624402944,3624411135,JP
@@ -165567,7 +167926,7 @@
3628753920,3628754943,AT
3628754944,3628755967,BE
3628755968,3628756991,AR
-3628756992,3628757503,DE
+3628756992,3628757503,AE
3628757504,3628758527,HK
3628758528,3628759039,DE
3628759040,3628761087,CN
@@ -165913,13 +168272,10 @@
3633546240,3633546751,GA
3633546752,3633547263,US
3633547264,3633548287,GA
-3633548288,3633549567,US
-3633549568,3633549823,GA
-3633549824,3633550847,US
-3633550848,3633551359,GA
-3633551360,3633567231,US
+3633548288,3633567231,US
3633567232,3633567743,NL
-3633567744,3633568767,US
+3633567744,3633568255,US
+3633568256,3633568767,DE
3633568768,3633569023,SG
3633569024,3633569279,US
3633569280,3633569535,CA
@@ -165932,9 +168288,7 @@
3633758208,3633783039,US
3633783296,3633783551,US
3633783552,3633783807,CA
-3633783808,3633815807,US
-3633815808,3633816063,CA
-3633816064,3633818623,US
+3633783808,3633818623,US
3633818624,3633819135,CA
3633819136,3633821695,US
3633821696,3633821951,CA
@@ -165948,9 +168302,7 @@
3633874688,3633876991,CA
3633876992,3633881087,US
3633881088,3633885183,CW
-3633885184,3633889279,US
-3633889280,3633893375,CA
-3633893376,3633971199,US
+3633885184,3633971199,US
3633971200,3634020351,CA
3634020352,3634037247,US
3634037248,3634037759,CA
@@ -166002,7 +168354,9 @@
3634749440,3634880511,US
3634880512,3634888703,CA
3634888704,3634905087,US
-3634905088,3634905343,CA
+3634905088,3634905185,CA
+3634905186,3634905186,US
+3634905187,3634905343,CA
3634905344,3634905599,US
3634905600,3634909183,CA
3634909184,3634913279,US
@@ -166179,9 +168533,7 @@
3636910592,3636910719,CA
3636910720,3636911295,US
3636911296,3636911359,CA
-3636911360,3636911615,US
-3636911616,3636911743,CA
-3636911744,3636911903,US
+3636911360,3636911903,US
3636911904,3636911935,CA
3636911936,3636914175,US
3636914176,3636914431,CA
@@ -166223,15 +168575,9 @@
3637870592,3637886975,GB
3637886976,3638165503,US
3638165504,3638181887,CA
-3638181888,3638222273,US
-3638222274,3638222274,JP
-3638222275,3638222293,US
-3638222294,3638222294,JP
-3638222295,3638226687,US
+3638181888,3638226687,US
3638226688,3638226943,NL
-3638226944,3638228005,US
-3638228006,3638228006,JP
-3638228007,3638247935,US
+3638226944,3638247935,US
3638247936,3638248703,GB
3638248704,3638249215,US
3638249216,3638249471,GB
@@ -166265,7 +168611,9 @@
3638880512,3638880767,CA
3638880768,3638898943,US
3638898944,3638899455,MX
-3638899456,3638956287,US
+3638899456,3638954495,US
+3638954496,3638955007,CA
+3638955008,3638956287,US
3638956288,3638956543,GP
3638956544,3638956799,US
3638956800,3638957055,GP
@@ -166499,8 +168847,8 @@
3639902208,3639918591,PE
3639918592,3639934975,AR
3639934976,3639945215,US
-3639945216,3639945471,NL
-3639945472,3640023079,US
+3639945216,3639946239,NL
+3639946240,3640023079,US
3640023080,3640023087,EG
3640023088,3640057855,US
3640057856,3640068095,CA
@@ -166549,7 +168897,7 @@
3640209408,3640213503,CA
3640213504,3640287231,US
3640287232,3640287743,HK
-3640287744,3640287999,US
+3640287744,3640287999,NZ
3640288000,3640288255,JP
3640288256,3640289279,PH
3640289280,3640290303,HK
@@ -166745,12 +169093,14 @@
3641876480,3641880575,ES
3641880576,3641884671,DE
3641884672,3641888767,NO
-3641888768,3641892863,IT
3641892864,3641896959,ES
3641896960,3641901055,BG
3641901056,3641901311,RO
3641901312,3641901567,DE
-3641901568,3641904383,RO
+3641901568,3641901823,NL
+3641901824,3641903615,RO
+3641903616,3641903871,NL
+3641903872,3641904383,RO
3641904384,3641904639,DE
3641904640,3641905151,RO
3641905152,3641909247,NL
@@ -166817,8 +169167,7 @@
3642051072,3642051327,CA
3642051328,3642051583,US
3642051584,3642051839,AU
-3642051840,3642054399,DE
-3642054400,3642056703,US
+3642051840,3642056703,GB
3642056704,3642060799,RU
3642060800,3642064895,KE
3642064896,3642068991,IT
@@ -166957,7 +169306,9 @@
3642555104,3642555111,NL
3642555112,3642555607,UA
3642555608,3642555615,PL
-3642555616,3642556415,UA
+3642555616,3642555829,UA
+3642555830,3642555830,SE
+3642555831,3642556415,UA
3642556416,3642560511,CZ
3642560512,3642564607,KG
3642564608,3642568703,DE
@@ -167310,8 +169661,7 @@
3645763610,3645763610,PL
3645763611,3645763612,DE
3645763613,3645763613,HU
-3645763614,3645763614,CH
-3645763615,3645763615,DE
+3645763614,3645763615,DE
3645763616,3645763616,FR
3645763617,3645763617,DE
3645763618,3645763618,ES
@@ -168404,7 +170754,8 @@
3649855488,3649856511,GB
3649856512,3649857791,US
3649857792,3649858047,IN
-3649858048,3649859583,US
+3649858048,3649858303,GB
+3649858304,3649859583,US
3649859584,3649863679,SE
3649863680,3649896447,FI
3649896448,3649961983,IT
@@ -168625,14 +170976,13 @@
3651209232,3651209239,GB
3651209240,3651209243,DE
3651209472,3651210751,GB
-3651211264,3651211775,IR
+3651211264,3651211519,IR
3651213824,3651214207,US
3651215360,3651215395,GB
3651215616,3651215871,GB
3651217408,3651217535,GI
3651219456,3651219967,US
-3651220384,3651220415,GB
-3651220432,3651220479,GB
+3651220432,3651220447,GB
3651221504,3651221695,GB
3651223552,3651223567,GB
3651223584,3651223607,GB
@@ -168641,7 +170991,6 @@
3651230720,3651231743,MU
3651232256,3651232287,GB
3651232320,3651232383,GB
-3651232448,3651232511,GB
3651237376,3651237631,SC
3651239936,3651272703,GB
3651272704,3651338239,CH
@@ -168672,8 +171021,8 @@
3651710976,3651715071,AZ
3651715072,3651719167,PL
3651719168,3651723263,CZ
-3651723264,3651725055,IT
-3651725056,3651725311,HR
+3651723264,3651725183,IT
+3651725184,3651725311,HR
3651725312,3651727359,IT
3651727360,3651729407,RU
3651729408,3651747839,GB
@@ -168865,7 +171214,9 @@
3652595168,3652595183,ES
3652595184,3652595871,FR
3652595872,3652595935,PL
-3652595936,3652596351,FR
+3652595936,3652595939,FR
+3652595940,3652595943,GB
+3652595944,3652596351,FR
3652596352,3652596415,IT
3652596416,3652596479,FR
3652596480,3652596543,ES
@@ -168873,9 +171224,7 @@
3652596800,3652596831,CZ
3652596832,3652597183,FR
3652597184,3652597247,DE
-3652597248,3652597347,FR
-3652597348,3652597351,NL
-3652597352,3652597375,FR
+3652597248,3652597375,FR
3652597376,3652597383,ES
3652597384,3652597407,FR
3652597408,3652597439,PL
@@ -168889,7 +171238,9 @@
3652599680,3652599743,IT
3652599744,3652601855,FR
3652601856,3652603903,PL
-3652603904,3652608191,FR
+3652603904,3652608087,FR
+3652608088,3652608091,ES
+3652608092,3652608191,FR
3652608192,3652608223,PT
3652608224,3652608255,FR
3652608256,3652608511,GB
diff --git a/src/config/geoip6 b/src/config/geoip6
index 936a95c3ca..01f425e3d8 100644
--- a/src/config/geoip6
+++ b/src/config/geoip6
@@ -1,8 +1,7 @@
-# Last updated based on July 3 2018 Maxmind GeoLite2 Country
+# Last updated based on August 7 2018 Maxmind GeoLite2 Country
# wget https://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.mmdb.gz
# gunzip GeoLite2-Country.mmdb.gz
# python mmdb-convert.py GeoLite2-Country.mmdb
-600:8801:9400:5a1:948b:ab15:dde3:61a3,600:8801:9400:5a1:948b:ab15:dde3:61a3,US
2000:db8::,2000:db8:ffff:ffff:ffff:ffff:ffff:ffff,US
2001:200::,2001:200:ffff:ffff:ffff:ffff:ffff:ffff,JP
2001:208::,2001:208:ffff:ffff:ffff:ffff:ffff:ffff,SG
@@ -158,7 +157,9 @@
2001:470:28:a2c::,2001:470:28:a2c:ffff:ffff:ffff:ffff,SE
2001:470:28:a2d::,2001:470:33:ffff:ffff:ffff:ffff:ffff,US
2001:470:34::,2001:470:35:ffff:ffff:ffff:ffff:ffff,TH
-2001:470:36::,2001:470:36:dff:ffff:ffff:ffff:ffff,US
+2001:470:36::,2001:470:36:6c:ffff:ffff:ffff:ffff,US
+2001:470:36:6d::,2001:470:36:6d:ffff:ffff:ffff:ffff,IN
+2001:470:36:6e::,2001:470:36:dff:ffff:ffff:ffff:ffff,US
2001:470:36:e00::,2001:470:36:eff:ffff:ffff:ffff:ffff,CN
2001:470:36:f00::,2001:470:3f:ffff:ffff:ffff:ffff:ffff,US
2001:470:40::,2001:470:5f:ffff:ffff:ffff:ffff:ffff,CN
@@ -213,7 +214,9 @@
2001:470:1f0b:77a::,2001:470:1f0b:77a:ffff:ffff:ffff:ffff,DE
2001:470:1f0b:77b::,2001:470:1f0b:784:ffff:ffff:ffff:ffff,UA
2001:470:1f0b:785::,2001:470:1f0b:785:ffff:ffff:ffff:ffff,PL
-2001:470:1f0b:786::,2001:470:1f0b:be6:ffff:ffff:ffff:ffff,UA
+2001:470:1f0b:786::,2001:470:1f0b:9c7:ffff:ffff:ffff:ffff,UA
+2001:470:1f0b:9c8::,2001:470:1f0b:9c8:ffff:ffff:ffff:ffff,AT
+2001:470:1f0b:9c9::,2001:470:1f0b:be6:ffff:ffff:ffff:ffff,UA
2001:470:1f0b:be7::,2001:470:1f0b:be7:ffff:ffff:ffff:ffff,RU
2001:470:1f0b:be8::,2001:470:1f0b:fff:ffff:ffff:ffff:ffff,UA
2001:470:1f0b:1000::,2001:470:1f0b:118a:ffff:ffff:ffff:ffff,US
@@ -284,7 +287,9 @@
2001:470:7288::,2001:470:72ff:ffff:ffff:ffff:ffff:ffff,RU
2001:470:7300::,2001:470:7421:ffff:ffff:ffff:ffff:ffff,US
2001:470:7422::,2001:470:7422:ffff:ffff:ffff:ffff:ffff,DE
-2001:470:7423::,2001:470:74fd:ffff:ffff:ffff:ffff:ffff,US
+2001:470:7423::,2001:470:747a:ffff:ffff:ffff:ffff:ffff,US
+2001:470:747b::,2001:470:747b:ffff:ffff:ffff:ffff:ffff,AT
+2001:470:747c::,2001:470:74fd:ffff:ffff:ffff:ffff:ffff,US
2001:470:74fe::,2001:470:74fe:ffff:ffff:ffff:ffff:ffff,AT
2001:470:74ff::,2001:470:75e5:ffff:ffff:ffff:ffff:ffff,US
2001:470:75e6::,2001:470:75e6:ffff:ffff:ffff:ffff:ffff,RU
@@ -532,7 +537,7 @@
2001:504:70::,2001:504:72:ffff:ffff:ffff:ffff:ffff,US
2001:504:73::,2001:504:73:ffff:ffff:ffff:ffff:ffff,CA
2001:504:74::,2001:504:79:ffff:ffff:ffff:ffff:ffff,US
-2001:504:80::,2001:504:90:ffff:ffff:ffff:ffff:ffff,US
+2001:504:80::,2001:504:91:ffff:ffff:ffff:ffff:ffff,US
2001:506::,2001:506:1:ffff:ffff:ffff:ffff:ffff,US
2001:506:8::,2001:506:8:ffff:ffff:ffff:ffff:ffff,US
2001:506:20::,2001:506:20:ffff:ffff:ffff:ffff:ffff,CA
@@ -668,7 +673,6 @@
2001:678:150::,2001:678:150:ffff:ffff:ffff:ffff:ffff,GB
2001:678:154::,2001:678:154:ffff:ffff:ffff:ffff:ffff,DE
2001:678:158::,2001:678:158:ffff:ffff:ffff:ffff:ffff,FR
-2001:678:15c::,2001:678:15c:ffff:ffff:ffff:ffff:ffff,RO
2001:678:160::,2001:678:160:ffff:ffff:ffff:ffff:ffff,CZ
2001:678:164::,2001:678:164:ffff:ffff:ffff:ffff:ffff,RO
2001:678:168::,2001:678:168:ffff:ffff:ffff:ffff:ffff,DE
@@ -988,6 +992,25 @@
2001:678:780::,2001:678:780:ffff:ffff:ffff:ffff:ffff,UA
2001:678:784::,2001:678:784:ffff:ffff:ffff:ffff:ffff,SE
2001:678:788::,2001:678:788:ffff:ffff:ffff:ffff:ffff,UA
+2001:678:78c::,2001:678:78c:ffff:ffff:ffff:ffff:ffff,DE
+2001:678:790::,2001:678:790:ffff:ffff:ffff:ffff:ffff,UA
+2001:678:794::,2001:678:794:ffff:ffff:ffff:ffff:ffff,FR
+2001:678:798::,2001:678:798:ffff:ffff:ffff:ffff:ffff,DE
+2001:678:79c::,2001:678:79c:ffff:ffff:ffff:ffff:ffff,GB
+2001:678:7a0::,2001:678:7a0:ffff:ffff:ffff:ffff:ffff,UA
+2001:678:7a4::,2001:678:7a4:ffff:ffff:ffff:ffff:ffff,UA
+2001:678:7a8::,2001:678:7a8:ffff:ffff:ffff:ffff:ffff,GB
+2001:678:7ac::,2001:678:7ac:ffff:ffff:ffff:ffff:ffff,UA
+2001:678:7b0::,2001:678:7b0:ffff:ffff:ffff:ffff:ffff,FR
+2001:678:7b4::,2001:678:7b4:ffff:ffff:ffff:ffff:ffff,PL
+2001:678:7b8::,2001:678:7b8:ffff:ffff:ffff:ffff:ffff,PL
+2001:678:7bc::,2001:678:7bc:ffff:ffff:ffff:ffff:ffff,PL
+2001:678:7c0::,2001:678:7c0:ffff:ffff:ffff:ffff:ffff,UA
+2001:678:7c4::,2001:678:7c4:ffff:ffff:ffff:ffff:ffff,NL
+2001:678:7c8::,2001:678:7c8:ffff:ffff:ffff:ffff:ffff,FR
+2001:678:7cc::,2001:678:7cc:ffff:ffff:ffff:ffff:ffff,NO
+2001:678:7d0::,2001:678:7d0:ffff:ffff:ffff:ffff:ffff,GB
+2001:678:7d4::,2001:678:7d4:ffff:ffff:ffff:ffff:ffff,DE
2001:67c::,2001:67c:63:ffff:ffff:ffff:ffff:ffff,SI
2001:67c:64::,2001:67c:64:ffff:ffff:ffff:ffff:ffff,FR
2001:67c:65::,2001:67c:7f:ffff:ffff:ffff:ffff:ffff,SI
@@ -1108,7 +1131,7 @@
2001:67c:2f0::,2001:67c:2f0:ffff:ffff:ffff:ffff:ffff,RU
2001:67c:2f1::,2001:67c:2ff:ffff:ffff:ffff:ffff:ffff,NL
2001:67c:300::,2001:67c:36f:ffff:ffff:ffff:ffff:ffff,DK
-2001:67c:370::,2001:67c:370:ffff:ffff:ffff:ffff:ffff,CA
+2001:67c:370::,2001:67c:370:ffff:ffff:ffff:ffff:ffff,TH
2001:67c:371::,2001:67c:37f:ffff:ffff:ffff:ffff:ffff,DK
2001:67c:380::,2001:67c:380:ffff:ffff:ffff:ffff:ffff,RU
2001:67c:384::,2001:67c:384:ffff:ffff:ffff:ffff:ffff,DE
@@ -1309,7 +1332,6 @@
2001:67c:724::,2001:67c:724:ffff:ffff:ffff:ffff:ffff,SE
2001:67c:728::,2001:67c:728:ffff:ffff:ffff:ffff:ffff,SE
2001:67c:72c::,2001:67c:72c:ffff:ffff:ffff:ffff:ffff,GB
-2001:67c:730::,2001:67c:730:ffff:ffff:ffff:ffff:ffff,CH
2001:67c:734::,2001:67c:734:ffff:ffff:ffff:ffff:ffff,AT
2001:67c:738::,2001:67c:738:ffff:ffff:ffff:ffff:ffff,UA
2001:67c:73c::,2001:67c:73c:ffff:ffff:ffff:ffff:ffff,PL
@@ -1400,7 +1422,6 @@
2001:67c:1138::,2001:67c:1138:ffff:ffff:ffff:ffff:ffff,CZ
2001:67c:113c::,2001:67c:113c:ffff:ffff:ffff:ffff:ffff,UA
2001:67c:1140::,2001:67c:1140:ffff:ffff:ffff:ffff:ffff,DE
-2001:67c:1144::,2001:67c:1144:ffff:ffff:ffff:ffff:ffff,RU
2001:67c:1148::,2001:67c:1148:ffff:ffff:ffff:ffff:ffff,ES
2001:67c:114c::,2001:67c:114c:ffff:ffff:ffff:ffff:ffff,RU
2001:67c:1150::,2001:67c:1150:ffff:ffff:ffff:ffff:ffff,IL
@@ -1417,7 +1438,7 @@
2001:67c:117c::,2001:67c:117c:ffff:ffff:ffff:ffff:ffff,UA
2001:67c:1180::,2001:67c:11ff:ffff:ffff:ffff:ffff:ffff,DE
2001:67c:1200::,2001:67c:122f:ffff:ffff:ffff:ffff:ffff,CZ
-2001:67c:1230::,2001:67c:1233:ffff:ffff:ffff:ffff:ffff,CA
+2001:67c:1230::,2001:67c:1233:ffff:ffff:ffff:ffff:ffff,TH
2001:67c:1234::,2001:67c:127f:ffff:ffff:ffff:ffff:ffff,CZ
2001:67c:1280::,2001:67c:12ff:ffff:ffff:ffff:ffff:ffff,SI
2001:67c:1300::,2001:67c:1300:ffff:ffff:ffff:ffff:ffff,CH
@@ -1558,7 +1579,7 @@
2001:67c:1718::,2001:67c:1719:ffff:ffff:ffff:ffff:ffff,FR
2001:67c:1720::,2001:67c:1720:ffff:ffff:ffff:ffff:ffff,UA
2001:67c:1724::,2001:67c:1724:ffff:ffff:ffff:ffff:ffff,NL
-2001:67c:1728::,2001:67c:1728:ffff:ffff:ffff:ffff:ffff,UA
+2001:67c:1728::,2001:67c:1728:ffff:ffff:ffff:ffff:ffff,GI
2001:67c:172c::,2001:67c:172c:ffff:ffff:ffff:ffff:ffff,GB
2001:67c:1730::,2001:67c:1730:ffff:ffff:ffff:ffff:ffff,GB
2001:67c:1734::,2001:67c:1734:ffff:ffff:ffff:ffff:ffff,NL
@@ -1949,6 +1970,7 @@
2001:67c:2474::,2001:67c:2474:ffff:ffff:ffff:ffff:ffff,NL
2001:67c:2478::,2001:67c:2478:ffff:ffff:ffff:ffff:ffff,AT
2001:67c:247c::,2001:67c:247c:ffff:ffff:ffff:ffff:ffff,SI
+2001:67c:2480::,2001:67c:2480:ffff:ffff:ffff:ffff:ffff,DE
2001:67c:2484::,2001:67c:2484:ffff:ffff:ffff:ffff:ffff,SE
2001:67c:2488::,2001:67c:2488:ffff:ffff:ffff:ffff:ffff,CH
2001:67c:248c::,2001:67c:248c:ffff:ffff:ffff:ffff:ffff,GB
@@ -2236,6 +2258,8 @@
2001:67c:2b6c::,2001:67c:2b6c:ffff:ffff:ffff:ffff:ffff,SE
2001:67c:2b70::,2001:67c:2b70:ffff:ffff:ffff:ffff:ffff,DK
2001:67c:2b74::,2001:67c:2b74:ffff:ffff:ffff:ffff:ffff,DE
+2001:67c:2b78::,2001:67c:2b78:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:2b7c::,2001:67c:2b7c:ffff:ffff:ffff:ffff:ffff,CZ
2001:67c:2b80::,2001:67c:2bff:ffff:ffff:ffff:ffff:ffff,UA
2001:67c:2c00::,2001:67c:2c7f:ffff:ffff:ffff:ffff:ffff,RU
2001:67c:2c80::,2001:67c:2c80:ffff:ffff:ffff:ffff:ffff,SE
@@ -2293,7 +2317,9 @@
2001:67c:2df4::,2001:67c:2df4:ffff:ffff:ffff:ffff:ffff,RU
2001:67c:2df8::,2001:67c:2df8:ffff:ffff:ffff:ffff:ffff,SE
2001:67c:2dfc::,2001:67c:2dfc:ffff:ffff:ffff:ffff:ffff,UA
-2001:67c:2e00::,2001:67c:2e7f:ffff:ffff:ffff:ffff:ffff,UA
+2001:67c:2e00::,2001:67c:2e73:ffff:ffff:ffff:ffff:ffff,UA
+2001:67c:2e74::,2001:67c:2e74:ffff:ffff:ffff:ffff:ffff,SE
+2001:67c:2e75::,2001:67c:2e7f:ffff:ffff:ffff:ffff:ffff,UA
2001:67c:2e80::,2001:67c:2eff:ffff:ffff:ffff:ffff:ffff,DE
2001:67c:2f00::,2001:67c:2f3f:ffff:ffff:ffff:ffff:ffff,CZ
2001:67c:2f40::,2001:67c:2f7f:ffff:ffff:ffff:ffff:ffff,PL
@@ -2542,6 +2568,7 @@
2001:7f8:c7::,2001:7f8:c7:ffff:ffff:ffff:ffff:ffff,PT
2001:7f8:c8::,2001:7f8:c9:ffff:ffff:ffff:ffff:ffff,RU
2001:7f8:ca::,2001:7f8:ca:ffff:ffff:ffff:ffff:ffff,GB
+2001:7f8:cb::,2001:7f8:cb:ffff:ffff:ffff:ffff:ffff,MK
2001:7f9:4::,2001:7f9:4:ffff:ffff:ffff:ffff:ffff,AL
2001:7f9:8::,2001:7f9:8:ffff:ffff:ffff:ffff:ffff,AM
2001:7f9:c::,2001:7f9:c:ffff:ffff:ffff:ffff:ffff,PL
@@ -2559,6 +2586,7 @@
2001:7fa:f::,2001:7fa:f:ffff:ffff:ffff:ffff:ffff,ID
2001:7fa:10::,2001:7fa:10:ffff:ffff:ffff:ffff:ffff,CN
2001:7fa:11::,2001:7fa:11:ffff:ffff:ffff:ffff:ffff,AU
+2001:7fc::,2001:7fc::ffff:ffff:ffff:ffff:ffff,DK
2001:7fc:4::,2001:7fc:7:ffff:ffff:ffff:ffff:ffff,RU
2001:7fe::,2001:7fe:ffff:ffff:ffff:ffff:ffff:ffff,SE
2001:808::,2001:80f:ffff:ffff:ffff:ffff:ffff:ffff,PL
@@ -3496,7 +3524,6 @@
2001:df2:300::,2001:df2:300:ffff:ffff:ffff:ffff:ffff,IN
2001:df2:400::,2001:df2:400:ffff:ffff:ffff:ffff:ffff,TH
2001:df2:500::,2001:df2:500:ffff:ffff:ffff:ffff:ffff,IN
-2001:df2:600::,2001:df2:600:ffff:ffff:ffff:ffff:ffff,IN
2001:df2:700::,2001:df2:700:ffff:ffff:ffff:ffff:ffff,IN
2001:df2:800::,2001:df2:800:ffff:ffff:ffff:ffff:ffff,AU
2001:df2:900::,2001:df2:900:ffff:ffff:ffff:ffff:ffff,AU
@@ -3708,7 +3735,6 @@
2001:df2:dc00::,2001:df2:dc00:ffff:ffff:ffff:ffff:ffff,TH
2001:df2:dd00::,2001:df2:dd00:ffff:ffff:ffff:ffff:ffff,ID
2001:df2:de00::,2001:df2:de00:ffff:ffff:ffff:ffff:ffff,AU
-2001:df2:df00::,2001:df2:df00:ffff:ffff:ffff:ffff:ffff,JP
2001:df2:e100::,2001:df2:e100:ffff:ffff:ffff:ffff:ffff,ID
2001:df2:e200::,2001:df2:e200:ffff:ffff:ffff:ffff:ffff,IN
2001:df2:e300::,2001:df2:e300:ffff:ffff:ffff:ffff:ffff,ID
@@ -4405,51 +4431,100 @@
2001:df5:b200::,2001:df5:b200:ffff:ffff:ffff:ffff:ffff,AU
2001:df5:b300::,2001:df5:b300:ffff:ffff:ffff:ffff:ffff,ID
2001:df5:b400::,2001:df5:b400:ffff:ffff:ffff:ffff:ffff,ID
+2001:df5:b500::,2001:df5:b500:ffff:ffff:ffff:ffff:ffff,IN
2001:df5:b600::,2001:df5:b600:ffff:ffff:ffff:ffff:ffff,NZ
+2001:df5:b700::,2001:df5:b700:ffff:ffff:ffff:ffff:ffff,VN
2001:df5:b800::,2001:df5:b800:ffff:ffff:ffff:ffff:ffff,HK
+2001:df5:b900::,2001:df5:b900:ffff:ffff:ffff:ffff:ffff,VN
2001:df5:ba00::,2001:df5:ba00:ffff:ffff:ffff:ffff:ffff,IN
+2001:df5:bb00::,2001:df5:bb00:ffff:ffff:ffff:ffff:ffff,VN
2001:df5:bc00::,2001:df5:bc00:ffff:ffff:ffff:ffff:ffff,AU
+2001:df5:bd00::,2001:df5:bd00:ffff:ffff:ffff:ffff:ffff,BD
2001:df5:be00::,2001:df5:be00:ffff:ffff:ffff:ffff:ffff,VN
+2001:df5:bf00::,2001:df5:bf00:ffff:ffff:ffff:ffff:ffff,ID
+2001:df5:c100::,2001:df5:c100:ffff:ffff:ffff:ffff:ffff,IN
2001:df5:c200::,2001:df5:c200:ffff:ffff:ffff:ffff:ffff,VN
+2001:df5:c300::,2001:df5:c300:ffff:ffff:ffff:ffff:ffff,AU
2001:df5:c400::,2001:df5:c400:ffff:ffff:ffff:ffff:ffff,TH
+2001:df5:c500::,2001:df5:c500:ffff:ffff:ffff:ffff:ffff,IN
+2001:df5:c700::,2001:df5:c700:ffff:ffff:ffff:ffff:ffff,NZ
2001:df5:c800::,2001:df5:c800:ffff:ffff:ffff:ffff:ffff,AU
+2001:df5:c900::,2001:df5:c900:ffff:ffff:ffff:ffff:ffff,ID
2001:df5:ca00::,2001:df5:ca00:ffff:ffff:ffff:ffff:ffff,TH
+2001:df5:cb00::,2001:df5:cb00:ffff:ffff:ffff:ffff:ffff,AU
2001:df5:cc00::,2001:df5:cc00:ffff:ffff:ffff:ffff:ffff,AU
+2001:df5:cd00::,2001:df5:cd00:ffff:ffff:ffff:ffff:ffff,ID
2001:df5:ce00::,2001:df5:ce00:ffff:ffff:ffff:ffff:ffff,AU
+2001:df5:cf00::,2001:df5:cf00:ffff:ffff:ffff:ffff:ffff,BD
2001:df5:d000::,2001:df5:d000:ffff:ffff:ffff:ffff:ffff,ID
+2001:df5:d100::,2001:df5:d100:ffff:ffff:ffff:ffff:ffff,MY
2001:df5:d200::,2001:df5:d200:ffff:ffff:ffff:ffff:ffff,ID
+2001:df5:d300::,2001:df5:d300:ffff:ffff:ffff:ffff:ffff,IN
2001:df5:d400::,2001:df5:d400:ffff:ffff:ffff:ffff:ffff,HK
2001:df5:d401::,2001:df5:d401:ffff:ffff:ffff:ffff:ffff,JP
+2001:df5:d500::,2001:df5:d500:ffff:ffff:ffff:ffff:ffff,AU
2001:df5:d600::,2001:df5:d600:ffff:ffff:ffff:ffff:ffff,AU
+2001:df5:d700::,2001:df5:d700:ffff:ffff:ffff:ffff:ffff,IN
2001:df5:d800::,2001:df5:d800:ffff:ffff:ffff:ffff:ffff,SG
+2001:df5:d900::,2001:df5:d900:ffff:ffff:ffff:ffff:ffff,AU
2001:df5:da00::,2001:df5:da00:ffff:ffff:ffff:ffff:ffff,PH
+2001:df5:db00::,2001:df5:db00:ffff:ffff:ffff:ffff:ffff,AU
+2001:df5:dd00::,2001:df5:dd00:ffff:ffff:ffff:ffff:ffff,AU
2001:df5:de00::,2001:df5:de00:ffff:ffff:ffff:ffff:ffff,IN
+2001:df5:df00::,2001:df5:df00:ffff:ffff:ffff:ffff:ffff,MV
2001:df5:e000::,2001:df5:e07f:ffff:ffff:ffff:ffff:ffff,MY
+2001:df5:e100::,2001:df5:e100:ffff:ffff:ffff:ffff:ffff,MN
2001:df5:e200::,2001:df5:e200:ffff:ffff:ffff:ffff:ffff,AU
+2001:df5:e300::,2001:df5:e300:ffff:ffff:ffff:ffff:ffff,SG
+2001:df5:e500::,2001:df5:e500:ffff:ffff:ffff:ffff:ffff,ID
2001:df5:e600::,2001:df5:e600:ffff:ffff:ffff:ffff:ffff,AU
+2001:df5:e700::,2001:df5:e700:ffff:ffff:ffff:ffff:ffff,BT
2001:df5:e800::,2001:df5:e800:ffff:ffff:ffff:ffff:ffff,PH
+2001:df5:e900::,2001:df5:e900:ffff:ffff:ffff:ffff:ffff,HK
2001:df5:ea00::,2001:df5:ea00:ffff:ffff:ffff:ffff:ffff,AU
+2001:df5:eb00::,2001:df5:eb00:ffff:ffff:ffff:ffff:ffff,ID
2001:df5:ec00::,2001:df5:ec00:ffff:ffff:ffff:ffff:ffff,ID
+2001:df5:ed00::,2001:df5:ed00:ffff:ffff:ffff:ffff:ffff,ID
2001:df5:ee00::,2001:df5:ee00:ffff:ffff:ffff:ffff:ffff,AU
+2001:df5:ef00::,2001:df5:ef00:ffff:ffff:ffff:ffff:ffff,ID
2001:df5:f000::,2001:df5:f000:ffff:ffff:ffff:ffff:ffff,ID
+2001:df5:f100::,2001:df5:f100:ffff:ffff:ffff:ffff:ffff,ID
2001:df5:f200::,2001:df5:f200:ffff:ffff:ffff:ffff:ffff,ID
+2001:df5:f300::,2001:df5:f300:ffff:ffff:ffff:ffff:ffff,AF
2001:df5:f400::,2001:df5:f401:ffff:ffff:ffff:ffff:ffff,AU
+2001:df5:f500::,2001:df5:f500:ffff:ffff:ffff:ffff:ffff,IN
2001:df5:f600::,2001:df5:f600:ffff:ffff:ffff:ffff:ffff,PH
+2001:df5:f700::,2001:df5:f700:ffff:ffff:ffff:ffff:ffff,MY
2001:df5:f800::,2001:df5:f800:ffff:ffff:ffff:ffff:ffff,SE
+2001:df5:f900::,2001:df5:f900:ffff:ffff:ffff:ffff:ffff,AU
2001:df5:fa00::,2001:df5:fa00:ffff:ffff:ffff:ffff:ffff,FJ
+2001:df5:fb00::,2001:df5:fb00:ffff:ffff:ffff:ffff:ffff,NZ
2001:df5:fc00::,2001:df5:fc00:ffff:ffff:ffff:ffff:ffff,IN
+2001:df5:fd00::,2001:df5:fd00:ffff:ffff:ffff:ffff:ffff,AU
2001:df5:fe00::,2001:df5:fe00:ffff:ffff:ffff:ffff:ffff,ID
+2001:df5:ff00::,2001:df5:ff00:ffff:ffff:ffff:ffff:ffff,IN
2001:df6::,2001:df6:3:ffff:ffff:ffff:ffff:ffff,IN
+2001:df6:100::,2001:df6:100:ffff:ffff:ffff:ffff:ffff,CN
2001:df6:200::,2001:df6:200:ffff:ffff:ffff:ffff:ffff,HK
+2001:df6:300::,2001:df6:300:ffff:ffff:ffff:ffff:ffff,NZ
2001:df6:400::,2001:df6:400:ffff:ffff:ffff:ffff:ffff,HK
+2001:df6:500::,2001:df6:500:ffff:ffff:ffff:ffff:ffff,AU
2001:df6:600::,2001:df6:600:ffff:ffff:ffff:ffff:ffff,AU
+2001:df6:700::,2001:df6:700:ffff:ffff:ffff:ffff:ffff,BD
2001:df6:800::,2001:df6:80f:ffff:ffff:ffff:ffff:ffff,HK
+2001:df6:900::,2001:df6:900:ffff:ffff:ffff:ffff:ffff,ID
2001:df6:a00::,2001:df6:a00:ffff:ffff:ffff:ffff:ffff,ID
+2001:df6:b00::,2001:df6:b00:ffff:ffff:ffff:ffff:ffff,ID
2001:df6:c00::,2001:df6:c00:ffff:ffff:ffff:ffff:ffff,TH
+2001:df6:d00::,2001:df6:d00:ffff:ffff:ffff:ffff:ffff,PH
2001:df6:e00::,2001:df6:e00:ffff:ffff:ffff:ffff:ffff,HK
+2001:df6:f00::,2001:df6:f00:ffff:ffff:ffff:ffff:ffff,CN
2001:df6:1000::,2001:df6:1000:ffff:ffff:ffff:ffff:ffff,PH
+2001:df6:1100::,2001:df6:1100:ffff:ffff:ffff:ffff:ffff,AU
2001:df6:1200::,2001:df6:1200:ffff:ffff:ffff:ffff:ffff,AU
+2001:df6:1300::,2001:df6:1300:ffff:ffff:ffff:ffff:ffff,ID
2001:df6:1400::,2001:df6:1400:ffff:ffff:ffff:ffff:ffff,AU
+2001:df6:1500::,2001:df6:1500:ffff:ffff:ffff:ffff:ffff,IN
2001:df6:1600::,2001:df6:1600:ffff:ffff:ffff:ffff:ffff,VN
2001:df6:1800::,2001:df6:1800:ffff:ffff:ffff:ffff:ffff,ID
2001:df6:1a00::,2001:df6:1a00:ffff:ffff:ffff:ffff:ffff,VN
@@ -4514,7 +4589,6 @@
2001:df6:9c00::,2001:df6:9c00:ffff:ffff:ffff:ffff:ffff,TH
2001:df6:9e00::,2001:df6:9e01:ffff:ffff:ffff:ffff:ffff,IN
2001:df6:a000::,2001:df6:a000:ffff:ffff:ffff:ffff:ffff,JP
-2001:df6:a200::,2001:df6:a200:ffff:ffff:ffff:ffff:ffff,BD
2001:df6:a400::,2001:df6:a400:ffff:ffff:ffff:ffff:ffff,SG
2001:df6:a600::,2001:df6:a600:ffff:ffff:ffff:ffff:ffff,IN
2001:df6:a800::,2001:df6:a800:ffff:ffff:ffff:ffff:ffff,IN
@@ -4625,7 +4699,6 @@
2001:df7:9200::,2001:df7:921f:ffff:ffff:ffff:ffff:ffff,IN
2001:df7:9600::,2001:df7:9600:ffff:ffff:ffff:ffff:ffff,HK
2001:df7:9800::,2001:df7:9800:ffff:ffff:ffff:ffff:ffff,NZ
-2001:df7:9a00::,2001:df7:9a00:ffff:ffff:ffff:ffff:ffff,IN
2001:df7:9c00::,2001:df7:9c00:ffff:ffff:ffff:ffff:ffff,AU
2001:df7:9e00::,2001:df7:9e00:ffff:ffff:ffff:ffff:ffff,SG
2001:df7:a000::,2001:df7:a000:ffff:ffff:ffff:ffff:ffff,AU
@@ -4675,7 +4748,7 @@
2001:df7:fa00::,2001:df7:fa00:ffff:ffff:ffff:ffff:ffff,ID
2001:df7:fc00::,2001:df7:fc00:ffff:ffff:ffff:ffff:ffff,SG
2001:df7:fe00::,2001:df7:fe00:ffff:ffff:ffff:ffff:ffff,ID
-2001:df8::,2001:df8:ffff:ffff:ffff:ffff:ffff:ffff,CA
+2001:df8::,2001:df8:ffff:ffff:ffff:ffff:ffff:ffff,TH
2001:df9::,2001:df9:ffff:ffff:ffff:ffff:ffff:ffff,NC
2001:dfa::,2001:dfa:ffff:ffff:ffff:ffff:ffff:ffff,JP
2001:e00::,2001:e01:ffff:ffff:ffff:ffff:ffff:ffff,ID
@@ -5142,7 +5215,9 @@
2001:41d0:2:4dbe::,2001:41d0:2:4dbe:ffff:ffff:ffff:ffff,CZ
2001:41d0:2:4dbf::,2001:41d0:a:7e08:ffff:ffff:ffff:ffff,FR
2001:41d0:a:7e09::,2001:41d0:a:7e09:ffff:ffff:ffff:ffff,PT
-2001:41d0:a:7e0a::,2001:41d0:129:9bff:ffff:ffff:ffff:ffff,FR
+2001:41d0:a:7e0a::,2001:41d0:d:265c:ffff:ffff:ffff:ffff,FR
+2001:41d0:d:265d::,2001:41d0:d:265d:ffff:ffff:ffff:ffff,AQ
+2001:41d0:d:265e::,2001:41d0:129:9bff:ffff:ffff:ffff:ffff,FR
2001:41d0:129:9c00::,2001:41d0:129:9cff:ffff:ffff:ffff:ffff,NL
2001:41d0:129:9d00::,2001:41d0:601:1100::5fe,FR
2001:41d0:601:1100::5ff,2001:41d0:601:1100::5ff,PL
@@ -5214,7 +5289,7 @@
2001:43f0::,2001:43f0:ffff:ffff:ffff:ffff:ffff:ffff,ZW
2001:43f8::,2001:43f8:6:ffff:ffff:ffff:ffff:ffff,TZ
2001:43f8:10::,2001:43f8:10:ffff:ffff:ffff:ffff:ffff,KE
-2001:43f8:20::,2001:43f8:20:ffff:ffff:ffff:ffff:ffff,NL
+2001:43f8:20::,2001:43f8:20:ffff:ffff:ffff:ffff:ffff,ZA
2001:43f8:30::,2001:43f8:30:ffff:ffff:ffff:ffff:ffff,ZA
2001:43f8:60::,2001:43f8:60:ffff:ffff:ffff:ffff:ffff,KE
2001:43f8:70::,2001:43f8:77:ffff:ffff:ffff:ffff:ffff,ZA
@@ -5820,6 +5895,7 @@
2001:4d20::,2001:4d20:ffff:ffff:ffff:ffff:ffff:ffff,DE
2001:4d30::,2001:4d30:ffff:ffff:ffff:ffff:ffff:ffff,GB
2001:4d38::,2001:4d38:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2001:4d40:8402::,2001:4d40:8402:ffff:ffff:ffff:ffff:ffff,GB
2001:4d48::,2001:4d4f:ffff:ffff:ffff:ffff:ffff:ffff,GB
2001:4d50::,2001:4d50:ffff:ffff:ffff:ffff:ffff:ffff,DE
2001:4d60::,2001:4d60:ffff:ffff:ffff:ffff:ffff:ffff,NL
@@ -6083,9 +6159,7 @@
2400:60c0::,2400:60c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:6100::,2400:6100:ffff:ffff:ffff:ffff:ffff:ffff,AU
2400:6140::,2400:6140:ffff:ffff:ffff:ffff:ffff:ffff,AU
-2400:6180::,2400:6180:100:cf:ffff:ffff:ffff:ffff,SG
-2400:6180:100:d0::,2400:6180:100:d0:ffff:ffff:ffff:ffff,IN
-2400:6180:100:d1::,2400:6180:ffff:ffff:ffff:ffff:ffff:ffff,SG
+2400:6180::,2400:6180:ffff:ffff:ffff:ffff:ffff:ffff,SG
2400:61c0::,2400:61c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:6200::,2400:6200:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:6240::,2400:6240:ffff:ffff:ffff:ffff:ffff:ffff,ID
@@ -6292,7 +6366,6 @@
2400:9300::,2400:9300:ffff:ffff:ffff:ffff:ffff:ffff,PG
2400:9340::,2400:9340:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:9380::,2400:9381:ffff:ffff:ffff:ffff:ffff:ffff,HK
-2400:93c0::,2400:93c0:ffff:ffff:ffff:ffff:ffff:ffff,IN
2400:9400::,2400:9400:ffff:ffff:ffff:ffff:ffff:ffff,BN
2400:9440::,2400:9440:ffff:ffff:ffff:ffff:ffff:ffff,MY
2400:9480::,2400:9480:ffff:ffff:ffff:ffff:ffff:ffff,AU
@@ -6714,7 +6787,6 @@
2400:df00::,2400:df00:ffff:ffff:ffff:ffff:ffff:ffff,JP
2400:df40::,2400:df40:ffff:ffff:ffff:ffff:ffff:ffff,TW
2400:df80::,2400:df80:ffff:ffff:ffff:ffff:ffff:ffff,MY
-2400:dfc0::,2400:dfc0:ffff:ffff:ffff:ffff:ffff:ffff,IN
2400:e000::,2400:e000:ffff:ffff:ffff:ffff:ffff:ffff,JP
2400:e040::,2400:e040:ffff:ffff:ffff:ffff:ffff:ffff,HK
2400:e0c0::,2400:e0c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
@@ -7202,7 +7274,6 @@
2401:7000::,2401:7000:ffff:ffff:ffff:ffff:ffff:ffff,NZ
2401:7040::,2401:7040:ffff:ffff:ffff:ffff:ffff:ffff,JP
2401:7080::,2401:7080:ffff:ffff:ffff:ffff:ffff:ffff,TW
-2401:70c0::,2401:70c0:ffff:ffff:ffff:ffff:ffff:ffff,HK
2401:7100::,2401:7100:ffff:ffff:ffff:ffff:ffff:ffff,AU
2401:7140::,2401:7140:ffff:ffff:ffff:ffff:ffff:ffff,TH
2401:7180::,2401:7180:ffff:ffff:ffff:ffff:ffff:ffff,CN
@@ -7432,7 +7503,6 @@
2401:acc0::,2401:acc0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2401:ad00::,2401:ad00:ffff:ffff:ffff:ffff:ffff:ffff,JP
2401:ad40::,2401:ad40:ffff:ffff:ffff:ffff:ffff:ffff,CN
-2401:ad80::,2401:ad80:ffff:ffff:ffff:ffff:ffff:ffff,NZ
2401:adc0::,2401:adc0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2401:ae00::,2401:ae00:ffff:ffff:ffff:ffff:ffff:ffff,ID
2401:ae40::,2401:ae40:ffff:ffff:ffff:ffff:ffff:ffff,KR
@@ -7499,7 +7569,6 @@
2401:be80::,2401:be80:ffff:ffff:ffff:ffff:ffff:ffff,ID
2401:bec0::,2401:bec0:ffff:ffff:ffff:ffff:ffff:ffff,HK
2401:bf00::,2401:bf00:ffff:ffff:ffff:ffff:ffff:ffff,JP
-2401:bf40::,2401:bf40:ffff:ffff:ffff:ffff:ffff:ffff,AU
2401:bfc0::,2401:bfc0:ffff:ffff:ffff:ffff:ffff:ffff,ID
2401:c000::,2401:c000:ffff:ffff:ffff:ffff:ffff:ffff,BD
2401:c040::,2401:c040:ffff:ffff:ffff:ffff:ffff:ffff,NZ
@@ -7529,7 +7598,7 @@
2401:c680::,2401:c680:ffff:ffff:ffff:ffff:ffff:ffff,BD
2401:c6c0::,2401:c6c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2401:c700::,2401:c700:ffff:ffff:ffff:ffff:ffff:ffff,HK
-2401:c740::,2401:c740:ffff:ffff:ffff:ffff:ffff:ffff,US
+2401:c740::,2401:c740:ffff:ffff:ffff:ffff:ffff:ffff,HK
2401:c780::,2401:c780:ffff:ffff:ffff:ffff:ffff:ffff,AU
2401:c7c0::,2401:c7c0:ffff:ffff:ffff:ffff:ffff:ffff,SG
2401:c800::,2401:c800:ffff:ffff:ffff:ffff:ffff:ffff,JP
@@ -8939,27 +9008,51 @@
2403:1f80::,2403:1f80:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:1fc0::,2403:1fc0:ffff:ffff:ffff:ffff:ffff:ffff,HK
2403:2000::,2403:2000:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2403:2040::,2403:2040:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:2080::,2403:2080:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2403:20c0::,2403:20c0:ffff:ffff:ffff:ffff:ffff:ffff,CA
2403:2100::,2403:2100:ffff:ffff:ffff:ffff:ffff:ffff,NZ
+2403:2140::,2403:2140:ffff:ffff:ffff:ffff:ffff:ffff,AS
2403:2180::,2403:2180:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2403:21c0::,2403:21c0:ffff:ffff:ffff:ffff:ffff:ffff,BD
2403:2200::,2403:2200:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2403:2240::,2403:2240:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:2280::,2403:2280:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2403:22c0::,2403:22c0:ffff:ffff:ffff:ffff:ffff:ffff,HK
2403:2300::,2403:2300:ffff:ffff:ffff:ffff:ffff:ffff,TH
+2403:2340::,2403:2340:ffff:ffff:ffff:ffff:ffff:ffff,SG
2403:2380::,2403:2380:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2403:23c0::,2403:23c0:ffff:ffff:ffff:ffff:ffff:ffff,IN
2403:2400::,2403:2400:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2403:2440::,2403:2440:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2403:24c0::,2403:24c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:2500::,2403:2500:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2403:2540::,2403:2540:ffff:ffff:ffff:ffff:ffff:ffff,MY
2403:2580::,2403:2580:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2403:25c0::,2403:25c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:2600::,2403:2600:ffff:ffff:ffff:ffff:ffff:ffff,ID
+2403:2640::,2403:2640:ffff:ffff:ffff:ffff:ffff:ffff,TW
2403:2680::,2403:2680:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2403:26c0::,2403:26c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:2700::,2403:2700:ffff:ffff:ffff:ffff:ffff:ffff,ID
+2403:2740::,2403:2740:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:2780::,2403:2780:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2403:27c0::,2403:27c0:ffff:ffff:ffff:ffff:ffff:ffff,HK
2403:2800::,2403:2801:ffff:ffff:ffff:ffff:ffff:ffff,TH
+2403:2840::,2403:2840:ffff:ffff:ffff:ffff:ffff:ffff,KH
2403:2880::,2403:2880:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2403:28c0::,2403:28c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:2900::,2403:2900:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2403:2940::,2403:2940:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:2980::,2403:2980:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2403:29c0::,2403:29c0:ffff:ffff:ffff:ffff:ffff:ffff,SG
2403:2a00::,2403:2a00:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2403:2a40::,2403:2a40:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:2a80::,2403:2a80:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2403:2ac0::,2403:2ac0:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2403:2b40::,2403:2b40:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:2b80::,2403:2b80:ffff:ffff:ffff:ffff:ffff:ffff,MY
+2403:2bc0::,2403:2bc0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:2c00::,2403:2c00:2:ffff:ffff:ffff:ffff:ffff,HK
2403:2c00:3::,2403:2c00:4:ffff:ffff:ffff:ffff:ffff,SG
2403:2c00:5::,2403:2c00:6:ffff:ffff:ffff:ffff:ffff,HK
@@ -8976,6 +9069,7 @@
2403:2c00:f000::,2403:2c00:fffa:ffff:ffff:ffff:ffff:ffff,HK
2403:2c00:fffb::,2403:2c00:fffb:ffff:ffff:ffff:ffff:ffff,US
2403:2c00:fffc::,2403:2c00:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2403:2c40::,2403:2c40:ffff:ffff:ffff:ffff:ffff:ffff,BD
2403:2c80::,2403:2c80::ffff:ffff:ffff:ffff:ffff,CN
2403:2c80:1::,2403:2c80:1:ffff:ffff:ffff:ffff:ffff,JP
2403:2c80:2::,2403:2c80:2:ffff:ffff:ffff:ffff:ffff,SG
@@ -8983,89 +9077,177 @@
2403:2c80:4::,2403:2c80:7:ffff:ffff:ffff:ffff:ffff,HK
2403:2c80:8::,2403:2c80:7f:ffff:ffff:ffff:ffff:ffff,CN
2403:2c80:80::,2403:2c81:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2403:2cc0::,2403:2cc0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:2d00::,2403:2d00:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2403:2d40::,2403:2d40:ffff:ffff:ffff:ffff:ffff:ffff,BD
2403:2d80::,2403:2d80:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2403:2dc0::,2403:2dc0:ffff:ffff:ffff:ffff:ffff:ffff,JP
2403:2e00::,2403:2e00:ffff:ffff:ffff:ffff:ffff:ffff,ID
+2403:2e40::,2403:2e40:ffff:ffff:ffff:ffff:ffff:ffff,BD
2403:2e80::,2403:2e80:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2403:2ec0::,2403:2ec0:ffff:ffff:ffff:ffff:ffff:ffff,BD
2403:2f00::,2403:2f00:ffff:ffff:ffff:ffff:ffff:ffff,NZ
+2403:2f40::,2403:2f40:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:2f80::,2403:2f80:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2403:2fc0::,2403:2fc0:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2403:3040::,2403:3040:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2403:30c0::,2403:30c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:3100::,2403:3100:ffff:ffff:ffff:ffff:ffff:ffff,SG
+2403:3140::,2403:3140:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:3180::,2403:3180:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2403:31c0::,2403:31c0:ffff:ffff:ffff:ffff:ffff:ffff,ID
2403:3200::,2403:3200:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2403:3240::,2403:3240:ffff:ffff:ffff:ffff:ffff:ffff,MM
2403:3280::,2403:3280:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2403:32c0::,2403:32c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:3300::,2403:3300:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2403:3340::,2403:3340:ffff:ffff:ffff:ffff:ffff:ffff,ID
2403:3380::,2403:3380:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2403:33c0::,2403:33c0:ffff:ffff:ffff:ffff:ffff:ffff,ID
2403:3400::,2403:3400:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2403:3440::,2403:3440:ffff:ffff:ffff:ffff:ffff:ffff,ID
2403:3480::,2403:3480:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2403:34c0::,2403:34c0:ffff:ffff:ffff:ffff:ffff:ffff,ID
2403:3500::,2403:3500:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2403:3540::,2403:3540:ffff:ffff:ffff:ffff:ffff:ffff,ID
2403:3580::,2403:3580:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2403:35c0::,2403:35c0:ffff:ffff:ffff:ffff:ffff:ffff,ID
2403:3600::,2403:3600:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2403:3640::,2403:3640:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:3680::,2403:3680:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2403:36c0::,2403:36c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:3700::,2403:3700:ffff:ffff:ffff:ffff:ffff:ffff,KR
+2403:3740::,2403:3740:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:3780::,2403:3780:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2403:37c0::,2403:37c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:3800::,2403:3800:ffff:ffff:ffff:ffff:ffff:ffff,NP
+2403:3840::,2403:3840:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:3880::,2403:3880:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2403:38c0::,2403:38c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:3900::,2403:3900:ffff:ffff:ffff:ffff:ffff:ffff,NZ
+2403:3940::,2403:3940:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:3980::,2403:3980:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2403:39c0::,2403:39c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:3a00::,2403:3a00:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2403:3a40::,2403:3a40:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2403:3ac0::,2403:3ac0:ffff:ffff:ffff:ffff:ffff:ffff,TW
2403:3b00::,2403:3b00:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2403:3b40::,2403:3b40:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:3b80::,2403:3b80:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2403:3bc0::,2403:3bc0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:3c00::,2403:3c00:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2403:3c40::,2403:3c40:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:3c80::,2403:3c80:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2403:3cc0::,2403:3cc0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:3d00::,2403:3d00:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2403:3d40::,2403:3d40:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:3d80::,2403:3d80:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2403:3dc0::,2403:3dc0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:3e00::,2403:3e00:ffff:ffff:ffff:ffff:ffff:ffff,KR
+2403:3e40::,2403:3e40:ffff:ffff:ffff:ffff:ffff:ffff,AF
2403:3e80::,2403:3e80:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2403:3ec0::,2403:3ec0:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2403:3f40::,2403:3f40:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:3f80::,2403:3f80:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2403:3fc0::,2403:3fc0:ffff:ffff:ffff:ffff:ffff:ffff,BD
2403:4000::,2403:4000:ffff:ffff:ffff:ffff:ffff:ffff,BD
+2403:4040::,2403:4040:ffff:ffff:ffff:ffff:ffff:ffff,JP
2403:4080::,2403:4080:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2403:40c0::,2403:40c0:ffff:ffff:ffff:ffff:ffff:ffff,NZ
2403:4100::,2403:4100:ffff:ffff:ffff:ffff:ffff:ffff,ID
+2403:4140::,2403:4140:ffff:ffff:ffff:ffff:ffff:ffff,KH
2403:4180::,2403:4180:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2403:41c0::,2403:41c0:ffff:ffff:ffff:ffff:ffff:ffff,BD
2403:4200::,2403:4200:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2403:4240::,2403:4240:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:4280::,2403:4280:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2403:42c0::,2403:42c0:ffff:ffff:ffff:ffff:ffff:ffff,IN
2403:4300::,2403:4300:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2403:4340::,2403:4340:ffff:ffff:ffff:ffff:ffff:ffff,ID
2403:4380::,2403:4380:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2403:43c0::,2403:43c0:ffff:ffff:ffff:ffff:ffff:ffff,HK
2403:4400::,2403:4400:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2403:4440::,2403:4440:ffff:ffff:ffff:ffff:ffff:ffff,JP
2403:4480::,2403:4480:ffff:ffff:ffff:ffff:ffff:ffff,WS
+2403:44c0::,2403:44c0:ffff:ffff:ffff:ffff:ffff:ffff,IN
2403:4500::,2403:4500:ffff:ffff:ffff:ffff:ffff:ffff,ID
+2403:4540::,2403:4540:ffff:ffff:ffff:ffff:ffff:ffff,SG
2403:4580::,2403:4580:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2403:45c0::,2403:45c0:ffff:ffff:ffff:ffff:ffff:ffff,KH
2403:4600::,2403:4600:ffff:ffff:ffff:ffff:ffff:ffff,FJ
+2403:4640::,2403:4640:ffff:ffff:ffff:ffff:ffff:ffff,PH
2403:4680::,2403:4680:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2403:46c0::,2403:46c0:ffff:ffff:ffff:ffff:ffff:ffff,BD
2403:4700::,2403:4700:ffff:ffff:ffff:ffff:ffff:ffff,SG
+2403:4740::,2403:4740:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2403:47c0::,2403:47c0:ffff:ffff:ffff:ffff:ffff:ffff,HK
2403:4800::,2403:4800:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2403:4840::,2403:4840:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:4880::,2403:4880:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2403:48c0::,2403:48c0:ffff:ffff:ffff:ffff:ffff:ffff,TL
2403:4900::,2403:4900:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2403:4940::,2403:4940:ffff:ffff:ffff:ffff:ffff:ffff,IN
2403:4980::,2403:4980:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2403:49c0::,2403:49c0:ffff:ffff:ffff:ffff:ffff:ffff,IN
2403:4a00::,2403:4a00:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2403:4a40::,2403:4a40:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:4a80::,2403:4a80:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2403:4ac0::,2403:4ac0:ffff:ffff:ffff:ffff:ffff:ffff,MY
2403:4b00::,2403:4b00:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2403:4b40::,2403:4b40:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:4b80::,2403:4b80:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2403:4bc0::,2403:4bc0:ffff:ffff:ffff:ffff:ffff:ffff,AU
2403:4c00::,2403:4c00:ffff:ffff:ffff:ffff:ffff:ffff,TH
+2403:4c40::,2403:4c40:ffff:ffff:ffff:ffff:ffff:ffff,HK
2403:4c80::,2403:4c80:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2403:4cc0::,2403:4cc0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:4d00::,2403:4d00:ffff:ffff:ffff:ffff:ffff:ffff,NZ
+2403:4d40::,2403:4d40:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:4d80::,2403:4d80:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2403:4dc0::,2403:4dc0:ffff:ffff:ffff:ffff:ffff:ffff,AU
2403:4e00::,2403:4e00:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2403:4e40::,2403:4e40:ffff:ffff:ffff:ffff:ffff:ffff,HK
2403:4e80::,2403:4e80:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2403:4ec0::,2403:4ec0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:4f00::,2403:4f00:ffff:ffff:ffff:ffff:ffff:ffff,NZ
+2403:4f40::,2403:4f40:ffff:ffff:ffff:ffff:ffff:ffff,HK
2403:4f80::,2403:4f80:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2403:4fc0::,2403:4fc0:ffff:ffff:ffff:ffff:ffff:ffff,HK
2403:5000::,2403:5000:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2403:5040::,2403:5040:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:5080::,2403:5080:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2403:50c0::,2403:50c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:5100::,2403:5100:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2403:5140::,2403:5140:ffff:ffff:ffff:ffff:ffff:ffff,HK
2403:5180::,2403:5180:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2403:51c0::,2403:51c0:ffff:ffff:ffff:ffff:ffff:ffff,BD
2403:5200::,2403:5200:ffff:ffff:ffff:ffff:ffff:ffff,TW
+2403:5240::,2403:5240:ffff:ffff:ffff:ffff:ffff:ffff,BD
2403:5280::,2403:5280:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2403:52c0::,2403:52c0:ffff:ffff:ffff:ffff:ffff:ffff,BD
2403:5300::,2403:5300:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2403:5340::,2403:5340:ffff:ffff:ffff:ffff:ffff:ffff,IN
2403:5380::,2403:5380:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2403:53c0::,2403:53c0:ffff:ffff:ffff:ffff:ffff:ffff,NZ
2403:5400::,2403:5400:ffff:ffff:ffff:ffff:ffff:ffff,TH
+2403:5440::,2403:5440:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2403:54c0::,2403:54c0:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:5500::,2403:5500:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2403:5540::,2403:5540:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:5580::,2403:5580:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2403:55c0::,2403:55c0:ffff:ffff:ffff:ffff:ffff:ffff,SG
2403:5600::,2403:5600:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2403:5640::,2403:5640:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:5680::,2403:5680:14:ffff:ffff:ffff:ffff:ffff,AU
2403:5680:15::,2403:5680:15:ffff:ffff:ffff:ffff:ffff,US
2403:5680:16::,2403:5680:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2403:56c0::,2403:56c0:ffff:ffff:ffff:ffff:ffff:ffff,TH
2403:5700::,2403:5700:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2403:5740::,2403:5740:ffff:ffff:ffff:ffff:ffff:ffff,IN
2403:5780::,2403:5780:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2403:57c0::,2403:57c0:ffff:ffff:ffff:ffff:ffff:ffff,ID
2403:5800::,2403:5800:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2403:5840::,2403:5840:ffff:ffff:ffff:ffff:ffff:ffff,IN
2403:5900::,2403:5900:ffff:ffff:ffff:ffff:ffff:ffff,IN
2403:5980::,2403:5980:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:5a00::,2403:5a00:ffff:ffff:ffff:ffff:ffff:ffff,JP
@@ -9949,7 +10131,6 @@
2405:1a00::,2405:1a00:ffff:ffff:ffff:ffff:ffff:ffff,KH
2405:1a80::,2405:1a80:ffff:ffff:ffff:ffff:ffff:ffff,JP
2405:1b00::,2405:1b00:ffff:ffff:ffff:ffff:ffff:ffff,NP
-2405:1b80::,2405:1b80:ffff:ffff:ffff:ffff:ffff:ffff,AU
2405:1c00::,2405:1c00:ffff:ffff:ffff:ffff:ffff:ffff,HK
2405:1c80::,2405:1c80:ffff:ffff:ffff:ffff:ffff:ffff,CN
2405:1d00::,2405:1d00:ffff:ffff:ffff:ffff:ffff:ffff,BD
@@ -10958,7 +11139,6 @@
2406:e080::,2406:e080:ffff:ffff:ffff:ffff:ffff:ffff,CN
2406:e100::,2406:e100:ffff:ffff:ffff:ffff:ffff:ffff,PH
2406:e180::,2406:e180:ffff:ffff:ffff:ffff:ffff:ffff,CN
-2406:e200::,2406:e200:ffff:ffff:ffff:ffff:ffff:ffff,HK
2406:e280::,2406:e280:ffff:ffff:ffff:ffff:ffff:ffff,CN
2406:e300::,2406:e300:ffff:ffff:ffff:ffff:ffff:ffff,HK
2406:e380::,2406:e380:ffff:ffff:ffff:ffff:ffff:ffff,CN
@@ -11143,7 +11323,6 @@
2407:4180::,2407:4180:ffff:ffff:ffff:ffff:ffff:ffff,IN
2407:4200::,2407:4200:ffff:ffff:ffff:ffff:ffff:ffff,AU
2407:4280::,2407:4280:ffff:ffff:ffff:ffff:ffff:ffff,LA
-2407:4300::,2407:4300:ffff:ffff:ffff:ffff:ffff:ffff,MY
2407:4380::,2407:4380:ffff:ffff:ffff:ffff:ffff:ffff,HK
2407:4400::,2407:4400:ffff:ffff:ffff:ffff:ffff:ffff,NZ
2407:4480::,2407:4480:ffff:ffff:ffff:ffff:ffff:ffff,IN
@@ -11600,8 +11779,7 @@
2600:2b00::,2600:2b0f:ffff:ffff:ffff:ffff:ffff:ffff,US
2600:2c00::,2600:2c03:ffff:ffff:ffff:ffff:ffff:ffff,US
2600:2d00::,2600:2d0f:ffff:ffff:ffff:ffff:ffff:ffff,US
-2600:2e00::,2600:2e0f:ffff:ffff:ffff:ffff:ffff:ffff,US
-2600:2f00::,2600:2f0f:ffff:ffff:ffff:ffff:ffff:ffff,US
+2600:2e00::,2600:2f0f:ffff:ffff:ffff:ffff:ffff:ffff,US
2600:3000::,2600:3007:ffff:ffff:ffff:ffff:ffff:ffff,US
2600:3100::,2600:310f:ffff:ffff:ffff:ffff:ffff:ffff,US
2600:3200::,2600:320f:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -11653,6 +11831,15 @@
2602:233::,2602:233:ffff:ffff:ffff:ffff:ffff:ffff,US
2602:240::,2602:25f:ffff:ffff:ffff:ffff:ffff:ffff,US
2602:300::,2602:3ff:ffff:ffff:ffff:ffff:ffff:ffff,US
+2602:fe4e::,2602:fe4e:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:fe4f::,2602:fe4f:fff:ffff:ffff:ffff:ffff:ffff,CA
+2602:fe50::,2602:fe50:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:fe51::,2602:fe51:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:fe52::,2602:fe52:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:fe53::,2602:fe53:fff:ffff:ffff:ffff:ffff:ffff,CA
+2602:fe54::,2602:fe54:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:fe55::,2602:fe55:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:fe56::,2602:fe56:fff:ffff:ffff:ffff:ffff:ffff,US
2602:fe57::,2602:fe57:fff:ffff:ffff:ffff:ffff:ffff,CA
2602:fe58::,2602:fe58:fff:ffff:ffff:ffff:ffff:ffff,US
2602:fe59::,2602:fe59:fff:ffff:ffff:ffff:ffff:ffff,US
@@ -11765,7 +11952,6 @@
2602:fec4::,2602:fec4:fff:ffff:ffff:ffff:ffff:ffff,US
2602:fec5::,2602:fec5:fff:ffff:ffff:ffff:ffff:ffff,US
2602:fec6::,2602:fec6:fff:ffff:ffff:ffff:ffff:ffff,US
-2602:fec7::,2602:fec7:fff:ffff:ffff:ffff:ffff:ffff,CA
2602:fec8::,2602:fec8:fff:ffff:ffff:ffff:ffff:ffff,US
2602:fec9::,2602:fec9:fff:ffff:ffff:ffff:ffff:ffff,US
2602:feca::,2602:feca:fff:ffff:ffff:ffff:ffff:ffff,US
@@ -11784,7 +11970,10 @@
2602:fed7::,2602:fed7:fff:ffff:ffff:ffff:ffff:ffff,US
2602:fed8::,2602:fed8:fff:ffff:ffff:ffff:ffff:ffff,CA
2602:fed9::,2602:fed9:fff:ffff:ffff:ffff:ffff:ffff,US
-2602:feda::,2602:feda:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:feda::,2602:feda:1cf:ffff:ffff:ffff:ffff:ffff,US
+2602:feda:1d0::,2602:feda:1d0:ffff:ffff:ffff:ffff:ffff,HK
+2602:feda:1d1::,2602:feda:1d1:ffff:ffff:ffff:ffff:ffff,JP
+2602:feda:1d2::,2602:feda:fff:ffff:ffff:ffff:ffff:ffff,US
2602:fedb::,2602:fedb:fff:ffff:ffff:ffff:ffff:ffff,US
2602:fedc::,2602:fedc:fff:ffff:ffff:ffff:ffff:ffff,US
2602:fedd::,2602:fedd:fff:ffff:ffff:ffff:ffff:ffff,CA
@@ -11813,7 +12002,6 @@
2602:ff06::,2602:ff06:fff:ffff:ffff:ffff:ffff:ffff,US
2602:ff07::,2602:ff07:fff:ffff:ffff:ffff:ffff:ffff,CW
2602:ff08::,2602:ff08:fff:ffff:ffff:ffff:ffff:ffff,US
-2602:ff09::,2602:ff09:fff:ffff:ffff:ffff:ffff:ffff,US
2602:ff0a::,2602:ff0a:fff:ffff:ffff:ffff:ffff:ffff,US
2602:ff0b::,2602:ff0b:fff:ffff:ffff:ffff:ffff:ffff,US
2602:ff0c::,2602:ff0c:fff:ffff:ffff:ffff:ffff:ffff,US
@@ -11888,7 +12076,6 @@
2602:ff54::,2602:ff54:fff:ffff:ffff:ffff:ffff:ffff,US
2602:ff55::,2602:ff55:fff:ffff:ffff:ffff:ffff:ffff,US
2602:ff56::,2602:ff56:fff:ffff:ffff:ffff:ffff:ffff,PR
-2602:ff57::,2602:ff57:fff:ffff:ffff:ffff:ffff:ffff,US
2602:ff58::,2602:ff58:fff:ffff:ffff:ffff:ffff:ffff,US
2602:ff59::,2602:ff59:fff:ffff:ffff:ffff:ffff:ffff,US
2602:ff5a::,2602:ff5a:fff:ffff:ffff:ffff:ffff:ffff,US
@@ -12295,7 +12482,8 @@
2603:1047:500::,2603:1047:5ff:ffff:ffff:ffff:ffff:ffff,KR
2603:1047:600::,2603:1047:7ff:ffff:ffff:ffff:ffff:ffff,IN
2603:1047:800::,2603:1047:8ff:ffff:ffff:ffff:ffff:ffff,MY
-2603:1047:900::,2603:1048:ffff:ffff:ffff:ffff:ffff:ffff,US
+2603:1047:900::,2603:1047:9ff:ffff:ffff:ffff:ffff:ffff,AE
+2603:1047:a00::,2603:1048:ffff:ffff:ffff:ffff:ffff:ffff,US
2603:1049::,2603:1049:3:ffff:ffff:ffff:ffff:ffff,SG
2603:1049:4::,2603:1049:1ff:ffff:ffff:ffff:ffff:ffff,US
2603:1049:200::,2603:1049:202:ffff:ffff:ffff:ffff:ffff,HK
@@ -13014,9 +13202,7 @@
2604:a7c0::,2604:a7c0:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:a800::,2604:a800:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:a840::,2604:a840:ffff:ffff:ffff:ffff:ffff:ffff,US
-2604:a880::,2604:a880:cad:cf:ffff:ffff:ffff:ffff,US
-2604:a880:cad:d0::,2604:a880:cad:d0:ffff:ffff:ffff:ffff,CA
-2604:a880:cad:d1::,2604:a880:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:a880::,2604:a880:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:a8c0::,2604:a8c0:ffff:ffff:ffff:ffff:ffff:ffff,CA
2604:a900::,2604:a900:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:a940::,2604:a940:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -13376,19 +13562,36 @@
2604:e500::,2604:e500:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:e540::,2604:e540:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:e580::,2604:e580:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:e5c0::,2604:e5c0:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:e600::,2604:e600:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:e640::,2604:e640:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:e680::,2604:e680:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:e6c0::,2604:e6c0:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:e740::,2604:e740:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:e780::,2604:e780:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:e7c0::,2604:e7c0:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:e800::,2604:e800:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:e840::,2604:e840:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:e880::,2604:e880:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:e8c0::,2604:e8c0:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:e900::,2604:e900:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:e940::,2604:e940:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:e980::,2604:e980:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:e9c0::,2604:e9c0:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:ea00::,2604:ea00:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:ea40::,2604:ea40:ffff:ffff:ffff:ffff:ffff:ffff,VI
2604:ea80::,2604:ea80:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:eac0::,2604:eac0:ffff:ffff:ffff:ffff:ffff:ffff,CA
2604:eb00::,2604:eb00:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:eb40::,2604:eb40:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:eb80::,2604:eb80:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:ebc0::,2604:ebc0:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:ec40::,2604:ec40:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:ec80::,2604:ec80:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:ecc0::,2604:ecc0:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:ed40::,2604:ed40:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:ed80::,2604:ed80:ffff:ffff:ffff:ffff:ffff:ffff,US
+2604:edc0::,2604:edc0:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:ee00::,2604:ee00:fff:ffff:ffff:ffff:ffff:ffff,US
2604:ee80::,2604:ee80:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:ef00::,2604:ef00:ffff:ffff:ffff:ffff:ffff:ffff,CA
@@ -13528,7 +13731,9 @@
2605:3900::,2605:3900:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:3a00::,2605:3a00:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:3b00::,2605:3b00:fff:ffff:ffff:ffff:ffff:ffff,US
-2605:3b80::,2605:3b80:ffff:ffff:ffff:ffff:ffff:ffff,US
+2605:3b80::,2605:3b80:cac:ffff:ffff:ffff:ffff:ffff,US
+2605:3b80:cad::,2605:3b80:cad:ffff:ffff:ffff:ffff:ffff,CA
+2605:3b80:cae::,2605:3b80:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:3c00::,2605:3c00:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:3c80::,2605:3c80:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:3d00::,2605:3d00:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -14083,7 +14288,6 @@
2606:3880::,2606:3880:ffff:ffff:ffff:ffff:ffff:ffff,US
2606:3900::,2606:3900:ffff:ffff:ffff:ffff:ffff:ffff,US
2606:3980::,2606:3980:ffff:ffff:ffff:ffff:ffff:ffff,US
-2606:3a00::,2606:3a00:ffff:ffff:ffff:ffff:ffff:ffff,US
2606:3a80::,2606:3a80:ffff:ffff:ffff:ffff:ffff:ffff,US
2606:3b00::,2606:3b00:ffff:ffff:ffff:ffff:ffff:ffff,US
2606:3b80::,2606:3b80:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -14104,7 +14308,6 @@
2606:4300::,2606:4300:ffff:ffff:ffff:ffff:ffff:ffff,US
2606:4380::,2606:4380:ffff:ffff:ffff:ffff:ffff:ffff,CA
2606:4400::,2606:4400:ffff:ffff:ffff:ffff:ffff:ffff,US
-2606:4480::,2606:4480:ffff:ffff:ffff:ffff:ffff:ffff,US
2606:4500::,2606:4500:ffff:ffff:ffff:ffff:ffff:ffff,US
2606:4580::,2606:4580:ffff:ffff:ffff:ffff:ffff:ffff,CA
2606:4600::,2606:4600:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -14485,7 +14688,6 @@
2607:600::,2607:600:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:680::,2607:680:ffff:ffff:ffff:ffff:ffff:ffff,CA
2607:700::,2607:700:ffff:ffff:ffff:ffff:ffff:ffff,US
-2607:780::,2607:780:ffff:ffff:ffff:ffff:ffff:ffff,CA
2607:800::,2607:800:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:880::,2607:880:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:900::,2607:900:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -15350,7 +15552,6 @@
2607:fcf8::,2607:fcf8:ffff:ffff:ffff:ffff:ffff:ffff,CA
2607:fd00::,2607:fd00:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:fd08::,2607:fd08:ffff:ffff:ffff:ffff:ffff:ffff,US
-2607:fd10::,2607:fd10:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:fd28::,2607:fd28:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:fd30::,2607:fd30:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:fd38::,2607:fd38:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -15815,7 +16016,7 @@
2620:2::,2620:2::ffff:ffff:ffff:ffff:ffff,US
2620:2:2000::,2620:2:207f:ffff:ffff:ffff:ffff:ffff,US
2620:2:4000::,2620:2:4000:ffff:ffff:ffff:ffff:ffff,CA
-2620:2:6000::,2620:2:6000:ffff:ffff:ffff:ffff:ffff,US
+2620:2:6000::,2620:2:600f:ffff:ffff:ffff:ffff:ffff,US
2620:2:8000::,2620:2:8000:ffff:ffff:ffff:ffff:ffff,US
2620:2:a000::,2620:2:a000:ffff:ffff:ffff:ffff:ffff,US
2620:2:c000::,2620:2:c000:ffff:ffff:ffff:ffff:ffff,US
@@ -15998,7 +16199,7 @@
2620:1b::,2620:1b:f:ffff:ffff:ffff:ffff:ffff,US
2620:1b:2000::,2620:1b:2000:ffff:ffff:ffff:ffff:ffff,US
2620:1b:4000::,2620:1b:4000:ffff:ffff:ffff:ffff:ffff,US
-2620:1b:6000::,2620:1b:6000:ffff:ffff:ffff:ffff:ffff,US
+2620:1b:6000::,2620:1b:600f:ffff:ffff:ffff:ffff:ffff,US
2620:1b:8000::,2620:1b:8000:ffff:ffff:ffff:ffff:ffff,US
2620:1b:a000::,2620:1b:a000:ffff:ffff:ffff:ffff:ffff,US
2620:1b:c000::,2620:1b:c000:ffff:ffff:ffff:ffff:ffff,US
@@ -16340,17 +16541,25 @@
2620:4e:4000::,2620:4e:4000:ffff:ffff:ffff:ffff:ffff,CA
2620:4e:6000::,2620:4e:6000:ffff:ffff:ffff:ffff:ffff,US
2620:4e:8000::,2620:4e:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:4e:a000::,2620:4e:a000:ffff:ffff:ffff:ffff:ffff,US
+2620:4e:e000::,2620:4e:e000:ffff:ffff:ffff:ffff:ffff,US
2620:4f::,2620:4f::ffff:ffff:ffff:ffff:ffff,US
+2620:4f:2000::,2620:4f:2000:ffff:ffff:ffff:ffff:ffff,US
2620:4f:4000::,2620:4f:4000:ffff:ffff:ffff:ffff:ffff,US
+2620:4f:6000::,2620:4f:6000:ffff:ffff:ffff:ffff:ffff,US
2620:4f:8000::,2620:4f:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:4f:a000::,2620:4f:a000:ffff:ffff:ffff:ffff:ffff,US
2620:4f:c000::,2620:4f:c000:ffff:ffff:ffff:ffff:ffff,US
+2620:4f:e000::,2620:4f:e000:ffff:ffff:ffff:ffff:ffff,CA
2620:50::,2620:50:f:ffff:ffff:ffff:ffff:ffff,US
2620:50:4080::,2620:50:4080:ffff:ffff:ffff:ffff:ffff,US
2620:50:8000::,2620:50:8000:ffff:ffff:ffff:ffff:ffff,CA
2620:50:8080::,2620:50:8080:ffff:ffff:ffff:ffff:ffff,US
2620:50:c040::,2620:50:c040:ffff:ffff:ffff:ffff:ffff,US
2620:51::,2620:51::ffff:ffff:ffff:ffff:ffff,US
+2620:51:2000::,2620:51:2000:ffff:ffff:ffff:ffff:ffff,US
2620:51:4000::,2620:51:4000:ffff:ffff:ffff:ffff:ffff,CA
+2620:51:6000::,2620:51:6000:ffff:ffff:ffff:ffff:ffff,US
2620:51:8000::,2620:51:8000:ffff:ffff:ffff:ffff:ffff,CA
2620:51:c000::,2620:51:c000:ffff:ffff:ffff:ffff:ffff,US
2620:52::,2620:52:3:ffff:ffff:ffff:ffff:ffff,US
@@ -16974,7 +17183,8 @@
2620:f0:c003::,2620:f0:c003:ffff:ffff:ffff:ffff:ffff,NL
2620:f0:c004::,2620:f0:c004:ffff:ffff:ffff:ffff:ffff,US
2620:f0:c005::,2620:f0:c005:ffff:ffff:ffff:ffff:ffff,SG
-2620:f0:c006::,2620:f0:c009:ffff:ffff:ffff:ffff:ffff,US
+2620:f0:c006::,2620:f0:c006:ffff:ffff:ffff:ffff:ffff,DE
+2620:f0:c007::,2620:f0:c009:ffff:ffff:ffff:ffff:ffff,US
2620:f0:c00a::,2620:f0:c00a:ffff:ffff:ffff:ffff:ffff,CA
2620:f0:c00b::,2620:f0:c00f:ffff:ffff:ffff:ffff:ffff,US
2620:f1:4000::,2620:f1:4000:ffff:ffff:ffff:ffff:ffff,CA
@@ -17768,7 +17978,6 @@
2620:12f:1000::,2620:12f:100f:ffff:ffff:ffff:ffff:ffff,US
2620:12f:2000::,2620:12f:20ff:ffff:ffff:ffff:ffff:ffff,US
2620:12f:3000::,2620:12f:30ff:ffff:ffff:ffff:ffff:ffff,US
-2620:12f:4000::,2620:12f:400f:ffff:ffff:ffff:ffff:ffff,US
2620:12f:5000::,2620:12f:500f:ffff:ffff:ffff:ffff:ffff,US
2620:12f:6000::,2620:12f:600f:ffff:ffff:ffff:ffff:ffff,US
2620:12f:7000::,2620:12f:70ff:ffff:ffff:ffff:ffff:ffff,US
@@ -17930,6 +18139,18 @@
2620:139:4000::,2620:139:400f:ffff:ffff:ffff:ffff:ffff,US
2620:139:5000::,2620:139:500f:ffff:ffff:ffff:ffff:ffff,US
2620:139:6000::,2620:139:600f:ffff:ffff:ffff:ffff:ffff,US
+2620:139:7000::,2620:139:70ff:ffff:ffff:ffff:ffff:ffff,BL
+2620:139:8000::,2620:139:80ff:ffff:ffff:ffff:ffff:ffff,US
+2620:139:9000::,2620:139:900f:ffff:ffff:ffff:ffff:ffff,US
+2620:139:a000::,2620:139:a00f:ffff:ffff:ffff:ffff:ffff,US
+2620:139:b000::,2620:139:b0ff:ffff:ffff:ffff:ffff:ffff,US
+2620:139:c000::,2620:139:c0ff:ffff:ffff:ffff:ffff:ffff,US
+2620:139:d000::,2620:139:d00f:ffff:ffff:ffff:ffff:ffff,US
+2620:139:e000::,2620:139:e00f:ffff:ffff:ffff:ffff:ffff,US
+2620:139:f000::,2620:139:f00f:ffff:ffff:ffff:ffff:ffff,US
+2620:13a::,2620:13a:f:ffff:ffff:ffff:ffff:ffff,US
+2620:13a:1000::,2620:13a:10ff:ffff:ffff:ffff:ffff:ffff,US
+2620:13a:2000::,2620:13a:20ff:ffff:ffff:ffff:ffff:ffff,US
2620:140::,2620:140:3ff:ffff:ffff:ffff:ffff:ffff,US
2620:141::,2620:141:fff:ffff:ffff:ffff:ffff:ffff,US
2620:143::,2620:143:7ff:ffff:ffff:ffff:ffff:ffff,US
@@ -17962,7 +18183,9 @@
2620:15c:5::,2620:15c:5:ffff:ffff:ffff:ffff:ffff,BR
2620:15c:6::,2620:15c:d:ffff:ffff:ffff:ffff:ffff,US
2620:15c:e::,2620:15c:e:ffff:ffff:ffff:ffff:ffff,MX
-2620:15c:f::,2620:15c:fff:ffff:ffff:ffff:ffff:ffff,US
+2620:15c:f::,2620:15c:30:ffff:ffff:ffff:ffff:ffff,US
+2620:15c:31::,2620:15c:31:ffff:ffff:ffff:ffff:ffff,PE
+2620:15c:32::,2620:15c:fff:ffff:ffff:ffff:ffff:ffff,US
2620:15d::,2620:15f:fff:ffff:ffff:ffff:ffff:ffff,US
2620:160::,2620:160:ffff:ffff:ffff:ffff:ffff:ffff,US
2620:162::,2620:162:fff:ffff:ffff:ffff:ffff:ffff,US
@@ -18071,6 +18294,8 @@
2620:193::,2620:193:fff:ffff:ffff:ffff:ffff:ffff,US
2620:194::,2620:194:fff:ffff:ffff:ffff:ffff:ffff,US
2620:195::,2620:195:fff:ffff:ffff:ffff:ffff:ffff,US
+2620:196::,2620:196:ffff:ffff:ffff:ffff:ffff:ffff,CA
+2620:197::,2620:197:fff:ffff:ffff:ffff:ffff:ffff,US
2620:1a0::,2620:1a0:ffff:ffff:ffff:ffff:ffff:ffff,US
2620:1b0::,2620:1b0:ffff:ffff:ffff:ffff:ffff:ffff,US
2620:1c0::,2620:1c0:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -18396,7 +18621,7 @@
2801:10:3000::,2801:10:3000:ffff:ffff:ffff:ffff:ffff,CO
2801:10:4000::,2801:10:4000:ffff:ffff:ffff:ffff:ffff,AR
2801:10:5000::,2801:10:5000:ffff:ffff:ffff:ffff:ffff,BO
-2801:10:6000::,2801:10:6000:ffff:ffff:ffff:ffff:ffff,HN
+2801:10:6000::,2801:10:600f:ffff:ffff:ffff:ffff:ffff,HN
2801:10:7000::,2801:10:7000:ffff:ffff:ffff:ffff:ffff,CO
2801:10:8000::,2801:10:8000:ffff:ffff:ffff:ffff:ffff,AR
2801:10:9000::,2801:10:9000:ffff:ffff:ffff:ffff:ffff,PY
@@ -18435,6 +18660,7 @@
2801:12:c000::,2801:12:c000:ffff:ffff:ffff:ffff:ffff,AR
2801:12:d000::,2801:12:d000:ffff:ffff:ffff:ffff:ffff,BO
2801:12:e000::,2801:12:e000:ffff:ffff:ffff:ffff:ffff,PA
+2801:12:f000::,2801:12:f000:ffff:ffff:ffff:ffff:ffff,CO
2801:13::,2801:13::ffff:ffff:ffff:ffff:ffff,VE
2801:13:1000::,2801:13:1000:ffff:ffff:ffff:ffff:ffff,AR
2801:13:2000::,2801:13:2000:ffff:ffff:ffff:ffff:ffff,AR
@@ -18495,6 +18721,7 @@
2801:16:b000::,2801:16:b000:ffff:ffff:ffff:ffff:ffff,CL
2801:16:c000::,2801:16:c000:ffff:ffff:ffff:ffff:ffff,AR
2801:16:d000::,2801:16:d000:ffff:ffff:ffff:ffff:ffff,AR
+2801:16:f000::,2801:16:f000:ffff:ffff:ffff:ffff:ffff,CO
2801:17::,2801:17::ffff:ffff:ffff:ffff:ffff,CL
2801:17:1000::,2801:17:1000:ffff:ffff:ffff:ffff:ffff,HN
2801:17:2000::,2801:17:2000:ffff:ffff:ffff:ffff:ffff,PY
@@ -18551,6 +18778,7 @@
2801:1a:c000::,2801:1a:c000:ffff:ffff:ffff:ffff:ffff,CO
2801:1a:d000::,2801:1a:d000:ffff:ffff:ffff:ffff:ffff,AR
2801:1a:e000::,2801:1a:e000:ffff:ffff:ffff:ffff:ffff,DO
+2801:1a:f000::,2801:1a:f000:ffff:ffff:ffff:ffff:ffff,CO
2801:1b::,2801:1b::ffff:ffff:ffff:ffff:ffff,CR
2801:1b:1000::,2801:1b:1000:ffff:ffff:ffff:ffff:ffff,CL
2801:1b:2000::,2801:1b:2000:ffff:ffff:ffff:ffff:ffff,UY
@@ -19011,6 +19239,7 @@
2801:80:2410::,2801:80:2410:ffff:ffff:ffff:ffff:ffff,BR
2801:80:2420::,2801:80:2420:ffff:ffff:ffff:ffff:ffff,BR
2801:80:2430::,2801:80:2430:ffff:ffff:ffff:ffff:ffff,BR
+2801:80:2440::,2801:80:2443:ffff:ffff:ffff:ffff:ffff,BR
2801:80:2600::,2801:80:26ff:ffff:ffff:ffff:ffff:ffff,BR
2801:80:2800::,2801:80:28ff:ffff:ffff:ffff:ffff:ffff,BR
2801:82::,2801:82:ffff:ffff:ffff:ffff:ffff:ffff,BR
@@ -19049,7 +19278,7 @@
2801:c4:10::,2801:c4:10:ffff:ffff:ffff:ffff:ffff,MX
2801:c4:12::,2801:c4:15:ffff:ffff:ffff:ffff:ffff,MX
2801:c4:17::,2801:c4:17:ffff:ffff:ffff:ffff:ffff,MX
-2801:c4:19::,2801:c4:1c:ffff:ffff:ffff:ffff:ffff,MX
+2801:c4:19::,2801:c4:1d:ffff:ffff:ffff:ffff:ffff,MX
2801:c4:20::,2801:c4:20:ffff:ffff:ffff:ffff:ffff,MX
2801:c4:30::,2801:c4:30:ffff:ffff:ffff:ffff:ffff,MX
2801:c4:50::,2801:c4:50:ffff:ffff:ffff:ffff:ffff,MX
@@ -19137,6 +19366,7 @@
2803:220::,2803:220:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:240::,2803:240:ffff:ffff:ffff:ffff:ffff:ffff,CO
2803:280::,2803:280:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:2a0::,2803:2a0:ffff:ffff:ffff:ffff:ffff:ffff,CO
2803:2c0::,2803:2c0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:320::,2803:320:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:340::,2803:340:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -19178,6 +19408,7 @@
2803:a20::,2803:a20:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:a40::,2803:a40:ffff:ffff:ffff:ffff:ffff:ffff,NI
2803:a80::,2803:a80:ffff:ffff:ffff:ffff:ffff:ffff,CO
+2803:aa0::,2803:aa0:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:ac0::,2803:ac0:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:b00::,2803:b00:ffff:ffff:ffff:ffff:ffff:ffff,EC
2803:b20::,2803:b20:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -19222,6 +19453,7 @@
2803:1220::,2803:1220:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:1240::,2803:1240:ffff:ffff:ffff:ffff:ffff:ffff,CO
2803:1280::,2803:1280:ffff:ffff:ffff:ffff:ffff:ffff,PE
+2803:12a0::,2803:12a0:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:12c0::,2803:12c0:ffff:ffff:ffff:ffff:ffff:ffff,DO
2803:1300::,2803:1300:ffff:ffff:ffff:ffff:ffff:ffff,CR
2803:1320::,2803:1320:ffff:ffff:ffff:ffff:ffff:ffff,PE
@@ -19260,6 +19492,7 @@
2803:1a20::,2803:1a20:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:1a40::,2803:1a40:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:1a80::,2803:1a80:ffff:ffff:ffff:ffff:ffff:ffff,CR
+2803:1aa0::,2803:1aa0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:1ac0::,2803:1ac0:ffff:ffff:ffff:ffff:ffff:ffff,HN
2803:1b00::,2803:1b00:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:1b20::,2803:1b20:ffff:ffff:ffff:ffff:ffff:ffff,CR
@@ -19269,6 +19502,7 @@
2803:1c20::,2803:1c20:ffff:ffff:ffff:ffff:ffff:ffff,EC
2803:1c40::,2803:1c40:ffff:ffff:ffff:ffff:ffff:ffff,NI
2803:1c80::,2803:1c80:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:1ca0::,2803:1ca0:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:1cc0::,2803:1cc0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:1d00::,2803:1d00:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:1d20::,2803:1d20:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -19299,6 +19533,7 @@
2803:2220::,2803:2220:ffff:ffff:ffff:ffff:ffff:ffff,EC
2803:2240::,2803:2240:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:2280::,2803:2280:ffff:ffff:ffff:ffff:ffff:ffff,BZ
+2803:22a0::,2803:22a0:ffff:ffff:ffff:ffff:ffff:ffff,CR
2803:22c0::,2803:22c0:ffff:ffff:ffff:ffff:ffff:ffff,VE
2803:2300::,2803:2300:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:2320::,2803:2320:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -19341,6 +19576,7 @@
2803:2a20::,2803:2a20:ffff:ffff:ffff:ffff:ffff:ffff,HN
2803:2a40::,2803:2a40:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:2a80::,2803:2a80:ffff:ffff:ffff:ffff:ffff:ffff,CO
+2803:2aa0::,2803:2aa0:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:2ac0::,2803:2ac0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:2b00::,2803:2b00:ffff:ffff:ffff:ffff:ffff:ffff,PA
2803:2b20::,2803:2b20:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -19381,6 +19617,7 @@
2803:3220::,2803:3220:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:3240::,2803:3240:ffff:ffff:ffff:ffff:ffff:ffff,BZ
2803:3280::,2803:3280:ffff:ffff:ffff:ffff:ffff:ffff,GT
+2803:32a0::,2803:32a0:ffff:ffff:ffff:ffff:ffff:ffff,PY
2803:32c0::,2803:32c0:ffff:ffff:ffff:ffff:ffff:ffff,HN
2803:3320::,2803:3320:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:3340::,2803:3340:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -19432,6 +19669,7 @@
2803:3c20::,2803:3c20:ffff:ffff:ffff:ffff:ffff:ffff,EC
2803:3c40::,2803:3c40:ffff:ffff:ffff:ffff:ffff:ffff,VE
2803:3c80::,2803:3c80:ffff:ffff:ffff:ffff:ffff:ffff,CL
+2803:3ca0::,2803:3ca0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:3cc0::,2803:3cc0:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:3d00::,2803:3d00:ffff:ffff:ffff:ffff:ffff:ffff,BZ
2803:3d20::,2803:3d20:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -19462,6 +19700,7 @@
2803:4200::,2803:4200:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:4220::,2803:4220:ffff:ffff:ffff:ffff:ffff:ffff,PE
2803:4280::,2803:4280:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:42a0::,2803:42a0:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:42c0::,2803:42c0:ffff:ffff:ffff:ffff:ffff:ffff,HN
2803:4300::,2803:4300:ffff:ffff:ffff:ffff:ffff:ffff,PA
2803:4320::,2803:4320:ffff:ffff:ffff:ffff:ffff:ffff,DO
@@ -19503,6 +19742,7 @@
2803:4a20::,2803:4a20:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:4a40::,2803:4a40:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:4a80::,2803:4a80:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:4aa0::,2803:4aa0:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:4ac0::,2803:4ac0:ffff:ffff:ffff:ffff:ffff:ffff,BO
2803:4b00::,2803:4b00:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:4b20::,2803:4b20:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -19545,6 +19785,7 @@
2803:5220::,2803:5220:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:5240::,2803:5240:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:5280::,2803:5280:ffff:ffff:ffff:ffff:ffff:ffff,DO
+2803:52a0::,2803:52a0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:52c0::,2803:52c0:ffff:ffff:ffff:ffff:ffff:ffff,VE
2803:5300::,2803:5300:ffff:ffff:ffff:ffff:ffff:ffff,GT
2803:5320::,2803:5320:ffff:ffff:ffff:ffff:ffff:ffff,EC
@@ -19586,6 +19827,7 @@
2803:5a20::,2803:5a20:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:5a40::,2803:5a40:ffff:ffff:ffff:ffff:ffff:ffff,PY
2803:5a80::,2803:5a80:ffff:ffff:ffff:ffff:ffff:ffff,DO
+2803:5aa0::,2803:5aa0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:5ac0::,2803:5ac0:ffff:ffff:ffff:ffff:ffff:ffff,VE
2803:5b00::,2803:5b00:ffff:ffff:ffff:ffff:ffff:ffff,CR
2803:5b20::,2803:5b20:ffff:ffff:ffff:ffff:ffff:ffff,CL
@@ -19596,6 +19838,7 @@
2803:5c20::,2803:5c20:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:5c40::,2803:5c40:ffff:ffff:ffff:ffff:ffff:ffff,CR
2803:5c80::,2803:5c80:ffff:ffff:ffff:ffff:ffff:ffff,CL
+2803:5ca0::,2803:5ca0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:5cc0::,2803:5cc0:ffff:ffff:ffff:ffff:ffff:ffff,HN
2803:5d00::,2803:5d00:ffff:ffff:ffff:ffff:ffff:ffff,SV
2803:5d20::,2803:5d20:ffff:ffff:ffff:ffff:ffff:ffff,CO
@@ -19626,6 +19869,7 @@
2803:6220::,2803:6220:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:6240::,2803:6240:ffff:ffff:ffff:ffff:ffff:ffff,VE
2803:6280::,2803:6280:ffff:ffff:ffff:ffff:ffff:ffff,PA
+2803:62a0::,2803:62a0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:62c0::,2803:62c0:ffff:ffff:ffff:ffff:ffff:ffff,EC
2803:6300::,2803:6300:ffff:ffff:ffff:ffff:ffff:ffff,GT
2803:6320::,2803:6320:ffff:ffff:ffff:ffff:ffff:ffff,EC
@@ -19667,6 +19911,7 @@
2803:6a20::,2803:6a20:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:6a40::,2803:6a40:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:6a80::,2803:6a80:ffff:ffff:ffff:ffff:ffff:ffff,NI
+2803:6aa0::,2803:6aa0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:6ac0::,2803:6ac0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:6b00::,2803:6b00:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:6b20::,2803:6b20:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -19709,6 +19954,7 @@
2803:7220::,2803:7220:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:7240::,2803:7240:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:7280::,2803:7280:ffff:ffff:ffff:ffff:ffff:ffff,PA
+2803:72a0::,2803:72a0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:72c0::,2803:72c0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:7300::,2803:7300:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:7320::,2803:7320:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -19761,6 +20007,7 @@
2803:7c20::,2803:7c20:ffff:ffff:ffff:ffff:ffff:ffff,EC
2803:7c40::,2803:7c40:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:7c80::,2803:7c80:ffff:ffff:ffff:ffff:ffff:ffff,PA
+2803:7ca0::,2803:7ca0:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:7cc0::,2803:7cc0:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:7d00::,2803:7d00:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:7d20::,2803:7d20:ffff:ffff:ffff:ffff:ffff:ffff,VE
@@ -19792,6 +20039,7 @@
2803:8220::,2803:8220:ffff:ffff:ffff:ffff:ffff:ffff,PE
2803:8240::,2803:8240:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:8280::,2803:8280:ffff:ffff:ffff:ffff:ffff:ffff,VE
+2803:82a0::,2803:82a0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:82c0::,2803:82c0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:8300::,2803:8300:ffff:ffff:ffff:ffff:ffff:ffff,EC
2803:8320::,2803:8320:ffff:ffff:ffff:ffff:ffff:ffff,CL
@@ -19833,6 +20081,7 @@
2803:8a20::,2803:8a20:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:8a40::,2803:8a40:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:8a80::,2803:8a80:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:8aa0::,2803:8aa0:ffff:ffff:ffff:ffff:ffff:ffff,HN
2803:8ac0::,2803:8ac0:ffff:ffff:ffff:ffff:ffff:ffff,DO
2803:8b00::,2803:8b00:ffff:ffff:ffff:ffff:ffff:ffff,CO
2803:8b20::,2803:8b20:ffff:ffff:ffff:ffff:ffff:ffff,CR
@@ -19875,6 +20124,7 @@
2803:9220::,2803:9220:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:9240::,2803:9240:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:9280::,2803:9280:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:92a0::,2803:92a0:ffff:ffff:ffff:ffff:ffff:ffff,EC
2803:92c0::,2803:92c0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:9300::,2803:9300:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:9320::,2803:9320:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -19915,6 +20165,7 @@
2803:9a20::,2803:9a20:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:9a40::,2803:9a40:ffff:ffff:ffff:ffff:ffff:ffff,BZ
2803:9a80::,2803:9a80:ffff:ffff:ffff:ffff:ffff:ffff,CO
+2803:9aa0::,2803:9aa0:ffff:ffff:ffff:ffff:ffff:ffff,TT
2803:9ac0::,2803:9ac0:ffff:ffff:ffff:ffff:ffff:ffff,EC
2803:9b00::,2803:9b00:ffff:ffff:ffff:ffff:ffff:ffff,DO
2803:9b20::,2803:9b20:ffff:ffff:ffff:ffff:ffff:ffff,CR
@@ -19925,6 +20176,7 @@
2803:9c20::,2803:9c20:ffff:ffff:ffff:ffff:ffff:ffff,EC
2803:9c40::,2803:9c40:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:9c80::,2803:9c80:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:9ca0::,2803:9ca0:ffff:ffff:ffff:ffff:ffff:ffff,HN
2803:9cc0::,2803:9cc0:ffff:ffff:ffff:ffff:ffff:ffff,EC
2803:9d00::,2803:9d00:ffff:ffff:ffff:ffff:ffff:ffff,SV
2803:9d20::,2803:9d20:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -19956,6 +20208,7 @@
2803:a220::,2803:a220:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:a240::,2803:a240:ffff:ffff:ffff:ffff:ffff:ffff,EC
2803:a280::,2803:a280:ffff:ffff:ffff:ffff:ffff:ffff,DO
+2803:a2a0::,2803:a2a0:ffff:ffff:ffff:ffff:ffff:ffff,PE
2803:a2c0::,2803:a2c0:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:a320::,2803:a320:ffff:ffff:ffff:ffff:ffff:ffff,PE
2803:a340::,2803:a340:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -19996,6 +20249,7 @@
2803:aa20::,2803:aa20:ffff:ffff:ffff:ffff:ffff:ffff,EC
2803:aa40::,2803:aa40:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:aa80::,2803:aa80:ffff:ffff:ffff:ffff:ffff:ffff,CR
+2803:aaa0::,2803:aaa0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:aac0::,2803:aac0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:ab00::,2803:ab00:ffff:ffff:ffff:ffff:ffff:ffff,DO
2803:ab20::,2803:ab20:ffff:ffff:ffff:ffff:ffff:ffff,VE
@@ -20035,6 +20289,7 @@
2803:b220::,2803:b220:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:b240::,2803:b240:ffff:ffff:ffff:ffff:ffff:ffff,PY
2803:b280::,2803:b280:ffff:ffff:ffff:ffff:ffff:ffff,CL
+2803:b2a0::,2803:b2a0:ffff:ffff:ffff:ffff:ffff:ffff,CO
2803:b2c0::,2803:b2c0:ffff:ffff:ffff:ffff:ffff:ffff,EC
2803:b300::,2803:b300:ffff:ffff:ffff:ffff:ffff:ffff,PY
2803:b320::,2803:b320:ffff:ffff:ffff:ffff:ffff:ffff,PE
@@ -20085,6 +20340,7 @@
2803:bc20::,2803:bc20:ffff:ffff:ffff:ffff:ffff:ffff,EC
2803:bc40::,2803:bc40:ffff:ffff:ffff:ffff:ffff:ffff,CO
2803:bc80::,2803:bc80:ffff:ffff:ffff:ffff:ffff:ffff,CO
+2803:bca0::,2803:bca0:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:bcc0::,2803:bcc0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:bd00::,2803:bd00:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:bd20::,2803:bd20:ffff:ffff:ffff:ffff:ffff:ffff,CL
@@ -20116,6 +20372,7 @@
2803:c220::,2803:c220:ffff:ffff:ffff:ffff:ffff:ffff,EC
2803:c240::,2803:c240:ffff:ffff:ffff:ffff:ffff:ffff,BZ
2803:c280::,2803:c280:ffff:ffff:ffff:ffff:ffff:ffff,EC
+2803:c2a0::,2803:c2a0:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:c2c0::,2803:c2c0:ffff:ffff:ffff:ffff:ffff:ffff,EC
2803:c300::,2803:c300:ffff:ffff:ffff:ffff:ffff:ffff,GT
2803:c320::,2803:c320:ffff:ffff:ffff:ffff:ffff:ffff,PE
@@ -20158,6 +20415,7 @@
2803:ca20::,2803:ca20:ffff:ffff:ffff:ffff:ffff:ffff,HN
2803:ca40::,2803:ca40:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:ca80::,2803:ca80:ffff:ffff:ffff:ffff:ffff:ffff,CL
+2803:caa0::,2803:caa0:ffff:ffff:ffff:ffff:ffff:ffff,CO
2803:cac0::,2803:cac0:ffff:ffff:ffff:ffff:ffff:ffff,HT
2803:cb00::,2803:cb00:ffff:ffff:ffff:ffff:ffff:ffff,CO
2803:cb20::,2803:cb20:ffff:ffff:ffff:ffff:ffff:ffff,EC
@@ -20202,6 +20460,7 @@
2803:d220::,2803:d220:ffff:ffff:ffff:ffff:ffff:ffff,EC
2803:d240::,2803:d240:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:d280::,2803:d280:ffff:ffff:ffff:ffff:ffff:ffff,PY
+2803:d2a0::,2803:d2a0:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:d2c0::,2803:d2c0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:d320::,2803:d320:ffff:ffff:ffff:ffff:ffff:ffff,DO
2803:d340::,2803:d340:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -20243,6 +20502,7 @@
2803:da20::,2803:da20:ffff:ffff:ffff:ffff:ffff:ffff,CO
2803:da40::,2803:da40:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:da80::,2803:da80:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:daa0::,2803:daa0:ffff:ffff:ffff:ffff:ffff:ffff,CR
2803:dac0::,2803:dac0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:db00::,2803:db00:ffff:ffff:ffff:ffff:ffff:ffff,HN
2803:db20::,2803:db20:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -20253,6 +20513,7 @@
2803:dc20::,2803:dc20:ffff:ffff:ffff:ffff:ffff:ffff,CO
2803:dc40::,2803:dc40:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:dc80::,2803:dc80:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:dca0::,2803:dca0:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:dcc0::,2803:dcc0:ffff:ffff:ffff:ffff:ffff:ffff,CR
2803:dd00::,2803:dd00:ffff:ffff:ffff:ffff:ffff:ffff,PA
2803:dd20::,2803:dd20:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -20284,6 +20545,7 @@
2803:e220::,2803:e220:ffff:ffff:ffff:ffff:ffff:ffff,EC
2803:e240::,2803:e240:ffff:ffff:ffff:ffff:ffff:ffff,PA
2803:e280::,2803:e280:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:e2a0::,2803:e2a0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:e2c0::,2803:e2c0:ffff:ffff:ffff:ffff:ffff:ffff,CO
2803:e300::,2803:e300:ffff:ffff:ffff:ffff:ffff:ffff,CR
2803:e320::,2803:e320:ffff:ffff:ffff:ffff:ffff:ffff,CL
@@ -20325,6 +20587,7 @@
2803:ea20::,2803:ea20:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:ea40::,2803:ea40:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:ea80::,2803:ea80:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:eaa0::,2803:eaa0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:eac0::,2803:eac0:ffff:ffff:ffff:ffff:ffff:ffff,CR
2803:eb00::,2803:eb00:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:eb20::,2803:eb20:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -20367,6 +20630,7 @@
2803:f220::,2803:f220:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:f240::,2803:f240:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:f280::,2803:f280:ffff:ffff:ffff:ffff:ffff:ffff,DO
+2803:f2a0::,2803:f2a0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:f2c0::,2803:f2c0:ffff:ffff:ffff:ffff:ffff:ffff,PY
2803:f300::,2803:f300:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:f320::,2803:f320:ffff:ffff:ffff:ffff:ffff:ffff,PE
@@ -20418,6 +20682,7 @@
2803:fc20::,2803:fc20:ffff:ffff:ffff:ffff:ffff:ffff,EC
2803:fc40::,2803:fc40:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:fc80::,2803:fc80:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:fca0::,2803:fca0:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:fcc0::,2803:fcc0:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:fd00::,2803:fd00:ffff:ffff:ffff:ffff:ffff:ffff,CO
2803:fd20::,2803:fd20:ffff:ffff:ffff:ffff:ffff:ffff,DO
@@ -22065,7 +22330,6 @@
2804:1ad0::,2804:1ad0:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:1ad4::,2804:1ad4:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:1ad8::,2804:1ad8:ffff:ffff:ffff:ffff:ffff:ffff,BR
-2804:1adc::,2804:1adc:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:1ae0::,2804:1ae0:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:1ae4::,2804:1ae4:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:1ae8::,2804:1ae8:ffff:ffff:ffff:ffff:ffff:ffff,BR
@@ -22272,7 +22536,6 @@
2804:1e38::,2804:1e38:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:1e3c::,2804:1e3c:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:1e40::,2804:1e40:ffff:ffff:ffff:ffff:ffff:ffff,BR
-2804:1e44::,2804:1e44:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:1e48::,2804:1e48:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:1e4c::,2804:1e4c:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:1e50::,2804:1e50:ffff:ffff:ffff:ffff:ffff:ffff,BR
@@ -22697,7 +22960,6 @@
2804:25c0::,2804:25c0:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:25c4::,2804:25c4:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:25c8::,2804:25c8:ffff:ffff:ffff:ffff:ffff:ffff,BR
-2804:25cc::,2804:25cc:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:25d0::,2804:25d0:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:25d4::,2804:25d4:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:25d8::,2804:25d8:ffff:ffff:ffff:ffff:ffff:ffff,BR
@@ -22768,7 +23030,6 @@
2804:26e4::,2804:26e4:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:26e8::,2804:26e8:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:26ec::,2804:26ec:ffff:ffff:ffff:ffff:ffff:ffff,BR
-2804:26f0::,2804:26f0:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:26f4::,2804:26f4:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:26f8::,2804:26f8:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:26fc::,2804:26fc:ffff:ffff:ffff:ffff:ffff:ffff,BR
@@ -22960,7 +23221,6 @@
2804:29fc::,2804:29fc:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:2a00::,2804:2a00:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:2a04::,2804:2a04:ffff:ffff:ffff:ffff:ffff:ffff,BR
-2804:2a08::,2804:2a08:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:2a0c::,2804:2a0c:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:2a10::,2804:2a10:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:2a14::,2804:2a14:ffff:ffff:ffff:ffff:ffff:ffff,BR
@@ -23318,7 +23578,6 @@
2804:2fa8::,2804:2fa8:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:2fac::,2804:2fac:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:2fb0::,2804:2fb0:ffff:ffff:ffff:ffff:ffff:ffff,BR
-2804:2fb4::,2804:2fb4:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:2fb8::,2804:2fb8:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:2fbc::,2804:2fbc:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:2fc0::,2804:2fc0:ffff:ffff:ffff:ffff:ffff:ffff,BR
@@ -23462,7 +23721,6 @@
2804:31e8::,2804:31e8:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:31ec::,2804:31ec:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:31f0::,2804:31f0:ffff:ffff:ffff:ffff:ffff:ffff,BR
-2804:31f4::,2804:31f4:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:31f8::,2804:31f8:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:31fc::,2804:31fc:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:3200::,2804:3200:ffff:ffff:ffff:ffff:ffff:ffff,BR
@@ -23633,7 +23891,6 @@
2804:3494::,2804:3494:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:3498::,2804:3498:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:349c::,2804:349c:ffff:ffff:ffff:ffff:ffff:ffff,BR
-2804:34a0::,2804:34a0:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:34a4::,2804:34a4:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:34a8::,2804:34a8:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:34ac::,2804:34ac:ffff:ffff:ffff:ffff:ffff:ffff,BR
@@ -25361,6 +25618,74 @@
2804:4f98::,2804:4f98:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:4f9c::,2804:4f9c:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:4fa0::,2804:4fa0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4fa4::,2804:4fa4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4fa8::,2804:4fa8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4fac::,2804:4fac:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4fb0::,2804:4fb0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4fb4::,2804:4fb4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4fb8::,2804:4fb8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4fbc::,2804:4fbc:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4fc0::,2804:4fc0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4fc4::,2804:4fc4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4fc8::,2804:4fc8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4fcc::,2804:4fcc:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4fd0::,2804:4fd0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4fd4::,2804:4fd4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4fd8::,2804:4fd8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4fdc::,2804:4fdc:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4fe0::,2804:4fe0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4fe4::,2804:4fe4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4fe8::,2804:4fe8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4fec::,2804:4fec:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4ff0::,2804:4ff0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4ff4::,2804:4ff4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4ff8::,2804:4ff8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:4ffc::,2804:4ffc:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:5000::,2804:5000:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:5004::,2804:5004:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:5008::,2804:5008:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:500c::,2804:500c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:5010::,2804:5010:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:5014::,2804:5014:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:5018::,2804:5018:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:501c::,2804:501c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:5020::,2804:5020:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:5024::,2804:5024:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:5028::,2804:5028:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:502c::,2804:502c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:5030::,2804:5030:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:5034::,2804:5034:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:5038::,2804:5038:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:503c::,2804:503c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:5040::,2804:5040:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:5044::,2804:5044:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:5048::,2804:5048:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:504c::,2804:504c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:5050::,2804:5050:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:5054::,2804:5054:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:5058::,2804:5058:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:505c::,2804:505c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:5060::,2804:5060:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:5064::,2804:5064:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:5068::,2804:5068:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:506c::,2804:506c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:5070::,2804:5070:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:5074::,2804:5074:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:5078::,2804:5078:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:507c::,2804:507c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:5080::,2804:5080:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:5084::,2804:5084:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:5088::,2804:5088:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:508c::,2804:508c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:5090::,2804:5090:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:5094::,2804:5094:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:5098::,2804:5098:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:509c::,2804:509c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:50a0::,2804:50a0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:50a4::,2804:50a4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:50a8::,2804:50a8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:50ac::,2804:50ac:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:50b0::,2804:50b0:ffff:ffff:ffff:ffff:ffff:ffff,BR
2806::,2806:f:ffff:ffff:ffff:ffff:ffff:ffff,MX
2806:200::,2806:215:ffff:ffff:ffff:ffff:ffff:ffff,MX
2806:217::,2806:220:ffff:ffff:ffff:ffff:ffff:ffff,MX
@@ -25378,7 +25703,7 @@
2806:2e0::,2806:2ee:ffff:ffff:ffff:ffff:ffff:ffff,MX
2806:2f0::,2806:2f0:ffff:ffff:ffff:ffff:ffff:ffff,MX
2806:2f4::,2806:2f4:ffff:ffff:ffff:ffff:ffff:ffff,MX
-2806:2f6::,2806:301:ffff:ffff:ffff:ffff:ffff:ffff,MX
+2806:2f6::,2806:305:ffff:ffff:ffff:ffff:ffff:ffff,MX
2806:310::,2806:310:ffff:ffff:ffff:ffff:ffff:ffff,MX
2806:320::,2806:320:ffff:ffff:ffff:ffff:ffff:ffff,MX
2806:330::,2806:330:ffff:ffff:ffff:ffff:ffff:ffff,MX
@@ -25431,7 +25756,7 @@
2a00:d68::,2a00:d68:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a00:d70::,2a00:d70:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a00:d78::,2a00:d78:ffff:ffff:ffff:ffff:ffff:ffff,NL
-2a00:d80::,2a00:d80:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a00:d80::,2a00:d87:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a00:d88::,2a00:d8f:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a00:d90::,2a00:d97:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a00:d98::,2a00:d98:ffff:ffff:ffff:ffff:ffff:ffff,RU
@@ -25968,7 +26293,6 @@
2a00:1de0::,2a00:1de0:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a00:1de8::,2a00:1de8:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a00:1df0::,2a00:1df0:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a00:1df8::,2a00:1df8:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a00:1e00::,2a00:1e00:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a00:1e08::,2a00:1e08:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a00:1e10::,2a00:1e10:ffff:ffff:ffff:ffff:ffff:ffff,RU
@@ -25976,7 +26300,6 @@
2a00:1e20::,2a00:1e27:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a00:1e28::,2a00:1e28:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a00:1e30::,2a00:1e30:ffff:ffff:ffff:ffff:ffff:ffff,FR
-2a00:1e38::,2a00:1e38:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a00:1e40::,2a00:1e40:ffff:ffff:ffff:ffff:ffff:ffff,SK
2a00:1e48::,2a00:1e48:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a00:1e50::,2a00:1e50:ffff:ffff:ffff:ffff:ffff:ffff,FR
@@ -26031,7 +26354,13 @@
2a00:1fe8::,2a00:1fe8:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a00:1ff0::,2a00:1ff0:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a00:1ff8::,2a00:1ff8:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a00:2000::,2a00:23ff:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a00:2000::,2a00:2000:208a:ffff:ffff:ffff:ffff:ffff,GB
+2a00:2000:208b::,2a00:2000:208b:ffff:ffff:ffff:ffff:ffff,PL
+2a00:2000:208c::,2a00:2000:208c:ffff:ffff:ffff:ffff:ffff,NO
+2a00:2000:208d::,2a00:2000:5dff:ffff:ffff:ffff:ffff:ffff,GB
+2a00:2000:5e00::,2a00:2000:5eff:ffff:ffff:ffff:ffff:ffff,PL
+2a00:2000:5f00::,2a00:2000:5fff:ffff:ffff:ffff:ffff:ffff,NO
+2a00:2000:6000::,2a00:23ff:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a00:4000::,2a00:4000:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a00:4020::,2a00:4020:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a00:4040::,2a00:4040:ffff:ffff:ffff:ffff:ffff:ffff,FR
@@ -26104,7 +26433,7 @@
2a00:48a0::,2a00:48a0:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a00:48c0::,2a00:48c0:ffff:ffff:ffff:ffff:ffff:ffff,AZ
2a00:48e0::,2a00:48e0:ffff:ffff:ffff:ffff:ffff:ffff,BE
-2a00:4900::,2a00:4900:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a00:4900::,2a00:4907:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a00:4920::,2a00:4920:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a00:4940::,2a00:4940:ffff:ffff:ffff:ffff:ffff:ffff,AL
2a00:4960::,2a00:4960:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -26206,7 +26535,7 @@
2a00:5560::,2a00:5560:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a00:5580::,2a00:5587:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a00:55a0::,2a00:55a0:4:ffff:ffff:ffff:ffff:ffff,IL
-2a00:55a0:5::,2a00:55a0:5:ffff:ffff:ffff:ffff:ffff,DE
+2a00:55a0:5::,2a00:55a0:5:ffff:ffff:ffff:ffff:ffff,GB
2a00:55a0:6::,2a00:55a0:6:ffff:ffff:ffff:ffff:ffff,IL
2a00:55a0:7::,2a00:55a0:7:ffff:ffff:ffff:ffff:ffff,US
2a00:55a0:8::,2a00:55a0:e9ff:ffff:ffff:ffff:ffff:ffff,IL
@@ -26460,7 +26789,6 @@
2a00:7500::,2a00:7500:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a00:7520::,2a00:7520:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a00:7540::,2a00:7540:ffff:ffff:ffff:ffff:ffff:ffff,RU
-2a00:7560::,2a00:7560:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a00:7580::,2a00:7580:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a00:75c0::,2a00:75c0:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a00:75e0::,2a00:75e0:ffff:ffff:ffff:ffff:ffff:ffff,NO
@@ -26576,7 +26904,7 @@
2a00:7f80::,2a00:7f87:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a00:7fc0::,2a00:7fc0:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a00:7fe0::,2a00:7fe0:ffff:ffff:ffff:ffff:ffff:ffff,PL
-2a00:8000::,2a00:8000:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a00:8000::,2a00:8007:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a00:8020::,2a00:8020:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a00:8040::,2a00:8040:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a00:8080::,2a00:8080:ffff:ffff:ffff:ffff:ffff:ffff,NL
@@ -26601,7 +26929,6 @@
2a00:82e0::,2a00:82e0:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a00:8300::,2a00:8300:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a00:8320::,2a00:8320:ffff:ffff:ffff:ffff:ffff:ffff,BG
-2a00:8340::,2a00:8340:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a00:8360::,2a00:8360:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a00:8380::,2a00:8380:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a00:83a0::,2a00:83a0:ffff:ffff:ffff:ffff:ffff:ffff,IT
@@ -26702,7 +27029,7 @@
2a00:9040::,2a00:9047:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a00:9060::,2a00:9060:ffff:ffff:ffff:ffff:ffff:ffff,SK
2a00:9080::,2a00:9080:ffff:ffff:ffff:ffff:ffff:ffff,DK
-2a00:90a0::,2a00:90a0:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a00:90a0::,2a00:90a7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a00:90c0::,2a00:90c7:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a00:9100::,2a00:9100:ffff:ffff:ffff:ffff:ffff:ffff,AZ
2a00:9120::,2a00:9120:ffff:ffff:ffff:ffff:ffff:ffff,OM
@@ -27593,7 +27920,22 @@
2a01:b8::,2a01:b8:ffff:ffff:ffff:ffff:ffff:ffff,VA
2a01:c0::,2a01:c0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a01:c8::,2a01:c8:ffff:ffff:ffff:ffff:ffff:ffff,FR
-2a01:d0::,2a01:d0:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a01:d0::,2a01:d0:7f:ffff:ffff:ffff:ffff:ffff,UA
+2a01:d0:80::,2a01:d0:3fff:ffff:ffff:ffff:ffff:ffff,GI
+2a01:d0:4000::,2a01:d0:417f:ffff:ffff:ffff:ffff:ffff,UA
+2a01:d0:4180::,2a01:d0:427f:ffff:ffff:ffff:ffff:ffff,GI
+2a01:d0:4280::,2a01:d0:42ff:ffff:ffff:ffff:ffff:ffff,UA
+2a01:d0:4300::,2a01:d0:803f:ffff:ffff:ffff:ffff:ffff,GI
+2a01:d0:8040::,2a01:d0:807f:ffff:ffff:ffff:ffff:ffff,UA
+2a01:d0:8080::,2a01:d0:88ff:ffff:ffff:ffff:ffff:ffff,GI
+2a01:d0:8900::,2a01:d0:897f:ffff:ffff:ffff:ffff:ffff,UA
+2a01:d0:8980::,2a01:d0:8f7f:ffff:ffff:ffff:ffff:ffff,GI
+2a01:d0:8f80::,2a01:d0:8fff:ffff:ffff:ffff:ffff:ffff,UA
+2a01:d0:9000::,2a01:d0:deff:ffff:ffff:ffff:ffff:ffff,GI
+2a01:d0:df00::,2a01:d0:df7f:ffff:ffff:ffff:ffff:ffff,UA
+2a01:d0:df80::,2a01:d0:e47f:ffff:ffff:ffff:ffff:ffff,GI
+2a01:d0:e480::,2a01:d0:e4ff:ffff:ffff:ffff:ffff:ffff,UA
+2a01:d0:e500::,2a01:d0:ffff:ffff:ffff:ffff:ffff:ffff,GI
2a01:d8::,2a01:d8:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a01:e0::,2a01:e0:ffff:ffff:ffff:ffff:ffff:ffff,SK
2a01:e8::,2a01:e8:ffff:ffff:ffff:ffff:ffff:ffff,SE
@@ -27729,9 +28071,7 @@
2a01:111:f400:2014::,2a01:111:f400:23ff:ffff:ffff:ffff:ffff,GB
2a01:111:f400:2400::,2a01:111:f400:2413:ffff:ffff:ffff:ffff,IE
2a01:111:f400:2414::,2a01:111:f400:247f:ffff:ffff:ffff:ffff,US
-2a01:111:f400:2480::,2a01:111:f400:2490:ffff:ffff:ffff:ffff,GB
-2a01:111:f400:2491::,2a01:111:f400:2491:ffff:ffff:ffff:ffff,US
-2a01:111:f400:2492::,2a01:111:f400:2499:ffff:ffff:ffff:ffff,GB
+2a01:111:f400:2480::,2a01:111:f400:2499:ffff:ffff:ffff:ffff,GB
2a01:111:f400:249a::,2a01:111:f400:249f:ffff:ffff:ffff:ffff,IE
2a01:111:f400:24a0::,2a01:111:f400:27ff:ffff:ffff:ffff:ffff,GB
2a01:111:f400:2800::,2a01:111:f400:2c00:ffff:ffff:ffff:ffff,US
@@ -28625,7 +28965,6 @@
2a01:4620::,2a01:4620:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a01:4640::,2a01:4647:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a01:4660::,2a01:4660:ffff:ffff:ffff:ffff:ffff:ffff,PL
-2a01:4680::,2a01:4680:ffff:ffff:ffff:ffff:ffff:ffff,RS
2a01:46a0::,2a01:46a0:ffff:ffff:ffff:ffff:ffff:ffff,SA
2a01:46c0::,2a01:46c0:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a01:46e0::,2a01:46e0:ffff:ffff:ffff:ffff:ffff:ffff,GB
@@ -28633,7 +28972,6 @@
2a01:4720::,2a01:4720:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a01:4740::,2a01:4740:ffff:ffff:ffff:ffff:ffff:ffff,BG
2a01:4760::,2a01:4760:ffff:ffff:ffff:ffff:ffff:ffff,GB
-2a01:4780::,2a01:4780:ffff:ffff:ffff:ffff:ffff:ffff,AM
2a01:47a0::,2a01:47a0:ffff:ffff:ffff:ffff:ffff:ffff,GE
2a01:47c0::,2a01:47c7:ffff:ffff:ffff:ffff:ffff:ffff,HU
2a01:47e0::,2a01:47e0:ffff:ffff:ffff:ffff:ffff:ffff,UA
@@ -28659,7 +28997,8 @@
2a01:4a60::,2a01:4a60:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a01:4a80::,2a01:4a80:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a01:4aa0::,2a01:4aa0:ffff:ffff:ffff:ffff:ffff:ffff,CH
-2a01:4ac0::,2a01:4ac0:ffff:ffff:ffff:ffff:ffff:ffff,IR
+2a01:4ac0::,2a01:4ac0::ffff:ffff:ffff:ffff:ffff,TR
+2a01:4ac0:1::,2a01:4ac0:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a01:4ae0::,2a01:4ae0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a01:4b00::,2a01:4b00:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a01:4b20::,2a01:4b20:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -28687,7 +29026,6 @@
2a01:4e00::,2a01:4e00:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a01:4e20::,2a01:4e20:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a01:4e40::,2a01:4e40:ffff:ffff:ffff:ffff:ffff:ffff,RU
-2a01:4e60::,2a01:4e60:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a01:4e80::,2a01:4e80:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a01:4ea0::,2a01:4ea0:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a01:4ec0::,2a01:4ec0:ffff:ffff:ffff:ffff:ffff:ffff,IT
@@ -28811,7 +29149,7 @@
2a01:5e00::,2a01:5e00:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a01:5e20::,2a01:5e20:ffff:ffff:ffff:ffff:ffff:ffff,BG
2a01:5e40::,2a01:5e40:ffff:ffff:ffff:ffff:ffff:ffff,GB
-2a01:5e60::,2a01:5e60:ffff:ffff:ffff:ffff:ffff:ffff,AE
+2a01:5e60::,2a01:5e60:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a01:5e80::,2a01:5e80:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a01:5ea0::,2a01:5ea0:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a01:5ec0::,2a01:5ec0:7f:ffff:ffff:ffff:ffff:ffff,GB
@@ -29312,7 +29650,7 @@
2a01:9c00::,2a01:9c00:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a01:9c20::,2a01:9c20:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a01:9c60::,2a01:9c60:ffff:ffff:ffff:ffff:ffff:ffff,NO
-2a01:9c80::,2a01:9c80:ffff:ffff:ffff:ffff:ffff:ffff,GE
+2a01:9c80::,2a01:9c87:ffff:ffff:ffff:ffff:ffff:ffff,GE
2a01:9ca0::,2a01:9ca0:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a01:9cc0::,2a01:9cc0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a01:9ce0::,2a01:9ce0:ffff:ffff:ffff:ffff:ffff:ffff,SI
@@ -29372,7 +29710,7 @@
2a01:a3c0::,2a01:a3c0:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a01:a3e0::,2a01:a3e0:ffff:ffff:ffff:ffff:ffff:ffff,EE
2a01:a400::,2a01:a400:ffff:ffff:ffff:ffff:ffff:ffff,JE
-2a01:a420::,2a01:a420:ffff:ffff:ffff:ffff:ffff:ffff,CY
+2a01:a420::,2a01:a427:ffff:ffff:ffff:ffff:ffff:ffff,CY
2a01:a440::,2a01:a440:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a01:a460::,2a01:a460:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a01:a480::,2a01:a480:ffff:ffff:ffff:ffff:ffff:ffff,CH
@@ -29498,7 +29836,6 @@
2a01:b460::,2a01:b460:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a01:b480::,2a01:b480:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a01:b4a0::,2a01:b4a0:ffff:ffff:ffff:ffff:ffff:ffff,SI
-2a01:b4c0::,2a01:b4c0:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a01:b4e0::,2a01:b4e0:ffff:ffff:ffff:ffff:ffff:ffff,SA
2a01:b500::,2a01:b500:ffff:ffff:ffff:ffff:ffff:ffff,GR
2a01:b520::,2a01:b520:ffff:ffff:ffff:ffff:ffff:ffff,FR
@@ -29606,7 +29943,9 @@
2a01:c844:140a:e00:50e1:6f6d:63d4:31f,2a01:c844:140a:e00:50e1:6f6d:63d4:31f,SK
2a01:c844:140a:e00:50e1:6f6d:63d4:320,2a01:c844:147f:ffff:ffff:ffff:ffff:ffff,FR
2a01:c844:1480::,2a01:c844:14ff:ffff:ffff:ffff:ffff:ffff,SK
-2a01:c844:1500::,2a01:cb19:8742:2000:f154:67e2:3b75:f718,FR
+2a01:c844:1500::,2a01:c846:7bf:ffff:ffff:ffff:ffff:ffff,FR
+2a01:c846:7c0::,2a01:c846:7ff:ffff:ffff:ffff:ffff:ffff,SK
+2a01:c846:800::,2a01:cb19:8742:2000:f154:67e2:3b75:f718,FR
2a01:cb19:8742:2000:f154:67e2:3b75:f719,2a01:cb19:8742:2000:f154:67e2:3b75:f719,US
2a01:cb19:8742:2000:f154:67e2:3b75:f71a,2a01:dfff:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a02::,2a02::ffff:ffff:ffff:ffff:ffff:ffff,LU
@@ -29652,7 +29991,6 @@
2a02:128:9::,2a02:128:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a02:130::,2a02:130:ffff:ffff:ffff:ffff:ffff:ffff,SK
2a02:138::,2a02:138:ffff:ffff:ffff:ffff:ffff:ffff,PT
-2a02:140::,2a02:140:ffff:ffff:ffff:ffff:ffff:ffff,FI
2a02:148::,2a02:14f:ffff:ffff:ffff:ffff:ffff:ffff,IL
2a02:150::,2a02:150:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a02:158::,2a02:158:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -30007,7 +30345,6 @@
2a02:d00::,2a02:d00:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a02:d08::,2a02:d0f:ffff:ffff:ffff:ffff:ffff:ffff,BE
2a02:d10::,2a02:d17:ffff:ffff:ffff:ffff:ffff:ffff,RO
-2a02:d18::,2a02:d18:ffff:ffff:ffff:ffff:ffff:ffff,AM
2a02:d20::,2a02:d20:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a02:d28::,2a02:d28:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a02:d30::,2a02:d30:ffff:ffff:ffff:ffff:ffff:ffff,IR
@@ -30347,7 +30684,6 @@
2a02:2498:f000::,2a02:2498:f07f:ffff:ffff:ffff:ffff:ffff,NL
2a02:2498:f080::,2a02:2498:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a02:24a0::,2a02:24a0:ffff:ffff:ffff:ffff:ffff:ffff,SE
-2a02:24a8::,2a02:24a8:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a02:24b0::,2a02:24b0:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a02:24b8::,2a02:24bf:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a02:24c0::,2a02:24c0:ffff:ffff:ffff:ffff:ffff:ffff,CZ
@@ -30388,7 +30724,6 @@
2a02:2600::,2a02:2600:ffff:ffff:ffff:ffff:ffff:ffff,FI
2a02:2608::,2a02:2608:ffff:ffff:ffff:ffff:ffff:ffff,HR
2a02:2610::,2a02:2610:ffff:ffff:ffff:ffff:ffff:ffff,UA
-2a02:2618::,2a02:2618:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a02:2620::,2a02:2620:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a02:2628::,2a02:2628:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a02:2630::,2a02:2637:ffff:ffff:ffff:ffff:ffff:ffff,LT
@@ -30747,7 +31082,7 @@
2a02:5200::,2a02:5200:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a02:5220::,2a02:5220:ffff:ffff:ffff:ffff:ffff:ffff,BG
2a02:5240::,2a02:5240:ffff:ffff:ffff:ffff:ffff:ffff,IE
-2a02:5260::,2a02:5260:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a02:5260::,2a02:5267:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a02:5280::,2a02:5280:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a02:52a0::,2a02:52a0:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a02:52c0::,2a02:52c0:ffff:ffff:ffff:ffff:ffff:ffff,CZ
@@ -30815,7 +31150,7 @@
2a02:5ae0::,2a02:5ae0:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a02:5b00::,2a02:5b00:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a02:5b20::,2a02:5b20:ffff:ffff:ffff:ffff:ffff:ffff,IE
-2a02:5b40::,2a02:5b40:ffff:ffff:ffff:ffff:ffff:ffff,BE
+2a02:5b40::,2a02:5b47:ffff:ffff:ffff:ffff:ffff:ffff,BE
2a02:5b60::,2a02:5b60:ffff:ffff:ffff:ffff:ffff:ffff,JO
2a02:5b80::,2a02:5b80:ffff:ffff:ffff:ffff:ffff:ffff,SK
2a02:5ba0::,2a02:5ba0:ffff:ffff:ffff:ffff:ffff:ffff,GB
@@ -30877,7 +31212,6 @@
2a02:6300::,2a02:6300:ffff:ffff:ffff:ffff:ffff:ffff,SK
2a02:6320::,2a02:6320:ffff:ffff:ffff:ffff:ffff:ffff,HR
2a02:6340::,2a02:6340:ffff:ffff:ffff:ffff:ffff:ffff,NO
-2a02:6360::,2a02:6360:ffff:ffff:ffff:ffff:ffff:ffff,BE
2a02:6380::,2a02:6380:ffff:ffff:ffff:ffff:ffff:ffff,SK
2a02:63a0::,2a02:63a0:ffff:ffff:ffff:ffff:ffff:ffff,SK
2a02:63c0::,2a02:63c0:ffff:ffff:ffff:ffff:ffff:ffff,RU
@@ -30957,7 +31291,7 @@
2a02:6d60::,2a02:6d60:ffff:ffff:ffff:ffff:ffff:ffff,SA
2a02:6d80::,2a02:6d80:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a02:6da0::,2a02:6da0:ffff:ffff:ffff:ffff:ffff:ffff,GB
-2a02:6dc0::,2a02:6dc0:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a02:6dc0::,2a02:6dc7:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a02:6de0::,2a02:6de0:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a02:6e20::,2a02:6e20:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a02:6e40::,2a02:6e40:ffff:ffff:ffff:ffff:ffff:ffff,GB
@@ -31167,7 +31501,6 @@
2a02:af80::,2a02:af87:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a02:afc0::,2a02:afc7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a02:b000::,2a02:b1ff:ffff:ffff:ffff:ffff:ffff:ffff,IT
-2a02:c000::,2a02:c007:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a02:c040::,2a02:c047:ffff:ffff:ffff:ffff:ffff:ffff,JO
2a02:c080::,2a02:c087:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a02:c0c0::,2a02:c0c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
@@ -31691,7 +32024,6 @@
2a03:2040::,2a03:2047:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a03:2080::,2a03:2080:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a03:20a0::,2a03:20a0:ffff:ffff:ffff:ffff:ffff:ffff,GB
-2a03:20c0::,2a03:20c0:ffff:ffff:ffff:ffff:ffff:ffff,IS
2a03:20e0::,2a03:20e0:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a03:2100::,2a03:2107:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a03:2120::,2a03:2120:ffff:ffff:ffff:ffff:ffff:ffff,CH
@@ -31716,7 +32048,7 @@
2a03:23a0::,2a03:23a0:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a03:23c0::,2a03:23c0:ffff:ffff:ffff:ffff:ffff:ffff,HR
2a03:23e0::,2a03:23e0:ffff:ffff:ffff:ffff:ffff:ffff,TR
-2a03:2400::,2a03:2400:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a03:2400::,2a03:2407:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a03:2420::,2a03:2420:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a03:2440::,2a03:2440:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a03:2460::,2a03:2460:ffff:ffff:ffff:ffff:ffff:ffff,ES
@@ -32076,7 +32408,7 @@
2a03:4ec0::,2a03:4ec0:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a03:4ee0::,2a03:4ee0:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a03:4f00::,2a03:4f00:ffff:ffff:ffff:ffff:ffff:ffff,NL
-2a03:4f20::,2a03:4f20:ffff:ffff:ffff:ffff:ffff:ffff,SE
+2a03:4f20::,2a03:4f27:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a03:4f40::,2a03:4f40:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a03:4f60::,2a03:4f60:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a03:4f80::,2a03:4f80:ffff:ffff:ffff:ffff:ffff:ffff,NL
@@ -32423,7 +32755,7 @@
2a03:7c40::,2a03:7c40:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a03:7c60::,2a03:7c60:ffff:ffff:ffff:ffff:ffff:ffff,EE
2a03:7c80::,2a03:7c80:ffff:ffff:ffff:ffff:ffff:ffff,SE
-2a03:7ca0::,2a03:7ca0:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a03:7ca0::,2a03:7ca7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a03:7cc0::,2a03:7cc0:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a03:7ce0::,2a03:7ce0:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a03:7d00::,2a03:7d00:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -32431,7 +32763,7 @@
2a03:7d40::,2a03:7d40:ffff:ffff:ffff:ffff:ffff:ffff,IE
2a03:7d60::,2a03:7d60:ffff:ffff:ffff:ffff:ffff:ffff,IQ
2a03:7d80::,2a03:7d80:ffff:ffff:ffff:ffff:ffff:ffff,RU
-2a03:7da0::,2a03:7da0:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a03:7da0::,2a03:7da7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a03:7dc0::,2a03:7dc0:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a03:7de0::,2a03:7de0:ffff:ffff:ffff:ffff:ffff:ffff,BE
2a03:7e00::,2a03:7e00:ffff:ffff:ffff:ffff:ffff:ffff,GB
@@ -32445,7 +32777,7 @@
2a03:7f00::,2a03:7f00:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a03:7f20::,2a03:7f20:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a03:7f40::,2a03:7f40:ffff:ffff:ffff:ffff:ffff:ffff,BG
-2a03:7f60::,2a03:7f60:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a03:7f60::,2a03:7f67:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a03:7f80::,2a03:7f80:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a03:7fa0::,2a03:7fa0:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a03:7fc0::,2a03:7fc0:ffff:ffff:ffff:ffff:ffff:ffff,FR
@@ -32543,7 +32875,6 @@
2a03:8b40::,2a03:8b40:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a03:8b60::,2a03:8b60:ffff:ffff:ffff:ffff:ffff:ffff,SY
2a03:8b80::,2a03:8b80:ffff:ffff:ffff:ffff:ffff:ffff,NL
-2a03:8ba0::,2a03:8ba0:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a03:8bc0::,2a03:8bc0:ffff:ffff:ffff:ffff:ffff:ffff,PT
2a03:8be0::,2a03:8be0:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a03:8c00::,2a03:8c00:ffff:ffff:ffff:ffff:ffff:ffff,GB
@@ -32733,7 +33064,6 @@
2a03:a1a0::,2a03:a1a0:ffff:ffff:ffff:ffff:ffff:ffff,BE
2a03:a1c0::,2a03:a1c0:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a03:a200::,2a03:a200:ffff:ffff:ffff:ffff:ffff:ffff,SK
-2a03:a220::,2a03:a220:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a03:a240::,2a03:a240:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a03:a260::,2a03:a260:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a03:a280::,2a03:a280:ffff:ffff:ffff:ffff:ffff:ffff,IT
@@ -32910,32 +33240,8 @@
2a03:b060::,2a03:b060:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a03:b080::,2a03:b080:ffff:ffff:ffff:ffff:ffff:ffff,RS
2a03:b0a0::,2a03:b0a0:ffff:ffff:ffff:ffff:ffff:ffff,BE
-2a03:b0c0::,2a03:b0c0::107:ffff:ffff:ffff:ffff,GB
-2a03:b0c0:0:108::,2a03:b0c0::108:ffff:ffff:ffff:ffff,NL
-2a03:b0c0:0:109::,2a03:b0c0::125:ffff:ffff:ffff:ffff,GB
-2a03:b0c0:0:126::,2a03:b0c0::129:ffff:ffff:ffff:ffff,NL
-2a03:b0c0:0:12a::,2a03:b0c0::12f:ffff:ffff:ffff:ffff,GB
-2a03:b0c0:0:130::,2a03:b0c0::139:ffff:ffff:ffff:ffff,NL
-2a03:b0c0:0:13a::,2a03:b0c0::13f:ffff:ffff:ffff:ffff,GB
-2a03:b0c0:0:140::,2a03:b0c0::149:ffff:ffff:ffff:ffff,NL
-2a03:b0c0:0:14a::,2a03:b0c0::14f:ffff:ffff:ffff:ffff,GB
-2a03:b0c0:0:150::,2a03:b0c0::155:ffff:ffff:ffff:ffff,NL
-2a03:b0c0:0:156::,2a03:b0c0::100f:ffff:ffff:ffff:ffff,GB
-2a03:b0c0:0:1010::,2a03:b0c0::1019:ffff:ffff:ffff:ffff,NL
-2a03:b0c0:0:101a::,2a03:b0c0::101f:ffff:ffff:ffff:ffff,GB
-2a03:b0c0:0:1020::,2a03:b0c0::1029:ffff:ffff:ffff:ffff,NL
-2a03:b0c0:0:102a::,2a03:b0c0::102f:ffff:ffff:ffff:ffff,GB
-2a03:b0c0:0:1030::,2a03:b0c0::1039:ffff:ffff:ffff:ffff,NL
-2a03:b0c0:0:103a::,2a03:b0c0::103f:ffff:ffff:ffff:ffff,GB
-2a03:b0c0:0:1040::,2a03:b0c0::1049:ffff:ffff:ffff:ffff,NL
-2a03:b0c0:0:104a::,2a03:b0c0::104f:ffff:ffff:ffff:ffff,GB
-2a03:b0c0:0:1050::,2a03:b0c0::1050:ffff:ffff:ffff:ffff,NL
-2a03:b0c0:0:1051::,2a03:b0c0:1:ffff:ffff:ffff:ffff:ffff,GB
-2a03:b0c0:2::,2a03:b0c0:2:cf:ffff:ffff:ffff:ffff,DE
-2a03:b0c0:2:d0::,2a03:b0c0:2:d0:ffff:ffff:ffff:ffff,NL
-2a03:b0c0:2:d1::,2a03:b0c0:2:ef:ffff:ffff:ffff:ffff,DE
-2a03:b0c0:2:f0::,2a03:b0c0:2:f0:ffff:ffff:ffff:ffff,NL
-2a03:b0c0:2:f1::,2a03:b0c0:3:ffff:ffff:ffff:ffff:ffff,DE
+2a03:b0c0::,2a03:b0c0:1:ffff:ffff:ffff:ffff:ffff,GB
+2a03:b0c0:2::,2a03:b0c0:3:ffff:ffff:ffff:ffff:ffff,DE
2a03:b0c0:4::,2a03:b0c0:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a03:b0e0::,2a03:b0e0:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a03:b100::,2a03:b100:ffff:ffff:ffff:ffff:ffff:ffff,SE
@@ -34048,6 +34354,7 @@
2a03:cd40::,2a03:cd40:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a03:cd80::,2a03:cd80:ffff:ffff:ffff:ffff:ffff:ffff,SK
2a03:cdc0::,2a03:cdc0:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a03:ce00::,2a03:ce07:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a03:ce40::,2a03:ce47:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a03:ce80::,2a03:ce80:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a03:cec0::,2a03:cec0:ffff:ffff:ffff:ffff:ffff:ffff,IT
@@ -34137,7 +34444,6 @@
2a03:e400::,2a03:e401:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a03:e440::,2a03:e440:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a03:e480::,2a03:e480:ffff:ffff:ffff:ffff:ffff:ffff,RU
-2a03:e4c0::,2a03:e4c0:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a03:e500::,2a03:e500:ffff:ffff:ffff:ffff:ffff:ffff,GR
2a03:e540::,2a03:e540:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a03:e580::,2a03:e587:ffff:ffff:ffff:ffff:ffff:ffff,FI
@@ -34207,7 +34513,7 @@
2a03:f400::,2a03:f400:ffff:ffff:ffff:ffff:ffff:ffff,IE
2a03:f440::,2a03:f440:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a03:f480::,2a03:f480:ffff:ffff:ffff:ffff:ffff:ffff,EE
-2a03:f4c0::,2a03:f4c0:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a03:f4c0::,2a03:f4c7:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a03:f500::,2a03:f500:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a03:f540::,2a03:f540:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a03:f580::,2a03:f580:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -34511,7 +34817,6 @@
2a04:3dc0::,2a04:3dc7:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a04:3e00::,2a04:3e07:ffff:ffff:ffff:ffff:ffff:ffff,GR
2a04:3e40::,2a04:3e47:ffff:ffff:ffff:ffff:ffff:ffff,AT
-2a04:3e80::,2a04:3e87:ffff:ffff:ffff:ffff:ffff:ffff,BA
2a04:3ec0::,2a04:3ec7:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a04:3f00::,2a04:3f07:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a04:3f40::,2a04:3f47:ffff:ffff:ffff:ffff:ffff:ffff,IT
@@ -34708,7 +35013,6 @@
2a04:6e80:2::,2a04:6e80:2:ffff:ffff:ffff:ffff:ffff,GB
2a04:6e80:3::,2a04:6e87:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a04:6ec0::,2a04:6ec7:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a04:6f00::,2a04:6f07:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a04:6f40::,2a04:6f47:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a04:6f80::,2a04:6f83:ffff:ffff:ffff:ffff:ffff:ffff,QA
2a04:6fa0::,2a04:6fa1:ffff:ffff:ffff:ffff:ffff:ffff,NL
@@ -34817,7 +35121,11 @@
2a04:8740::,2a04:8747:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a04:8780::,2a04:8787:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a04:87c0::,2a04:87c7:ffff:ffff:ffff:ffff:ffff:ffff,IR
-2a04:8800::,2a04:8807:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a04:8800::,2a04:8801:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a04:8802::,2a04:8802:ffff:ffff:ffff:ffff:ffff:ffff,US
+2a04:8803::,2a04:8803:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a04:8804::,2a04:8804:ffff:ffff:ffff:ffff:ffff:ffff,US
+2a04:8805::,2a04:8807:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a04:8840::,2a04:8847:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a04:8880::,2a04:8887:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a04:88c0::,2a04:88c7:ffff:ffff:ffff:ffff:ffff:ffff,SC
@@ -34834,7 +35142,6 @@
2a04:8b80::,2a04:8b87:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a04:8bc0::,2a04:8bc7:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a04:8c00::,2a04:8c07:ffff:ffff:ffff:ffff:ffff:ffff,RU
-2a04:8c40::,2a04:8c47:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a04:8c80::,2a04:8c87:ffff:ffff:ffff:ffff:ffff:ffff,CY
2a04:8cc0::,2a04:8cc7:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a04:8d00::,2a04:8d07:ffff:ffff:ffff:ffff:ffff:ffff,MK
@@ -34959,7 +35266,6 @@
2a04:a9c0::,2a04:a9c7:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a04:aa00::,2a04:aa07:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a04:aa40::,2a04:aa47:ffff:ffff:ffff:ffff:ffff:ffff,CH
-2a04:aa80::,2a04:aa87:ffff:ffff:ffff:ffff:ffff:ffff,SA
2a04:aac0::,2a04:aac7:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a04:ab00::,2a04:ab07:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a04:ab40::,2a04:ab47:ffff:ffff:ffff:ffff:ffff:ffff,IR
@@ -35064,7 +35370,6 @@
2a04:c2c0::,2a04:c2c7:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a04:c300::,2a04:c307:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a04:c340::,2a04:c347:ffff:ffff:ffff:ffff:ffff:ffff,RU
-2a04:c380::,2a04:c387:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a04:c3c0::,2a04:c3c7:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a04:c400::,2a04:c407:ffff:ffff:ffff:ffff:ffff:ffff,OM
2a04:c440::,2a04:c447:ffff:ffff:ffff:ffff:ffff:ffff,CH
@@ -35169,7 +35474,12 @@
2a04:dcc0::,2a04:dcc7:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a04:dd00::,2a04:dd07:ffff:ffff:ffff:ffff:ffff:ffff,AE
2a04:dd40::,2a04:dd47:ffff:ffff:ffff:ffff:ffff:ffff,SI
-2a04:dd80::,2a04:dd87:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a04:dd80::,2a04:dd81:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a04:dd82::,2a04:dd82:ffff:ffff:ffff:ffff:ffff:ffff,US
+2a04:dd83::,2a04:dd84:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a04:dd85::,2a04:dd85:ffff:ffff:ffff:ffff:ffff:ffff,US
+2a04:dd86::,2a04:dd86:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a04:dd87::,2a04:dd87:ffff:ffff:ffff:ffff:ffff:ffff,US
2a04:ddc0::,2a04:ddc7:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a04:de00::,2a04:de07:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a04:de40::,2a04:de47:ffff:ffff:ffff:ffff:ffff:ffff,GB
@@ -35191,7 +35501,6 @@
2a04:e280::,2a04:e287:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a04:e2c0::,2a04:e2c7:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a04:e300::,2a04:e307:ffff:ffff:ffff:ffff:ffff:ffff,CH
-2a04:e340::,2a04:e347:ffff:ffff:ffff:ffff:ffff:ffff,AE
2a04:e380::,2a04:e387:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a04:e3c0::,2a04:e3c7:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a04:e400::,2a04:e407:ffff:ffff:ffff:ffff:ffff:ffff,NL
@@ -35281,7 +35590,6 @@
2a04:f500::,2a04:f507:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a04:f540::,2a04:f547:ffff:ffff:ffff:ffff:ffff:ffff,US
2a04:f580::,2a04:f587:ffff:ffff:ffff:ffff:ffff:ffff,GB
-2a04:f5c0::,2a04:f5c7:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a04:f600::,2a04:f607:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a04:f680::,2a04:f687:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a04:f6c0::,2a04:f6c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -35379,7 +35687,6 @@
2a05:d40::,2a05:d47:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a05:d80::,2a05:d87:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a05:dc0::,2a05:dc7:ffff:ffff:ffff:ffff:ffff:ffff,ES
-2a05:e00::,2a05:e07:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a05:e40::,2a05:e47:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a05:e80::,2a05:e87:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a05:ec0::,2a05:ec7:ffff:ffff:ffff:ffff:ffff:ffff,NO
@@ -35403,7 +35710,6 @@
2a05:1300::,2a05:1307:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a05:1340::,2a05:1347:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a05:1380::,2a05:1387:ffff:ffff:ffff:ffff:ffff:ffff,RU
-2a05:13c0::,2a05:13c7:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a05:1400::,2a05:1407:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a05:1440::,2a05:1447:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a05:1480::,2a05:1487:ffff:ffff:ffff:ffff:ffff:ffff,PL
@@ -35530,7 +35836,6 @@
2a05:33c0::,2a05:33c7:ffff:ffff:ffff:ffff:ffff:ffff,SI
2a05:3400::,2a05:3407:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a05:3440::,2a05:3447:ffff:ffff:ffff:ffff:ffff:ffff,IT
-2a05:3480::,2a05:3487:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a05:34c0::,2a05:34c7:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a05:3500::,2a05:3507:ffff:ffff:ffff:ffff:ffff:ffff,IE
2a05:3540::,2a05:3547:ffff:ffff:ffff:ffff:ffff:ffff,GB
@@ -35605,7 +35910,9 @@
2a05:4680::,2a05:4687:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a05:46c0::,2a05:46c7:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a05:4700::,2a05:4707:ffff:ffff:ffff:ffff:ffff:ffff,ES
-2a05:4740::,2a05:4747:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a05:4740::,2a05:4741:5:ffff:ffff:ffff:ffff:ffff,CH
+2a05:4741:6::,2a05:4741:6:ffff:ffff:ffff:ffff:ffff,DE
+2a05:4741:7::,2a05:4747:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a05:4780::,2a05:4787:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a05:47c0::,2a05:47c7:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a05:4800::,2a05:4807:ffff:ffff:ffff:ffff:ffff:ffff,RU
@@ -35874,6 +36181,7 @@
2a05:8980::,2a05:8987:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a05:89c0::,2a05:89c7:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a05:8a00::,2a05:8a07:ffff:ffff:ffff:ffff:ffff:ffff,TR
+2a05:8a40::,2a05:8a47:ffff:ffff:ffff:ffff:ffff:ffff,BE
2a05:8a80::,2a05:8a87:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a05:8ac0::,2a05:8ac7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a05:8b00::,2a05:8b07:ffff:ffff:ffff:ffff:ffff:ffff,LB
@@ -35970,7 +36278,6 @@
2a05:a240::,2a05:a247:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a05:a280::,2a05:a287:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a05:a2c0::,2a05:a2c7:ffff:ffff:ffff:ffff:ffff:ffff,SA
-2a05:a300::,2a05:a307:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a05:a340::,2a05:a347:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a05:a380::,2a05:a387:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a05:a3c0::,2a05:a3c7:ffff:ffff:ffff:ffff:ffff:ffff,IT
@@ -35988,7 +36295,6 @@
2a05:a6c0::,2a05:a6c7:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a05:a700::,2a05:a707:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a05:a740::,2a05:a747:ffff:ffff:ffff:ffff:ffff:ffff,TR
-2a05:a780::,2a05:a787:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a05:a7c0::,2a05:a7c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a05:a800::,2a05:a807:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a05:a840::,2a05:a847:ffff:ffff:ffff:ffff:ffff:ffff,CH
@@ -36041,14 +36347,12 @@
2a05:b200::,2a05:b207:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a05:b240::,2a05:b247:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a05:b280::,2a05:b287:ffff:ffff:ffff:ffff:ffff:ffff,GB
-2a05:b2c0::,2a05:b2c7:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a05:b300::,2a05:b307:ffff:ffff:ffff:ffff:ffff:ffff,SC
2a05:b340::,2a05:b347:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a05:b380::,2a05:b387:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a05:b3c0::,2a05:b3c7:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a05:b400::,2a05:b400:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a05:b440::,2a05:b447:ffff:ffff:ffff:ffff:ffff:ffff,TR
-2a05:b480::,2a05:b487:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a05:b4c0::,2a05:b4c7:ffff:ffff:ffff:ffff:ffff:ffff,IL
2a05:b500::,2a05:b507:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a05:b540::,2a05:b547:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -36066,7 +36370,6 @@
2a05:b840::,2a05:b847:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a05:b880::,2a05:b887:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a05:b8c0::,2a05:b8c7:ffff:ffff:ffff:ffff:ffff:ffff,NL
-2a05:b900::,2a05:b907:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a05:b940::,2a05:b947:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a05:b980::,2a05:b987:ffff:ffff:ffff:ffff:ffff:ffff,LB
2a05:b9c0::,2a05:b9c7:ffff:ffff:ffff:ffff:ffff:ffff,FI
@@ -36164,7 +36467,9 @@
2a05:d000:6000::,2a05:d000:60ff:ffff:ffff:ffff:ffff:ffff,SE
2a05:d000:6100::,2a05:d000:bfff:ffff:ffff:ffff:ffff:ffff,IE
2a05:d000:c000::,2a05:d000:c0ff:ffff:ffff:ffff:ffff:ffff,GB
-2a05:d000:c100::,2a05:d011:ffff:ffff:ffff:ffff:ffff:ffff,IE
+2a05:d000:c100::,2a05:d000:dfff:ffff:ffff:ffff:ffff:ffff,IE
+2a05:d000:e000::,2a05:d000:e0ff:ffff:ffff:ffff:ffff:ffff,BH
+2a05:d000:e100::,2a05:d011:ffff:ffff:ffff:ffff:ffff:ffff,IE
2a05:d012::,2a05:d012:fff:ffff:ffff:ffff:ffff:ffff,FR
2a05:d012:1000::,2a05:d013:ffff:ffff:ffff:ffff:ffff:ffff,IE
2a05:d014::,2a05:d014:fff:ffff:ffff:ffff:ffff:ffff,DE
@@ -36172,7 +36477,9 @@
2a05:d016::,2a05:d016:fff:ffff:ffff:ffff:ffff:ffff,SE
2a05:d016:1000::,2a05:d01b:ffff:ffff:ffff:ffff:ffff:ffff,IE
2a05:d01c::,2a05:d01c:fff:ffff:ffff:ffff:ffff:ffff,GB
-2a05:d01c:1000::,2a05:d050:1fff:ffff:ffff:ffff:ffff:ffff,IE
+2a05:d01c:1000::,2a05:d01d:ffff:ffff:ffff:ffff:ffff:ffff,IE
+2a05:d01e::,2a05:d01e:fff:ffff:ffff:ffff:ffff:ffff,BH
+2a05:d01e:1000::,2a05:d050:1fff:ffff:ffff:ffff:ffff:ffff,IE
2a05:d050:2000::,2a05:d050:20ff:ffff:ffff:ffff:ffff:ffff,FR
2a05:d050:2100::,2a05:d050:3fff:ffff:ffff:ffff:ffff:ffff,IE
2a05:d050:4000::,2a05:d050:40ff:ffff:ffff:ffff:ffff:ffff,DE
@@ -36180,7 +36487,9 @@
2a05:d050:6000::,2a05:d050:60ff:ffff:ffff:ffff:ffff:ffff,SE
2a05:d050:6100::,2a05:d050:bfff:ffff:ffff:ffff:ffff:ffff,IE
2a05:d050:c000::,2a05:d050:c0ff:ffff:ffff:ffff:ffff:ffff,GB
-2a05:d050:c100::,2a05:d078:1fff:ffff:ffff:ffff:ffff:ffff,IE
+2a05:d050:c100::,2a05:d050:dfff:ffff:ffff:ffff:ffff:ffff,IE
+2a05:d050:e000::,2a05:d050:e0ff:ffff:ffff:ffff:ffff:ffff,BH
+2a05:d050:e100::,2a05:d078:1fff:ffff:ffff:ffff:ffff:ffff,IE
2a05:d078:2000::,2a05:d078:20ff:ffff:ffff:ffff:ffff:ffff,FR
2a05:d078:2100::,2a05:d078:3fff:ffff:ffff:ffff:ffff:ffff,IE
2a05:d078:4000::,2a05:d078:40ff:ffff:ffff:ffff:ffff:ffff,DE
@@ -36188,7 +36497,9 @@
2a05:d078:6000::,2a05:d078:60ff:ffff:ffff:ffff:ffff:ffff,SE
2a05:d078:6100::,2a05:d078:bfff:ffff:ffff:ffff:ffff:ffff,IE
2a05:d078:c000::,2a05:d078:c0ff:ffff:ffff:ffff:ffff:ffff,GB
-2a05:d078:c100::,2a05:d079:1fff:ffff:ffff:ffff:ffff:ffff,IE
+2a05:d078:c100::,2a05:d078:dfff:ffff:ffff:ffff:ffff:ffff,IE
+2a05:d078:e000::,2a05:d078:e0ff:ffff:ffff:ffff:ffff:ffff,BH
+2a05:d078:e100::,2a05:d079:1fff:ffff:ffff:ffff:ffff:ffff,IE
2a05:d079:2000::,2a05:d079:20ff:ffff:ffff:ffff:ffff:ffff,FR
2a05:d079:2100::,2a05:d079:3fff:ffff:ffff:ffff:ffff:ffff,IE
2a05:d079:4000::,2a05:d079:40ff:ffff:ffff:ffff:ffff:ffff,DE
@@ -36196,7 +36507,9 @@
2a05:d079:6000::,2a05:d079:60ff:ffff:ffff:ffff:ffff:ffff,SE
2a05:d079:6100::,2a05:d079:bfff:ffff:ffff:ffff:ffff:ffff,IE
2a05:d079:c000::,2a05:d079:c0ff:ffff:ffff:ffff:ffff:ffff,GB
-2a05:d079:c100::,2a05:d07a:1fff:ffff:ffff:ffff:ffff:ffff,IE
+2a05:d079:c100::,2a05:d079:dfff:ffff:ffff:ffff:ffff:ffff,IE
+2a05:d079:e000::,2a05:d079:e0ff:ffff:ffff:ffff:ffff:ffff,BH
+2a05:d079:e100::,2a05:d07a:1fff:ffff:ffff:ffff:ffff:ffff,IE
2a05:d07a:2000::,2a05:d07a:20ff:ffff:ffff:ffff:ffff:ffff,FR
2a05:d07a:2100::,2a05:d07a:3fff:ffff:ffff:ffff:ffff:ffff,IE
2a05:d07a:4000::,2a05:d07a:40ff:ffff:ffff:ffff:ffff:ffff,DE
@@ -36204,7 +36517,9 @@
2a05:d07a:6000::,2a05:d07a:60ff:ffff:ffff:ffff:ffff:ffff,SE
2a05:d07a:6100::,2a05:d07a:bfff:ffff:ffff:ffff:ffff:ffff,IE
2a05:d07a:c000::,2a05:d07a:c0ff:ffff:ffff:ffff:ffff:ffff,GB
-2a05:d07a:c100::,2a05:d07c:1fff:ffff:ffff:ffff:ffff:ffff,IE
+2a05:d07a:c100::,2a05:d07a:dfff:ffff:ffff:ffff:ffff:ffff,IE
+2a05:d07a:e000::,2a05:d07a:e0ff:ffff:ffff:ffff:ffff:ffff,BH
+2a05:d07a:e100::,2a05:d07c:1fff:ffff:ffff:ffff:ffff:ffff,IE
2a05:d07c:2000::,2a05:d07c:20ff:ffff:ffff:ffff:ffff:ffff,FR
2a05:d07c:2100::,2a05:d07c:3fff:ffff:ffff:ffff:ffff:ffff,IE
2a05:d07c:4000::,2a05:d07c:40ff:ffff:ffff:ffff:ffff:ffff,DE
@@ -36212,7 +36527,9 @@
2a05:d07c:6000::,2a05:d07c:60ff:ffff:ffff:ffff:ffff:ffff,SE
2a05:d07c:6100::,2a05:d07c:bfff:ffff:ffff:ffff:ffff:ffff,IE
2a05:d07c:c000::,2a05:d07c:c0ff:ffff:ffff:ffff:ffff:ffff,GB
-2a05:d07c:c100::,2a05:d07e:1fff:ffff:ffff:ffff:ffff:ffff,IE
+2a05:d07c:c100::,2a05:d07c:dfff:ffff:ffff:ffff:ffff:ffff,IE
+2a05:d07c:e000::,2a05:d07c:e0ff:ffff:ffff:ffff:ffff:ffff,BH
+2a05:d07c:e100::,2a05:d07e:1fff:ffff:ffff:ffff:ffff:ffff,IE
2a05:d07e:2000::,2a05:d07e:20ff:ffff:ffff:ffff:ffff:ffff,FR
2a05:d07e:2100::,2a05:d07e:3fff:ffff:ffff:ffff:ffff:ffff,IE
2a05:d07e:4000::,2a05:d07e:40ff:ffff:ffff:ffff:ffff:ffff,DE
@@ -36220,7 +36537,9 @@
2a05:d07e:6000::,2a05:d07e:60ff:ffff:ffff:ffff:ffff:ffff,SE
2a05:d07e:6100::,2a05:d07e:bfff:ffff:ffff:ffff:ffff:ffff,IE
2a05:d07e:c000::,2a05:d07e:c0ff:ffff:ffff:ffff:ffff:ffff,GB
-2a05:d07e:c100::,2a05:d07f:1fff:ffff:ffff:ffff:ffff:ffff,IE
+2a05:d07e:c100::,2a05:d07e:dfff:ffff:ffff:ffff:ffff:ffff,IE
+2a05:d07e:e000::,2a05:d07e:e0ff:ffff:ffff:ffff:ffff:ffff,BH
+2a05:d07e:e100::,2a05:d07f:1fff:ffff:ffff:ffff:ffff:ffff,IE
2a05:d07f:2000::,2a05:d07f:20ff:ffff:ffff:ffff:ffff:ffff,FR
2a05:d07f:2100::,2a05:d07f:3fff:ffff:ffff:ffff:ffff:ffff,IE
2a05:d07f:4000::,2a05:d07f:40ff:ffff:ffff:ffff:ffff:ffff,DE
@@ -36228,7 +36547,9 @@
2a05:d07f:6000::,2a05:d07f:60ff:ffff:ffff:ffff:ffff:ffff,SE
2a05:d07f:6100::,2a05:d07f:bfff:ffff:ffff:ffff:ffff:ffff,IE
2a05:d07f:c000::,2a05:d07f:c0ff:ffff:ffff:ffff:ffff:ffff,GB
-2a05:d07f:c100::,2a05:d07f:ffff:ffff:ffff:ffff:ffff:ffff,IE
+2a05:d07f:c100::,2a05:d07f:dfff:ffff:ffff:ffff:ffff:ffff,IE
+2a05:d07f:e000::,2a05:d07f:e0ff:ffff:ffff:ffff:ffff:ffff,BH
+2a05:d07f:e100::,2a05:d07f:ffff:ffff:ffff:ffff:ffff:ffff,IE
2a05:d400::,2a05:d407:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a05:d440::,2a05:d447:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a05:d480::,2a05:d487:ffff:ffff:ffff:ffff:ffff:ffff,NL
@@ -36415,7 +36736,6 @@
2a05:fb00::,2a05:fb07:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a05:fb40::,2a05:fb47:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a05:fb80::,2a05:fb87:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a05:fbc0::,2a05:fbc3:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a05:fbe0::,2a05:fbe3:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a05:fc00::,2a05:fc07:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a05:fc40::,2a05:fc47:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -36473,7 +36793,6 @@
2a06:9c0::,2a06:9c7:ffff:ffff:ffff:ffff:ffff:ffff,GR
2a06:a00::,2a06:a07:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a06:a40::,2a06:a47:ffff:ffff:ffff:ffff:ffff:ffff,NL
-2a06:a80::,2a06:a87:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a06:ac0::,2a06:ac7:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a06:b00::,2a06:b07:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a06:b40::,2a06:b47:ffff:ffff:ffff:ffff:ffff:ffff,GB
@@ -36502,7 +36821,6 @@
2a06:1140::,2a06:1147:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a06:1180::,2a06:1187:ffff:ffff:ffff:ffff:ffff:ffff,CY
2a06:11c0::,2a06:11c0:f:ffff:ffff:ffff:ffff:ffff,GB
-2a06:11c0:10::,2a06:11c7:ffff:ffff:ffff:ffff:ffff:ffff,RO
2a06:1200::,2a06:1207:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a06:1240::,2a06:1247:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a06:1280::,2a06:1280:ffff:ffff:ffff:ffff:ffff:ffff,NZ
@@ -36512,7 +36830,6 @@
2a06:12c0::,2a06:12c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a06:1300::,2a06:1307:ffff:ffff:ffff:ffff:ffff:ffff,NC
2a06:1340::,2a06:1347:ffff:ffff:ffff:ffff:ffff:ffff,PL
-2a06:1380::,2a06:1387:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a06:13c0::,2a06:13c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a06:1400::,2a06:1407:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a06:1440::,2a06:1447:ffff:ffff:ffff:ffff:ffff:ffff,ES
@@ -36520,7 +36837,6 @@
2a06:14c0::,2a06:14c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a06:1500::,2a06:1507:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a06:1540::,2a06:1547:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a06:1580::,2a06:1587:ffff:ffff:ffff:ffff:ffff:ffff,GE
2a06:15c0::,2a06:15c7:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a06:1600::,2a06:1607:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a06:1640::,2a06:1647:ffff:ffff:ffff:ffff:ffff:ffff,IR
@@ -36556,7 +36872,6 @@
2a06:1dc0::,2a06:1dc7:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a06:1e00::,2a06:1e07:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a06:1e40::,2a06:1e47:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a06:1e80::,2a06:1e87:ffff:ffff:ffff:ffff:ffff:ffff,BE
2a06:1ec0::,2a06:1ec7:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a06:1f00::,2a06:1f07:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a06:1f40::,2a06:1f47:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -36573,7 +36888,6 @@
2a06:2200::,2a06:2207:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a06:2240::,2a06:2247:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a06:2280::,2a06:2287:ffff:ffff:ffff:ffff:ffff:ffff,UA
-2a06:22c0::,2a06:22c7:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a06:2300::,2a06:2307:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a06:2340::,2a06:2347:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a06:2380::,2a06:2387:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -36676,7 +36990,6 @@
2a06:3a40::,2a06:3a47:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a06:3a80::,2a06:3a87:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a06:3ac0::,2a06:3ac7:ffff:ffff:ffff:ffff:ffff:ffff,GR
-2a06:3b00::,2a06:3b07:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a06:3b40::,2a06:3b47:ffff:ffff:ffff:ffff:ffff:ffff,BE
2a06:3b80::,2a06:3b87:ffff:ffff:ffff:ffff:ffff:ffff,IL
2a06:3bc0::,2a06:3bc7:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -36741,7 +37054,6 @@
2a06:48c0::,2a06:48c7:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a06:4900::,2a06:4907:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a06:4940::,2a06:4947:ffff:ffff:ffff:ffff:ffff:ffff,LU
-2a06:4980::,2a06:4987:ffff:ffff:ffff:ffff:ffff:ffff,LV
2a06:49c0::,2a06:49c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a06:4a00::,2a06:4a07:ffff:ffff:ffff:ffff:ffff:ffff,PT
2a06:4a40::,2a06:4a47:ffff:ffff:ffff:ffff:ffff:ffff,RO
@@ -36803,7 +37115,7 @@
2a06:5740::,2a06:5747:ffff:ffff:ffff:ffff:ffff:ffff,GE
2a06:5780::,2a06:5787:ffff:ffff:ffff:ffff:ffff:ffff,RO
2a06:57c0::,2a06:57c7:ffff:ffff:ffff:ffff:ffff:ffff,GB
-2a06:5800::,2a06:5807:ffff:ffff:ffff:ffff:ffff:ffff,RO
+2a06:5800::,2a06:5807:ffff:ffff:ffff:ffff:ffff:ffff,IN
2a06:5840::,2a06:5847:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a06:5880::,2a06:5887:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a06:58c0::,2a06:58c7:ffff:ffff:ffff:ffff:ffff:ffff,ES
@@ -36845,7 +37157,6 @@
2a06:61c0::,2a06:61c7:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a06:6200::,2a06:6207:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a06:6240::,2a06:6247:ffff:ffff:ffff:ffff:ffff:ffff,CZ
-2a06:6280::,2a06:6287:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a06:62c0::,2a06:62c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a06:6300::,2a06:6307:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a06:6340::,2a06:6347:ffff:ffff:ffff:ffff:ffff:ffff,CH
@@ -36989,12 +37300,13 @@
2a06:8187:fe14::,2a06:8187:fe14:ffff:ffff:ffff:ffff:ffff,CH
2a06:8187:fe15::,2a06:8187:fe16:ffff:ffff:ffff:ffff:ffff,GB
2a06:8187:fe17::,2a06:8187:fe17:ffff:ffff:ffff:ffff:ffff,CA
-2a06:8187:fe18::,2a06:8187:fe24:ffff:ffff:ffff:ffff:ffff,GB
+2a06:8187:fe18::,2a06:8187:fe22:ffff:ffff:ffff:ffff:ffff,GB
+2a06:8187:fe23::,2a06:8187:fe23:ffff:ffff:ffff:ffff:ffff,DE
+2a06:8187:fe24::,2a06:8187:fe24:ffff:ffff:ffff:ffff:ffff,GB
2a06:8187:fe25::,2a06:8187:fe25:ffff:ffff:ffff:ffff:ffff,HR
2a06:8187:fe26::,2a06:8187:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a06:81c0::,2a06:81c7:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a06:8200::,2a06:8207:ffff:ffff:ffff:ffff:ffff:ffff,IR
-2a06:8240::,2a06:8247:ffff:ffff:ffff:ffff:ffff:ffff,MY
2a06:8280::,2a06:8280:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a06:8281::,2a06:8281:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a06:8282::,2a06:8287:ffff:ffff:ffff:ffff:ffff:ffff,CH
@@ -37027,7 +37339,6 @@
2a06:8900::,2a06:8907:ffff:ffff:ffff:ffff:ffff:ffff,KZ
2a06:8940::,2a06:8947:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a06:8980::,2a06:8987:ffff:ffff:ffff:ffff:ffff:ffff,GB
-2a06:89c0::,2a06:89c7:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a06:8a00::,2a06:8a07:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a06:8a40::,2a06:8a47:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a06:8a80::,2a06:8a87:ffff:ffff:ffff:ffff:ffff:ffff,FI
@@ -37158,7 +37469,6 @@
2a06:a800::,2a06:a807:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a06:a840::,2a06:a847:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a06:a880::,2a06:a887:ffff:ffff:ffff:ffff:ffff:ffff,RO
-2a06:a8c0::,2a06:a8c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a06:a900::,2a06:a907:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a06:a940::,2a06:a947:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a06:a9c0::,2a06:a9c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
@@ -37228,13 +37538,13 @@
2a06:b940::,2a06:b947:ffff:ffff:ffff:ffff:ffff:ffff,LB
2a06:b980::,2a06:b987:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a06:b9c0::,2a06:b9c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a06:ba00::,2a06:ba07:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a06:ba40::,2a06:ba47:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a06:ba80::,2a06:ba87:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a06:bac0::,2a06:bac7:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a06:bb00::,2a06:bb07:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a06:bb40::,2a06:bb47:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a06:bb80::,2a06:bb87:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a06:bbc0::,2a06:bbc7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a06:bc00::,2a06:bc07:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a06:bc40::,2a06:bc47:ffff:ffff:ffff:ffff:ffff:ffff,US
2a06:bc80::,2a06:bc87:ffff:ffff:ffff:ffff:ffff:ffff,GB
@@ -37324,7 +37634,7 @@
2a06:d180::,2a06:d187:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a06:d1c0::,2a06:d1c7:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a06:d200::,2a06:d207:ffff:ffff:ffff:ffff:ffff:ffff,IR
-2a06:d240::,2a06:d247:ffff:ffff:ffff:ffff:ffff:ffff,RO
+2a06:d240::,2a06:d247:ffff:ffff:ffff:ffff:ffff:ffff,IN
2a06:d280::,2a06:d287:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a06:d2c0::,2a06:d2c7:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a06:d300::,2a06:d307:ffff:ffff:ffff:ffff:ffff:ffff,SY
@@ -37349,7 +37659,6 @@
2a06:d740::,2a06:d747:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a06:d780::,2a06:d787:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a06:d7c0::,2a06:d7c7:ffff:ffff:ffff:ffff:ffff:ffff,IQ
-2a06:d840::,2a06:d847:ffff:ffff:ffff:ffff:ffff:ffff,IQ
2a06:d880::,2a06:d887:ffff:ffff:ffff:ffff:ffff:ffff,FI
2a06:d8c0::,2a06:d8c7:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a06:d900::,2a06:d907:ffff:ffff:ffff:ffff:ffff:ffff,RU
@@ -37378,7 +37687,7 @@
2a06:dec0::,2a06:dec7:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a06:df00::,2a06:df07:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a06:df40::,2a06:df47:ffff:ffff:ffff:ffff:ffff:ffff,TR
-2a06:df80::,2a06:df87:ffff:ffff:ffff:ffff:ffff:ffff,RO
+2a06:df80::,2a06:df87:ffff:ffff:ffff:ffff:ffff:ffff,IN
2a06:dfc0::,2a06:dfc7:ffff:ffff:ffff:ffff:ffff:ffff,US
2a06:e000::,2a06:e007:ffff:ffff:ffff:ffff:ffff:ffff,RO
2a06:e040::,2a06:e047:ffff:ffff:ffff:ffff:ffff:ffff,FR
@@ -37398,7 +37707,7 @@
2a06:e3c0::,2a06:e3c7:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a06:e400::,2a06:e407:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a06:e440::,2a06:e447:ffff:ffff:ffff:ffff:ffff:ffff,KW
-2a06:e480::,2a06:e487:ffff:ffff:ffff:ffff:ffff:ffff,US
+2a06:e480::,2a06:e487:ffff:ffff:ffff:ffff:ffff:ffff,IN
2a06:e4c0::,2a06:e4c7:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a06:e500::,2a06:e507:ffff:ffff:ffff:ffff:ffff:ffff,SK
2a06:e540::,2a06:e547:ffff:ffff:ffff:ffff:ffff:ffff,ES
@@ -37437,7 +37746,6 @@
2a06:e881:4002::,2a06:e887:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a06:e8c0::,2a06:e8c7:ffff:ffff:ffff:ffff:ffff:ffff,LV
2a06:e900::,2a06:e907:ffff:ffff:ffff:ffff:ffff:ffff,US
-2a06:e940::,2a06:e947:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a06:e980::,2a06:e987:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a06:e9c0::,2a06:e9c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a06:ea00::,2a06:ea07:ffff:ffff:ffff:ffff:ffff:ffff,IT
@@ -37481,7 +37789,6 @@
2a06:f380::,2a06:f387:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a06:f3c0::,2a06:f3c7:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a06:f400::,2a06:f407:ffff:ffff:ffff:ffff:ffff:ffff,RU
-2a06:f440::,2a06:f447:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a06:f480::,2a06:f487:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a06:f4c0::,2a06:f4c7:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a06:f500::,2a06:f507:ffff:ffff:ffff:ffff:ffff:ffff,IN
@@ -37490,7 +37797,7 @@
2a06:f5c0::,2a06:f5c7:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a06:f600::,2a06:f607:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a06:f640::,2a06:f647:ffff:ffff:ffff:ffff:ffff:ffff,GB
-2a06:f680::,2a06:f687:ffff:ffff:ffff:ffff:ffff:ffff,RO
+2a06:f680::,2a06:f687:ffff:ffff:ffff:ffff:ffff:ffff,IN
2a06:f6c0::,2a06:f6c7:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a06:f700::,2a06:f707:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a06:f740::,2a06:f747:ffff:ffff:ffff:ffff:ffff:ffff,LU
@@ -37520,8 +37827,6 @@
2a06:fd40::,2a06:fd47:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a06:fd80::,2a06:fd87:ffff:ffff:ffff:ffff:ffff:ffff,IQ
2a06:fdc0::,2a06:fdc7:ffff:ffff:ffff:ffff:ffff:ffff,RO
-2a06:fe00::,2a06:fe07:ffff:ffff:ffff:ffff:ffff:ffff,MA
-2a06:fe40::,2a06:fe47:ffff:ffff:ffff:ffff:ffff:ffff,UZ
2a06:fe80::,2a06:fe87:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a06:fec0::,2a06:fec7:ffff:ffff:ffff:ffff:ffff:ffff,BE
2a06:ff00::,2a06:ff07:ffff:ffff:ffff:ffff:ffff:ffff,PL
@@ -37622,7 +37927,7 @@
2a07:1700::,2a07:1707:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a07:1740::,2a07:1747:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a07:1780::,2a07:1787:ffff:ffff:ffff:ffff:ffff:ffff,RU
-2a07:17c0::,2a07:17c7:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a07:17c0::,2a07:17c7:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a07:1800::,2a07:1807:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a07:1840::,2a07:1847:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a07:1880::,2a07:1887:ffff:ffff:ffff:ffff:ffff:ffff,IT
@@ -37666,8 +37971,12 @@
2a07:1c44:4311::,2a07:1c44:43ff:ffff:ffff:ffff:ffff:ffff,HR
2a07:1c44:4400::,2a07:1c44:4fff:ffff:ffff:ffff:ffff:ffff,AT
2a07:1c44:5000::,2a07:1c44:51ff:ffff:ffff:ffff:ffff:ffff,US
-2a07:1c44:5200::,2a07:1c44:86ff:ffff:ffff:ffff:ffff:ffff,AT
-2a07:1c44:8700::,2a07:1c44:87ff:ffff:ffff:ffff:ffff:ffff,HK
+2a07:1c44:5200::,2a07:1c44:61ff:ffff:ffff:ffff:ffff:ffff,AT
+2a07:1c44:6200::,2a07:1c44:62ff:ffff:ffff:ffff:ffff:ffff,DE
+2a07:1c44:6300::,2a07:1c44:86ff:ffff:ffff:ffff:ffff:ffff,AT
+2a07:1c44:8700::,2a07:1c44:87fd:ffff:ffff:ffff:ffff:ffff,HK
+2a07:1c44:87fe::,2a07:1c44:87fe:ffff:ffff:ffff:ffff:ffff,GB
+2a07:1c44:87ff::,2a07:1c44:87ff:ffff:ffff:ffff:ffff:ffff,SG
2a07:1c44:8800::,2a07:1c45:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a07:1c46::,2a07:1c46:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a07:1c47::,2a07:1c47:ffff:ffff:ffff:ffff:ffff:ffff,AT
@@ -37759,7 +38068,6 @@
2a07:3300::,2a07:3307:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a07:3340::,2a07:3347:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a07:3380::,2a07:3387:ffff:ffff:ffff:ffff:ffff:ffff,NL
-2a07:33c0::,2a07:33c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a07:3400::,2a07:3407:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a07:3440::,2a07:3447:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a07:3480::,2a07:3487:ffff:ffff:ffff:ffff:ffff:ffff,RU
@@ -37833,8 +38141,7 @@
2a07:45c0::,2a07:45c7:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a07:4600::,2a07:4607:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a07:4640::,2a07:4647:ffff:ffff:ffff:ffff:ffff:ffff,ES
-2a07:4680::,2a07:4687:ffff:ffff:ffff:ffff:ffff:ffff,UA
-2a07:46c0::,2a07:46c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a07:4680::,2a07:4687:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a07:4700::,2a07:4707:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a07:4740::,2a07:4747:ffff:ffff:ffff:ffff:ffff:ffff,BG
2a07:4780::,2a07:4787:ffff:ffff:ffff:ffff:ffff:ffff,RO
@@ -37856,8 +38163,6 @@
2a07:4b80::,2a07:4b87:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a07:4bc0::,2a07:4bc7:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a07:4c00::,2a07:4c07:ffff:ffff:ffff:ffff:ffff:ffff,IR
-2a07:4c40::,2a07:4c47:ffff:ffff:ffff:ffff:ffff:ffff,US
-2a07:4c80::,2a07:4c87:ffff:ffff:ffff:ffff:ffff:ffff,US
2a07:4cc0::,2a07:4cc7:ffff:ffff:ffff:ffff:ffff:ffff,RO
2a07:4d00::,2a07:4d07:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a07:4d40::,2a07:4d47:ffff:ffff:ffff:ffff:ffff:ffff,FR
@@ -37901,7 +38206,7 @@
2a07:56c0::,2a07:56c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a07:5700::,2a07:5707:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a07:5740::,2a07:5747:ffff:ffff:ffff:ffff:ffff:ffff,BG
-2a07:5780::,2a07:5787:ffff:ffff:ffff:ffff:ffff:ffff,RO
+2a07:5780::,2a07:5787:ffff:ffff:ffff:ffff:ffff:ffff,IN
2a07:57c0::,2a07:57c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a07:5840::,2a07:5847:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a07:5880::,2a07:5887:ffff:ffff:ffff:ffff:ffff:ffff,RU
@@ -37912,7 +38217,6 @@
2a07:59c0::,2a07:59c6:edff:ffff:ffff:ffff:ffff:ffff,IT
2a07:59c6:ee00::,2a07:59c6:eeff:ffff:ffff:ffff:ffff:ffff,DE
2a07:59c6:ef00::,2a07:59c7:ffff:ffff:ffff:ffff:ffff:ffff,IT
-2a07:5a00::,2a07:5a07:ffff:ffff:ffff:ffff:ffff:ffff,GE
2a07:5a40::,2a07:5a47:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a07:5a80::,2a07:5a87:ffff:ffff:ffff:ffff:ffff:ffff,FI
2a07:5ac0::,2a07:5ac7:ffff:ffff:ffff:ffff:ffff:ffff,HR
@@ -37935,7 +38239,6 @@
2a07:5f00::,2a07:5f07:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a07:5f40::,2a07:5f47:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a07:5f80::,2a07:5f87:ffff:ffff:ffff:ffff:ffff:ffff,NL
-2a07:5fc0::,2a07:5fc7:ffff:ffff:ffff:ffff:ffff:ffff,US
2a07:6000::,2a07:6007:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a07:6040::,2a07:6047:ffff:ffff:ffff:ffff:ffff:ffff,PT
2a07:6080::,2a07:6087:ffff:ffff:ffff:ffff:ffff:ffff,IT
@@ -37969,7 +38272,6 @@
2a07:6780::,2a07:6787:ffff:ffff:ffff:ffff:ffff:ffff,LB
2a07:67c0::,2a07:67c7:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a07:6800::,2a07:6807:ffff:ffff:ffff:ffff:ffff:ffff,GB
-2a07:6840::,2a07:6847:ffff:ffff:ffff:ffff:ffff:ffff,US
2a07:6880::,2a07:6887:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a07:68c0::,2a07:68c7:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a07:6900::,2a07:6907:ffff:ffff:ffff:ffff:ffff:ffff,PA
@@ -37997,7 +38299,6 @@
2a07:6e80::,2a07:6e87:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a07:6ec0::,2a07:6ec7:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a07:6f00::,2a07:6f07:ffff:ffff:ffff:ffff:ffff:ffff,ES
-2a07:6f40::,2a07:6f47:ffff:ffff:ffff:ffff:ffff:ffff,US
2a07:6f80::,2a07:6f87:ffff:ffff:ffff:ffff:ffff:ffff,BG
2a07:6fc0::,2a07:6fc7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a07:7000::,2a07:7007:ffff:ffff:ffff:ffff:ffff:ffff,TR
@@ -38027,7 +38328,6 @@
2a07:7600::,2a07:7607:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a07:7640::,2a07:7647:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a07:7680::,2a07:7687:ffff:ffff:ffff:ffff:ffff:ffff,IT
-2a07:76c0::,2a07:76c7:ffff:ffff:ffff:ffff:ffff:ffff,US
2a07:7700::,2a07:7707:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a07:7740::,2a07:7747:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a07:7780::,2a07:7787:ffff:ffff:ffff:ffff:ffff:ffff,UA
@@ -38047,7 +38347,6 @@
2a07:7b40::,2a07:7b47:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a07:7b80::,2a07:7b87:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a07:7bc0::,2a07:7bc7:ffff:ffff:ffff:ffff:ffff:ffff,NL
-2a07:7c00::,2a07:7c07:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a07:7c40::,2a07:7c47:ffff:ffff:ffff:ffff:ffff:ffff,KW
2a07:7c80::,2a07:7c87:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a07:7cc0::,2a07:7cc7:ffff:ffff:ffff:ffff:ffff:ffff,CH
@@ -38081,7 +38380,7 @@
2a07:83c0::,2a07:83c7:ffff:ffff:ffff:ffff:ffff:ffff,SK
2a07:8400::,2a07:8407:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a07:8440::,2a07:8447:ffff:ffff:ffff:ffff:ffff:ffff,IT
-2a07:8480::,2a07:8487:ffff:ffff:ffff:ffff:ffff:ffff,RO
+2a07:8480::,2a07:8487:ffff:ffff:ffff:ffff:ffff:ffff,IN
2a07:84c0::,2a07:84c7:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a07:8500::,2a07:8507:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a07:8540::,2a07:8547:ffff:ffff:ffff:ffff:ffff:ffff,RU
@@ -38145,7 +38444,6 @@
2a07:9340::,2a07:9347:ffff:ffff:ffff:ffff:ffff:ffff,BG
2a07:9380::,2a07:9387:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a07:93c0::,2a07:93c7:ffff:ffff:ffff:ffff:ffff:ffff,ES
-2a07:9400::,2a07:9407:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a07:9440::,2a07:9447:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a07:9480::,2a07:9487:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a07:94c0::,2a07:94c7:ffff:ffff:ffff:ffff:ffff:ffff,NL
@@ -38182,9 +38480,8 @@
2a07:9bc0::,2a07:9bc7:ffff:ffff:ffff:ffff:ffff:ffff,AL
2a07:9c00::,2a07:9c07:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a07:9c40::,2a07:9c47:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a07:9c80::,2a07:9c87:ffff:ffff:ffff:ffff:ffff:ffff,RO
-2a07:9cc0::,2a07:9cc7:ffff:ffff:ffff:ffff:ffff:ffff,US
-2a07:9d00::,2a07:9d07:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a07:9c80::,2a07:9c87:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2a07:9d00::,2a07:9d07:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a07:9d40::,2a07:9d47:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a07:9d80::,2a07:9d87:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a07:9dc0::,2a07:9dc7:ffff:ffff:ffff:ffff:ffff:ffff,NO
@@ -38240,7 +38537,9 @@
2a07:a905:ffec::,2a07:a905:ffec:ffff:ffff:ffff:ffff:ffff,CZ
2a07:a905:ffed::,2a07:a905:ffef:ffff:ffff:ffff:ffff:ffff,GB
2a07:a905:fff0::,2a07:a905:fff0:ffff:ffff:ffff:ffff:ffff,US
-2a07:a905:fff1::,2a07:a907:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a07:a905:fff1::,2a07:a906:6314:ffff:ffff:ffff:ffff:ffff,GB
+2a07:a906:6315::,2a07:a906:6315:ffff:ffff:ffff:ffff:ffff,DE
+2a07:a906:6316::,2a07:a907:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a07:a940::,2a07:a947:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a07:a980::,2a07:a987:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a07:a9c0::,2a07:a9c7:ffff:ffff:ffff:ffff:ffff:ffff,IT
@@ -38279,9 +38578,7 @@
2a07:b200::,2a07:b207:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a07:b240::,2a07:b247:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a07:b280::,2a07:b287:ffff:ffff:ffff:ffff:ffff:ffff,IR
-2a07:b2c0::,2a07:b2c5:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a07:b2c6::,2a07:b2c6:ffff:ffff:ffff:ffff:ffff:ffff,ZA
-2a07:b2c7::,2a07:b2c7:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a07:b300::,2a07:b307:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a07:b340::,2a07:b347:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a07:b380::,2a07:b387:ffff:ffff:ffff:ffff:ffff:ffff,FR
@@ -38291,7 +38588,6 @@
2a07:b480::,2a07:b487:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a07:b4c0::,2a07:b4c7:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a07:b500::,2a07:b507:ffff:ffff:ffff:ffff:ffff:ffff,CZ
-2a07:b540::,2a07:b547:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a07:b580::,2a07:b587:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a07:b5c0::,2a07:b5c7:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a07:b600::,2a07:b607:ffff:ffff:ffff:ffff:ffff:ffff,NO
@@ -38301,7 +38597,7 @@
2a07:b700::,2a07:b707:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a07:b740::,2a07:b747:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a07:b780::,2a07:b787:ffff:ffff:ffff:ffff:ffff:ffff,NL
-2a07:b7c0::,2a07:b7c7:ffff:ffff:ffff:ffff:ffff:ffff,LU
+2a07:b7c0::,2a07:b7c7:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a07:b800::,2a07:b807:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a07:b840::,2a07:b847:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a07:b880::,2a07:b887:ffff:ffff:ffff:ffff:ffff:ffff,FR
@@ -38391,88 +38687,171 @@
2a07:ce00::,2a07:ce07:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a07:ce40::,2a07:ce47:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a07:ce80::,2a07:ce87:ffff:ffff:ffff:ffff:ffff:ffff,IQ
+2a07:cec0::,2a07:cec7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a07:cf00::,2a07:cf07:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a07:cf40::,2a07:cf40:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a07:cf80::,2a07:cf80:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a07:cfc0::,2a07:cfc7:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a07:d000::,2a07:d0ff:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a07:d800::,2a07:d807:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a07:d840::,2a07:d847:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a07:d880::,2a07:d887:ffff:ffff:ffff:ffff:ffff:ffff,EE
+2a07:d8c0::,2a07:d8c0:ffff:ffff:ffff:ffff:ffff:ffff,MK
2a07:d900::,2a07:d907:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a07:d940::,2a07:d947:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a07:d980::,2a07:d987:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a07:d9c0::,2a07:d9c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a07:da00::,2a07:da07:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a07:da40::,2a07:da47:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a07:da80::,2a07:da87:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a07:dac0::,2a07:dac7:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a07:db00::,2a07:db07:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a07:db40::,2a07:db47:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a07:db80::,2a07:db87:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a07:dbc0::,2a07:dbc0:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a07:dc00::,2a07:dc07:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a07:dc40::,2a07:dc40:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a07:dc80::,2a07:dc87:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a07:dcc0::,2a07:dcc7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a07:dd00::,2a07:dd00:ffff:ffff:ffff:ffff:ffff:ffff,IE
+2a07:dd40::,2a07:dd47:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a07:dd80::,2a07:dd87:ffff:ffff:ffff:ffff:ffff:ffff,KZ
+2a07:ddc0::,2a07:ddc7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a07:de00::,2a07:de07:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a07:de40::,2a07:de47:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a07:de80::,2a07:de87:ffff:ffff:ffff:ffff:ffff:ffff,RS
+2a07:dec0::,2a07:dec7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a07:df00::,2a07:df07:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a07:df40::,2a07:df47:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a07:df80::,2a07:df87:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a07:dfc0::,2a07:dfc7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a07:e000::,2a07:e007:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a07:e040::,2a07:e047:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a07:e080::,2a07:e087:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a07:e0c0::,2a07:e0c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a07:e100::,2a07:e100:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a07:e140::,2a07:e147:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a07:e180::,2a07:e187:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a07:e1c0::,2a07:e1c7:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a07:e200::,2a07:e207:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a07:e240::,2a07:e247:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a07:e280::,2a07:e287:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a07:e2c0::,2a07:e2c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a07:e300::,2a07:e307:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a07:e340::,2a07:e347:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a07:e380::,2a07:e387:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a07:e3c0::,2a07:e3c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a07:e400::,2a07:e407:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a07:e440::,2a07:e447:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a07:e480::,2a07:e487:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a07:e4c0::,2a07:e4c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a07:e500::,2a07:e507:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a07:e540::,2a07:e547:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a07:e580::,2a07:e587:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a07:e5c0::,2a07:e5c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a07:e600::,2a07:e607:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a07:e640::,2a07:e647:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a07:e680::,2a07:e687:ffff:ffff:ffff:ffff:ffff:ffff,IR
+2a07:e6c0::,2a07:e6c7:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a07:e700::,2a07:e707:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a07:e740::,2a07:e747:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a07:e780::,2a07:e787:ffff:ffff:ffff:ffff:ffff:ffff,TR
+2a07:e7c0::,2a07:e7c7:ffff:ffff:ffff:ffff:ffff:ffff,IL
2a07:e800::,2a07:e807:ffff:ffff:ffff:ffff:ffff:ffff,LT
+2a07:e840::,2a07:e847:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a07:e880::,2a07:e887:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a07:e8c0::,2a07:e8c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a07:e900::,2a07:e907:ffff:ffff:ffff:ffff:ffff:ffff,LU
+2a07:e940::,2a07:e947:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a07:e980::,2a07:e987:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a07:e9c0::,2a07:e9c7:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a07:ea00::,2a07:ea07:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a07:ea40::,2a07:ea47:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a07:ea80::,2a07:ea87:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a07:eac0::,2a07:eac7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a07:eb00::,2a07:eb07:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a07:eb40::,2a07:eb47:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a07:eb80::,2a07:eb80:ffff:ffff:ffff:ffff:ffff:ffff,AT
+2a07:ebc0::,2a07:ebc7:ffff:ffff:ffff:ffff:ffff:ffff,GE
2a07:ec00::,2a07:ec00:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a07:ec40::,2a07:ec47:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a07:ec80::,2a07:ec87:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a07:ecc0::,2a07:ecc7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a07:ed00::,2a07:ed07:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a07:ed40::,2a07:ed47:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a07:ed80::,2a07:ed80:ffff:ffff:ffff:ffff:ffff:ffff,HU
+2a07:edc0::,2a07:edc7:ffff:ffff:ffff:ffff:ffff:ffff,UZ
2a07:ee00::,2a07:ee00:ffff:ffff:ffff:ffff:ffff:ffff,NO
+2a07:ee40::,2a07:ee47:ffff:ffff:ffff:ffff:ffff:ffff,JE
2a07:ee80::,2a07:ee87:ffff:ffff:ffff:ffff:ffff:ffff,IE
+2a07:eec0::,2a07:eec7:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a07:ef00::,2a07:ef07:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a07:ef40::,2a07:ef47:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a07:efc0::,2a07:efc0:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a07:f000::,2a07:f007:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a07:f040::,2a07:f047:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a07:f080::,2a07:f087:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a07:f0c0::,2a07:f0c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a07:f100::,2a07:f107:ffff:ffff:ffff:ffff:ffff:ffff,LB
+2a07:f140::,2a07:f147:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a07:f180::,2a07:f187:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a07:f1c0::,2a07:f1c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a07:f200::,2a07:f207:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a07:f240::,2a07:f247:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a07:f280::,2a07:f287:ffff:ffff:ffff:ffff:ffff:ffff,TR
+2a07:f2c0::,2a07:f2c7:ffff:ffff:ffff:ffff:ffff:ffff,RO
2a07:f300::,2a07:f307:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a07:f340::,2a07:f340:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a07:f380::,2a07:f387:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a07:f3c0::,2a07:f3c0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a07:f400::,2a07:f407:ffff:ffff:ffff:ffff:ffff:ffff,BG
+2a07:f440::,2a07:f447:ffff:ffff:ffff:ffff:ffff:ffff,LB
2a07:f480::,2a07:f487:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a07:f4c0::,2a07:f4c7:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a07:f500::,2a07:f507:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a07:f540::,2a07:f547:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a07:f580::,2a07:f587:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a07:f5c0::,2a07:f5c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a07:f600::,2a07:f607:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a07:f640::,2a07:f647:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a07:f680::,2a07:f687:ffff:ffff:ffff:ffff:ffff:ffff,NO
+2a07:f6c0::,2a07:f6c7:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a07:f700::,2a07:f707:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a07:f740::,2a07:f747:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a07:f780::,2a07:f787:ffff:ffff:ffff:ffff:ffff:ffff,AT
+2a07:f7c0::,2a07:f7c7:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a07:f800::,2a07:f807:ffff:ffff:ffff:ffff:ffff:ffff,SE
+2a07:f840::,2a07:f847:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a07:f880::,2a07:f887:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a07:f8c0::,2a07:f8c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a07:f900::,2a07:f900:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a07:f940::,2a07:f947:ffff:ffff:ffff:ffff:ffff:ffff,IE
2a07:f980::,2a07:f987:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a07:f9c0::,2a07:f9c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a07:fa00::,2a07:fa07:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a07:fa40::,2a07:fa47:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a07:fa80::,2a07:fa87:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a07:fac0::,2a07:fac7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a07:fb00::,2a07:fb00:ffff:ffff:ffff:ffff:ffff:ffff,TR
+2a07:fb40::,2a07:fb47:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a07:fb80::,2a07:fb87:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a07:fbc0::,2a07:fbc7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a07:fc00::,2a07:fc07:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a07:fc40::,2a07:fc47:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a07:fc80::,2a07:fc87:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a07:fcc0::,2a07:fcc7:ffff:ffff:ffff:ffff:ffff:ffff,IE
2a07:fd00::,2a07:fd07:ffff:ffff:ffff:ffff:ffff:ffff,LU
+2a07:fd40::,2a07:fd47:ffff:ffff:ffff:ffff:ffff:ffff,YE
2a07:fd80::,2a07:fd87:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a07:fdc0::,2a07:fdc7:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a07:fe00::,2a07:fe07:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a07:fe40::,2a07:fe47:ffff:ffff:ffff:ffff:ffff:ffff,PT
2a07:fe80::,2a07:fe87:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a07:fec0::,2a07:fec7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a07:ff00::,2a07:ff07:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a07:ff40::,2a07:ff47:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a07:ff80::,2a07:ff80:ffff:ffff:ffff:ffff:ffff:ffff,BG
+2a07:ffc0::,2a07:ffc7:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a08::,2a08:1fff:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0a::,2a0a:7:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a0a:40::,2a0a:47:ffff:ffff:ffff:ffff:ffff:ffff,FR
@@ -38873,7 +39252,6 @@
2a0a:6180::,2a0a:6187:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a0a:61c0::,2a0a:61c7:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a0a:6200::,2a0a:6200:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a0a:6240::,2a0a:6247:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a0a:6280::,2a0a:6287:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0a:62c0::,2a0a:62c0:ffff:ffff:ffff:ffff:ffff:ffff,FI
2a0a:6300::,2a0a:6307:ffff:ffff:ffff:ffff:ffff:ffff,RO
@@ -39011,7 +39389,6 @@
2a0a:8280::,2a0a:8287:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0a:82c0::,2a0a:82c7:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a0a:8300::,2a0a:8307:ffff:ffff:ffff:ffff:ffff:ffff,RU
-2a0a:8340::,2a0a:8347:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0a:8380::,2a0a:8387:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0a:83c0::,2a0a:83c7:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0a:8400::,2a0a:8407:ffff:ffff:ffff:ffff:ffff:ffff,ES
@@ -39154,7 +39531,6 @@
2a0a:a200::,2a0a:a207:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0a:a280::,2a0a:a280:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0a:a2c0::,2a0a:a2c7:ffff:ffff:ffff:ffff:ffff:ffff,FR
-2a0a:a300::,2a0a:a307:ffff:ffff:ffff:ffff:ffff:ffff,RO
2a0a:a340::,2a0a:a347:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0a:a380::,2a0a:a387:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a0a:a3c0::,2a0a:a3c0:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -39222,7 +39598,6 @@
2a0a:b380::,2a0a:b381:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0a:b382::,2a0a:b384:ffff:ffff:ffff:ffff:ffff:ffff,US
2a0a:b385::,2a0a:b387:ffff:ffff:ffff:ffff:ffff:ffff,RU
-2a0a:b3c0::,2a0a:b3c7:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0a:b400::,2a0a:b407:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0a:b440::,2a0a:b447:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0a:b480::,2a0a:b487:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -39237,7 +39612,9 @@
2a0a:b640:2::,2a0a:b647:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0a:b680::,2a0a:b687:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a0a:b6c0::,2a0a:b6c0:ffff:ffff:ffff:ffff:ffff:ffff,CZ
-2a0a:b700::,2a0a:b707:1019:ffff:ffff:ffff:ffff:ffff,DE
+2a0a:b700::,2a0a:b707:bd:ffff:ffff:ffff:ffff:ffff,DE
+2a0a:b707:be::,2a0a:b707:be:ffff:ffff:ffff:ffff:ffff,BE
+2a0a:b707:bf::,2a0a:b707:1019:ffff:ffff:ffff:ffff:ffff,DE
2a0a:b707:101a::,2a0a:b707:101a:ffff:ffff:ffff:ffff:ffff,SE
2a0a:b707:101b::,2a0a:b707:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0a:b740::,2a0a:b747:ffff:ffff:ffff:ffff:ffff:ffff,FR
@@ -39259,7 +39636,6 @@
2a0a:bb40::,2a0a:bb47:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0a:bb80::,2a0a:bb87:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0a:bbc0::,2a0a:bbc7:ffff:ffff:ffff:ffff:ffff:ffff,ES
-2a0a:bc00::,2a0a:bc07:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0a:bc40::,2a0a:bc40:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a0a:bc80::,2a0a:bc87:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a0a:bcc0::,2a0a:bcc7:ffff:ffff:ffff:ffff:ffff:ffff,SE
@@ -39281,10 +39657,10 @@
2a0a:c0c0::,2a0a:c0c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0a:c100::,2a0a:c107:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a0a:c140::,2a0a:c140:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0a:c180::,2a0a:c187:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a0a:c1c0::,2a0a:c1c7:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a0a:c200::,2a0a:c207:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0a:c240::,2a0a:c240:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a0a:c280::,2a0a:c287:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a0a:c2c0::,2a0a:c2c7:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a0a:c300::,2a0a:c307:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0a:c340::,2a0a:c340:ffff:ffff:ffff:ffff:ffff:ffff,NO
@@ -39293,7 +39669,6 @@
2a0a:c440::,2a0a:c447:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a0a:c480::,2a0a:c487:ffff:ffff:ffff:ffff:ffff:ffff,SA
2a0a:c4c0::,2a0a:c4c7:ffff:ffff:ffff:ffff:ffff:ffff,TR
-2a0a:c500::,2a0a:c507:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0a:c540::,2a0a:c547:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a0a:c580::,2a0a:c587:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0a:c5c0::,2a0a:c5c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -39336,7 +39711,7 @@
2a0a:cec0::,2a0a:cec7:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a0a:cf00::,2a0a:cf07:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a0a:cf40::,2a0a:cf47:ffff:ffff:ffff:ffff:ffff:ffff,LU
-2a0a:cf80::,2a0a:cf87:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a0a:cf80::,2a0a:cf87:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a0a:cfc0::,2a0a:cfc7:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a0a:d000::,2a0a:d007:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a0a:d040::,2a0a:d047:ffff:ffff:ffff:ffff:ffff:ffff,UA
@@ -39382,10 +39757,8 @@
2a0a:da40::,2a0a:da47:ffff:ffff:ffff:ffff:ffff:ffff,US
2a0a:da80::,2a0a:da87:ffff:ffff:ffff:ffff:ffff:ffff,BG
2a0a:dac0::,2a0a:dac7:ffff:ffff:ffff:ffff:ffff:ffff,RO
-2a0a:db00::,2a0a:db00:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0a:db40::,2a0a:db47:ffff:ffff:ffff:ffff:ffff:ffff,US
2a0a:db80::,2a0a:db87:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a0a:dbc0::,2a0a:dbc7:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a0a:dc00::,2a0a:dc07:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a0a:dc40::,2a0a:dc47:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0a:dc80::,2a0a:dc87:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -39474,7 +39847,7 @@
2a0a:f140::,2a0a:f140:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0a:f180::,2a0a:f187:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0a:f1c0::,2a0a:f1c7:ffff:ffff:ffff:ffff:ffff:ffff,UA
-2a0a:f200::,2a0a:f207:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a0a:f200::,2a0a:f207:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0a:f240::,2a0a:f247:ffff:ffff:ffff:ffff:ffff:ffff,BY
2a0a:f280::,2a0a:f287:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0a:f2c0::,2a0a:f2c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
@@ -39538,7 +39911,7 @@
2a0b:140::,2a0b:147:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a0b:180::,2a0b:187:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0b:1c0::,2a0b:1c7:ffff:ffff:ffff:ffff:ffff:ffff,NL
-2a0b:200::,2a0b:207:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a0b:200::,2a0b:207:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a0b:240::,2a0b:247:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0b:280::,2a0b:287:ffff:ffff:ffff:ffff:ffff:ffff,MD
2a0b:2c0::,2a0b:2c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -39576,7 +39949,9 @@
2a0b:ac0::,2a0b:ac7:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a0b:b00::,2a0b:b07:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a0b:b40::,2a0b:b47:ffff:ffff:ffff:ffff:ffff:ffff,SE
-2a0b:b80::,2a0b:b87:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0b:b80::,2a0b:b87:ffe9:ffff:ffff:ffff:ffff:ffff,GB
+2a0b:b87:ffea::,2a0b:b87:ffea:ffff:ffff:ffff:ffff:ffff,IE
+2a0b:b87:ffeb::,2a0b:b87:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0b:bc0::,2a0b:bc7:ffff:ffff:ffff:ffff:ffff:ffff,IE
2a0b:c00::,2a0b:c00:ffff:ffff:ffff:ffff:ffff:ffff,LT
2a0b:c40::,2a0b:c47:ffff:ffff:ffff:ffff:ffff:ffff,ES
@@ -39601,6 +39976,7 @@
2a0b:1100::,2a0b:1107:ffff:ffff:ffff:ffff:ffff:ffff,SK
2a0b:1140::,2a0b:1147:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a0b:1180::,2a0b:1187:ffff:ffff:ffff:ffff:ffff:ffff,SE
+2a0b:11c0::,2a0b:11c0:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a0b:1200::,2a0b:1207:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a0b:1240::,2a0b:1247:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0b:1280::,2a0b:1287:ffff:ffff:ffff:ffff:ffff:ffff,SE
@@ -39734,7 +40110,6 @@
2a0b:3180::,2a0b:3187:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0b:31c0::,2a0b:31c7:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0b:3200::,2a0b:3207:ffff:ffff:ffff:ffff:ffff:ffff,FR
-2a0b:3240::,2a0b:3240:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0b:3280::,2a0b:3280:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0b:32c0::,2a0b:32c7:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0b:3300::,2a0b:3307:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -39823,7 +40198,6 @@
2a0b:4600::,2a0b:4600:ffff:ffff:ffff:ffff:ffff:ffff,BE
2a0b:4640::,2a0b:4647:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a0b:4680::,2a0b:4687:ffff:ffff:ffff:ffff:ffff:ffff,RU
-2a0b:46c0::,2a0b:46c7:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a0b:4700::,2a0b:4707:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a0b:4740::,2a0b:4740:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0b:4780::,2a0b:4787:ffff:ffff:ffff:ffff:ffff:ffff,CH
@@ -40053,7 +40427,7 @@
2a0b:7e80::,2a0b:7e87:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a0b:7ec0::,2a0b:7ec7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0b:7f00::,2a0b:7f07:ffff:ffff:ffff:ffff:ffff:ffff,CZ
-2a0b:7f40::,2a0b:7f47:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a0b:7f40::,2a0b:7f47:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a0b:7f80::,2a0b:7f87:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0b:7fc0::,2a0b:7fc7:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a0b:8000::,2a0b:8007:ffff:ffff:ffff:ffff:ffff:ffff,MC
@@ -40217,7 +40591,6 @@
2a0b:a740::,2a0b:a740:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0b:a780::,2a0b:a787:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0b:a7c0::,2a0b:a7c7:ffff:ffff:ffff:ffff:ffff:ffff,ES
-2a0b:a800::,2a0b:a800:ffff:ffff:ffff:ffff:ffff:ffff,LU
2a0b:a840::,2a0b:a840:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0b:a880::,2a0b:a887:ffff:ffff:ffff:ffff:ffff:ffff,IL
2a0b:a8c0::,2a0b:a8c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
@@ -40421,7 +40794,6 @@
2a0b:dac0::,2a0b:dac7:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a0b:db00::,2a0b:db07:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0b:db40::,2a0b:db47:ffff:ffff:ffff:ffff:ffff:ffff,IE
-2a0b:db80::,2a0b:db87:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0b:dbc0::,2a0b:dbc7:ffff:ffff:ffff:ffff:ffff:ffff,FI
2a0b:dc00::,2a0b:dc07:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a0b:dc40::,2a0b:dc47:ffff:ffff:ffff:ffff:ffff:ffff,ES
@@ -40540,7 +40912,6 @@
2a0b:f900::,2a0b:f907:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a0b:f940::,2a0b:f940:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0b:f980::,2a0b:f987:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a0b:f9c0::,2a0b:f9c7:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0b:fa00::,2a0b:fa07:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0b:fa40::,2a0b:fa47:ffff:ffff:ffff:ffff:ffff:ffff,AZ
2a0b:fa80::,2a0b:fa87:ffff:ffff:ffff:ffff:ffff:ffff,ES
@@ -40651,6 +41022,7 @@
2a0c:14c0::,2a0c:14c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0c:1500::,2a0c:1507:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0c:1540::,2a0c:1547:ffff:ffff:ffff:ffff:ffff:ffff,FI
+2a0c:1580::,2a0c:1587:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a0c:15c0::,2a0c:15c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0c:1600::,2a0c:1600:ffff:ffff:ffff:ffff:ffff:ffff,BA
2a0c:1640::,2a0c:1647:ffff:ffff:ffff:ffff:ffff:ffff,TR
@@ -40722,7 +41094,6 @@
2a0c:26c0::,2a0c:26c7:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a0c:2700::,2a0c:2707:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a0c:2740::,2a0c:2747:ffff:ffff:ffff:ffff:ffff:ffff,FR
-2a0c:2780::,2a0c:2787:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a0c:27c0::,2a0c:27c7:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0c:2800::,2a0c:2800:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0c:2840::,2a0c:2847:ffff:ffff:ffff:ffff:ffff:ffff,RU
@@ -40786,7 +41157,11 @@
2a0c:3600::,2a0c:3600:ffff:ffff:ffff:ffff:ffff:ffff,MD
2a0c:3640::,2a0c:3647:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a0c:3680::,2a0c:3687:ffff:ffff:ffff:ffff:ffff:ffff,IR
-2a0c:36c0::,2a0c:36c7:ffff:ffff:ffff:ffff:ffff:ffff,EE
+2a0c:36c0::,2a0c:36c1:ffff:ffff:ffff:ffff:ffff:ffff,EE
+2a0c:36c2::,2a0c:36c3:ffff:ffff:ffff:ffff:ffff:ffff,US
+2a0c:36c4::,2a0c:36c5:ffff:ffff:ffff:ffff:ffff:ffff,EE
+2a0c:36c6::,2a0c:36c6:ffff:ffff:ffff:ffff:ffff:ffff,US
+2a0c:36c7::,2a0c:36c7:ffff:ffff:ffff:ffff:ffff:ffff,EE
2a0c:3700::,2a0c:3700:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a0c:3740::,2a0c:3747:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:3780::,2a0c:3787:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -40805,9 +41180,7 @@
2a0c:3ac0::,2a0c:3ac7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0c:3b00::,2a0c:3b07:ffff:ffff:ffff:ffff:ffff:ffff,MD
2a0c:3b40::,2a0c:3b47:ffff:ffff:ffff:ffff:ffff:ffff,GB
-2a0c:3b80::,2a0c:3b80:4c48:ffff:ffff:ffff:ffff:ffff,CH
2a0c:3b80:4c49::,2a0c:3b80:4c49:ffff:ffff:ffff:ffff:ffff,LI
-2a0c:3b80:4c4a::,2a0c:3b87:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a0c:3bc0::,2a0c:3bc7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:3c00::,2a0c:3c07:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a0c:3c40::,2a0c:3c40:ffff:ffff:ffff:ffff:ffff:ffff,GB
@@ -41117,7 +41490,6 @@
2a0c:8840::,2a0c:8847:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:8880::,2a0c:8887:ffff:ffff:ffff:ffff:ffff:ffff,BG
2a0c:88c0::,2a0c:88c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
-2a0c:8900::,2a0c:8900:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a0c:8940::,2a0c:8947:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0c:8980::,2a0c:8987:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a0c:89c0::,2a0c:89c7:ffff:ffff:ffff:ffff:ffff:ffff,BG
@@ -41171,7 +41543,6 @@
2a0c:95c0::,2a0c:95c7:ffff:ffff:ffff:ffff:ffff:ffff,KZ
2a0c:9600::,2a0c:9607:ffff:ffff:ffff:ffff:ffff:ffff,FI
2a0c:9640::,2a0c:9647:ffff:ffff:ffff:ffff:ffff:ffff,HU
-2a0c:9680::,2a0c:9687:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0c:96c0::,2a0c:96c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0c:9700::,2a0c:9700:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0c:9740::,2a0c:9747:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -41267,7 +41638,6 @@
2a0c:ad40::,2a0c:ad47:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a0c:ad80::,2a0c:ad87:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0c:adc0::,2a0c:adc7:ffff:ffff:ffff:ffff:ffff:ffff,IR
-2a0c:ae00::,2a0c:ae07:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0c:ae40::,2a0c:ae47:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0c:ae80::,2a0c:ae80:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:aec0::,2a0c:aec7:ffff:ffff:ffff:ffff:ffff:ffff,NL
@@ -41403,129 +41773,251 @@
2a0c:cf80::,2a0c:cf87:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a0c:cfc0::,2a0c:cfc7:ffff:ffff:ffff:ffff:ffff:ffff,SA
2a0c:d000::,2a0c:d007:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a0c:d040::,2a0c:d047:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a0c:d080::,2a0c:d080:ffff:ffff:ffff:ffff:ffff:ffff,IR
+2a0c:d0c0::,2a0c:d0c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:d100::,2a0c:d107:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:d140::,2a0c:d147:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0c:d180::,2a0c:d187:ffff:ffff:ffff:ffff:ffff:ffff,BG
+2a0c:d1c0::,2a0c:d1c7:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0c:d200::,2a0c:d207:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:d240::,2a0c:d247:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0c:d280::,2a0c:d283:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:d2c0::,2a0c:d2c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0c:d300::,2a0c:d307:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a0c:d340::,2a0c:d347:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:d380::,2a0c:d387:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:d3c0::,2a0c:d3c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:d400::,2a0c:d407:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:d440::,2a0c:d447:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a0c:d480::,2a0c:d487:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:d4c0::,2a0c:d4c7:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0c:d500::,2a0c:d507:ffff:ffff:ffff:ffff:ffff:ffff,SE
+2a0c:d540::,2a0c:d540:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a0c:d580::,2a0c:d587:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:d5c0::,2a0c:d5c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:d600::,2a0c:d607:ffff:ffff:ffff:ffff:ffff:ffff,IQ
+2a0c:d640::,2a0c:d640:ffff:ffff:ffff:ffff:ffff:ffff,SK
2a0c:d680::,2a0c:d687:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a0c:d6c0::,2a0c:d6c0:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a0c:d700::,2a0c:d707:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a0c:d740::,2a0c:d740:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a0c:d780::,2a0c:d787:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0c:d7c0::,2a0c:d7c7:ffff:ffff:ffff:ffff:ffff:ffff,PT
2a0c:d800::,2a0c:d807:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0c:d840::,2a0c:d847:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:d880::,2a0c:d880:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:d8c0::,2a0c:d8c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0c:d900::,2a0c:d907:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a0c:d940::,2a0c:d940:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:d9c0::,2a0c:d9c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:da00::,2a0c:da07:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:da40::,2a0c:da47:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a0c:da80::,2a0c:da87:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:dac0::,2a0c:dac7:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a0c:db00::,2a0c:db07:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a0c:db40::,2a0c:db47:ffff:ffff:ffff:ffff:ffff:ffff,SK
2a0c:db80::,2a0c:db87:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0c:dbc0::,2a0c:dbc7:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a0c:dc00::,2a0c:dc00:ffff:ffff:ffff:ffff:ffff:ffff,IE
+2a0c:dc40::,2a0c:dc47:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:dc80::,2a0c:dc80:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0c:dcc0::,2a0c:dcc7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:dd00::,2a0c:dd07:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:dd40::,2a0c:dd47:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a0c:dd80::,2a0c:dd87:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a0c:ddc0::,2a0c:ddc7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0c:de00::,2a0c:de07:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:de40::,2a0c:de47:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0c:de80::,2a0c:de87:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:dec0::,2a0c:dec7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0c:df00::,2a0c:df07:ffff:ffff:ffff:ffff:ffff:ffff,IQ
+2a0c:df40::,2a0c:df47:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:df80::,2a0c:df87:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:dfc0::,2a0c:dfc7:ffff:ffff:ffff:ffff:ffff:ffff,RO
2a0c:e000::,2a0c:e007:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:e040::,2a0c:e047:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a0c:e080::,2a0c:e087:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:e0c0::,2a0c:e0c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0c:e100::,2a0c:e107:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:e140::,2a0c:e147:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:e180::,2a0c:e187:ffff:ffff:ffff:ffff:ffff:ffff,SK
+2a0c:e1c0::,2a0c:e1c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:e200::,2a0c:e207:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a0c:e240::,2a0c:e240:ffff:ffff:ffff:ffff:ffff:ffff,EE
2a0c:e280::,2a0c:e280:ffff:ffff:ffff:ffff:ffff:ffff,HU
+2a0c:e2c0::,2a0c:e2c7:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a0c:e300::,2a0c:e307:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0c:e340::,2a0c:e340:ffff:ffff:ffff:ffff:ffff:ffff,US
2a0c:e380::,2a0c:e380:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:e3c0::,2a0c:e3c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:e400::,2a0c:e407:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0c:e440::,2a0c:e447:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a0c:e480::,2a0c:e487:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a0c:e4c0::,2a0c:e4c0:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a0c:e500::,2a0c:e507:ffff:ffff:ffff:ffff:ffff:ffff,TR
+2a0c:e540::,2a0c:e547:ffff:ffff:ffff:ffff:ffff:ffff,HR
2a0c:e580::,2a0c:e587:ffff:ffff:ffff:ffff:ffff:ffff,SE
+2a0c:e5c0::,2a0c:e5c7:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a0c:e600::,2a0c:e607:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0c:e640::,2a0c:e647:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0c:e680::,2a0c:e687:ffff:ffff:ffff:ffff:ffff:ffff,HR
+2a0c:e6c0::,2a0c:e6c7:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a0c:e700::,2a0c:e707:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:e740::,2a0c:e740:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a0c:e780::,2a0c:e787:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0c:e7c0::,2a0c:e7c7:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a0c:e800::,2a0c:e807:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:e840::,2a0c:e847:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0c:e880::,2a0c:e887:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a0c:e8c0::,2a0c:e8c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0c:e900::,2a0c:e907:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a0c:e940::,2a0c:e947:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a0c:e980::,2a0c:e987:ffff:ffff:ffff:ffff:ffff:ffff,BG
+2a0c:e9c0::,2a0c:e9c7:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a0c:ea00::,2a0c:ea07:ffff:ffff:ffff:ffff:ffff:ffff,BG
+2a0c:ea40::,2a0c:ea47:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a0c:ea80::,2a0c:ea87:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a0c:eac0::,2a0c:eac7:ffff:ffff:ffff:ffff:ffff:ffff,MD
2a0c:eb00::,2a0c:eb00:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0c:eb40::,2a0c:eb47:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a0c:eb80::,2a0c:eb87:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:ebc0::,2a0c:ebc7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0c:ec00::,2a0c:ec07:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a0c:ec40::,2a0c:ec47:ffff:ffff:ffff:ffff:ffff:ffff,RO
2a0c:ec80::,2a0c:ec80:ffff:ffff:ffff:ffff:ffff:ffff,AT
+2a0c:ecc0::,2a0c:ecc7:ffff:ffff:ffff:ffff:ffff:ffff,IE
2a0c:ed00::,2a0c:ed07:ffff:ffff:ffff:ffff:ffff:ffff,AZ
+2a0c:ed40::,2a0c:ed47:ffff:ffff:ffff:ffff:ffff:ffff,IE
2a0c:ed80::,2a0c:ed87:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:edc0::,2a0c:edc7:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0c:ee00::,2a0c:ee07:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:ee40::,2a0c:ee47:ffff:ffff:ffff:ffff:ffff:ffff,BA
2a0c:ee80::,2a0c:ee87:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a0c:eec0::,2a0c:eec7:ffff:ffff:ffff:ffff:ffff:ffff,RO
2a0c:ef00::,2a0c:ef00:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0c:ef01::,2a0c:ef01:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0c:ef02::,2a0c:ef02:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0c:ef03::,2a0c:ef07:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0c:ef40::,2a0c:ef47:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a0c:ef80::,2a0c:ef87:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0c:efc0::,2a0c:efc7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0c:f000::,2a0c:f000:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0c:f040::,2a0c:f047:ffff:ffff:ffff:ffff:ffff:ffff,FI
2a0c:f080::,2a0c:f083:ffff:ffff:ffff:ffff:ffff:ffff,KZ
+2a0c:f0c0::,2a0c:f0c7:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0c:f100::,2a0c:f107:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:f140::,2a0c:f147:ffff:ffff:ffff:ffff:ffff:ffff,BA
2a0c:f180::,2a0c:f187:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0c:f1c0::,2a0c:f1c7:ffff:ffff:ffff:ffff:ffff:ffff,HU
2a0c:f200::,2a0c:f207:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0c:f240::,2a0c:f247:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:f280::,2a0c:f287:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:f2c0::,2a0c:f2c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0c:f300::,2a0c:f307:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:f340::,2a0c:f340:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a0c:f380::,2a0c:f387:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:f3c0::,2a0c:f3c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0c:f400::,2a0c:f407:ffff:ffff:ffff:ffff:ffff:ffff,FI
+2a0c:f440::,2a0c:f447:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0c:f480::,2a0c:f487:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a0c:f4c0::,2a0c:f4c7:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a0c:f500::,2a0c:f507:ffff:ffff:ffff:ffff:ffff:ffff,TR
+2a0c:f540::,2a0c:f547:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:f580::,2a0c:f587:ffff:ffff:ffff:ffff:ffff:ffff,TR
+2a0c:f5c0::,2a0c:f5c0:ffff:ffff:ffff:ffff:ffff:ffff,HU
2a0c:f600::,2a0c:f607:ffff:ffff:ffff:ffff:ffff:ffff,SK
+2a0c:f640::,2a0c:f647:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:f680::,2a0c:f687:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0c:f6c0::,2a0c:f6c7:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0c:f700::,2a0c:f707:ffff:ffff:ffff:ffff:ffff:ffff,TR
+2a0c:f740::,2a0c:f747:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:f780::,2a0c:f787:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a0c:f7c0::,2a0c:f7c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0c:f800::,2a0c:f807:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0c:f840::,2a0c:f847:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a0c:f880::,2a0c:f887:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:f8c0::,2a0c:f8c3:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0c:f900::,2a0c:f907:ffff:ffff:ffff:ffff:ffff:ffff,DK
+2a0c:f940::,2a0c:f947:ffff:ffff:ffff:ffff:ffff:ffff,EE
2a0c:f980::,2a0c:f987:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0c:f9c0::,2a0c:f9c7:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a0c:fa00::,2a0c:fa00:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a0c:fa40::,2a0c:fa47:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0c:fa80::,2a0c:fa87:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:fac0::,2a0c:fac7:ffff:ffff:ffff:ffff:ffff:ffff,HU
2a0c:fb00::,2a0c:fb07:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0c:fb40::,2a0c:fb47:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0c:fb80::,2a0c:fb87:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a0c:fbc0::,2a0c:fbc7:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0c:fc00::,2a0c:fc07:ffff:ffff:ffff:ffff:ffff:ffff,FI
+2a0c:fc40::,2a0c:fc47:ffff:ffff:ffff:ffff:ffff:ffff,RO
2a0c:fc80::,2a0c:fc87:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:fcc0::,2a0c:fcc0:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a0c:fd00::,2a0c:fd07:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a0c:fd40::,2a0c:fd47:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:fd80::,2a0c:fd87:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a0c:fdc0::,2a0c:fdc7:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0c:fe00::,2a0c:fe07:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0c:fe40::,2a0c:fe47:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:fe80::,2a0c:fe87:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0c:fec0::,2a0c:fec7:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a0c:ff00::,2a0c:ff07:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0c:ff40::,2a0c:ff47:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0c:ff80::,2a0c:ff87:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a0c:ffc0::,2a0c:ffc7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0d::,2a0d:7:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a0d:40::,2a0d:47:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a0d:80::,2a0d:87:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0d:c0::,2a0d:c7:ffff:ffff:ffff:ffff:ffff:ffff,EE
2a0d:100::,2a0d:107:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0d:140::,2a0d:147:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0d:180::,2a0d:187:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a0d:1c0::,2a0d:1c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0d:200::,2a0d:207:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0d:240::,2a0d:247:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0d:280::,2a0d:287:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0d:2c0::,2a0d:2c7:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a0d:300::,2a0d:307:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0d:340::,2a0d:347:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a0d:380::,2a0d:387:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0d:3c0::,2a0d:3c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0d:400::,2a0d:407:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0d:440::,2a0d:447:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0d:480::,2a0d:487:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0d:4c0::,2a0d:4c7:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a0d:500::,2a0d:507:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0d:540::,2a0d:547:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a0d:580::,2a0d:580:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a0d:5c0::,2a0d:5c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0d:600::,2a0d:607:ffff:ffff:ffff:ffff:ffff:ffff,MD
+2a0d:640::,2a0d:647:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0d:680::,2a0d:687:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a0d:6c0::,2a0d:6c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0d:700::,2a0d:707:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0d:740::,2a0d:747:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a0d:780::,2a0d:787:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a0d:7c0::,2a0d:7c7:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a0d:800::,2a0d:807:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0d:840::,2a0d:847:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a0d:880::,2a0d:887:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0d:8c0::,2a0d:8c7:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a0d:900::,2a0d:900:ffff:ffff:ffff:ffff:ffff:ffff,SE
+2a0d:940::,2a0d:940:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0d:980::,2a0d:987:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a0d:9c0::,2a0d:9c7:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a0d:a00::,2a0d:a07:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a0d:a40::,2a0d:a47:ffff:ffff:ffff:ffff:ffff:ffff,PS
2a0d:a80::,2a0d:a87:ffff:ffff:ffff:ffff:ffff:ffff,AE
+2a0d:ac0::,2a0d:ac0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a0d:b00::,2a0d:b07:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a0d:b40::,2a0d:b47:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0d:b80::,2a0d:b80:ffff:ffff:ffff:ffff:ffff:ffff,SI
+2a0d:bc0::,2a0d:bc7:ffff:ffff:ffff:ffff:ffff:ffff,QA
2a0d:c00::,2a0d:c07:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a0d:c40::,2a0d:c47:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0d:c80::,2a0d:c87:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a0d:cc0::,2a0d:cc7:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a0d:d00::,2a0d:d07:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0d:d80::,2a0d:d83:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a0d:e00::,2a0d:e07:ffff:ffff:ffff:ffff:ffff:ffff,RU
@@ -41574,7 +42066,9 @@
2a0d:2380::,2a0d:2380:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a0d:2400::,2a0d:2406:ff:ffff:ffff:ffff:ffff:ffff,NL
2a0d:2406:100::,2a0d:2406:1ff:ffff:ffff:ffff:ffff:ffff,DE
-2a0d:2406:200::,2a0d:2407:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a0d:2406:200::,2a0d:2406:eff:ffff:ffff:ffff:ffff:ffff,NL
+2a0d:2406:f00::,2a0d:2406:f0f:ffff:ffff:ffff:ffff:ffff,GB
+2a0d:2406:f10::,2a0d:2407:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0d:2480::,2a0d:2487:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a0d:2500::,2a0d:2507:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0d:2580::,2a0d:2587:ffff:ffff:ffff:ffff:ffff:ffff,NL
@@ -41754,6 +42248,7 @@
2a0d:7780::,2a0d:7787:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a0d:7800::,2a0d:7807:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a0d:7880::,2a0d:7887:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a0d:7900::,2a0d:7907:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a0d:7980::,2a0d:7980:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a0d:7a00::,2a0d:7a07:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a0d:7a80::,2a0d:7a80:ffff:ffff:ffff:ffff:ffff:ffff,GB
@@ -42063,6 +42558,13 @@
2c0f:ef18::,2c0f:ef18:ffff:ffff:ffff:ffff:ffff:ffff,ZA
2c0f:ef20::,2c0f:ef20:ffff:ffff:ffff:ffff:ffff:ffff,ZA
2c0f:ef28::,2c0f:ef28:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:ef30::,2c0f:ef30:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:ef38::,2c0f:ef38:ffff:ffff:ffff:ffff:ffff:ffff,BW
+2c0f:ef40::,2c0f:ef40:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:ef48::,2c0f:ef48:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:ef50::,2c0f:ef50:ffff:ffff:ffff:ffff:ffff:ffff,MU
+2c0f:ef58::,2c0f:ef58:ffff:ffff:ffff:ffff:ffff:ffff,CG
+2c0f:ef60::,2c0f:ef60:ffff:ffff:ffff:ffff:ffff:ffff,ZA
2c0f:f000::,2c0f:f000:ffff:ffff:ffff:ffff:ffff:ffff,DZ
2c0f:f008::,2c0f:f008:ffff:ffff:ffff:ffff:ffff:ffff,KE
2c0f:f010::,2c0f:f010:ffff:ffff:ffff:ffff:ffff:ffff,ZA
diff --git a/src/core/crypto/onion_ntor.c b/src/core/crypto/onion_ntor.c
index 9e1e273ef6..ea7261cb53 100644
--- a/src/core/crypto/onion_ntor.c
+++ b/src/core/crypto/onion_ntor.c
@@ -27,7 +27,7 @@
#include "lib/crypt_ops/crypto_hkdf.h"
#include "lib/crypt_ops/crypto_util.h"
#include "lib/ctime/di_ops.h"
-#include "lib/log/torlog.h"
+#include "lib/log/log.h"
#include "lib/log/util_bug.h"
#include "core/crypto/onion_ntor.h"
diff --git a/src/core/include.am b/src/core/include.am
index 1f37044e9a..cd9edc4493 100644
--- a/src/core/include.am
+++ b/src/core/include.am
@@ -34,7 +34,6 @@ LIBTOR_APP_A_SOURCES = \
src/core/or/connection_edge.c \
src/core/or/connection_or.c \
src/core/or/dos.c \
- src/core/or/git_revision.c \
src/core/or/policies.c \
src/core/or/protover.c \
src/core/or/reasons.c \
@@ -135,10 +134,6 @@ else
src_core_libtor_app_testing_a_SOURCES =
endif
-src/core/or/git_revision.$(OBJEXT) \
- src/core/or/src_core_libtor_app_testing_a-git_revision.$(OBJEXT): \
- micro-revision.i
-
AM_CPPFLAGS += -DSHARE_DATADIR="\"$(datadir)\"" \
-DLOCALSTATEDIR="\"$(localstatedir)\"" \
-DBINDIR="\"$(bindir)\""
@@ -190,7 +185,6 @@ noinst_HEADERS += \
src/core/or/entry_connection_st.h \
src/core/or/entry_port_cfg_st.h \
src/core/or/extend_info_st.h \
- src/core/or/git_revision.h \
src/core/or/listener_connection_st.h \
src/core/or/or.h \
src/core/or/or_circuit_st.h \
diff --git a/src/core/mainloop/main.c b/src/core/mainloop/main.c
index c5773ddfc1..c648d236bb 100644
--- a/src/core/mainloop/main.c
+++ b/src/core/mainloop/main.c
@@ -116,6 +116,7 @@
#include "lib/sandbox/sandbox.h"
#include "lib/fs/lockfile.h"
#include "lib/net/buffers_net.h"
+#include "lib/net/resolve.h"
#include "lib/tls/tortls.h"
#include "lib/evloop/compat_libevent.h"
#include "lib/encoding/confline.h"
@@ -4250,10 +4251,10 @@ tor_run_main(const tor_main_configuration_t *tor_cfg)
#endif /* defined(NT_SERVICE) */
{
int init_rv = tor_init(argc, argv);
- if (init_rv < 0)
- return -1;
- else if (init_rv > 0)
- return 0;
+ if (init_rv) {
+ tor_free_all(0);
+ return (init_rv < 0) ? -1 : 0;
+ }
}
if (get_options()->Sandbox && get_options()->command == CMD_RUN_TOR) {
@@ -4261,6 +4262,7 @@ tor_run_main(const tor_main_configuration_t *tor_cfg)
if (sandbox_init(cfg)) {
log_err(LD_BUG,"Failed to create syscall sandbox filter");
+ tor_free_all(0);
return -1;
}
diff --git a/src/core/mainloop/periodic.c b/src/core/mainloop/periodic.c
index c17c0c56d2..df5317eb34 100644
--- a/src/core/mainloop/periodic.c
+++ b/src/core/mainloop/periodic.c
@@ -141,8 +141,8 @@ periodic_event_destroy(periodic_event_item_t *event)
event->last_action_time = 0;
}
-/** Enable the given event which means the event is launched and then the
- * event's enabled flag is set. This can be called for an event that is
+/** Enable the given event by setting its "enabled" flag and scheduling it to
+ * run immediately in the event loop. This can be called for an event that is
* already enabled. */
void
periodic_event_enable(periodic_event_item_t *event)
@@ -153,7 +153,9 @@ periodic_event_enable(periodic_event_item_t *event)
return;
}
- periodic_event_launch(event);
+ tor_assert(event->ev);
+ event->enabled = 1;
+ mainloop_event_activate(event->ev);
}
/** Disable the given event which means the event is destroyed and then the
diff --git a/src/core/or/addr_policy_st.h b/src/core/or/addr_policy_st.h
index be3e9d8f01..222a067252 100644
--- a/src/core/or/addr_policy_st.h
+++ b/src/core/or/addr_policy_st.h
@@ -18,7 +18,7 @@ typedef enum {
#define addr_policy_action_bitfield_t ENUM_BF(addr_policy_action_t)
/** A reference-counted address policy rule. */
-typedef struct addr_policy_t {
+struct addr_policy_t {
int refcnt; /**< Reference count */
/** What to do when the policy matches.*/
addr_policy_action_bitfield_t policy_type:2;
@@ -41,6 +41,6 @@ typedef struct addr_policy_t {
tor_addr_t addr;
uint16_t prt_min; /**< Lowest port number to accept/reject. */
uint16_t prt_max; /**< Highest port number to accept/reject. */
-} addr_policy_t;
+};
#endif
diff --git a/src/core/or/channeltls.c b/src/core/or/channeltls.c
index 87f5a02b75..96898993c1 100644
--- a/src/core/or/channeltls.c
+++ b/src/core/or/channeltls.c
@@ -1837,7 +1837,8 @@ channel_tls_process_netinfo_cell(cell_t *cell, channel_tls_t *chan)
(int)(chan->conn->link_proto),
hex_str(identity_digest, DIGEST_LEN),
tor_addr_is_null(&my_apparent_addr) ?
- "<none>" : fmt_and_decorate_addr(&my_apparent_addr));
+ "<none>" :
+ safe_str_client(fmt_and_decorate_addr(&my_apparent_addr)));
}
assert_connection_ok(TO_CONN(chan->conn),time(NULL));
}
diff --git a/src/core/or/connection_edge.c b/src/core/or/connection_edge.c
index 2ffd402502..ab3c14d2c3 100644
--- a/src/core/or/connection_edge.c
+++ b/src/core/or/connection_edge.c
@@ -129,6 +129,13 @@
#endif
#endif /* defined(HAVE_LINUX_NETFILTER_IPV6_IP6_TABLES_H) */
+#ifdef HAVE_FCNTL_H
+#include <fcntl.h>
+#endif
+#ifdef HAVE_SYS_IOCTL_H
+#include <sys/ioctl.h>
+#endif
+
#if defined(HAVE_NET_IF_H) && defined(HAVE_NET_PFVAR_H)
#include <net/if.h>
#include <net/pfvar.h>
diff --git a/src/core/or/connection_or.c b/src/core/or/connection_or.c
index 159ee96266..c5ff10f6a3 100644
--- a/src/core/or/connection_or.c
+++ b/src/core/or/connection_or.c
@@ -52,6 +52,7 @@
#include "core/proto/proto_cell.h"
#include "core/or/reasons.h"
#include "core/or/relay.h"
+#include "feature/rend/rendcommon.h"
#include "feature/stats/rephist.h"
#include "feature/relay/router.h"
#include "feature/relay/routerkeys.h"
@@ -1938,10 +1939,13 @@ connection_or_client_learned_peer_id(or_connection_t *conn,
conn->identity_digest);
const int is_authority_fingerprint = router_digest_is_trusted_dir(
conn->identity_digest);
+ const int non_anonymous_mode = rend_non_anonymous_mode_enabled(options);
int severity;
const char *extra_log = "";
- if (server_mode(options)) {
+ /* Relays and Single Onion Services make direct connections using
+ * untrusted authentication keys. */
+ if (server_mode(options) || non_anonymous_mode) {
severity = LOG_PROTOCOL_WARN;
} else {
if (using_hardcoded_fingerprints) {
@@ -1965,8 +1969,8 @@ connection_or_client_learned_peer_id(or_connection_t *conn,
}
log_fn(severity, LD_HANDSHAKE,
- "Tried connecting to router at %s:%d, but RSA identity key was not "
- "as expected: wanted %s + %s but got %s + %s.%s",
+ "Tried connecting to router at %s:%d, but RSA + ed25519 identity "
+ "keys were not as expected: wanted %s + %s but got %s + %s.%s",
conn->base_.address, conn->base_.port,
expected_rsa, expected_ed, seen_rsa, seen_ed, extra_log);
@@ -1983,8 +1987,8 @@ connection_or_client_learned_peer_id(or_connection_t *conn,
}
if (!expected_ed_key && ed_peer_id) {
- log_info(LD_HANDSHAKE, "(we had no Ed25519 ID in mind when we made this "
- "connection.");
+ log_info(LD_HANDSHAKE, "(We had no Ed25519 ID in mind when we made this "
+ "connection.)");
connection_or_set_identity_digest(conn,
(const char*)rsa_peer_id, ed_peer_id);
changed_identity = 1;
diff --git a/src/core/or/or.h b/src/core/or/or.h
index e485b3a408..f0cef06011 100644
--- a/src/core/or/or.h
+++ b/src/core/or/or.h
@@ -47,11 +47,9 @@
#include "lib/log/escape.h"
#include "lib/log/ratelim.h"
#include "lib/log/util_bug.h"
-#include "lib/malloc/util_malloc.h"
+#include "lib/malloc/malloc.h"
#include "lib/net/address.h"
-#include "lib/net/ipv4.h"
-#include "lib/net/ipv6.h"
-#include "lib/net/resolve.h"
+#include "lib/net/inaddr.h"
#include "lib/net/socket.h"
#include "lib/string/compat_ctype.h"
#include "lib/string/compat_string.h"
diff --git a/src/core/or/policies.c b/src/core/or/policies.c
index e01415f95e..7f5d5dd10f 100644
--- a/src/core/or/policies.c
+++ b/src/core/or/policies.c
@@ -317,6 +317,14 @@ parse_reachable_addresses(void)
}
}
+ /* Prepend a reject *.* to reachable_(or|dir)_addr_policy */
+ if (!ret && (options->ReachableDirAddresses ||
+ options->ReachableORAddresses ||
+ options->ReachableAddresses)) {
+ append_exit_policy_string(&reachable_or_addr_policy, "reject *:*");
+ append_exit_policy_string(&reachable_dir_addr_policy, "reject *:*");
+ }
+
return ret;
}
diff --git a/src/core/or/relay.c b/src/core/or/relay.c
index 32bb69d25f..6e1adfaff3 100644
--- a/src/core/or/relay.c
+++ b/src/core/or/relay.c
@@ -64,6 +64,7 @@
#include "lib/crypt_ops/crypto_rand.h"
#include "lib/crypt_ops/crypto_util.h"
#include "feature/dircache/directory.h"
+#include "feature/relay/dns.h"
#include "feature/stats/geoip.h"
#include "feature/hs/hs_cache.h"
#include "core/mainloop/main.h"
@@ -2005,9 +2006,10 @@ connection_edge_package_raw_inbuf(edge_connection_t *conn, int package_partial,
}
if (connection_edge_send_command(conn, RELAY_COMMAND_DATA,
- payload, length) < 0 )
+ payload, length) < 0 ) {
/* circuit got marked for close, don't continue, don't need to mark conn */
return 0;
+ }
if (!cpath_layer) { /* non-rendezvous exit */
tor_assert(circ->package_window > 0);
@@ -2537,6 +2539,8 @@ cell_queues_check_size(void)
const size_t geoip_client_cache_total =
geoip_client_cache_total_allocation();
alloc += geoip_client_cache_total;
+ const size_t dns_cache_total = dns_cache_total_allocation();
+ alloc += dns_cache_total;
if (alloc >= get_options()->MaxMemInQueues_low_threshold) {
last_time_under_memory_pressure = approx_time();
if (alloc >= get_options()->MaxMemInQueues) {
@@ -2554,6 +2558,11 @@ cell_queues_check_size(void)
(size_t)(get_options()->MaxMemInQueues / 10);
alloc -= geoip_client_cache_handle_oom(now, bytes_to_remove);
}
+ if (dns_cache_total > get_options()->MaxMemInQueues / 5) {
+ const size_t bytes_to_remove =
+ dns_cache_total - (size_t)(get_options()->MaxMemInQueues / 10);
+ alloc -= dns_cache_handle_oom(now, bytes_to_remove);
+ }
circuits_handle_oom(alloc);
return 1;
}
diff --git a/src/core/or/scheduler.c b/src/core/or/scheduler.c
index e19059f0c5..dd028fc785 100644
--- a/src/core/or/scheduler.c
+++ b/src/core/or/scheduler.c
@@ -351,8 +351,8 @@ set_scheduler(void)
/* Finally we notice log if we switched schedulers. We use the type in case
* two schedulers share a scheduler object. */
if (old_scheduler_type != the_scheduler->type) {
- log_notice(LD_CONFIG, "Scheduler type %s has been enabled.",
- get_scheduler_type_string(the_scheduler->type));
+ log_info(LD_CONFIG, "Scheduler type %s has been enabled.",
+ get_scheduler_type_string(the_scheduler->type));
}
}
diff --git a/src/core/or/socks_request_st.h b/src/core/or/socks_request_st.h
index d7b979c3eb..17b668e179 100644
--- a/src/core/or/socks_request_st.h
+++ b/src/core/or/socks_request_st.h
@@ -70,6 +70,8 @@ struct socks_request_t {
/** The negotiated password value if any (for socks5). This value is NOT
* nul-terminated; see passwordlen for its length. */
char *password;
+
+ uint8_t socks5_atyp; /* SOCKS5 address type */
};
#endif
diff --git a/src/core/proto/proto_ext_or.h b/src/core/proto/proto_ext_or.h
index 708a45974b..2ff6ad45ca 100644
--- a/src/core/proto/proto_ext_or.h
+++ b/src/core/proto/proto_ext_or.h
@@ -10,11 +10,11 @@
struct buf_t;
/** A parsed Extended ORPort message. */
-typedef struct ext_or_cmd_t {
+struct ext_or_cmd_t {
uint16_t cmd; /** Command type */
uint16_t len; /** Body length */
char body[FLEXIBLE_ARRAY_MEMBER]; /** Message body */
-} ext_or_cmd_t;
+};
int fetch_ext_or_command_from_buf(struct buf_t *buf,
struct ext_or_cmd_t **out);
diff --git a/src/core/proto/proto_socks.c b/src/core/proto/proto_socks.c
index 6912441472..ccf96f7814 100644
--- a/src/core/proto/proto_socks.c
+++ b/src/core/proto/proto_socks.c
@@ -17,12 +17,28 @@
#include "core/or/socks_request_st.h"
+#include "trunnel/socks5.h"
+
+#define SOCKS_VER_5 0x05 /* First octet of non-auth SOCKS5 messages */
+#define SOCKS_VER_4 0x04 /* SOCKS4 messages */
+#define SOCKS_AUTH 0x01 /* SOCKS5 auth messages */
+
+typedef enum {
+ SOCKS_RESULT_INVALID = -1, /* Message invalid. */
+ SOCKS_RESULT_TRUNCATED = 0, /* Message incomplete/truncated. */
+ SOCKS_RESULT_DONE = 1, /* OK, we're done. */
+ SOCKS_RESULT_MORE_EXPECTED = 2, /* OK, more messages expected. */
+} socks_result_t;
+
static void socks_request_set_socks5_error(socks_request_t *req,
socks5_reply_status_t reason);
-static int parse_socks(const char *data, size_t datalen, socks_request_t *req,
- int log_sockstype, int safe_socks, ssize_t *drain_out,
- size_t *want_length_out);
+static socks_result_t parse_socks(const char *data,
+ size_t datalen,
+ socks_request_t *req,
+ int log_sockstype,
+ int safe_socks,
+ size_t *drain_out);
static int parse_socks_client(const uint8_t *data, size_t datalen,
int state, char **reason,
ssize_t *drain_out);
@@ -86,6 +102,689 @@ socks_request_free_(socks_request_t *req)
tor_free(req);
}
+/**
+ * Parse a single SOCKS4 request from buffer <b>raw_data</b> of length
+ * <b>datalen</b> and update relevant fields of <b>req</b>. If SOCKS4a
+ * request is detected, set <b>*is_socks4a<b> to true. Set <b>*drain_out</b>
+ * to number of bytes we parsed so far.
+ *
+ * Return SOCKS_RESULT_DONE if parsing succeeded, SOCKS_RESULT_INVALID if
+ * parsing failed because of invalid input or SOCKS_RESULT_TRUNCATED if it
+ * failed due to incomplete (truncated) input.
+ */
+static socks_result_t
+parse_socks4_request(const uint8_t *raw_data, socks_request_t *req,
+ size_t datalen, int *is_socks4a, size_t *drain_out)
+{
+ // http://ss5.sourceforge.net/socks4.protocol.txt
+ // http://ss5.sourceforge.net/socks4A.protocol.txt
+ socks_result_t res = SOCKS_RESULT_DONE;
+ tor_addr_t destaddr;
+
+ tor_assert(is_socks4a);
+ tor_assert(drain_out);
+
+ *is_socks4a = 0;
+ *drain_out = 0;
+
+ req->socks_version = SOCKS_VER_4;
+
+ socks4_client_request_t *trunnel_req;
+
+ ssize_t parsed =
+ socks4_client_request_parse(&trunnel_req, raw_data, datalen);
+
+ if (parsed == -1) {
+ log_warn(LD_APP, "socks4: parsing failed - invalid request.");
+ res = SOCKS_RESULT_INVALID;
+ goto end;
+ } else if (parsed == -2) {
+ res = SOCKS_RESULT_TRUNCATED;
+ if (datalen >= MAX_SOCKS_MESSAGE_LEN) {
+ log_warn(LD_APP, "socks4: parsing failed - invalid request.");
+ res = SOCKS_RESULT_INVALID;
+ }
+ goto end;
+ }
+
+ tor_assert(parsed >= 0);
+ *drain_out = (size_t)parsed;
+
+ uint8_t command = socks4_client_request_get_command(trunnel_req);
+ req->command = command;
+
+ req->port = socks4_client_request_get_port(trunnel_req);
+ uint32_t dest_ip = socks4_client_request_get_addr(trunnel_req);
+
+ if ((!req->port && req->command != SOCKS_COMMAND_RESOLVE) ||
+ dest_ip == 0) {
+ log_warn(LD_APP, "socks4: Port or DestIP is zero. Rejecting.");
+ res = SOCKS_RESULT_INVALID;
+ goto end;
+ }
+
+ *is_socks4a = (dest_ip >> 8) == 0;
+
+ const char *username = socks4_client_request_get_username(trunnel_req);
+ const size_t usernamelen = username ? strlen(username) : 0;
+ if (username && usernamelen) {
+ if (usernamelen > MAX_SOCKS_MESSAGE_LEN) {
+ log_warn(LD_APP, "Socks4 user name too long; rejecting.");
+ res = SOCKS_RESULT_INVALID;
+ goto end;
+ }
+
+ tor_free(req->username);
+ req->got_auth = 1;
+ req->username = tor_strdup(username);
+ req->usernamelen = usernamelen;
+ }
+
+ if (*is_socks4a) {
+ // We cannot rely on trunnel here, as we want to detect if
+ // we have abnormally long hostname field.
+ const char *hostname = (char *)raw_data + SOCKS4_NETWORK_LEN +
+ usernamelen + 1;
+ size_t hostname_len = (char *)raw_data + datalen - hostname;
+
+ if (hostname_len <= sizeof(req->address)) {
+ const char *trunnel_hostname =
+ socks4_client_request_get_socks4a_addr_hostname(trunnel_req);
+
+ if (trunnel_hostname)
+ strlcpy(req->address, trunnel_hostname, sizeof(req->address));
+ } else {
+ log_warn(LD_APP, "socks4: Destaddr too long. Rejecting.");
+ res = SOCKS_RESULT_INVALID;
+ goto end;
+ }
+ } else {
+ tor_addr_from_ipv4h(&destaddr, dest_ip);
+
+ if (!tor_addr_to_str(req->address, &destaddr,
+ MAX_SOCKS_ADDR_LEN, 0)) {
+ res = SOCKS_RESULT_INVALID;
+ goto end;
+ }
+ }
+
+ end:
+ socks4_client_request_free(trunnel_req);
+
+ return res;
+}
+
+/**
+ * Validate SOCKS4/4a related fields in <b>req</b>. Expect SOCKS4a
+ * if <b>is_socks4a</b> is true. If <b>log_sockstype</b> is true,
+ * log a notice about possible DNS leaks on local system. If
+ * <b>safe_socks</b> is true, reject insecure usage of SOCKS
+ * protocol.
+ *
+ * Return SOCKS_RESULT_DONE if validation passed or
+ * SOCKS_RESULT_INVALID if it failed.
+ */
+static socks_result_t
+process_socks4_request(const socks_request_t *req, int is_socks4a,
+ int log_sockstype, int safe_socks)
+{
+ if (is_socks4a && !addressmap_have_mapping(req->address, 0)) {
+ log_unsafe_socks_warning(4, req->address, req->port, safe_socks);
+
+ if (safe_socks)
+ return SOCKS_RESULT_INVALID;
+ }
+
+ if (req->command != SOCKS_COMMAND_CONNECT &&
+ req->command != SOCKS_COMMAND_RESOLVE) {
+ /* not a connect or resolve? we don't support it. (No resolve_ptr with
+ * socks4.) */
+ log_warn(LD_APP, "socks4: command %d not recognized. Rejecting.",
+ req->command);
+ return SOCKS_RESULT_INVALID;
+ }
+
+ if (is_socks4a) {
+ if (log_sockstype)
+ log_notice(LD_APP,
+ "Your application (using socks4a to port %d) instructed "
+ "Tor to take care of the DNS resolution itself if "
+ "necessary. This is good.", req->port);
+ }
+
+ if (!string_is_valid_dest(req->address)) {
+ log_warn(LD_PROTOCOL,
+ "Your application (using socks4 to port %d) gave Tor "
+ "a malformed hostname: %s. Rejecting the connection.",
+ req->port, escaped_safe_str_client(req->address));
+ return SOCKS_RESULT_INVALID;
+ }
+
+ return SOCKS_RESULT_DONE;
+}
+
+/** Parse a single SOCKS5 version identifier/method selection message
+ * from buffer <b>raw_data</b> (of length <b>datalen</b>). Update
+ * relevant fields of <b>req</b> (if any). Set <b>*have_user_pass</b> to
+ * true if username/password method is found. Set <b>*have_no_auth</b>
+ * if no-auth method is found. Set <b>*drain_out</b> to number of bytes
+ * we parsed so far.
+ *
+ * Return SOCKS_RESULT_DONE if parsing succeeded, SOCKS_RESULT_INVALID if
+ * parsing failed because of invalid input or SOCKS_RESULT_TRUNCATED if it
+ * failed due to incomplete (truncated) input.
+ */
+static socks_result_t
+parse_socks5_methods_request(const uint8_t *raw_data, socks_request_t *req,
+ size_t datalen, int *have_user_pass,
+ int *have_no_auth, size_t *drain_out)
+{
+ socks_result_t res = SOCKS_RESULT_DONE;
+ socks5_client_version_t *trunnel_req;
+
+ ssize_t parsed = socks5_client_version_parse(&trunnel_req, raw_data,
+ datalen);
+
+ (void)req;
+
+ tor_assert(have_no_auth);
+ tor_assert(have_user_pass);
+ tor_assert(drain_out);
+
+ *drain_out = 0;
+
+ if (parsed == -1) {
+ log_warn(LD_APP, "socks5: parsing failed - invalid version "
+ "id/method selection message.");
+ res = SOCKS_RESULT_INVALID;
+ goto end;
+ } else if (parsed == -2) {
+ res = SOCKS_RESULT_TRUNCATED;
+ if (datalen > MAX_SOCKS_MESSAGE_LEN) {
+ log_warn(LD_APP, "socks5: parsing failed - invalid version "
+ "id/method selection message.");
+ res = SOCKS_RESULT_INVALID;
+ }
+ goto end;
+ }
+
+ tor_assert(parsed >= 0);
+ *drain_out = (size_t)parsed;
+
+ size_t n_methods = (size_t)socks5_client_version_get_n_methods(trunnel_req);
+ if (n_methods == 0) {
+ res = SOCKS_RESULT_INVALID;
+ goto end;
+ }
+
+ *have_no_auth = 0;
+ *have_user_pass = 0;
+
+ for (size_t i = 0; i < n_methods; i++) {
+ uint8_t method = socks5_client_version_get_methods(trunnel_req,
+ i);
+
+ if (method == SOCKS_USER_PASS) {
+ *have_user_pass = 1;
+ } else if (method == SOCKS_NO_AUTH) {
+ *have_no_auth = 1;
+ }
+ }
+
+ end:
+ socks5_client_version_free(trunnel_req);
+
+ return res;
+}
+
+/**
+ * Validate and respond to version identifier/method selection message
+ * we parsed in parse_socks5_methods_request (corresponding to <b>req</b>
+ * and having user/pass method if <b>have_user_pass</b> is true, no-auth
+ * method if <b>have_no_auth</b> is true). Set <b>req->reply</b> to
+ * an appropriate response (in SOCKS5 wire format).
+ *
+ * On success, return SOCKS_RESULT_DONE. On failure, return
+ * SOCKS_RESULT_INVALID.
+ */
+static socks_result_t
+process_socks5_methods_request(socks_request_t *req, int have_user_pass,
+ int have_no_auth)
+{
+ socks_result_t res = SOCKS_RESULT_DONE;
+ socks5_server_method_t *trunnel_resp = socks5_server_method_new();
+
+ socks5_server_method_set_version(trunnel_resp, SOCKS_VER_5);
+
+ if (have_user_pass && !(have_no_auth && req->socks_prefer_no_auth)) {
+ req->auth_type = SOCKS_USER_PASS;
+ socks5_server_method_set_method(trunnel_resp, SOCKS_USER_PASS);
+
+ req->socks_version = SOCKS_VER_5;
+ // FIXME: come up with better way to remember
+ // that we negotiated auth
+
+ log_debug(LD_APP,"socks5: accepted method 2 (username/password)");
+ } else if (have_no_auth) {
+ req->auth_type = SOCKS_NO_AUTH;
+ socks5_server_method_set_method(trunnel_resp, SOCKS_NO_AUTH);
+
+ req->socks_version = SOCKS_VER_5;
+
+ log_debug(LD_APP,"socks5: accepted method 0 (no authentication)");
+ } else {
+ log_warn(LD_APP,
+ "socks5: offered methods don't include 'no auth' or "
+ "username/password. Rejecting.");
+ socks5_server_method_set_method(trunnel_resp, 0xFF); // reject all
+ res = SOCKS_RESULT_INVALID;
+ }
+
+ const char *errmsg = socks5_server_method_check(trunnel_resp);
+ if (errmsg) {
+ log_warn(LD_APP, "socks5: method selection validation failed: %s",
+ errmsg);
+ res = SOCKS_RESULT_INVALID;
+ } else {
+ ssize_t encoded =
+ socks5_server_method_encode(req->reply, sizeof(req->reply),
+ trunnel_resp);
+
+ if (encoded < 0) {
+ log_warn(LD_APP, "socks5: method selection encoding failed");
+ res = SOCKS_RESULT_INVALID;
+ } else {
+ req->replylen = (size_t)encoded;
+ }
+ }
+
+ socks5_server_method_free(trunnel_resp);
+ return res;
+}
+
+/**
+ * Parse SOCKS5/RFC1929 username/password request from buffer
+ * <b>raw_data</b> of length <b>datalen</b> and update relevant
+ * fields of <b>req</b>. Set <b>*drain_out</b> to number of bytes
+ * we parsed so far.
+ *
+ * Return SOCKS_RESULT_DONE if parsing succeeded, SOCKS_RESULT_INVALID if
+ * parsing failed because of invalid input or SOCKS_RESULT_TRUNCATED if it
+ * failed due to incomplete (truncated) input.
+ */
+static socks_result_t
+parse_socks5_userpass_auth(const uint8_t *raw_data, socks_request_t *req,
+ size_t datalen, size_t *drain_out)
+{
+ socks_result_t res = SOCKS_RESULT_DONE;
+ socks5_client_userpass_auth_t *trunnel_req = NULL;
+ ssize_t parsed = socks5_client_userpass_auth_parse(&trunnel_req, raw_data,
+ datalen);
+ tor_assert(drain_out);
+ *drain_out = 0;
+
+ if (parsed == -1) {
+ log_warn(LD_APP, "socks5: parsing failed - invalid user/pass "
+ "authentication message.");
+ res = SOCKS_RESULT_INVALID;
+ goto end;
+ } else if (parsed == -2) {
+ res = SOCKS_RESULT_TRUNCATED;
+ goto end;
+ }
+
+ tor_assert(parsed >= 0);
+ *drain_out = (size_t)parsed;
+
+ uint8_t usernamelen =
+ socks5_client_userpass_auth_get_username_len(trunnel_req);
+ uint8_t passwordlen =
+ socks5_client_userpass_auth_get_passwd_len(trunnel_req);
+ const char *username =
+ socks5_client_userpass_auth_getconstarray_username(trunnel_req);
+ const char *password =
+ socks5_client_userpass_auth_getconstarray_passwd(trunnel_req);
+
+ if (usernamelen && username) {
+ tor_free(req->username);
+ req->username = tor_memdup_nulterm(username, usernamelen);
+ req->usernamelen = usernamelen;
+
+ req->got_auth = 1;
+ }
+
+ if (passwordlen && password) {
+ tor_free(req->password);
+ req->password = tor_memdup_nulterm(password, passwordlen);
+ req->passwordlen = passwordlen;
+
+ req->got_auth = 1;
+ }
+
+ end:
+ socks5_client_userpass_auth_free(trunnel_req);
+ return res;
+}
+
+/**
+ * Validate and respond to SOCKS5 username/password request we
+ * parsed in parse_socks5_userpass_auth (corresponding to <b>req</b>.
+ * Set <b>req->reply</b> to appropriate responsed. Return
+ * SOCKS_RESULT_DONE on success or SOCKS_RESULT_INVALID on failure.
+ */
+static socks_result_t
+process_socks5_userpass_auth(socks_request_t *req)
+{
+ socks_result_t res = SOCKS_RESULT_DONE;
+ socks5_server_userpass_auth_t *trunnel_resp =
+ socks5_server_userpass_auth_new();
+
+ if (req->socks_version != SOCKS_VER_5) {
+ res = SOCKS_RESULT_INVALID;
+ goto end;
+ }
+
+ if (req->auth_type != SOCKS_USER_PASS &&
+ req->auth_type != SOCKS_NO_AUTH) {
+ res = SOCKS_RESULT_INVALID;
+ goto end;
+ }
+
+ socks5_server_userpass_auth_set_version(trunnel_resp, SOCKS_AUTH);
+ socks5_server_userpass_auth_set_status(trunnel_resp, 0); // auth OK
+
+ const char *errmsg = socks5_server_userpass_auth_check(trunnel_resp);
+ if (errmsg) {
+ log_warn(LD_APP, "socks5: server userpass auth validation failed: %s",
+ errmsg);
+ res = SOCKS_RESULT_INVALID;
+ goto end;
+ }
+
+ ssize_t encoded = socks5_server_userpass_auth_encode(req->reply,
+ sizeof(req->reply),
+ trunnel_resp);
+
+ if (encoded < 0) {
+ log_warn(LD_APP, "socks5: server userpass auth encoding failed");
+ res = SOCKS_RESULT_INVALID;
+ goto end;
+ }
+
+ req->replylen = (size_t)encoded;
+
+ end:
+ socks5_server_userpass_auth_free(trunnel_resp);
+ return res;
+}
+
+/**
+ * Parse a single SOCKS5 client request (RFC 1928 section 4) from buffer
+ * <b>raw_data</b> of length <b>datalen</b> and update relevant field of
+ * <b>req</b>. Set <b>*drain_out</b> to number of bytes we parsed so far.
+ *
+ * Return SOCKS_RESULT_DONE if parsing succeeded, SOCKS_RESULT_INVALID if
+ * parsing failed because of invalid input or SOCKS_RESULT_TRUNCATED if it
+ * failed due to incomplete (truncated) input.
+ */
+static socks_result_t
+parse_socks5_client_request(const uint8_t *raw_data, socks_request_t *req,
+ size_t datalen, size_t *drain_out)
+{
+ socks_result_t res = SOCKS_RESULT_DONE;
+ tor_addr_t destaddr;
+ socks5_client_request_t *trunnel_req = NULL;
+ ssize_t parsed =
+ socks5_client_request_parse(&trunnel_req, raw_data, datalen);
+ if (parsed == -1) {
+ log_warn(LD_APP, "socks5: parsing failed - invalid client request");
+ res = SOCKS_RESULT_INVALID;
+ goto end;
+ } else if (parsed == -2) {
+ res = SOCKS_RESULT_TRUNCATED;
+ goto end;
+ }
+
+ tor_assert(parsed >= 0);
+ *drain_out = (size_t)parsed;
+
+ if (socks5_client_request_get_version(trunnel_req) != 5) {
+ res = SOCKS_RESULT_INVALID;
+ goto end;
+ }
+
+ req->command = socks5_client_request_get_command(trunnel_req);
+
+ req->port = socks5_client_request_get_dest_port(trunnel_req);
+
+ uint8_t atype = socks5_client_request_get_atype(trunnel_req);
+ req->socks5_atyp = atype;
+
+ switch (atype) {
+ case 1: {
+ uint32_t ipv4 = socks5_client_request_get_dest_addr_ipv4(trunnel_req);
+ tor_addr_from_ipv4h(&destaddr, ipv4);
+
+ tor_addr_to_str(req->address, &destaddr, sizeof(req->address), 1);
+ } break;
+ case 3: {
+ const struct domainname_st *dns_name =
+ socks5_client_request_getconst_dest_addr_domainname(trunnel_req);
+
+ const char *hostname = domainname_getconstarray_name(dns_name);
+
+ strlcpy(req->address, hostname, sizeof(req->address));
+ } break;
+ case 4: {
+ const char *ipv6 =
+ (const char *)socks5_client_request_getarray_dest_addr_ipv6(
+ trunnel_req);
+ tor_addr_from_ipv6_bytes(&destaddr, ipv6);
+
+ tor_addr_to_str(req->address, &destaddr, sizeof(req->address), 1);
+ } break;
+ default: {
+ res = -1;
+ } break;
+ }
+
+ end:
+ socks5_client_request_free(trunnel_req);
+ return res;
+}
+
+/**
+ * Validate and respond to SOCKS5 request we parsed in
+ * parse_socks5_client_request (corresponding to <b>req</b>.
+ * Write appropriate response to <b>req->reply</b> (in
+ * SOCKS5 wire format). If <b>log_sockstype</b> is true, log a
+ * notice about possible DNS leaks on local system. If
+ * <b>safe_socks</b> is true, disallow insecure usage of SOCKS
+ * protocol. Return SOCKS_RESULT_DONE on success or
+ * SOCKS_RESULT_INVALID on failure.
+ */
+static socks_result_t
+process_socks5_client_request(socks_request_t *req,
+ int log_sockstype,
+ int safe_socks)
+{
+ socks_result_t res = SOCKS_RESULT_DONE;
+
+ if (req->command != SOCKS_COMMAND_CONNECT &&
+ req->command != SOCKS_COMMAND_RESOLVE &&
+ req->command != SOCKS_COMMAND_RESOLVE_PTR) {
+ socks_request_set_socks5_error(req,SOCKS5_COMMAND_NOT_SUPPORTED);
+ res = SOCKS_RESULT_INVALID;
+ goto end;
+ }
+
+ if (req->command == SOCKS_COMMAND_RESOLVE_PTR &&
+ !string_is_valid_ipv4_address(req->address) &&
+ !string_is_valid_ipv6_address(req->address)) {
+ socks_request_set_socks5_error(req, SOCKS5_ADDRESS_TYPE_NOT_SUPPORTED);
+ log_warn(LD_APP, "socks5 received RESOLVE_PTR command with "
+ "hostname type. Rejecting.");
+
+ res = SOCKS_RESULT_INVALID;
+ goto end;
+ }
+
+ if (!string_is_valid_dest(req->address)) {
+ socks_request_set_socks5_error(req, SOCKS5_GENERAL_ERROR);
+
+ log_warn(LD_PROTOCOL,
+ "Your application (using socks5 to port %d) gave Tor "
+ "a malformed hostname: %s. Rejecting the connection.",
+ req->port, escaped_safe_str_client(req->address));
+
+ res = SOCKS_RESULT_INVALID;
+ goto end;
+ }
+
+ if (req->socks5_atyp == 1 || req->socks5_atyp == 4) {
+ if (req->command != SOCKS_COMMAND_RESOLVE_PTR &&
+ !addressmap_have_mapping(req->address,0)) {
+ log_unsafe_socks_warning(5, req->address, req->port, safe_socks);
+ if (safe_socks) {
+ socks_request_set_socks5_error(req, SOCKS5_NOT_ALLOWED);
+ res = SOCKS_RESULT_INVALID;
+ goto end;
+ }
+ }
+ }
+
+ if (log_sockstype)
+ log_notice(LD_APP,
+ "Your application (using socks5 to port %d) instructed "
+ "Tor to take care of the DNS resolution itself if "
+ "necessary. This is good.", req->port);
+
+ end:
+ return res;
+}
+
+/**
+ * Handle (parse, validate, process, respond) a single SOCKS
+ * message in buffer <b>raw_data</b> of length <b>datalen</b>.
+ * Update relevant fields of <b>req</b>. If <b>log_sockstype</b>
+ * is true, log a warning about possible DNS leaks on local
+ * system. If <b>safe_socks</b> is true, disallow insecure
+ * usage of SOCKS protocol. Set <b>*drain_out</b> to number
+ * of bytes in <b>raw_data</b> that we processed so far and
+ * that can be safely drained from buffer.
+ *
+ * Return:
+ * - SOCKS_RESULT_DONE if succeeded and not expecting further
+ * messages from client.
+ * - SOCKS_RESULT_INVALID if any of the steps failed due to
+ * request being invalid or unexpected given current state.
+ * - SOCKS_RESULT_TRUNCATED if we do not found an expected
+ * SOCKS message in its entirety (more stuff has to arrive
+ * from client).
+ * - SOCKS_RESULT_MORE_EXPECTED if we handled current message
+ * successfully, but we expect more messages from the
+ * client.
+ */
+static socks_result_t
+handle_socks_message(const uint8_t *raw_data, size_t datalen,
+ socks_request_t *req, int log_sockstype,
+ int safe_socks, size_t *drain_out)
+{
+ socks_result_t res = SOCKS_RESULT_DONE;
+
+ uint8_t socks_version = raw_data[0];
+
+ if (socks_version == SOCKS_AUTH)
+ socks_version = SOCKS_VER_5; // SOCKS5 username/pass subnegotiation
+
+ if (socks_version == SOCKS_VER_4) {
+ if (datalen < SOCKS4_NETWORK_LEN) {
+ res = 0;
+ goto end;
+ }
+
+ int is_socks4a = 0;
+ res = parse_socks4_request((const uint8_t *)raw_data, req, datalen,
+ &is_socks4a, drain_out);
+
+ if (res != SOCKS_RESULT_DONE) {
+ goto end;
+ }
+
+ res = process_socks4_request(req, is_socks4a,log_sockstype,
+ safe_socks);
+
+ if (res != SOCKS_RESULT_DONE) {
+ goto end;
+ }
+
+ goto end;
+ } else if (socks_version == SOCKS_VER_5) {
+ if (datalen < 2) { /* version and another byte */
+ res = 0;
+ goto end;
+ }
+ /* RFC1929 SOCKS5 username/password subnegotiation. */
+ if (!req->got_auth && (raw_data[0] == 1 ||
+ req->auth_type == SOCKS_USER_PASS)) {
+ res = parse_socks5_userpass_auth(raw_data, req, datalen,
+ drain_out);
+
+ if (res != SOCKS_RESULT_DONE) {
+ goto end;
+ }
+
+ res = process_socks5_userpass_auth(req);
+ if (res != SOCKS_RESULT_DONE) {
+ goto end;
+ }
+
+ res = SOCKS_RESULT_MORE_EXPECTED;
+ goto end;
+ } else if (req->socks_version != SOCKS_VER_5) {
+ int have_user_pass, have_no_auth;
+ res = parse_socks5_methods_request(raw_data, req, datalen,
+ &have_user_pass,
+ &have_no_auth,
+ drain_out);
+
+ if (res != SOCKS_RESULT_DONE) {
+ goto end;
+ }
+
+ res = process_socks5_methods_request(req, have_user_pass,
+ have_no_auth);
+
+ if (res != SOCKS_RESULT_DONE) {
+ goto end;
+ }
+
+ res = SOCKS_RESULT_MORE_EXPECTED;
+ goto end;
+ } else {
+ res = parse_socks5_client_request(raw_data, req,
+ datalen, drain_out);
+ if (res != SOCKS_RESULT_DONE) {
+ socks_request_set_socks5_error(req, SOCKS5_GENERAL_ERROR);
+ goto end;
+ }
+
+ res = process_socks5_client_request(req, log_sockstype,
+ safe_socks);
+
+ if (res != SOCKS_RESULT_DONE) {
+ goto end;
+ }
+ }
+ } else {
+ *drain_out = datalen;
+ res = SOCKS_RESULT_INVALID;
+ }
+
+ end:
+ return res;
+}
+
/** There is a (possibly incomplete) socks handshake on <b>buf</b>, of one
* of the forms
* - socks4: "socksheader username\\0"
@@ -115,32 +814,50 @@ int
fetch_from_buf_socks(buf_t *buf, socks_request_t *req,
int log_sockstype, int safe_socks)
{
- int res;
- ssize_t n_drain;
- size_t want_length = 128;
+ int res = 0;
+ size_t datalen = buf_datalen(buf);
+ size_t n_drain;
const char *head = NULL;
- size_t datalen = 0;
+ socks_result_t socks_res;
+ size_t n_pullup;
- if (buf_datalen(buf) < 2) /* version and another byte */
- return 0;
+ if (buf_datalen(buf) < 2) { /* version and another byte */
+ res = 0;
+ goto end;
+ }
do {
n_drain = 0;
- buf_pullup(buf, want_length, &head, &datalen);
+ n_pullup = MIN(MAX_SOCKS_MESSAGE_LEN, buf_datalen(buf));
+ buf_pullup(buf, n_pullup, &head, &datalen);
tor_assert(head && datalen >= 2);
- want_length = 0;
- res = parse_socks(head, datalen, req, log_sockstype,
- safe_socks, &n_drain, &want_length);
+ socks_res = parse_socks(head, datalen, req, log_sockstype,
+ safe_socks, &n_drain);
- if (n_drain < 0)
+ if (socks_res == SOCKS_RESULT_INVALID)
buf_clear(buf);
- else if (n_drain > 0)
+ else if (socks_res != SOCKS_RESULT_TRUNCATED && n_drain > 0)
buf_drain(buf, n_drain);
- } while (res == 0 && head && want_length < buf_datalen(buf) &&
- buf_datalen(buf) >= 2);
+ switch (socks_res) {
+ case SOCKS_RESULT_INVALID:
+ res = -1;
+ break;
+ case SOCKS_RESULT_DONE:
+ res = 1;
+ break;
+ case SOCKS_RESULT_TRUNCATED:
+ if (datalen == n_pullup)
+ return 0;
+ /* FALLTHRU */
+ case SOCKS_RESULT_MORE_EXPECTED:
+ res = 0;
+ break;
+ }
+ } while (res == 0 && head && buf_datalen(buf) >= 2);
+ end:
return res;
}
@@ -151,12 +868,31 @@ static void
socks_request_set_socks5_error(socks_request_t *req,
socks5_reply_status_t reason)
{
- req->replylen = 10;
- memset(req->reply,0,10);
+ socks5_server_reply_t *trunnel_resp = socks5_server_reply_new();
+
+ socks5_server_reply_set_version(trunnel_resp, SOCKS_VER_5);
+ socks5_server_reply_set_reply(trunnel_resp, reason);
+ socks5_server_reply_set_atype(trunnel_resp, 0x01);
+
+ const char *errmsg = socks5_server_reply_check(trunnel_resp);
+ if (errmsg) {
+ log_warn(LD_APP, "socks5: reply validation failed: %s",
+ errmsg);
+ goto end;
+ }
+
+ ssize_t encoded = socks5_server_reply_encode(req->reply,
+ sizeof(req->reply),
+ trunnel_resp);
+ if (encoded < 0) {
+ log_warn(LD_APP, "socks5: reply encoding failed: %d",
+ (int)encoded);
+ } else {
+ req->replylen = (size_t)encoded;
+ }
- req->reply[0] = 0x05; // VER field.
- req->reply[1] = reason; // REP field.
- req->reply[3] = 0x01; // ATYP field.
+ end:
+ socks5_server_reply_free(trunnel_resp);
}
static const char SOCKS_PROXY_IS_NOT_AN_HTTP_PROXY_MSG[] =
@@ -194,350 +930,24 @@ static const char SOCKS_PROXY_IS_NOT_AN_HTTP_PROXY_MSG[] =
* we'd like to see in the input buffer, if they're available. */
static int
parse_socks(const char *data, size_t datalen, socks_request_t *req,
- int log_sockstype, int safe_socks, ssize_t *drain_out,
- size_t *want_length_out)
+ int log_sockstype, int safe_socks, size_t *drain_out)
{
- unsigned int len;
- char tmpbuf[TOR_ADDR_BUF_LEN+1];
- tor_addr_t destaddr;
- uint32_t destip;
- uint8_t socksver;
- char *next, *startaddr;
- unsigned char usernamelen, passlen;
- struct in_addr in;
+ uint8_t first_octet;
if (datalen < 2) {
/* We always need at least 2 bytes. */
- *want_length_out = 2;
return 0;
}
- if (req->socks_version == 5 && !req->got_auth) {
- /* See if we have received authentication. Strictly speaking, we should
- also check whether we actually negotiated username/password
- authentication. But some broken clients will send us authentication
- even if we negotiated SOCKS_NO_AUTH. */
- if (*data == 1) { /* username/pass version 1 */
- /* Format is: authversion [1 byte] == 1
- usernamelen [1 byte]
- username [usernamelen bytes]
- passlen [1 byte]
- password [passlen bytes] */
- usernamelen = (unsigned char)*(data + 1);
- if (datalen < 2u + usernamelen + 1u) {
- *want_length_out = 2u + usernamelen + 1u;
- return 0;
- }
- passlen = (unsigned char)*(data + 2u + usernamelen);
- if (datalen < 2u + usernamelen + 1u + passlen) {
- *want_length_out = 2u + usernamelen + 1u + passlen;
- return 0;
- }
- req->replylen = 2; /* 2 bytes of response */
- req->reply[0] = 1; /* authversion == 1 */
- req->reply[1] = 0; /* authentication successful */
- log_debug(LD_APP,
- "socks5: Accepted username/password without checking.");
- if (usernamelen) {
- req->username = tor_memdup(data+2u, usernamelen);
- req->usernamelen = usernamelen;
- }
- if (passlen) {
- req->password = tor_memdup(data+3u+usernamelen, passlen);
- req->passwordlen = passlen;
- }
- *drain_out = 2u + usernamelen + 1u + passlen;
- req->got_auth = 1;
- *want_length_out = 7; /* Minimal socks5 command. */
- return 0;
- } else if (req->auth_type == SOCKS_USER_PASS) {
- /* unknown version byte */
- log_warn(LD_APP, "Socks5 username/password version %d not recognized; "
- "rejecting.", (int)*data);
- return -1;
- }
- }
-
- socksver = *data;
-
- switch (socksver) { /* which version of socks? */
- case 5: /* socks5 */
-
- if (req->socks_version != 5) { /* we need to negotiate a method */
- unsigned char nummethods = (unsigned char)*(data+1);
- int have_user_pass, have_no_auth;
- int r=0;
- tor_assert(!req->socks_version);
- if (datalen < 2u+nummethods) {
- *want_length_out = 2u+nummethods;
- return 0;
- }
- if (!nummethods)
- return -1;
- req->replylen = 2; /* 2 bytes of response */
- req->reply[0] = 5; /* socks5 reply */
- have_user_pass = (memchr(data+2, SOCKS_USER_PASS, nummethods) !=NULL);
- have_no_auth = (memchr(data+2, SOCKS_NO_AUTH, nummethods) !=NULL);
- if (have_user_pass && !(have_no_auth && req->socks_prefer_no_auth)) {
- req->auth_type = SOCKS_USER_PASS;
- req->reply[1] = SOCKS_USER_PASS; /* tell client to use "user/pass"
- auth method */
- req->socks_version = 5; /* remember we've already negotiated auth */
- log_debug(LD_APP,"socks5: accepted method 2 (username/password)");
- r=0;
- } else if (have_no_auth) {
- req->reply[1] = SOCKS_NO_AUTH; /* tell client to use "none" auth
- method */
- req->socks_version = 5; /* remember we've already negotiated auth */
- log_debug(LD_APP,"socks5: accepted method 0 (no authentication)");
- r=0;
- } else {
- log_warn(LD_APP,
- "socks5: offered methods don't include 'no auth' or "
- "username/password. Rejecting.");
- req->reply[1] = '\xFF'; /* reject all methods */
- r=-1;
- }
- /* Remove packet from buf. Some SOCKS clients will have sent extra
- * junk at this point; let's hope it's an authentication message. */
- *drain_out = 2u + nummethods;
-
- return r;
- }
- if (req->auth_type != SOCKS_NO_AUTH && !req->got_auth) {
- log_warn(LD_APP,
- "socks5: negotiated authentication, but none provided");
- return -1;
- }
- /* we know the method; read in the request */
- log_debug(LD_APP,"socks5: checking request");
- if (datalen < 7) {/* basic info plus >=1 for addr plus 2 for port */
- *want_length_out = 7;
- return 0; /* not yet */
- }
- req->command = (unsigned char) *(data+1);
- if (req->command != SOCKS_COMMAND_CONNECT &&
- req->command != SOCKS_COMMAND_RESOLVE &&
- req->command != SOCKS_COMMAND_RESOLVE_PTR) {
- /* not a connect or resolve or a resolve_ptr? we don't support it. */
- socks_request_set_socks5_error(req,SOCKS5_COMMAND_NOT_SUPPORTED);
-
- log_warn(LD_APP,"socks5: command %d not recognized. Rejecting.",
- req->command);
- return -1;
- }
- switch (*(data+3)) { /* address type */
- case 1: /* IPv4 address */
- case 4: /* IPv6 address */ {
- const int is_v6 = *(data+3) == 4;
- const unsigned addrlen = is_v6 ? 16 : 4;
- log_debug(LD_APP,"socks5: ipv4 address type");
- if (datalen < 6+addrlen) {/* ip/port there? */
- *want_length_out = 6+addrlen;
- return 0; /* not yet */
- }
-
- if (is_v6)
- tor_addr_from_ipv6_bytes(&destaddr, data+4);
- else
- tor_addr_from_ipv4n(&destaddr, get_uint32(data+4));
-
- tor_addr_to_str(tmpbuf, &destaddr, sizeof(tmpbuf), 1);
-
- if (BUG(strlen(tmpbuf)+1 > MAX_SOCKS_ADDR_LEN)) {
- /* LCOV_EXCL_START -- This branch is unreachable, given the
- * size of tmpbuf and the actual value of MAX_SOCKS_ADDR_LEN */
- socks_request_set_socks5_error(req, SOCKS5_GENERAL_ERROR);
- log_warn(LD_APP,
- "socks5 IP takes %d bytes, which doesn't fit in %d. "
- "Rejecting.",
- (int)strlen(tmpbuf)+1,(int)MAX_SOCKS_ADDR_LEN);
- return -1;
- /* LCOV_EXCL_STOP */
- }
- strlcpy(req->address,tmpbuf,sizeof(req->address));
- req->port = ntohs(get_uint16(data+4+addrlen));
- *drain_out = 6+addrlen;
- if (req->command != SOCKS_COMMAND_RESOLVE_PTR &&
- !addressmap_have_mapping(req->address,0)) {
- log_unsafe_socks_warning(5, req->address, req->port, safe_socks);
- if (safe_socks) {
- socks_request_set_socks5_error(req, SOCKS5_NOT_ALLOWED);
- return -1;
- }
- }
- return 1;
- }
- case 3: /* fqdn */
- log_debug(LD_APP,"socks5: fqdn address type");
- if (req->command == SOCKS_COMMAND_RESOLVE_PTR) {
- socks_request_set_socks5_error(req,
- SOCKS5_ADDRESS_TYPE_NOT_SUPPORTED);
- log_warn(LD_APP, "socks5 received RESOLVE_PTR command with "
- "hostname type. Rejecting.");
- return -1;
- }
- len = (unsigned char)*(data+4);
- if (datalen < 7+len) { /* addr/port there? */
- *want_length_out = 7+len;
- return 0; /* not yet */
- }
- if (BUG(len+1 > MAX_SOCKS_ADDR_LEN)) {
- /* LCOV_EXCL_START -- unreachable, since len is at most 255,
- * and MAX_SOCKS_ADDR_LEN is 256. */
- socks_request_set_socks5_error(req, SOCKS5_GENERAL_ERROR);
- log_warn(LD_APP,
- "socks5 hostname is %d bytes, which doesn't fit in "
- "%d. Rejecting.", len+1,MAX_SOCKS_ADDR_LEN);
- return -1;
- /* LCOV_EXCL_STOP */
- }
- memcpy(req->address,data+5,len);
- req->address[len] = 0;
- req->port = ntohs(get_uint16(data+5+len));
- *drain_out = 5+len+2;
-
- if (!string_is_valid_dest(req->address)) {
- socks_request_set_socks5_error(req, SOCKS5_GENERAL_ERROR);
-
- log_warn(LD_PROTOCOL,
- "Your application (using socks5 to port %d) gave Tor "
- "a malformed hostname: %s. Rejecting the connection.",
- req->port, escaped_safe_str_client(req->address));
- return -1;
- }
- if (log_sockstype)
- log_notice(LD_APP,
- "Your application (using socks5 to port %d) instructed "
- "Tor to take care of the DNS resolution itself if "
- "necessary. This is good.", req->port);
- return 1;
- default: /* unsupported */
- socks_request_set_socks5_error(req,
- SOCKS5_ADDRESS_TYPE_NOT_SUPPORTED);
- log_warn(LD_APP,"socks5: unsupported address type %d. Rejecting.",
- (int) *(data+3));
- return -1;
- }
- tor_assert(0);
- break;
- case 4: { /* socks4 */
- enum {socks4, socks4a} socks4_prot = socks4a;
- const char *authstart, *authend;
- /* http://ss5.sourceforge.net/socks4.protocol.txt */
- /* http://ss5.sourceforge.net/socks4A.protocol.txt */
-
- req->socks_version = 4;
- if (datalen < SOCKS4_NETWORK_LEN) {/* basic info available? */
- *want_length_out = SOCKS4_NETWORK_LEN;
- return 0; /* not yet */
- }
- // buf_pullup(buf, 1280);
- req->command = (unsigned char) *(data+1);
- if (req->command != SOCKS_COMMAND_CONNECT &&
- req->command != SOCKS_COMMAND_RESOLVE) {
- /* not a connect or resolve? we don't support it. (No resolve_ptr with
- * socks4.) */
- log_warn(LD_APP,"socks4: command %d not recognized. Rejecting.",
- req->command);
- return -1;
- }
-
- req->port = ntohs(get_uint16(data+2));
- destip = ntohl(get_uint32(data+4));
- if ((!req->port && req->command!=SOCKS_COMMAND_RESOLVE) || !destip) {
- log_warn(LD_APP,"socks4: Port or DestIP is zero. Rejecting.");
- return -1;
- }
- if (destip >> 8) {
- log_debug(LD_APP,"socks4: destip not in form 0.0.0.x.");
- in.s_addr = htonl(destip);
- tor_inet_ntoa(&in,tmpbuf,sizeof(tmpbuf));
- if (BUG(strlen(tmpbuf)+1 > MAX_SOCKS_ADDR_LEN)) {
- /* LCOV_EXCL_START -- This branch is unreachable, given the
- * size of tmpbuf and the actual value of MAX_SOCKS_ADDR_LEN */
- log_debug(LD_APP,"socks4 addr (%d bytes) too long. Rejecting.",
- (int)strlen(tmpbuf));
- return -1;
- /* LCOV_EXCL_STOP */
- }
- log_debug(LD_APP,
- "socks4: successfully read destip (%s)",
- safe_str_client(tmpbuf));
- socks4_prot = socks4;
- }
+ first_octet = get_uint8(data);
- authstart = data + SOCKS4_NETWORK_LEN;
- next = memchr(authstart, 0,
- datalen-SOCKS4_NETWORK_LEN);
- if (!next) {
- if (datalen >= 1024) {
- log_debug(LD_APP, "Socks4 user name too long; rejecting.");
- return -1;
- }
- log_debug(LD_APP,"socks4: Username not here yet.");
- *want_length_out = datalen+1024; /* More than we need, but safe */
- return 0;
- }
- authend = next;
- tor_assert(next < data+datalen);
-
- startaddr = NULL;
- if (socks4_prot != socks4a &&
- !addressmap_have_mapping(tmpbuf,0)) {
- log_unsafe_socks_warning(4, tmpbuf, req->port, safe_socks);
+ if (first_octet == SOCKS_VER_5 || first_octet == SOCKS_VER_4 ||
+ first_octet == SOCKS_AUTH) { // XXX: RFC 1929
+ return handle_socks_message((const uint8_t *)data, datalen, req,
+ log_sockstype, safe_socks, drain_out);
+ }
- if (safe_socks)
- return -1;
- }
- if (socks4_prot == socks4a) {
- if (next+1 == data+datalen) {
- log_debug(LD_APP,"socks4: No part of destaddr here yet.");
- *want_length_out = datalen + 1024; /* More than we need, but safe */
- return 0;
- }
- startaddr = next+1;
- next = memchr(startaddr, 0, data + datalen - startaddr);
- if (!next) {
- if (datalen >= 1024) {
- log_debug(LD_APP,"socks4: Destaddr too long.");
- return -1;
- }
- log_debug(LD_APP,"socks4: Destaddr not all here yet.");
- *want_length_out = datalen + 1024; /* More than we need, but safe */
- return 0;
- }
- if (MAX_SOCKS_ADDR_LEN <= next-startaddr) {
- log_warn(LD_APP,"socks4: Destaddr too long. Rejecting.");
- return -1;
- }
- // tor_assert(next < buf->cur+buf_datalen(buf));
-
- if (log_sockstype)
- log_notice(LD_APP,
- "Your application (using socks4a to port %d) instructed "
- "Tor to take care of the DNS resolution itself if "
- "necessary. This is good.", req->port);
- }
- log_debug(LD_APP,"socks4: Everything is here. Success.");
- strlcpy(req->address, startaddr ? startaddr : tmpbuf,
- sizeof(req->address));
- if (!string_is_valid_dest(req->address)) {
- log_warn(LD_PROTOCOL,
- "Your application (using socks4 to port %d) gave Tor "
- "a malformed hostname: %s. Rejecting the connection.",
- req->port, escaped_safe_str_client(req->address));
- return -1;
- }
- if (authend != authstart) {
- req->got_auth = 1;
- req->usernamelen = authend - authstart;
- req->username = tor_memdup(authstart, authend - authstart);
- }
- /* next points to the final \0 on inbuf */
- *drain_out = next - data + 1;
- return 1;
- }
+ switch (first_octet) { /* which version of socks? */
case 'G': /* get */
case 'H': /* head */
case 'P': /* put/post */
@@ -561,6 +971,9 @@ parse_socks(const char *data, size_t datalen, socks_request_t *req,
}
return -1;
}
+
+ tor_assert_unreached();
+ return -1;
}
/** Inspect a reply from SOCKS server stored in <b>buf</b> according
diff --git a/src/ext/getdelim.c b/src/ext/getdelim.c
new file mode 100644
index 0000000000..8254103ff9
--- /dev/null
+++ b/src/ext/getdelim.c
@@ -0,0 +1,78 @@
+/* $NetBSD: getdelim.c,v 1.2 2015/12/25 20:12:46 joerg Exp $ */
+/* NetBSD-src: getline.c,v 1.2 2014/09/16 17:23:50 christos Exp */
+
+/*-
+ * Copyright (c) 2011 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Christos Zoulas.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef BUFSIZ
+#define BUFSIZ 512
+#endif
+
+ssize_t
+compat_getdelim_(char **buf, size_t *bufsiz, int delimiter, FILE *fp)
+{
+ char *ptr, *eptr;
+
+
+ if (*buf == NULL || *bufsiz == 0) {
+ *bufsiz = BUFSIZ;
+ if ((*buf = raw_malloc(*bufsiz)) == NULL)
+ return -1;
+ }
+
+ for (ptr = *buf, eptr = *buf + *bufsiz;;) {
+ int c = fgetc(fp);
+ if (c == -1) {
+ if (feof(fp)) {
+ ssize_t diff = (ssize_t)(ptr - *buf);
+ if (diff != 0) {
+ *ptr = '\0';
+ return diff;
+ }
+ }
+ return -1;
+ }
+ *ptr++ = c;
+ if (c == delimiter) {
+ *ptr = '\0';
+ return ptr - *buf;
+ }
+ if (ptr + 2 >= eptr) {
+ char *nbuf;
+ size_t nbufsiz = *bufsiz * 2;
+ ssize_t d = ptr - *buf;
+ if ((nbuf = raw_realloc(*buf, nbufsiz)) == NULL)
+ return -1;
+ *buf = nbuf;
+ *bufsiz = nbufsiz;
+ eptr = nbuf + nbufsiz;
+ ptr = nbuf + d;
+ }
+ }
+}
diff --git a/src/ext/include.am b/src/ext/include.am
index 7ec2e43312..6bdce2d79e 100644
--- a/src/ext/include.am
+++ b/src/ext/include.am
@@ -10,6 +10,7 @@ EXTHEADERS = \
src/ext/tor_readpassphrase.h \
src/ext/strlcat.c \
src/ext/strlcpy.c \
+ src/ext/getdelim.c \
src/ext/tinytest_macros.h \
src/ext/tor_queue.h \
src/ext/siphash.h \
@@ -173,4 +174,3 @@ EXTRA_DIST += \
src/ext/timeouts/Makefile \
src/ext/timeouts/Rules.shrc \
src/ext/timeouts/test-timeout.c
-
diff --git a/src/ext/tinytest.c b/src/ext/tinytest.c
index 3fb1b39c71..df2cc0b584 100644
--- a/src/ext/tinytest.c
+++ b/src/ext/tinytest.c
@@ -145,7 +145,7 @@ testcase_run_forked_(const struct testgroup_t *group,
if (opt_verbosity>0)
printf("[forking] ");
- snprintf(buffer, sizeof(buffer), "%s --RUNNING-FORKED %s %s%s",
+ snprintf(buffer, sizeof(buffer), "\"%s\" --RUNNING-FORKED %s %s%s",
commandname, verbosity_flag, group->prefix, testcase->name);
memset(&si, 0, sizeof(si));
diff --git a/src/feature/api/tor_api.c b/src/feature/api/tor_api.c
index 2a4458bf69..a53ade1f3e 100644
--- a/src/feature/api/tor_api.c
+++ b/src/feature/api/tor_api.c
@@ -61,6 +61,12 @@ tor_main_configuration_free(tor_main_configuration_t *cfg)
raw_free(cfg);
}
+const char *
+tor_api_get_provider_version(void)
+{
+ return "tor " VERSION;
+}
+
/* Main entry point for the Tor process. Called from main().
*
* This function is distinct from main() only so we can link main.c into
@@ -85,4 +91,3 @@ tor_main(int argc, char *argv[])
tor_main_configuration_free(cfg);
return rv;
}
-
diff --git a/src/feature/api/tor_api.h b/src/feature/api/tor_api.h
index ead9493c1f..ad2d3166c1 100644
--- a/src/feature/api/tor_api.h
+++ b/src/feature/api/tor_api.h
@@ -58,6 +58,23 @@ int tor_main_configuration_set_command_line(tor_main_configuration_t *cfg,
void tor_main_configuration_free(tor_main_configuration_t *cfg);
/**
+ * Return the name and version of the software implementing the tor_api
+ * functionality. Current implementors are "tor" and "libtorrunner".
+ *
+ * Note that if you're using libtorrunner, you'll see the version of
+ * libtorrunner, not the version of Tor that it's invoking for you.
+ *
+ * Added in Tor 0.3.5.1-alpha.
+ *
+ * Example return values include "tor 0.3.5.1-alpha" when linked directly
+ * against tor, and "libtorrunner 0.3.5.1-alpha" when linked against
+ * libtorrunner while it is invoking an arbitrary version of Tor. HOWEVER,
+ * the user MUST NOT depend on any particular format or contents of this
+ * string: there may be other things that implement Tor in the future.
+ **/
+const char *tor_api_get_provider_version(void);
+
+/**
* Run the tor process, as if from the command line.
*
* The command line arguments from tor_main_configuration_set_command_line()
@@ -98,4 +115,3 @@ int tor_run_main(const tor_main_configuration_t *);
int tor_main(int argc, char **argv);
#endif /* !defined(TOR_API_H) */
-
diff --git a/src/feature/client/entrynodes.c b/src/feature/client/entrynodes.c
index 664be8ce11..494ad33528 100644
--- a/src/feature/client/entrynodes.c
+++ b/src/feature/client/entrynodes.c
@@ -406,6 +406,17 @@ get_remove_unlisted_guards_after_days(void)
DFLT_REMOVE_UNLISTED_GUARDS_AFTER_DAYS,
1, 365*10);
}
+
+/**
+ * Return number of seconds that will make a guard no longer eligible
+ * for selection if unlisted for this long.
+ */
+static time_t
+get_remove_unlisted_guards_after_seconds(void)
+{
+ return get_remove_unlisted_guards_after_days() * 24 * 60 * 60;
+}
+
/**
* We remove unconfirmed guards from the sample after this many days,
* regardless of whether they are listed or unlisted.
@@ -1237,30 +1248,28 @@ entry_guard_is_listed,(guard_selection_t *gs, const entry_guard_t *guard))
}
/**
- * Update the status of all sampled guards based on the arrival of a
- * new consensus networkstatus document. This will include marking
- * some guards as listed or unlisted, and removing expired guards. */
-STATIC void
-sampled_guards_update_from_consensus(guard_selection_t *gs)
+ * Enumerate <b>sampled_entry_guards</b> smartlist in <b>gs</b>.
+ * For each <b>entry_guard_t</b> object in smartlist, do the following:
+ * * Update <b>currently_listed</b> field to reflect if guard is listed
+ * in guard selection <b>gs</b>.
+ * * Set <b>unlisted_since_date</b> to approximate UNIX time of
+ * unlisting if guard is unlisted (randomize within 20% of
+ * get_remove_unlisted_guards_after_seconds()). Otherwise,
+ * set it to 0.
+ *
+ * Require <b>gs</b> to be non-null pointer.
+ * Return a number of entries updated.
+ */
+static size_t
+sampled_guards_update_consensus_presence(guard_selection_t *gs)
{
- tor_assert(gs);
- const int REMOVE_UNLISTED_GUARDS_AFTER =
- (get_remove_unlisted_guards_after_days() * 86400);
- const int unlisted_since_slop = REMOVE_UNLISTED_GUARDS_AFTER / 5;
+ size_t n_changes = 0;
- // It's important to use only a live consensus here; we don't want to
- // make changes based on anything expired or old.
- if (live_consensus_is_missing(gs)) {
- log_info(LD_GUARD, "Not updating the sample guard set; we have "
- "no live consensus.");
- return;
- }
- log_info(LD_GUARD, "Updating sampled guard status based on received "
- "consensus.");
+ tor_assert(gs);
- int n_changes = 0;
+ const time_t unlisted_since_slop =
+ get_remove_unlisted_guards_after_seconds() / 5;
- /* First: Update listed/unlisted. */
SMARTLIST_FOREACH_BEGIN(gs->sampled_entry_guards, entry_guard_t *, guard) {
/* XXXX #20827 check ed ID too */
const int is_listed = entry_guard_is_listed(gs, guard);
@@ -1304,14 +1313,33 @@ sampled_guards_update_from_consensus(guard_selection_t *gs)
}
} SMARTLIST_FOREACH_END(guard);
- const time_t remove_if_unlisted_since =
- approx_time() - REMOVE_UNLISTED_GUARDS_AFTER;
- const time_t maybe_remove_if_sampled_before =
- approx_time() - get_guard_lifetime();
- const time_t remove_if_confirmed_before =
- approx_time() - get_guard_confirmed_min_lifetime();
+ return n_changes;
+}
+
+/**
+ * Enumerate <b>sampled_entry_guards</b> smartlist in <b>gs</b>.
+ * For each <b>entry_guard_t</b> object in smartlist, do the following:
+ * * If <b>currently_listed</b> is false and <b>unlisted_since_date</b>
+ * is earlier than <b>remove_if_unlisted_since</b> - remove it.
+ * * Otherwise, check if <b>sampled_on_date</b> is earlier than
+ * <b>maybe_remove_if_sampled_before</b>.
+ * * When above condition is correct, remove the guard if:
+ * * It was never confirmed.
+ * * It was confirmed before <b>remove_if_confirmed_before</b>.
+ *
+ * Require <b>gs</b> to be non-null pointer.
+ * Return number of entries deleted.
+ */
+static size_t
+sampled_guards_prune_obsolete_entries(guard_selection_t *gs,
+ const time_t remove_if_unlisted_since,
+ const time_t maybe_remove_if_sampled_before,
+ const time_t remove_if_confirmed_before)
+{
+ size_t n_changes = 0;
+
+ tor_assert(gs);
- /* Then: remove the ones that have been junk for too long */
SMARTLIST_FOREACH_BEGIN(gs->sampled_entry_guards, entry_guard_t *, guard) {
int rmv = 0;
@@ -1319,7 +1347,7 @@ sampled_guards_update_from_consensus(guard_selection_t *gs)
guard->unlisted_since_date < remove_if_unlisted_since) {
/*
"We have a live consensus, and {IS_LISTED} is false, and
- {FIRST_UNLISTED_AT} is over {REMOVE_UNLISTED_GUARDS_AFTER}
+ {FIRST_UNLISTED_AT} is over get_remove_unlisted_guards_after_days()
days in the past."
*/
log_info(LD_GUARD, "Removing sampled guard %s: it has been unlisted "
@@ -1355,6 +1383,45 @@ sampled_guards_update_from_consensus(guard_selection_t *gs)
}
} SMARTLIST_FOREACH_END(guard);
+ return n_changes;
+}
+
+/**
+ * Update the status of all sampled guards based on the arrival of a
+ * new consensus networkstatus document. This will include marking
+ * some guards as listed or unlisted, and removing expired guards. */
+STATIC void
+sampled_guards_update_from_consensus(guard_selection_t *gs)
+{
+ tor_assert(gs);
+
+ // It's important to use only a live consensus here; we don't want to
+ // make changes based on anything expired or old.
+ if (live_consensus_is_missing(gs)) {
+ log_info(LD_GUARD, "Not updating the sample guard set; we have "
+ "no live consensus.");
+ return;
+ }
+ log_info(LD_GUARD, "Updating sampled guard status based on received "
+ "consensus.");
+
+ /* First: Update listed/unlisted. */
+ size_t n_changes = sampled_guards_update_consensus_presence(gs);
+
+ const time_t remove_if_unlisted_since =
+ approx_time() - get_remove_unlisted_guards_after_seconds();
+ const time_t maybe_remove_if_sampled_before =
+ approx_time() - get_guard_lifetime();
+ const time_t remove_if_confirmed_before =
+ approx_time() - get_guard_confirmed_min_lifetime();
+
+ /* Then: remove the ones that have been junk for too long */
+ n_changes +=
+ sampled_guards_prune_obsolete_entries(gs,
+ remove_if_unlisted_since,
+ maybe_remove_if_sampled_before,
+ remove_if_confirmed_before);
+
if (n_changes) {
gs->primary_guards_up_to_date = 0;
entry_guards_update_filtered_sets(gs);
@@ -1816,28 +1883,24 @@ entry_guards_update_primary(guard_selection_t *gs)
smartlist_add(new_primary_guards, guard);
} SMARTLIST_FOREACH_END(guard);
- /* Can we keep any older primary guards? First remove all the ones
- * that we already kept. */
SMARTLIST_FOREACH_BEGIN(old_primary_guards, entry_guard_t *, guard) {
+ /* Can we keep any older primary guards? First remove all the ones
+ * that we already kept. */
if (smartlist_contains(new_primary_guards, guard)) {
SMARTLIST_DEL_CURRENT_KEEPORDER(old_primary_guards, guard);
- }
- } SMARTLIST_FOREACH_END(guard);
-
- /* Now add any that are still good. */
- SMARTLIST_FOREACH_BEGIN(old_primary_guards, entry_guard_t *, guard) {
- if (smartlist_len(new_primary_guards) >= N_PRIMARY_GUARDS)
- break;
- if (! guard->is_filtered_guard)
continue;
- guard->is_primary = 1;
- smartlist_add(new_primary_guards, guard);
- SMARTLIST_DEL_CURRENT_KEEPORDER(old_primary_guards, guard);
- } SMARTLIST_FOREACH_END(guard);
+ }
- /* Mark the remaining previous primary guards as non-primary */
- SMARTLIST_FOREACH_BEGIN(old_primary_guards, entry_guard_t *, guard) {
- guard->is_primary = 0;
+ /* Now add any that are still good. */
+ if (smartlist_len(new_primary_guards) < N_PRIMARY_GUARDS &&
+ guard->is_filtered_guard) {
+ guard->is_primary = 1;
+ smartlist_add(new_primary_guards, guard);
+ SMARTLIST_DEL_CURRENT_KEEPORDER(old_primary_guards, guard);
+ } else {
+ /* Mark the remaining previous primary guards as non-primary */
+ guard->is_primary = 0;
+ }
} SMARTLIST_FOREACH_END(guard);
/* Finally, fill out the list with sampled guards. */
@@ -1861,18 +1924,8 @@ entry_guards_update_primary(guard_selection_t *gs)
});
#endif /* 1 */
- int any_change = 0;
- if (smartlist_len(gs->primary_entry_guards) !=
- smartlist_len(new_primary_guards)) {
- any_change = 1;
- } else {
- SMARTLIST_FOREACH_BEGIN(gs->primary_entry_guards, entry_guard_t *, g) {
- if (g != smartlist_get(new_primary_guards, g_sl_idx)) {
- any_change = 1;
- }
- } SMARTLIST_FOREACH_END(g);
- }
-
+ const int any_change = !smartlist_ptrs_eq(gs->primary_entry_guards,
+ new_primary_guards);
if (any_change) {
log_info(LD_GUARD, "Primary entry guards have changed. "
"New primary guard list is: ");
@@ -1974,31 +2027,23 @@ entry_guards_note_internet_connectivity(guard_selection_t *gs)
}
/**
- * Get a guard for use with a circuit. Prefer to pick a running primary
- * guard; then a non-pending running filtered confirmed guard; then a
- * non-pending runnable filtered guard. Update the
+ * Pick a primary guard for use with a circuit, if available. Update the
* <b>last_tried_to_connect</b> time and the <b>is_pending</b> fields of the
* guard as appropriate. Set <b>state_out</b> to the new guard-state
* of the circuit.
*/
-STATIC entry_guard_t *
-select_entry_guard_for_circuit(guard_selection_t *gs,
- guard_usage_t usage,
- const entry_guard_restriction_t *rst,
- unsigned *state_out)
+static entry_guard_t *
+select_primary_guard_for_circuit(guard_selection_t *gs,
+ guard_usage_t usage,
+ const entry_guard_restriction_t *rst,
+ unsigned *state_out)
{
const int need_descriptor = (usage == GUARD_USAGE_TRAFFIC);
- tor_assert(gs);
- tor_assert(state_out);
-
- if (!gs->primary_guards_up_to_date)
- entry_guards_update_primary(gs);
+ entry_guard_t *chosen_guard = NULL;
int num_entry_guards = get_n_primary_guards_to_use(usage);
smartlist_t *usable_primary_guards = smartlist_new();
- /* "If any entry in PRIMARY_GUARDS has {is_reachable} status of
- <maybe> or <yes>, return the first such guard." */
SMARTLIST_FOREACH_BEGIN(gs->primary_entry_guards, entry_guard_t *, guard) {
entry_guard_consider_retry(guard);
if (! entry_guard_obeys_restriction(guard, rst))
@@ -2016,18 +2061,30 @@ select_entry_guard_for_circuit(guard_selection_t *gs,
} SMARTLIST_FOREACH_END(guard);
if (smartlist_len(usable_primary_guards)) {
- entry_guard_t *guard = smartlist_choose(usable_primary_guards);
+ chosen_guard = smartlist_choose(usable_primary_guards);
smartlist_free(usable_primary_guards);
log_info(LD_GUARD, "Selected primary guard %s for circuit.",
- entry_guard_describe(guard));
- return guard;
+ entry_guard_describe(chosen_guard));
}
+
smartlist_free(usable_primary_guards);
+ return chosen_guard;
+}
+
+/**
+ * For use with a circuit, pick a non-pending running filtered confirmed guard,
+ * if one is available. Update the <b>last_tried_to_connect</b> time and the
+ * <b>is_pending</b> fields of the guard as appropriate. Set <b>state_out</b>
+ * to the new guard-state of the circuit.
+ */
+static entry_guard_t *
+select_confirmed_guard_for_circuit(guard_selection_t *gs,
+ guard_usage_t usage,
+ const entry_guard_restriction_t *rst,
+ unsigned *state_out)
+{
+ const int need_descriptor = (usage == GUARD_USAGE_TRAFFIC);
- /* "Otherwise, if the ordered intersection of {CONFIRMED_GUARDS}
- and {USABLE_FILTERED_GUARDS} is nonempty, return the first
- entry in that intersection that has {is_pending} set to
- false." */
SMARTLIST_FOREACH_BEGIN(gs->confirmed_entry_guards, entry_guard_t *, guard) {
if (guard->is_primary)
continue; /* we already considered this one. */
@@ -2048,34 +2105,93 @@ select_entry_guard_for_circuit(guard_selection_t *gs,
}
} SMARTLIST_FOREACH_END(guard);
+ return NULL;
+}
+
+/**
+ * For use with a circuit, pick a confirmed usable filtered guard
+ * at random. Update the <b>last_tried_to_connect</b> time and the
+ * <b>is_pending</b> fields of the guard as appropriate. Set <b>state_out</b>
+ * to the new guard-state of the circuit.
+ */
+static entry_guard_t *
+select_filtered_guard_for_circuit(guard_selection_t *gs,
+ guard_usage_t usage,
+ const entry_guard_restriction_t *rst,
+ unsigned *state_out)
+{
+ const int need_descriptor = (usage == GUARD_USAGE_TRAFFIC);
+ entry_guard_t *chosen_guard = NULL;
+ unsigned flags = 0;
+ if (need_descriptor)
+ flags |= SAMPLE_EXCLUDE_NO_DESCRIPTOR;
+ chosen_guard = sample_reachable_filtered_entry_guards(gs,
+ rst,
+ SAMPLE_EXCLUDE_CONFIRMED |
+ SAMPLE_EXCLUDE_PRIMARY |
+ SAMPLE_EXCLUDE_PENDING |
+ flags);
+ if (!chosen_guard) {
+ return NULL;
+ }
+
+ chosen_guard->is_pending = 1;
+ chosen_guard->last_tried_to_connect = approx_time();
+ *state_out = GUARD_CIRC_STATE_USABLE_IF_NO_BETTER_GUARD;
+ log_info(LD_GUARD, "No primary or confirmed guards available. Selected "
+ "random guard %s for circuit. Will try other guards before "
+ "using this circuit.",
+ entry_guard_describe(chosen_guard));
+ return chosen_guard;
+}
+
+/**
+ * Get a guard for use with a circuit. Prefer to pick a running primary
+ * guard; then a non-pending running filtered confirmed guard; then a
+ * non-pending runnable filtered guard. Update the
+ * <b>last_tried_to_connect</b> time and the <b>is_pending</b> fields of the
+ * guard as appropriate. Set <b>state_out</b> to the new guard-state
+ * of the circuit.
+ */
+STATIC entry_guard_t *
+select_entry_guard_for_circuit(guard_selection_t *gs,
+ guard_usage_t usage,
+ const entry_guard_restriction_t *rst,
+ unsigned *state_out)
+{
+ entry_guard_t *chosen_guard = NULL;
+ tor_assert(gs);
+ tor_assert(state_out);
+
+ if (!gs->primary_guards_up_to_date)
+ entry_guards_update_primary(gs);
+
+ /* "If any entry in PRIMARY_GUARDS has {is_reachable} status of
+ <maybe> or <yes>, return the first such guard." */
+ chosen_guard = select_primary_guard_for_circuit(gs, usage, rst, state_out);
+ if (chosen_guard)
+ return chosen_guard;
+
+ /* "Otherwise, if the ordered intersection of {CONFIRMED_GUARDS}
+ and {USABLE_FILTERED_GUARDS} is nonempty, return the first
+ entry in that intersection that has {is_pending} set to
+ false." */
+ chosen_guard = select_confirmed_guard_for_circuit(gs, usage, rst, state_out);
+ if (chosen_guard)
+ return chosen_guard;
+
/* "Otherwise, if there is no such entry, select a member at
random from {USABLE_FILTERED_GUARDS}." */
- {
- entry_guard_t *guard;
- unsigned flags = 0;
- if (need_descriptor)
- flags |= SAMPLE_EXCLUDE_NO_DESCRIPTOR;
- guard = sample_reachable_filtered_entry_guards(gs,
- rst,
- SAMPLE_EXCLUDE_CONFIRMED |
- SAMPLE_EXCLUDE_PRIMARY |
- SAMPLE_EXCLUDE_PENDING |
- flags);
- if (guard == NULL) {
- log_info(LD_GUARD, "Absolutely no sampled guards were available. "
- "Marking all guards for retry and starting from top again.");
- mark_all_guards_maybe_reachable(gs);
- return NULL;
- }
- guard->is_pending = 1;
- guard->last_tried_to_connect = approx_time();
- *state_out = GUARD_CIRC_STATE_USABLE_IF_NO_BETTER_GUARD;
- log_info(LD_GUARD, "No primary or confirmed guards available. Selected "
- "random guard %s for circuit. Will try other guards before "
- "using this circuit.",
- entry_guard_describe(guard));
- return guard;
+ chosen_guard = select_filtered_guard_for_circuit(gs, usage, rst, state_out);
+
+ if (chosen_guard == NULL) {
+ log_info(LD_GUARD, "Absolutely no sampled guards were available. "
+ "Marking all guards for retry and starting from top again.");
+ mark_all_guards_maybe_reachable(gs);
+ return NULL;
}
+
+ return chosen_guard;
}
/**
diff --git a/src/feature/control/control.c b/src/feature/control/control.c
index 12f10926b7..f71818241d 100644
--- a/src/feature/control/control.c
+++ b/src/feature/control/control.c
@@ -2011,6 +2011,8 @@ getinfo_helper_listeners(control_connection_t *control_conn,
if (!strcmp(question, "net/listeners/or"))
type = CONN_TYPE_OR_LISTENER;
+ else if (!strcmp(question, "net/listeners/extor"))
+ type = CONN_TYPE_EXT_OR_LISTENER;
else if (!strcmp(question, "net/listeners/dir"))
type = CONN_TYPE_DIR_LISTENER;
else if (!strcmp(question, "net/listeners/socks"))
@@ -2019,6 +2021,8 @@ getinfo_helper_listeners(control_connection_t *control_conn,
type = CONN_TYPE_AP_TRANS_LISTENER;
else if (!strcmp(question, "net/listeners/natd"))
type = CONN_TYPE_AP_NATD_LISTENER;
+ else if (!strcmp(question, "net/listeners/httptunnel"))
+ type = CONN_TYPE_AP_HTTP_CONNECT_LISTENER;
else if (!strcmp(question, "net/listeners/dns"))
type = CONN_TYPE_AP_DNS_LISTENER;
else if (!strcmp(question, "net/listeners/control"))
@@ -2052,7 +2056,7 @@ getinfo_helper_listeners(control_connection_t *control_conn,
}
/** Implementation helper for GETINFO: answers requests for information about
- * the current time in both local and UTF forms. */
+ * the current time in both local and UTC forms. */
STATIC int
getinfo_helper_current_time(control_connection_t *control_conn,
const char *question,
@@ -7698,11 +7702,11 @@ control_event_hsv3_descriptor_failed(const char *onion_address,
tor_free(desc_id_field);
}
-/** Send HS_DESC_CONTENT event after completion of a successful fetch from hs
- * directory. If <b>hsdir_id_digest</b> is NULL, it is replaced by "UNKNOWN".
- * If <b>content</b> is NULL, it is replaced by an empty string. The
- * <b>onion_address</b> or <b>desc_id</b> set to NULL will no trigger the
- * control event. */
+/** Send HS_DESC_CONTENT event after completion of a successful fetch
+ * from hs directory. If <b>hsdir_id_digest</b> is NULL, it is replaced
+ * by "UNKNOWN". If <b>content</b> is NULL, it is replaced by an empty
+ * string. The <b>onion_address</b> or <b>desc_id</b> set to NULL will
+ * not trigger the control event. */
void
control_event_hs_descriptor_content(const char *onion_address,
const char *desc_id,
diff --git a/src/feature/dirauth/dirvote.c b/src/feature/dirauth/dirvote.c
index ce67c1bb9a..a97f3c47d8 100644
--- a/src/feature/dirauth/dirvote.c
+++ b/src/feature/dirauth/dirvote.c
@@ -15,6 +15,7 @@
#include "feature/nodelist/parsecommon.h"
#include "core/or/policies.h"
#include "core/or/protover.h"
+#include "core/or/tor_version_st.h"
#include "feature/stats/rephist.h"
#include "feature/relay/router.h"
#include "feature/relay/routerkeys.h"
@@ -254,6 +255,7 @@ format_networkstatus_vote(crypto_pk_t *private_signing_key,
/* XXXX Abstraction violation: should be pulling a field out of v3_ns.*/
char *flag_thresholds = dirserv_get_flag_thresholds_line();
char *params;
+ char *bw_headers_line = NULL;
authority_cert_t *cert = v3_ns->cert;
char *methods =
make_consensus_method_list(MIN_SUPPORTED_CONSENSUS_METHOD,
@@ -267,8 +269,32 @@ format_networkstatus_vote(crypto_pk_t *private_signing_key,
params = smartlist_join_strings(v3_ns->net_params, " ", 0, NULL);
else
params = tor_strdup("");
-
tor_assert(cert);
+
+ /* v3_ns->bw_file_headers is only set when V3BandwidthsFile is
+ * configured */
+ if (v3_ns->bw_file_headers) {
+ char *bw_file_headers = NULL;
+ /* If there are too many headers, leave the header string NULL */
+ if (! BUG(smartlist_len(v3_ns->bw_file_headers)
+ > MAX_BW_FILE_HEADER_COUNT_IN_VOTE)) {
+ bw_file_headers = smartlist_join_strings(v3_ns->bw_file_headers, " ",
+ 0, NULL);
+ if (BUG(strlen(bw_file_headers) > MAX_BW_FILE_HEADERS_LINE_LEN)) {
+ /* Free and set to NULL, because the line was too long */
+ tor_free(bw_file_headers);
+ }
+ }
+ if (!bw_file_headers) {
+ /* If parsing failed, add a bandwidth header line with no entries */
+ bw_file_headers = tor_strdup("");
+ }
+ /* At this point, the line will always be present */
+ bw_headers_line = format_line_if_present("bandwidth-file-headers",
+ bw_file_headers);
+ tor_free(bw_file_headers);
+ }
+
smartlist_add_asprintf(chunks,
"network-status-version 3\n"
"vote-status %s\n"
@@ -286,7 +312,9 @@ format_networkstatus_vote(crypto_pk_t *private_signing_key,
"params %s\n"
"dir-source %s %s %s %s %d %d\n"
"contact %s\n"
- "%s", /* shared randomness information */
+ "%s" /* shared randomness information */
+ "%s" /* bandwidth file headers */
+ ,
v3_ns->type == NS_TYPE_VOTE ? "vote" : "opinion",
methods,
published, va, fu, vu,
@@ -302,13 +330,16 @@ format_networkstatus_vote(crypto_pk_t *private_signing_key,
fmt_addr32(addr), voter->dir_port, voter->or_port,
voter->contact,
shared_random_vote_str ?
- shared_random_vote_str : "");
+ shared_random_vote_str : "",
+ bw_headers_line ?
+ bw_headers_line : "");
tor_free(params);
tor_free(flags);
tor_free(flag_thresholds);
tor_free(methods);
tor_free(shared_random_vote_str);
+ tor_free(bw_headers_line);
if (!tor_digest_is_zero(voter->legacy_id_digest)) {
char fpbuf[HEX_DIGEST_LEN+1];
@@ -797,6 +828,14 @@ compute_consensus_versions_list(smartlist_t *lst, int n_versioning)
int min = n_versioning / 2;
smartlist_t *good = smartlist_new();
char *result;
+ SMARTLIST_FOREACH_BEGIN(lst, const char *, v) {
+ if (strchr(v, ' ')) {
+ log_warn(LD_DIR, "At least one authority has voted for a version %s "
+ "that contains a space. This probably wasn't intentional, and "
+ "is likely to cause trouble. Please tell them to stop it.",
+ escaped(v));
+ }
+ } SMARTLIST_FOREACH_END(v);
sort_version_list(lst, 0);
get_frequent_members(good, lst, min);
result = smartlist_join_strings(good, ",", 0, NULL);
@@ -4200,8 +4239,8 @@ version_from_platform(const char *platform)
* allocate and return a new string containing the version numbers, in order,
* separated by commas. Used to generate Recommended(Client|Server)?Versions
*/
-static char *
-format_versions_list(config_line_t *ln)
+char *
+format_recommended_version_list(const config_line_t *ln, int warn)
{
smartlist_t *versions;
char *result;
@@ -4210,6 +4249,37 @@ format_versions_list(config_line_t *ln)
smartlist_split_string(versions, ln->value, ",",
SPLIT_SKIP_SPACE|SPLIT_IGNORE_BLANK, 0);
}
+
+ /* Handle the case where a dirauth operator has accidentally made some
+ * versions space-separated instead of comma-separated. */
+ smartlist_t *more_versions = smartlist_new();
+ SMARTLIST_FOREACH_BEGIN(versions, char *, v) {
+ if (strchr(v, ' ')) {
+ if (warn)
+ log_warn(LD_DIRSERV, "Unexpected space in versions list member %s. "
+ "(These are supposed to be comma-separated; I'll pretend you "
+ "used commas instead.)", escaped(v));
+ SMARTLIST_DEL_CURRENT(versions, v);
+ smartlist_split_string(more_versions, v, NULL,
+ SPLIT_SKIP_SPACE|SPLIT_IGNORE_BLANK, 0);
+ tor_free(v);
+ }
+ } SMARTLIST_FOREACH_END(v);
+ smartlist_add_all(versions, more_versions);
+ smartlist_free(more_versions);
+
+ /* Check to make sure everything looks like a version. */
+ if (warn) {
+ SMARTLIST_FOREACH_BEGIN(versions, const char *, v) {
+ tor_version_t ver;
+ if (tor_version_parse(v, &ver) < 0) {
+ log_warn(LD_DIRSERV, "Recommended version %s does not look valid. "
+ " (I'll include it anyway, since you told me to.)",
+ escaped(v));
+ }
+ } SMARTLIST_FOREACH_END(v);
+ }
+
sort_version_list(versions, 1);
result = smartlist_join_strings(versions,",",0,NULL);
SMARTLIST_FOREACH(versions,char *,s,tor_free(s));
@@ -4303,6 +4373,7 @@ dirserv_generate_networkstatus_vote_obj(crypto_pk_t *private_key,
digestmap_t *omit_as_sybil = NULL;
const int vote_on_reachability = running_long_enough_to_decide_unreachable();
smartlist_t *microdescriptors = NULL;
+ smartlist_t *bw_file_headers = NULL;
tor_assert(private_key);
tor_assert(cert);
@@ -4325,8 +4396,10 @@ dirserv_generate_networkstatus_vote_obj(crypto_pk_t *private_key,
}
if (options->VersioningAuthoritativeDir) {
- client_versions = format_versions_list(options->RecommendedClientVersions);
- server_versions = format_versions_list(options->RecommendedServerVersions);
+ client_versions =
+ format_recommended_version_list(options->RecommendedClientVersions, 0);
+ server_versions =
+ format_recommended_version_list(options->RecommendedServerVersions, 0);
}
contact = get_options()->ContactInfo;
@@ -4338,7 +4411,7 @@ dirserv_generate_networkstatus_vote_obj(crypto_pk_t *private_key,
* set_routerstatus_from_routerinfo() see up-to-date bandwidth info.
*/
if (options->V3BandwidthsFile) {
- dirserv_read_measured_bandwidths(options->V3BandwidthsFile, NULL);
+ dirserv_read_measured_bandwidths(options->V3BandwidthsFile, NULL, NULL);
} else {
/*
* No bandwidths file; clear the measured bandwidth cache in case we had
@@ -4440,8 +4513,10 @@ dirserv_generate_networkstatus_vote_obj(crypto_pk_t *private_key,
/* This pass through applies the measured bw lines to the routerstatuses */
if (options->V3BandwidthsFile) {
+ /* Only set bw_file_headers when V3BandwidthsFile is configured */
+ bw_file_headers = smartlist_new();
dirserv_read_measured_bandwidths(options->V3BandwidthsFile,
- routerstatuses);
+ routerstatuses, bw_file_headers);
} else {
/*
* No bandwidths file; clear the measured bandwidth cache in case we had
@@ -4491,16 +4566,16 @@ dirserv_generate_networkstatus_vote_obj(crypto_pk_t *private_key,
/* These are hardwired, to avoid disaster. */
v3_out->recommended_relay_protocols =
tor_strdup("Cons=1-2 Desc=1-2 DirCache=1 HSDir=1 HSIntro=3 HSRend=1 "
- "Link=4 LinkAuth=1 Microdesc=1-2 Relay=2");
+ "Link=4 Microdesc=1-2 Relay=2");
v3_out->recommended_client_protocols =
tor_strdup("Cons=1-2 Desc=1-2 DirCache=1 HSDir=1 HSIntro=3 HSRend=1 "
- "Link=4 LinkAuth=1 Microdesc=1-2 Relay=2");
+ "Link=4 Microdesc=1-2 Relay=2");
v3_out->required_client_protocols =
tor_strdup("Cons=1-2 Desc=1-2 DirCache=1 HSDir=1 HSIntro=3 HSRend=1 "
- "Link=4 LinkAuth=1 Microdesc=1-2 Relay=2");
+ "Link=4 Microdesc=1-2 Relay=2");
v3_out->required_relay_protocols =
tor_strdup("Cons=1 Desc=1 DirCache=1 HSDir=1 HSIntro=3 HSRend=1 "
- "Link=3-4 LinkAuth=1 Microdesc=1 Relay=1-2");
+ "Link=3-4 Microdesc=1 Relay=1-2");
/* We are not allowed to vote to require anything we don't have. */
tor_assert(protover_all_supported(v3_out->required_relay_protocols, NULL));
@@ -4537,6 +4612,7 @@ dirserv_generate_networkstatus_vote_obj(crypto_pk_t *private_key,
options->ConsensusParams, NULL, 0, 0);
smartlist_sort_strings(v3_out->net_params);
}
+ v3_out->bw_file_headers = bw_file_headers;
voter = tor_malloc_zero(sizeof(networkstatus_voter_info_t));
voter->nickname = tor_strdup(options->Nickname);
diff --git a/src/feature/dirauth/dirvote.h b/src/feature/dirauth/dirvote.h
index 7ce8e4a699..979a2be8a6 100644
--- a/src/feature/dirauth/dirvote.h
+++ b/src/feature/dirauth/dirvote.h
@@ -89,6 +89,9 @@
#define DGV_INCLUDE_PENDING 2
#define DGV_INCLUDE_PREVIOUS 4
+/** Maximum size of a line in a vote. */
+#define MAX_BW_FILE_HEADERS_LINE_LEN 1024
+
/*
* Public API. Used outside of the dirauth subsystem.
*
diff --git a/src/feature/dirauth/keypin.c b/src/feature/dirauth/keypin.c
index 44e19985fa..fd281377df 100644
--- a/src/feature/dirauth/keypin.c
+++ b/src/feature/dirauth/keypin.c
@@ -23,7 +23,7 @@
#include "lib/fdio/fdio.h"
#include "lib/fs/files.h"
#include "lib/fs/mmap.h"
-#include "lib/log/torlog.h"
+#include "lib/log/log.h"
#include "lib/log/util_bug.h"
#include "lib/string/compat_ctype.h"
#include "lib/string/printf.h"
diff --git a/src/feature/dircache/directory.c b/src/feature/dircache/directory.c
index 230fa69a1e..de0bcdbfa7 100644
--- a/src/feature/dircache/directory.c
+++ b/src/feature/dircache/directory.c
@@ -5208,6 +5208,9 @@ connection_dir_finished_flushing(dir_connection_t *conn)
tor_assert(conn);
tor_assert(conn->base_.type == CONN_TYPE_DIR);
+ if (conn->base_.marked_for_close)
+ return 0;
+
/* Note that we have finished writing the directory response. For direct
* connections this means we're done; for tunneled connections it's only
* an intermediate step. */
diff --git a/src/feature/dircache/dirserv.c b/src/feature/dircache/dirserv.c
index c5286b0cbf..b85db8324f 100644
--- a/src/feature/dircache/dirserv.c
+++ b/src/feature/dircache/dirserv.c
@@ -51,6 +51,7 @@
#include "lib/crypt_ops/crypto_format.h"
#include "lib/encoding/confline.h"
+#include "lib/encoding/keyval.h"
/**
* \file dirserv.c
* \brief Directory server core implementation. Manages directory
@@ -2599,14 +2600,15 @@ measured_bw_line_apply(measured_bw_line_t *parsed_line,
}
/**
- * Read the measured bandwidth file and apply it to the list of
- * vote_routerstatus_t. Returns -1 on error, 0 otherwise.
+ * Read the measured bandwidth list file, apply it to the list of
+ * vote_routerstatus_t and store all the headers in <b>bw_file_headers</b>.
+ * Returns -1 on error, 0 otherwise.
*/
int
dirserv_read_measured_bandwidths(const char *from_file,
- smartlist_t *routerstatuses)
+ smartlist_t *routerstatuses,
+ smartlist_t *bw_file_headers)
{
- char line[512];
FILE *fp = tor_fopen_cloexec(from_file, "r");
int applied_lines = 0;
time_t file_time, now;
@@ -2616,28 +2618,28 @@ dirserv_read_measured_bandwidths(const char *from_file,
* if there are additional header lines, as introduced in Bandwidth List spec
* version 1.1.0 */
int line_is_after_headers = 0;
+ int rv = -1;
+ char *line = NULL;
+ size_t n = 0;
/* Initialise line, so that we can't possibly run off the end. */
- memset(line, 0, sizeof(line));
if (fp == NULL) {
log_warn(LD_CONFIG, "Can't open bandwidth file at configured location: %s",
from_file);
- return -1;
+ goto err;
}
/* If fgets fails, line is either unmodified, or indeterminate. */
- if (!fgets(line, sizeof(line), fp)) {
+ if (tor_getline(&line,&n,fp) <= 0) {
log_warn(LD_DIRSERV, "Empty bandwidth file");
- fclose(fp);
- return -1;
+ goto err;
}
if (!strlen(line) || line[strlen(line)-1] != '\n') {
log_warn(LD_DIRSERV, "Long or truncated time in bandwidth file: %s",
escaped(line));
- fclose(fp);
- return -1;
+ goto err;
}
line[strlen(line)-1] = '\0';
@@ -2645,24 +2647,28 @@ dirserv_read_measured_bandwidths(const char *from_file,
if (!ok) {
log_warn(LD_DIRSERV, "Non-integer time in bandwidth file: %s",
escaped(line));
- fclose(fp);
- return -1;
+ goto err;
}
now = time(NULL);
if ((now - file_time) > MAX_MEASUREMENT_AGE) {
log_warn(LD_DIRSERV, "Bandwidth measurement file stale. Age: %u",
(unsigned)(time(NULL) - file_time));
- fclose(fp);
- return -1;
+ goto err;
}
+ /* If timestamp was correct and bw_file_headers is not NULL,
+ * add timestamp to bw_file_headers */
+ if (bw_file_headers)
+ smartlist_add_asprintf(bw_file_headers, "timestamp=%lu",
+ (unsigned long)file_time);
+
if (routerstatuses)
smartlist_sort(routerstatuses, compare_vote_routerstatus_entries);
while (!feof(fp)) {
measured_bw_line_t parsed_line;
- if (fgets(line, sizeof(line), fp) && strlen(line)) {
+ if (tor_getline(&line, &n, fp) >= 0) {
if (measured_bw_line_parse(&parsed_line, line,
line_is_after_headers) != -1) {
/* This condition will be true when the first complete valid bw line
@@ -2672,18 +2678,43 @@ dirserv_read_measured_bandwidths(const char *from_file,
dirserv_cache_measured_bw(&parsed_line, file_time);
if (measured_bw_line_apply(&parsed_line, routerstatuses) > 0)
applied_lines++;
- }
+ /* if the terminator is found, it is the end of header lines, set the
+ * flag but do not store anything */
+ } else if (strcmp(line, BW_FILE_HEADERS_TERMINATOR) == 0) {
+ line_is_after_headers = 1;
+ /* if the line was not a correct relay line nor the terminator and
+ * the end of the header lines has not been detected yet
+ * and it is key_value and bw_file_headers did not reach the maximum
+ * number of headers,
+ * then assume this line is a header and add it to bw_file_headers */
+ } else if (bw_file_headers &&
+ (line_is_after_headers == 0) &&
+ string_is_key_value(LOG_DEBUG, line) &&
+ !strchr(line, ' ') &&
+ (smartlist_len(bw_file_headers)
+ < MAX_BW_FILE_HEADER_COUNT_IN_VOTE)) {
+ line[strlen(line)-1] = '\0';
+ smartlist_add_strdup(bw_file_headers, line);
+ };
}
}
/* Now would be a nice time to clean the cache, too */
dirserv_expire_measured_bw_cache(now);
- fclose(fp);
log_info(LD_DIRSERV,
"Bandwidth measurement file successfully read. "
"Applied %d measurements.", applied_lines);
- return 0;
+ rv = 0;
+
+ err:
+ if (line) {
+ // we need to raw_free this buffer because we got it from tor_getdelim()
+ raw_free(line);
+ }
+ if (fp)
+ fclose(fp);
+ return rv;
}
/** As dirserv_get_routerdescs(), but instead of getting signed_descriptor_t
diff --git a/src/feature/dircache/dirserv.h b/src/feature/dircache/dirserv.h
index 3b4a646094..9be4bf9db2 100644
--- a/src/feature/dircache/dirserv.h
+++ b/src/feature/dircache/dirserv.h
@@ -49,6 +49,13 @@ typedef enum {
/** Maximum allowable length of a version line in a networkstatus. */
#define MAX_V_LINE_LEN 128
+/** Maximum allowable length of bandwidth headers in a bandwidth file */
+#define MAX_BW_FILE_HEADER_COUNT_IN_VOTE 50
+
+/** Terminatore that separates bandwidth file headers from bandwidth file
+ * relay lines */
+#define BW_FILE_HEADERS_TERMINATOR "=====\n"
+
/** Ways to convert a spoolable_resource_t to a bunch of bytes. */
typedef enum dir_spool_source_t {
DIR_SPOOL_SERVER_BY_DIGEST=1, DIR_SPOOL_SERVER_BY_FP,
@@ -180,7 +187,9 @@ char *routerstatus_format_entry(
void dirserv_free_all(void);
void cached_dir_decref(cached_dir_t *d);
cached_dir_t *new_cached_dir(char *s, time_t published);
-
+struct config_line_t;
+char *format_recommended_version_list(const struct config_line_t *line,
+ int warn);
int validate_recommended_package_line(const char *line);
int dirserv_query_measured_bw_cache_kb(const char *node_id,
long *bw_out,
@@ -215,7 +224,8 @@ dirserv_read_guardfraction_file_from_str(const char *guardfraction_file_str,
#endif /* defined(DIRSERV_PRIVATE) */
int dirserv_read_measured_bandwidths(const char *from_file,
- smartlist_t *routerstatuses);
+ smartlist_t *routerstatuses,
+ smartlist_t *bw_file_headers);
int dirserv_read_guardfraction_file(const char *fname,
smartlist_t *vote_routerstatuses);
diff --git a/src/feature/dircommon/voting_schedule.c b/src/feature/dircommon/voting_schedule.c
index 84c016c2b9..07e65ef06d 100644
--- a/src/feature/dircommon/voting_schedule.c
+++ b/src/feature/dircommon/voting_schedule.c
@@ -168,7 +168,7 @@ voting_schedule_get_next_valid_after_time(void)
done:
if (need_to_recalculate_voting_schedule) {
- voting_schedule_recalculate_timing(get_options(), now);
+ voting_schedule_recalculate_timing(get_options(), approx_time());
voting_schedule.created_on_demand = 1;
}
diff --git a/src/feature/hs/hs_circuit.c b/src/feature/hs/hs_circuit.c
index cd312e98be..541b165dd5 100644
--- a/src/feature/hs/hs_circuit.c
+++ b/src/feature/hs/hs_circuit.c
@@ -566,10 +566,14 @@ retry_service_rendezvous_point(const origin_circuit_t *circ)
return;
}
-/* Add all possible link specifiers in node to lspecs.
- * legacy ID is mandatory thus MUST be present in node. If the primary address
- * is not IPv4, log a BUG() warning, and return an empty smartlist.
- * Includes ed25519 id and IPv6 link specifiers if present in the node. */
+/* Add all possible link specifiers in node to lspecs:
+ * - legacy ID is mandatory thus MUST be present in node;
+ * - include ed25519 link specifier if present in the node, and the node
+ * supports ed25519 link authentication, even if its link versions are not
+ * compatible with us;
+ * - include IPv4 link specifier, if the primary address is not IPv4, log a
+ * BUG() warning, and return an empty smartlist;
+ * - include IPv6 link specifier if present in the node. */
static void
get_lspecs_from_node(const node_t *node, smartlist_t *lspecs)
{
@@ -607,8 +611,12 @@ get_lspecs_from_node(const node_t *node, smartlist_t *lspecs)
link_specifier_set_ls_len(ls, link_specifier_getlen_un_legacy_id(ls));
smartlist_add(lspecs, ls);
- /* ed25519 ID is only included if the node has it. */
- if (!ed25519_public_key_is_zero(&node->ed25519_id)) {
+ /* ed25519 ID is only included if the node has it, and the node declares a
+ protocol version that supports ed25519 link authentication, even if that
+ link version is not compatible with us. (We are sending the ed25519 key
+ to another tor, which may support different link versions.) */
+ if (!ed25519_public_key_is_zero(&node->ed25519_id) &&
+ node_supports_ed25519_link_authentication(node, 0)) {
ls = link_specifier_new();
link_specifier_set_ls_type(ls, LS_ED25519_ID);
memcpy(link_specifier_getarray_un_ed25519_id(ls), &node->ed25519_id,
diff --git a/src/feature/hs/hs_common.c b/src/feature/hs/hs_common.c
index 723cfa6ea8..12405a79cb 100644
--- a/src/feature/hs/hs_common.c
+++ b/src/feature/hs/hs_common.c
@@ -254,8 +254,8 @@ get_time_period_length(void)
HS_TIME_PERIOD_LENGTH_MIN,
HS_TIME_PERIOD_LENGTH_MAX);
/* Make sure it's a positive value. */
- tor_assert(time_period_length >= 0);
- /* uint64_t will always be able to contain a int32_t */
+ tor_assert(time_period_length > 0);
+ /* uint64_t will always be able to contain a positive int32_t */
return (uint64_t) time_period_length;
}
@@ -844,7 +844,7 @@ hs_get_subcredential(const ed25519_public_key_t *identity_pk,
memwipe(credential, 0, sizeof(credential));
}
-/* From the given list of hidden service ports, find the ones that much the
+/* From the given list of hidden service ports, find the ones that match the
* given edge connection conn, pick one at random and use it to set the
* connection address. Return 0 on success or -1 if none. */
int
@@ -1102,8 +1102,7 @@ hs_in_period_between_tp_and_srv,(const networkstatus_t *consensus, time_t now))
/* Get start time of next TP and of current SRV protocol run, and check if we
* are between them. */
valid_after = consensus->valid_after;
- srv_start_time =
- sr_state_get_start_time_of_current_protocol_run(valid_after);
+ srv_start_time = sr_state_get_start_time_of_current_protocol_run();
tp_start_time = hs_get_start_time_of_next_time_period(srv_start_time);
if (valid_after >= srv_start_time && valid_after < tp_start_time) {
diff --git a/src/feature/hs/hs_config.c b/src/feature/hs/hs_config.c
index 2c25a168a2..e972576482 100644
--- a/src/feature/hs/hs_config.c
+++ b/src/feature/hs/hs_config.c
@@ -143,6 +143,24 @@ helper_parse_uint64(const char *opt, const char *value, uint64_t min,
return ret;
}
+/* Return the service version by trying to learn it from the key on disk if
+ * any. If nothing is found, the current service configured version is
+ * returned. */
+static int
+config_learn_service_version(hs_service_t *service)
+{
+ int version;
+
+ tor_assert(service);
+
+ version = hs_service_get_version_from_key(service);
+ if (version < 0) {
+ version = service->config.version;
+ }
+
+ return version;
+}
+
/* Return true iff the given options starting at line_ for a hidden service
* contains at least one invalid option. Each hidden service option don't
* apply to all versions so this function can find out. The line_ MUST start
@@ -490,6 +508,12 @@ config_service(const config_line_t *line, const or_options_t *options,
0) < 0) {
goto err;
}
+ /* We'll try to learn the service version here by loading the key(s) if
+ * present. Depending on the key format, we can figure out the service
+ * version. If we can't find a key, the configuration version will be used
+ * which has been set previously. */
+ service->config.version = config_learn_service_version(service);
+
/* Different functions are in charge of specific options for a version. We
* start just after the service directory line so once we hit another
* directory line, the function knows that it has to stop parsing. */
diff --git a/src/feature/hs/hs_service.c b/src/feature/hs/hs_service.c
index 8b4de21387..30d01540f2 100644
--- a/src/feature/hs/hs_service.c
+++ b/src/feature/hs/hs_service.c
@@ -17,6 +17,7 @@
#include "core/mainloop/connection.h"
#include "lib/crypt_ops/crypto_rand.h"
#include "lib/crypt_ops/crypto_util.h"
+#include "lib/crypt_ops/crypto_ope.h"
#include "feature/dircache/directory.h"
#include "core/mainloop/main.h"
#include "feature/nodelist/networkstatus.h"
@@ -102,7 +103,8 @@ static smartlist_t *hs_service_staging_list;
static int consider_republishing_hs_descriptors = 0;
/* Static declaration. */
-static void set_descriptor_revision_counter(hs_descriptor_t *hs_desc);
+static void set_descriptor_revision_counter(hs_service_descriptor_t *hs_desc,
+ time_t now, bool is_current);
static void move_descriptors(hs_service_t *src, hs_service_t *dst);
/* Helper: Function to compare two objects in the service map. Return 1 if the
@@ -408,17 +410,21 @@ service_intro_point_free_void(void *obj)
}
/* Return a newly allocated service intro point and fully initialized from the
- * given extend_info_t ei if non NULL. If is_legacy is true, we also generate
- * the legacy key. On error, NULL is returned.
+ * given extend_info_t ei if non NULL.
+ * If is_legacy is true, we also generate the legacy key.
+ * If supports_ed25519_link_handshake_any is true, we add the relay's ed25519
+ * key to the link specifiers.
*
* If ei is NULL, returns a hs_service_intro_point_t with an empty link
* specifier list and no onion key. (This is used for testing.)
+ * On any other error, NULL is returned.
*
* ei must be an extend_info_t containing an IPv4 address. (We will add supoort
* for IPv6 in a later release.) When calling extend_info_from_node(), pass
* 0 in for_direct_connection to make sure ei always has an IPv4 address. */
STATIC hs_service_intro_point_t *
-service_intro_point_new(const extend_info_t *ei, unsigned int is_legacy)
+service_intro_point_new(const extend_info_t *ei, unsigned int is_legacy,
+ unsigned int supports_ed25519_link_handshake_any)
{
hs_desc_link_specifier_t *ls;
hs_service_intro_point_t *ip;
@@ -443,7 +449,7 @@ service_intro_point_new(const extend_info_t *ei, unsigned int is_legacy)
if (BUG(intro_point_max_lifetime < intro_point_min_lifetime)) {
goto err;
}
- ip->time_to_expire = time(NULL) +
+ ip->time_to_expire = approx_time() +
crypto_rand_int_range(intro_point_min_lifetime,intro_point_max_lifetime);
}
@@ -489,10 +495,13 @@ service_intro_point_new(const extend_info_t *ei, unsigned int is_legacy)
}
smartlist_add(ip->base.link_specifiers, ls);
- /* ed25519 identity key is optional for intro points */
- ls = hs_desc_link_specifier_new(ei, LS_ED25519_ID);
- if (ls) {
- smartlist_add(ip->base.link_specifiers, ls);
+ /* ed25519 identity key is optional for intro points. If the node supports
+ * ed25519 link authentication, we include it. */
+ if (supports_ed25519_link_handshake_any) {
+ ls = hs_desc_link_specifier_new(ei, LS_ED25519_ID);
+ if (ls) {
+ smartlist_add(ip->base.link_specifiers, ls);
+ }
}
/* IPv6 is not supported in this release. */
@@ -883,6 +892,7 @@ move_hs_state(hs_service_t *src_service, hs_service_t *dst_service)
replaycache_free(dst->replay_cache_rend_cookie);
}
dst->replay_cache_rend_cookie = src->replay_cache_rend_cookie;
+ dst->next_rotation_time = src->next_rotation_time;
src->replay_cache_rend_cookie = NULL; /* steal pointer reference */
}
@@ -1027,7 +1037,7 @@ load_service_keys(hs_service_t *service)
/* Don't ask for key creation, we want to know if we were able to load it or
* we had to generate it. Better logging! */
kp = ed_key_init_from_file(fname, INIT_ED_KEY_SPLIT, LOG_INFO, NULL, 0, 0,
- 0, NULL);
+ 0, NULL, NULL);
if (!kp) {
log_info(LD_REND, "Unable to load keys from %s. Generating it...", fname);
/* We'll now try to generate the keys and for it we want the strongest
@@ -1035,7 +1045,7 @@ load_service_keys(hs_service_t *service)
uint32_t key_flags = INIT_ED_KEY_CREATE | INIT_ED_KEY_EXTRA_STRONG |
INIT_ED_KEY_SPLIT;
kp = ed_key_init_from_file(fname, key_flags, LOG_WARN, NULL, 0, 0, 0,
- NULL);
+ NULL, NULL);
if (!kp) {
log_warn(LD_REND, "Unable to generate keys and save in %s.", fname);
goto end;
@@ -1084,6 +1094,7 @@ service_descriptor_free_(hs_service_descriptor_t *desc)
SMARTLIST_FOREACH(desc->previous_hsdirs, char *, s, tor_free(s));
smartlist_free(desc->previous_hsdirs);
}
+ crypto_ope_free(desc->ope_cipher);
tor_free(desc);
}
@@ -1388,13 +1399,30 @@ build_service_desc_plaintext(const hs_service_t *service,
return ret;
}
+/** Compute the descriptor's OPE cipher for encrypting revision counters. */
+static crypto_ope_t *
+generate_ope_cipher_for_desc(const hs_service_descriptor_t *hs_desc)
+{
+ /* Compute OPE key as H("rev-counter-generation" | blinded privkey) */
+ uint8_t key[DIGEST256_LEN];
+ crypto_digest_t *digest = crypto_digest256_new(DIGEST_SHA3_256);
+ const char ope_key_prefix[] = "rev-counter-generation";
+ const ed25519_secret_key_t *eph_privkey = &hs_desc->blinded_kp.seckey;
+ crypto_digest_add_bytes(digest, ope_key_prefix, sizeof(ope_key_prefix));
+ crypto_digest_add_bytes(digest, (char*)eph_privkey->seckey,
+ sizeof(eph_privkey->seckey));
+ crypto_digest_get_digest(digest, (char *)key, sizeof(key));
+ crypto_digest_free(digest);
+
+ return crypto_ope_new(key);
+}
+
/* For the given service and descriptor object, create the key material which
* is the blinded keypair and the descriptor signing keypair. Return 0 on
* success else -1 on error where the generated keys MUST be ignored. */
static int
build_service_desc_keys(const hs_service_t *service,
- hs_service_descriptor_t *desc,
- uint64_t time_period_num)
+ hs_service_descriptor_t *desc)
{
int ret = 0;
ed25519_keypair_t kp;
@@ -1410,10 +1438,17 @@ build_service_desc_keys(const hs_service_t *service,
memcpy(&kp.pubkey, &service->keys.identity_pk, sizeof(kp.pubkey));
memcpy(&kp.seckey, &service->keys.identity_sk, sizeof(kp.seckey));
/* Build blinded keypair for this time period. */
- hs_build_blinded_keypair(&kp, NULL, 0, time_period_num, &desc->blinded_kp);
+ hs_build_blinded_keypair(&kp, NULL, 0, desc->time_period_num,
+ &desc->blinded_kp);
/* Let's not keep too much traces of our keys in memory. */
memwipe(&kp, 0, sizeof(kp));
+ /* Compute the OPE cipher struct (it's tied to the current blinded key) */
+ log_info(LD_GENERAL,
+ "Getting OPE for TP#%u", (unsigned) desc->time_period_num);
+ tor_assert_nonfatal(!desc->ope_cipher);
+ desc->ope_cipher = generate_ope_cipher_for_desc(desc);
+
/* No need for extra strong, this is a temporary key only for this
* descriptor. Nothing long term. */
if (ed25519_keypair_generate(&desc->signing_kp, 0) < 0) {
@@ -1444,10 +1479,12 @@ build_service_descriptor(hs_service_t *service, time_t now,
tor_assert(desc_out);
desc = service_descriptor_new();
+
+ /* Set current time period */
desc->time_period_num = time_period_num;
/* Create the needed keys so we can setup the descriptor content. */
- if (build_service_desc_keys(service, desc, time_period_num) < 0) {
+ if (build_service_desc_keys(service, desc) < 0) {
goto err;
}
/* Setup plaintext descriptor content. */
@@ -1459,9 +1496,6 @@ build_service_descriptor(hs_service_t *service, time_t now,
goto err;
}
- /* Set the revision counter for this descriptor */
- set_descriptor_revision_counter(desc->desc);
-
/* Let's make sure that we've created a descriptor that can actually be
* encoded properly. This function also checks if the encoded output is
* decodable after. */
@@ -1627,8 +1661,12 @@ pick_intro_point(unsigned int direct_conn, smartlist_t *exclude_nodes)
tor_assert_nonfatal(!ed25519_public_key_is_zero(&info->ed_identity));
}
- /* Create our objects and populate them with the node information. */
- ip = service_intro_point_new(info, !node_supports_ed25519_hs_intro(node));
+ /* Create our objects and populate them with the node information.
+ * We don't care if the intro's link auth is compatible with us, because
+ * we are sending the ed25519 key to a remote client via the descriptor. */
+ ip = service_intro_point_new(info, !node_supports_ed25519_hs_intro(node),
+ node_supports_ed25519_link_authentication(node,
+ 0));
if (ip == NULL) {
goto err;
}
@@ -1769,7 +1807,6 @@ service_desc_schedule_upload(hs_service_descriptor_t *desc,
/* Update the given descriptor from the given service. The possible update
* actions includes:
* - Picking missing intro points if needed.
- * - Incrementing the revision counter if needed.
*/
static void
update_service_descriptor(hs_service_t *service,
@@ -1933,19 +1970,12 @@ cleanup_intro_points(hs_service_t *service, time_t now)
/* Set the next rotation time of the descriptors for the given service for the
* time now. */
static void
-set_rotation_time(hs_service_t *service, time_t now)
+set_rotation_time(hs_service_t *service)
{
- time_t valid_after;
- const networkstatus_t *ns = networkstatus_get_live_consensus(now);
- if (ns) {
- valid_after = ns->valid_after;
- } else {
- valid_after = now;
- }
-
tor_assert(service);
+
service->state.next_rotation_time =
- sr_state_get_start_time_of_current_protocol_run(valid_after) +
+ sr_state_get_start_time_of_current_protocol_run() +
sr_state_get_protocol_run_duration();
{
@@ -2012,7 +2042,7 @@ should_rotate_descriptors(hs_service_t *service, time_t now)
* will be freed, the next one put in as the current and finally the next
* descriptor pointer is NULLified. */
static void
-rotate_service_descriptors(hs_service_t *service, time_t now)
+rotate_service_descriptors(hs_service_t *service)
{
if (service->desc_current) {
/* Close all IP circuits for the descriptor. */
@@ -2027,7 +2057,7 @@ rotate_service_descriptors(hs_service_t *service, time_t now)
service->desc_next = NULL;
/* We've just rotated, set the next time for the rotation. */
- set_rotation_time(service, now);
+ set_rotation_time(service);
}
/* Rotate descriptors for each service if needed. A non existing current
@@ -2055,7 +2085,7 @@ rotate_all_descriptors(time_t now)
service->desc_current, service->desc_next,
safe_str_client(service->onion_address));
- rotate_service_descriptors(service, now);
+ rotate_service_descriptors(service);
} FOR_EACH_SERVICE_END;
}
@@ -2077,7 +2107,7 @@ run_housekeeping_event(time_t now)
/* Set the next rotation time of the descriptors. If it's Oct 25th
* 23:47:00, the next rotation time is when the next SRV is computed
* which is at Oct 26th 00:00:00 that is in 13 minutes. */
- set_rotation_time(service, now);
+ set_rotation_time(service);
}
/* Cleanup invalid intro points from the service descriptor. */
@@ -2326,13 +2356,17 @@ upload_descriptor_to_hsdir(const hs_service_t *service,
int is_next_desc = (service->desc_next == desc);
const uint8_t *idx = (is_next_desc) ? hsdir->hsdir_index.store_second:
hsdir->hsdir_index.store_first;
+ char *blinded_pubkey_log_str =
+ tor_strdup(hex_str((char*)&desc->blinded_kp.pubkey.pubkey, 32));
log_info(LD_REND, "Service %s %s descriptor of revision %" PRIu64
- " initiated upload request to %s with index %s",
+ " initiated upload request to %s with index %s (%s)",
safe_str_client(service->onion_address),
(is_next_desc) ? "next" : "current",
desc->desc->plaintext_data.revision_counter,
safe_str_client(node_describe(hsdir)),
- safe_str_client(hex_str((const char *) idx, 32)));
+ safe_str_client(hex_str((const char *) idx, 32)),
+ safe_str_client(blinded_pubkey_log_str));
+ tor_free(blinded_pubkey_log_str);
/* Fire a UPLOAD control port event. */
hs_control_desc_event_upload(service->onion_address, hsdir->identity,
@@ -2344,197 +2378,77 @@ upload_descriptor_to_hsdir(const hs_service_t *service,
return;
}
-/** Return a newly-allocated string for our state file which contains revision
- * counter information for <b>desc</b>. The format is:
+/** Set the revision counter in <b>hs_desc</b>. We do this by encrypting a
+ * timestamp using an OPE scheme and using the ciphertext as our revision
+ * counter.
*
- * HidServRevCounter <blinded_pubkey> <rev_counter>
- */
-STATIC char *
-encode_desc_rev_counter_for_state(const hs_service_descriptor_t *desc)
-{
- char *state_str = NULL;
- char blinded_pubkey_b64[ED25519_BASE64_LEN+1];
- uint64_t rev_counter = desc->desc->plaintext_data.revision_counter;
- const ed25519_public_key_t *blinded_pubkey = &desc->blinded_kp.pubkey;
-
- /* Turn the blinded key into b64 so that we save it on state */
- tor_assert(blinded_pubkey);
- if (ed25519_public_to_base64(blinded_pubkey_b64, blinded_pubkey) < 0) {
- goto done;
- }
-
- /* Format is: <blinded key> <rev counter> */
- tor_asprintf(&state_str, "%s %" PRIu64, blinded_pubkey_b64, rev_counter);
-
- log_info(LD_GENERAL, "[!] Adding rev counter %" PRIu64 " for %s!",
- rev_counter, blinded_pubkey_b64);
-
- done:
- return state_str;
-}
-
-/** Update HS descriptor revision counters in our state by removing the old
- * ones and writing down the ones that are currently active. */
+ * If <b>is_current</b> is true, then this is the current HS descriptor,
+ * otherwise it's the next one. */
static void
-update_revision_counters_in_state(void)
-{
- config_line_t *lines = NULL;
- config_line_t **nextline = &lines;
- or_state_t *state = get_or_state();
-
- /* Prepare our state structure with the rev counters */
- FOR_EACH_SERVICE_BEGIN(service) {
- FOR_EACH_DESCRIPTOR_BEGIN(service, desc) {
- /* We don't want to save zero counters */
- if (desc->desc->plaintext_data.revision_counter == 0) {
- continue;
- }
-
- *nextline = tor_malloc_zero(sizeof(config_line_t));
- (*nextline)->key = tor_strdup("HidServRevCounter");
- (*nextline)->value = encode_desc_rev_counter_for_state(desc);
- nextline = &(*nextline)->next;
- } FOR_EACH_DESCRIPTOR_END;
- } FOR_EACH_SERVICE_END;
-
- /* Remove the old rev counters, and replace them with the new ones */
- config_free_lines(state->HidServRevCounter);
- state->HidServRevCounter = lines;
-
- /* Set the state as dirty since we just edited it */
- if (!get_options()->AvoidDiskWrites) {
- or_state_mark_dirty(state, 0);
- }
-}
-
-/** Scan the string <b>state_line</b> for the revision counter of the service
- * with <b>blinded_pubkey</b>. Set <b>service_found_out</b> to True if the
- * line is relevant to this service, and return the cached revision
- * counter. Else set <b>service_found_out</b> to False. */
-STATIC uint64_t
-check_state_line_for_service_rev_counter(const char *state_line,
- const ed25519_public_key_t *blinded_pubkey,
- int *service_found_out)
+set_descriptor_revision_counter(hs_service_descriptor_t *hs_desc, time_t now,
+ bool is_current)
{
- smartlist_t *items = NULL;
- int ok;
- ed25519_public_key_t pubkey_in_state;
uint64_t rev_counter = 0;
- tor_assert(service_found_out);
- tor_assert(state_line);
- tor_assert(blinded_pubkey);
-
- /* Assume that the line is not for this service */
- *service_found_out = 0;
+ /* Get current time */
+ time_t srv_start = 0;
- /* Start parsing the state line */
- items = smartlist_new();
- smartlist_split_string(items, state_line, NULL,
- SPLIT_SKIP_SPACE|SPLIT_IGNORE_BLANK, -1);
- if (smartlist_len(items) < 2) {
- log_warn(LD_GENERAL, "Incomplete rev counter line. Ignoring.");
- goto done;
- }
-
- char *b64_key_str = smartlist_get(items, 0);
- char *saved_rev_counter_str = smartlist_get(items, 1);
-
- /* Parse blinded key to check if it's for this hidden service */
- if (ed25519_public_from_base64(&pubkey_in_state, b64_key_str) < 0) {
- log_warn(LD_GENERAL, "Unable to base64 key in revcount line. Ignoring.");
- goto done;
- }
- /* State line not for this hidden service */
- if (!ed25519_pubkey_eq(&pubkey_in_state, blinded_pubkey)) {
- goto done;
- }
-
- rev_counter = tor_parse_uint64(saved_rev_counter_str,
- 10, 0, UINT64_MAX, &ok, NULL);
- if (!ok) {
- log_warn(LD_GENERAL, "Unable to parse rev counter. Ignoring.");
- goto done;
+ /* As our revision counter plaintext value, we use the seconds since the
+ * start of the SR protocol run that is relevant to this descriptor. This is
+ * guaranteed to be a positive value since we need the SRV to start making a
+ * descriptor (so that we know where to upload it).
+ *
+ * Depending on whether we are building the current or the next descriptor,
+ * services use a different SRV value. See [SERVICEUPLOAD] in
+ * rend-spec-v3.txt:
+ *
+ * In particular, for the current descriptor (aka first descriptor), Tor
+ * always uses the previous SRV for uploading the descriptor, and hence we
+ * should use the start time of the previous protocol run here.
+ *
+ * Whereas for the next descriptor (aka second descriptor), Tor always uses
+ * the current SRV for uploading the descriptor. and hence we use the start
+ * time of the current protocol run.
+ */
+ if (is_current) {
+ srv_start = sr_state_get_start_time_of_previous_protocol_run();
+ } else {
+ srv_start = sr_state_get_start_time_of_current_protocol_run();
}
- /* Since we got this far, the line was for this service */
- *service_found_out = 1;
+ log_info(LD_REND, "Setting rev counter for TP #%u: "
+ "SRV started at %d, now %d (%s)",
+ (unsigned) hs_desc->time_period_num, (int)srv_start,
+ (int)now, is_current ? "current" : "next");
- log_info(LD_GENERAL, "Found rev counter for %s: %" PRIu64,
- b64_key_str, rev_counter);
+ tor_assert_nonfatal(now >= srv_start);
- done:
- tor_assert(items);
- SMARTLIST_FOREACH(items, char*, s, tor_free(s));
- smartlist_free(items);
+ /* Compute seconds elapsed since the start of the time period. That's the
+ * number of seconds of how long this blinded key has been active. */
+ time_t seconds_since_start_of_srv = now - srv_start;
- return rev_counter;
-}
-
-/** Dig into our state file and find the current revision counter for the
- * service with blinded key <b>blinded_pubkey</b>. If no revision counter is
- * found, return 0. */
-static uint64_t
-get_rev_counter_for_service(const ed25519_public_key_t *blinded_pubkey)
-{
- or_state_t *state = get_or_state();
- config_line_t *line;
+ /* Increment by one so that we are definitely sure this is strictly
+ * positive and not zero. */
+ seconds_since_start_of_srv++;
- /* Set default value for rev counters (if not found) to 0 */
- uint64_t final_rev_counter = 0;
-
- for (line = state->HidServRevCounter ; line ; line = line->next) {
- int service_found = 0;
- uint64_t rev_counter = 0;
-
- tor_assert(!strcmp(line->key, "HidServRevCounter"));
-
- /* Scan all the HidServRevCounter lines till we find the line for this
- service: */
- rev_counter = check_state_line_for_service_rev_counter(line->value,
- blinded_pubkey,
- &service_found);
- if (service_found) {
- final_rev_counter = rev_counter;
- goto done;
- }
+ /* Check for too big inputs. */
+ if (BUG(seconds_since_start_of_srv > OPE_INPUT_MAX)) {
+ seconds_since_start_of_srv = OPE_INPUT_MAX;
}
- done:
- return final_rev_counter;
-}
-
-/** Update the value of the revision counter for <b>hs_desc</b> and save it on
- our state file. */
-static void
-increment_descriptor_revision_counter(hs_descriptor_t *hs_desc)
-{
- /* Find stored rev counter if it exists */
- uint64_t rev_counter =
- get_rev_counter_for_service(&hs_desc->plaintext_data.blinded_pubkey);
-
- /* Increment the revision counter of <b>hs_desc</b> so the next update (which
- * will trigger an upload) will have the right value. We do this at this
- * stage to only do it once because a descriptor can have many updates before
- * being uploaded. By doing it at upload, we are sure to only increment by 1
- * and thus avoid leaking how many operations we made on the descriptor from
- * the previous one before uploading. */
- rev_counter++;
- hs_desc->plaintext_data.revision_counter = rev_counter;
+ /* Now we compute the final revision counter value by encrypting the
+ plaintext using our OPE cipher: */
+ tor_assert(hs_desc->ope_cipher);
+ rev_counter = crypto_ope_encrypt(hs_desc->ope_cipher,
+ (int) seconds_since_start_of_srv);
- update_revision_counters_in_state();
-}
+ /* The OPE module returns CRYPTO_OPE_ERROR in case of errors. */
+ tor_assert_nonfatal(rev_counter < CRYPTO_OPE_ERROR);
-/** Set the revision counter in <b>hs_desc</b>, using the state file to find
- * the current counter value if it exists. */
-static void
-set_descriptor_revision_counter(hs_descriptor_t *hs_desc)
-{
- /* Find stored rev counter if it exists */
- uint64_t rev_counter =
- get_rev_counter_for_service(&hs_desc->plaintext_data.blinded_pubkey);
+ log_info(LD_REND, "Encrypted revision counter %d to %ld",
+ (int) seconds_since_start_of_srv, (long int) rev_counter);
- hs_desc->plaintext_data.revision_counter = rev_counter;
+ hs_desc->desc->plaintext_data.revision_counter = rev_counter;
}
/* Encode and sign the service descriptor desc and upload it to the
@@ -2592,9 +2506,6 @@ upload_descriptor_to_all(const hs_service_t *service,
safe_str_client(service->onion_address), fmt_next_time);
}
- /* Update the revision counter of this descriptor */
- increment_descriptor_revision_counter(desc->desc);
-
smartlist_free(responsible_dirs);
return;
}
@@ -2734,6 +2645,10 @@ run_upload_descriptor_event(time_t now)
* accurate because all circuits have been established. */
build_desc_intro_points(service, desc, now);
+ /* Set the desc revision counter right before uploading */
+ set_descriptor_revision_counter(desc, approx_time(),
+ service->desc_current == desc);
+
upload_descriptor_to_all(service, desc);
} FOR_EACH_DESCRIPTOR_END;
} FOR_EACH_SERVICE_END;
@@ -2969,6 +2884,29 @@ service_add_fnames_to_list(const hs_service_t *service, smartlist_t *list)
smartlist_add(list, hs_path_from_filename(s_dir, fname));
}
+/* Return true iff the given service identity key is present on disk. */
+static int
+service_key_on_disk(const char *directory_path)
+{
+ int ret = 0;
+ char *fname;
+ ed25519_keypair_t *kp = NULL;
+
+ tor_assert(directory_path);
+
+ /* Build the v3 key path name and then try to load it. */
+ fname = hs_path_from_filename(directory_path, fname_keyfile_prefix);
+ kp = ed_key_init_from_file(fname, INIT_ED_KEY_SPLIT,
+ LOG_DEBUG, NULL, 0, 0, 0, NULL, NULL);
+ if (kp) {
+ ret = 1;
+ }
+
+ ed25519_keypair_free(kp);
+ tor_free(fname);
+ return ret;
+}
+
/* ========== */
/* Public API */
/* ========== */
@@ -3460,6 +3398,36 @@ hs_service_circuit_has_opened(origin_circuit_t *circ)
}
}
+/* Return the service version by looking at the key in the service directory.
+ * If the key is not found or unrecognized, -1 is returned. Else, the service
+ * version is returned. */
+int
+hs_service_get_version_from_key(const hs_service_t *service)
+{
+ int version = -1; /* Unknown version. */
+ const char *directory_path;
+
+ tor_assert(service);
+
+ /* We'll try to load the key for version 3. If not found, we'll try version
+ * 2 and if not found, we'll send back an unknown version (-1). */
+ directory_path = service->config.directory_path;
+
+ /* Version 3 check. */
+ if (service_key_on_disk(directory_path)) {
+ version = HS_VERSION_THREE;
+ goto end;
+ }
+ /* Version 2 check. */
+ if (rend_service_key_on_disk(directory_path)) {
+ version = HS_VERSION_TWO;
+ goto end;
+ }
+
+ end:
+ return version;
+}
+
/* Load and/or generate keys for all onion services including the client
* authorization if any. Return 0 on success, -1 on failure. */
int
diff --git a/src/feature/hs/hs_service.h b/src/feature/hs/hs_service.h
index 22bfcacc26..17c654ecf4 100644
--- a/src/feature/hs/hs_service.h
+++ b/src/feature/hs/hs_service.h
@@ -24,7 +24,7 @@
/* When loading and configuring a service, this is the default version it will
* be configured for as it is possible that no HiddenServiceVersion is
* present. */
-#define HS_SERVICE_DEFAULT_VERSION HS_VERSION_TWO
+#define HS_SERVICE_DEFAULT_VERSION HS_VERSION_THREE
/* As described in the specification, service publishes their next descriptor
* at a random time between those two values (in seconds). */
@@ -131,6 +131,10 @@ typedef struct hs_service_descriptor_t {
* from this list, this means we received new dirinfo and we need to
* reupload our descriptor. */
smartlist_t *previous_hsdirs;
+
+ /** The OPE cipher for encrypting revision counters for this descriptor.
+ * Tied to the descriptor blinded key. */
+ struct crypto_ope_t *ope_cipher;
} hs_service_descriptor_t;
/* Service key material. */
@@ -258,6 +262,7 @@ void hs_service_free_(hs_service_t *service);
unsigned int hs_service_get_num_services(void);
void hs_service_stage_services(const smartlist_t *service_list);
int hs_service_load_all_keys(void);
+int hs_service_get_version_from_key(const hs_service_t *service);
void hs_service_lists_fnames_for_sandbox(smartlist_t *file_list,
smartlist_t *dir_list);
int hs_service_set_conn_addr_port(const origin_circuit_t *circ,
@@ -311,8 +316,9 @@ STATIC void remove_service(hs_service_ht *map, hs_service_t *service);
STATIC int register_service(hs_service_ht *map, hs_service_t *service);
/* Service introduction point functions. */
STATIC hs_service_intro_point_t *service_intro_point_new(
- const extend_info_t *ei,
- unsigned int is_legacy);
+ const extend_info_t *ei,
+ unsigned int is_legacy,
+ unsigned int supports_ed25519_link_handshake_any);
STATIC void service_intro_point_free_(hs_service_intro_point_t *ip);
#define service_intro_point_free(ip) \
FREE_AND_NULL(hs_service_intro_point_t, \
@@ -346,19 +352,10 @@ STATIC void build_all_descriptors(time_t now);
STATIC void update_all_descriptors(time_t now);
STATIC void run_upload_descriptor_event(time_t now);
-STATIC char *
-encode_desc_rev_counter_for_state(const hs_service_descriptor_t *desc);
-
STATIC void service_descriptor_free_(hs_service_descriptor_t *desc);
#define service_descriptor_free(d) \
FREE_AND_NULL(hs_service_descriptor_t, \
service_descriptor_free_, (d))
-
-STATIC uint64_t
-check_state_line_for_service_rev_counter(const char *state_line,
- const ed25519_public_key_t *blinded_pubkey,
- int *service_found_out);
-
STATIC int
write_address_to_file(const hs_service_t *service, const char *fname_);
@@ -375,4 +372,3 @@ STATIC int service_desc_hsdirs_changed(const hs_service_t *service,
#endif /* defined(HS_SERVICE_PRIVATE) */
#endif /* !defined(TOR_HS_SERVICE_H) */
-
diff --git a/src/feature/hs_common/shared_random_client.c b/src/feature/hs_common/shared_random_client.c
index 329f053d3b..a13404a329 100644
--- a/src/feature/hs_common/shared_random_client.c
+++ b/src/feature/hs_common/shared_random_client.c
@@ -51,9 +51,13 @@ get_voting_interval(void)
return interval;
}
-/* Given the time <b>now</b>, return the start time of the current round of
+/* Given the current consensus, return the start time of the current round of
* the SR protocol. For example, if it's 23:47:08, the current round thus
- * started at 23:47:00 for a voting interval of 10 seconds. */
+ * started at 23:47:00 for a voting interval of 10 seconds.
+ *
+ * This function uses the consensus voting schedule to derive its results,
+ * instead of the actual consensus we are currently using, so it should be used
+ * for voting purposes. */
time_t
get_start_time_of_current_round(void)
{
@@ -222,24 +226,53 @@ sr_parse_srv(const smartlist_t *args)
return srv;
}
-/** Return the start time of the current SR protocol run. For example, if the
- * time is 23/06/2017 23:47:08 and a full SR protocol run is 24 hours, this
- * function should return 23/06/2017 00:00:00. */
+/** Return the start time of the current SR protocol run using the times from
+ * the current consensus. For example, if the latest consensus valid-after is
+ * 23/06/2017 23:00:00 and a full SR protocol run is 24 hours, this function
+ * returns 23/06/2017 00:00:00. */
time_t
-sr_state_get_start_time_of_current_protocol_run(time_t now)
+sr_state_get_start_time_of_current_protocol_run(void)
{
int total_rounds = SHARED_RANDOM_N_ROUNDS * SHARED_RANDOM_N_PHASES;
int voting_interval = get_voting_interval();
- /* Find the time the current round started. */
- time_t beginning_of_current_round = get_start_time_of_current_round();
+ time_t beginning_of_curr_round;
+
+ /* This function is not used for voting purposes, so if we have a live
+ consensus, use its valid-after as the beginning of the current round,
+ otherwise resort to the voting schedule which should always exist. */
+ networkstatus_t *ns = networkstatus_get_live_consensus(approx_time());
+ if (ns) {
+ beginning_of_curr_round = ns->valid_after;
+ } else {
+ beginning_of_curr_round = get_start_time_of_current_round();
+ }
/* Get current SR protocol round */
- int current_round = (now / voting_interval) % total_rounds;
+ int curr_round_slot;
+ curr_round_slot = (beginning_of_curr_round / voting_interval) % total_rounds;
/* Get start time by subtracting the time elapsed from the beginning of the
protocol run */
- time_t time_elapsed_since_start_of_run = current_round * voting_interval;
- return beginning_of_current_round - time_elapsed_since_start_of_run;
+ time_t time_elapsed_since_start_of_run = curr_round_slot * voting_interval;
+
+ log_debug(LD_GENERAL, "Current SRV proto run: Start of current round: %u. "
+ "Time elapsed: %u (%d)", (unsigned) beginning_of_curr_round,
+ (unsigned) time_elapsed_since_start_of_run, voting_interval);
+
+ return beginning_of_curr_round - time_elapsed_since_start_of_run;
+}
+
+/** Return the start time of the previous SR protocol run. See
+ * sr_state_get_start_time_of_current_protocol_run() for more details. */
+time_t
+sr_state_get_start_time_of_previous_protocol_run(void)
+{
+ time_t start_time_of_current_run =
+ sr_state_get_start_time_of_current_protocol_run();
+
+ /* We get the start time of previous protocol run, by getting the start time
+ * of current run and the subtracting a full protocol run from that. */
+ return start_time_of_current_run - sr_state_get_protocol_run_duration();
}
/** Return the time (in seconds) it takes to complete a full SR protocol phase
diff --git a/src/feature/hs_common/shared_random_client.h b/src/feature/hs_common/shared_random_client.h
index 497a015c18..0e26f530a4 100644
--- a/src/feature/hs_common/shared_random_client.h
+++ b/src/feature/hs_common/shared_random_client.h
@@ -34,7 +34,8 @@ sr_srv_t *sr_parse_srv(const smartlist_t *args);
/* Number of phase we have in a protocol. */
#define SHARED_RANDOM_N_PHASES 2
-time_t sr_state_get_start_time_of_current_protocol_run(time_t now);
+time_t sr_state_get_start_time_of_current_protocol_run(void);
+time_t sr_state_get_start_time_of_previous_protocol_run(void);
unsigned int sr_state_get_phase_duration(void);
unsigned int sr_state_get_protocol_run_duration(void);
time_t get_start_time_of_current_round(void);
diff --git a/src/feature/nodelist/networkstatus.c b/src/feature/nodelist/networkstatus.c
index e9d36cbdcb..6492b828b1 100644
--- a/src/feature/nodelist/networkstatus.c
+++ b/src/feature/nodelist/networkstatus.c
@@ -385,6 +385,11 @@ networkstatus_vote_free_(networkstatus_t *ns)
smartlist_free(ns->routerstatus_list);
}
+ if (ns->bw_file_headers) {
+ SMARTLIST_FOREACH(ns->bw_file_headers, char *, c, tor_free(c));
+ smartlist_free(ns->bw_file_headers);
+ }
+
digestmap_free(ns->desc_digest_map, NULL);
if (ns->sr_info.commits) {
@@ -2417,6 +2422,8 @@ get_net_param_from_list(smartlist_t *net_params, const char *param_name,
res = max_val;
}
+ tor_assert(res >= min_val);
+ tor_assert(res <= max_val);
return res;
}
diff --git a/src/feature/nodelist/networkstatus_st.h b/src/feature/nodelist/networkstatus_st.h
index 46b0f53c0b..2bb0e3ae35 100644
--- a/src/feature/nodelist/networkstatus_st.h
+++ b/src/feature/nodelist/networkstatus_st.h
@@ -96,6 +96,9 @@ struct networkstatus_t {
/** Contains the shared random protocol data from a vote or consensus. */
networkstatus_sr_info_t sr_info;
+
+ /** List of key=value strings from the headers of the bandwidth list file */
+ smartlist_t *bw_file_headers;
};
#endif
diff --git a/src/feature/nodelist/nodelist.c b/src/feature/nodelist/nodelist.c
index 03122ba0f7..d6bc474483 100644
--- a/src/feature/nodelist/nodelist.c
+++ b/src/feature/nodelist/nodelist.c
@@ -84,10 +84,17 @@ static void node_free_(node_t *node);
/** count_usable_descriptors counts descriptors with these flag(s)
*/
typedef enum {
- /* All descriptors regardless of flags */
- USABLE_DESCRIPTOR_ALL = 0,
- /* Only descriptors with the Exit flag */
- USABLE_DESCRIPTOR_EXIT_ONLY = 1
+ /* All descriptors regardless of flags or exit policies */
+ USABLE_DESCRIPTOR_ALL = 0U,
+ /* Only count descriptors with an exit policy that allows at least one port
+ */
+ USABLE_DESCRIPTOR_EXIT_POLICY = 1U << 0,
+ /* Only count descriptors for relays that have the exit flag in the
+ * consensus */
+ USABLE_DESCRIPTOR_EXIT_FLAG = 1U << 1,
+ /* Only count descriptors for relays that have the policy and the flag */
+ USABLE_DESCRIPTOR_EXIT_POLICY_AND_FLAG = (USABLE_DESCRIPTOR_EXIT_POLICY |
+ USABLE_DESCRIPTOR_EXIT_FLAG)
} usable_descriptor_t;
static void count_usable_descriptors(int *num_present,
int *num_usable,
@@ -1792,7 +1799,15 @@ int
addrs_in_same_network_family(const tor_addr_t *a1,
const tor_addr_t *a2)
{
- return 0 == tor_addr_compare_masked(a1, a2, 16, CMP_SEMANTIC);
+ switch (tor_addr_family(a1)) {
+ case AF_INET:
+ return 0 == tor_addr_compare_masked(a1, a2, 16, CMP_SEMANTIC);
+ case AF_INET6:
+ return 0 == tor_addr_compare_masked(a1, a2, 32, CMP_SEMANTIC);
+ default:
+ /* If not IPv4 or IPv6, return 0. */
+ return 0;
+ }
}
/** Return true if <b>node</b>'s nickname matches <b>nickname</b>
@@ -2127,8 +2142,11 @@ get_dir_info_status_string(void)
* *<b>num_present</b>).
*
* If <b>in_set</b> is non-NULL, only consider those routers in <b>in_set</b>.
- * If <b>exit_only</b> is USABLE_DESCRIPTOR_EXIT_ONLY, only consider nodes
- * with the Exit flag.
+ * If <b>exit_only</b> & USABLE_DESCRIPTOR_EXIT_POLICY, only consider nodes
+ * present if they have an exit policy that accepts at least one port.
+ * If <b>exit_only</b> & USABLE_DESCRIPTOR_EXIT_FLAG, only consider nodes
+ * usable if they have the exit flag in the consensus.
+ *
* If *<b>descs_out</b> is present, add a node_t for each usable descriptor
* to it.
*/
@@ -2149,7 +2167,7 @@ count_usable_descriptors(int *num_present, int *num_usable,
if (!node)
continue; /* This would be a bug: every entry in the consensus is
* supposed to have a node. */
- if (exit_only == USABLE_DESCRIPTOR_EXIT_ONLY && ! rs->is_exit)
+ if ((exit_only & USABLE_DESCRIPTOR_EXIT_FLAG) && ! rs->is_exit)
continue;
if (in_set && ! routerset_contains_routerstatus(in_set, rs, -1))
continue;
@@ -2162,7 +2180,14 @@ count_usable_descriptors(int *num_present, int *num_usable,
else
present = NULL != router_get_by_descriptor_digest(digest);
if (present) {
- /* we have the descriptor listed in the consensus. */
+ /* Do the policy check last, because it requires a descriptor,
+ * and is potentially expensive */
+ if ((exit_only & USABLE_DESCRIPTOR_EXIT_POLICY) &&
+ node_exit_policy_rejects_all(node)) {
+ continue;
+ }
+ /* we have the descriptor listed in the consensus, and it
+ * satisfies our exit constraints (if any) */
++*num_present;
}
if (descs_out)
@@ -2171,10 +2196,17 @@ count_usable_descriptors(int *num_present, int *num_usable,
}
SMARTLIST_FOREACH_END(rs);
- log_debug(LD_DIR, "%d usable, %d present (%s%s).",
+ log_debug(LD_DIR, "%d usable, %d present (%s%s%s%s%s).",
*num_usable, *num_present,
md ? "microdesc" : "desc",
- exit_only == USABLE_DESCRIPTOR_EXIT_ONLY ? " exits" : "s");
+ (exit_only & USABLE_DESCRIPTOR_EXIT_POLICY_AND_FLAG) ?
+ " exit" : "s",
+ (exit_only & USABLE_DESCRIPTOR_EXIT_POLICY) ?
+ " policies" : "" ,
+ (exit_only == USABLE_DESCRIPTOR_EXIT_POLICY_AND_FLAG) ?
+ " and" : "" ,
+ (exit_only & USABLE_DESCRIPTOR_EXIT_FLAG) ?
+ " flags" : "" );
}
/** Return an estimate of which fraction of usable paths through the Tor
@@ -2209,9 +2241,20 @@ compute_frac_paths_available(const networkstatus_t *consensus,
count_usable_descriptors(num_present_out, num_usable_out,
mid, consensus, now, NULL,
USABLE_DESCRIPTOR_ALL);
+ log_debug(LD_NET,
+ "%s: %d present, %d usable",
+ "mid",
+ np,
+ nu);
+
if (options->EntryNodes) {
count_usable_descriptors(&np, &nu, guards, consensus, now,
options->EntryNodes, USABLE_DESCRIPTOR_ALL);
+ log_debug(LD_NET,
+ "%s: %d present, %d usable",
+ "guard",
+ np,
+ nu);
} else {
SMARTLIST_FOREACH(mid, const node_t *, node, {
if (authdir) {
@@ -2222,42 +2265,45 @@ compute_frac_paths_available(const networkstatus_t *consensus,
smartlist_add(guards, (node_t*)node);
}
});
+ log_debug(LD_NET,
+ "%s: %d possible",
+ "guard",
+ smartlist_len(guards));
}
- /* All nodes with exit flag
- * If we're in a network with TestingDirAuthVoteExit set,
- * this can cause false positives on have_consensus_path,
- * incorrectly setting it to CONSENSUS_PATH_EXIT. This is
- * an unavoidable feature of forcing authorities to declare
- * certain nodes as exits.
- */
+ /* All nodes with exit policy and flag */
count_usable_descriptors(&np, &nu, exits, consensus, now,
- NULL, USABLE_DESCRIPTOR_EXIT_ONLY);
+ NULL, USABLE_DESCRIPTOR_EXIT_POLICY_AND_FLAG);
log_debug(LD_NET,
"%s: %d present, %d usable",
"exits",
np,
nu);
- /* We need at least 1 exit present in the consensus to consider
+ /* We need at least 1 exit (flag and policy) in the consensus to consider
* building exit paths */
/* Update our understanding of whether the consensus has exits */
consensus_path_type_t old_have_consensus_path = have_consensus_path;
- have_consensus_path = ((nu > 0) ?
+ have_consensus_path = ((np > 0) ?
CONSENSUS_PATH_EXIT :
CONSENSUS_PATH_INTERNAL);
- if (have_consensus_path == CONSENSUS_PATH_INTERNAL
- && old_have_consensus_path != have_consensus_path) {
- log_notice(LD_NET,
- "The current consensus has no exit nodes. "
- "Tor can only build internal paths, "
- "such as paths to hidden services.");
-
- /* However, exit nodes can reachability self-test using this consensus,
- * join the network, and appear in a later consensus. This will allow
- * the network to build exit paths, such as paths for world wide web
- * browsing (as distinct from hidden service web browsing). */
+ if (old_have_consensus_path != have_consensus_path) {
+ if (have_consensus_path == CONSENSUS_PATH_INTERNAL) {
+ log_notice(LD_NET,
+ "The current consensus has no exit nodes. "
+ "Tor can only build internal paths, "
+ "such as paths to onion services.");
+
+ /* However, exit nodes can reachability self-test using this consensus,
+ * join the network, and appear in a later consensus. This will allow
+ * the network to build exit paths, such as paths for world wide web
+ * browsing (as distinct from hidden service web browsing). */
+ } else if (old_have_consensus_path == CONSENSUS_PATH_INTERNAL) {
+ log_notice(LD_NET,
+ "The current consensus contains exit nodes. "
+ "Tor can build exit and internal paths.");
+ }
}
f_guard = frac_nodes_with_descriptors(guards, WEIGHT_FOR_GUARD, 1);
@@ -2284,44 +2330,29 @@ compute_frac_paths_available(const networkstatus_t *consensus,
smartlist_t *myexits= smartlist_new();
smartlist_t *myexits_unflagged = smartlist_new();
- /* All nodes with exit flag in ExitNodes option */
+ /* All nodes with exit policy and flag in ExitNodes option */
count_usable_descriptors(&np, &nu, myexits, consensus, now,
- options->ExitNodes, USABLE_DESCRIPTOR_EXIT_ONLY);
+ options->ExitNodes,
+ USABLE_DESCRIPTOR_EXIT_POLICY_AND_FLAG);
log_debug(LD_NET,
"%s: %d present, %d usable",
"myexits",
np,
nu);
- /* Now compute the nodes in the ExitNodes option where which we don't know
- * what their exit policy is, or we know it permits something. */
+ /* Now compute the nodes in the ExitNodes option where we know their exit
+ * policy permits something. */
count_usable_descriptors(&np, &nu, myexits_unflagged,
consensus, now,
- options->ExitNodes, USABLE_DESCRIPTOR_ALL);
+ options->ExitNodes,
+ USABLE_DESCRIPTOR_EXIT_POLICY);
log_debug(LD_NET,
"%s: %d present, %d usable",
"myexits_unflagged (initial)",
np,
nu);
- SMARTLIST_FOREACH_BEGIN(myexits_unflagged, const node_t *, node) {
- if (node_has_preferred_descriptor(node, 0) &&
- node_exit_policy_rejects_all(node)) {
- SMARTLIST_DEL_CURRENT(myexits_unflagged, node);
- /* this node is not actually an exit */
- np--;
- /* this node is unusable as an exit */
- nu--;
- }
- } SMARTLIST_FOREACH_END(node);
-
- log_debug(LD_NET,
- "%s: %d present, %d usable",
- "myexits_unflagged (final)",
- np,
- nu);
-
- f_myexit= frac_nodes_with_descriptors(myexits, WEIGHT_FOR_EXIT, 0);
+ f_myexit= frac_nodes_with_descriptors(myexits,WEIGHT_FOR_EXIT, 0);
f_myexit_unflagged=
frac_nodes_with_descriptors(myexits_unflagged,
WEIGHT_FOR_EXIT, 0);
@@ -2351,9 +2382,14 @@ compute_frac_paths_available(const networkstatus_t *consensus,
f_exit = f_myexit;
}
- /* if the consensus has no exits, treat the exit fraction as 100% */
+ /* if the consensus has no exits, we can only build onion service paths,
+ * which are G - M - M. So use the middle fraction for the exit fraction. */
if (router_have_consensus_path() != CONSENSUS_PATH_EXIT) {
- f_exit = 1.0;
+ /* If there are no exits in the consensus, then f_exit is always 0, so
+ * it is safe to replace f_exit with f_mid. */
+ if (!BUG(f_exit > 0.0)) {
+ f_exit = f_mid;
+ }
}
f_path = f_guard * f_mid * f_exit;
@@ -2362,14 +2398,14 @@ compute_frac_paths_available(const networkstatus_t *consensus,
tor_asprintf(status_out,
"%d%% of guards bw, "
"%d%% of midpoint bw, and "
- "%d%% of exit bw%s = "
+ "%d%% of %s = "
"%d%% of path bw",
(int)(f_guard*100),
(int)(f_mid*100),
(int)(f_exit*100),
(router_have_consensus_path() == CONSENSUS_PATH_EXIT ?
- "" :
- " (no exits in consensus)"),
+ "exit bw" :
+ "end bw (no exits in consensus, using mid)"),
(int)(f_path*100));
return f_path;
@@ -2510,4 +2546,3 @@ update_router_have_minimum_dir_info(void)
have_min_dir_info = res;
need_to_update_have_min_dir_info = 0;
}
-
diff --git a/src/feature/nodelist/parsecommon.c b/src/feature/nodelist/parsecommon.c
index 4f1c3fd421..3aaf8ac501 100644
--- a/src/feature/nodelist/parsecommon.c
+++ b/src/feature/nodelist/parsecommon.c
@@ -7,7 +7,7 @@
**/
#include "feature/nodelist/parsecommon.h"
-#include "lib/log/torlog.h"
+#include "lib/log/log.h"
#include "lib/log/util_bug.h"
#include "lib/encoding/binascii.h"
#include "lib/container/smartlist.h"
diff --git a/src/feature/nodelist/routerlist.c b/src/feature/nodelist/routerlist.c
index 12226fee64..8b54329da9 100644
--- a/src/feature/nodelist/routerlist.c
+++ b/src/feature/nodelist/routerlist.c
@@ -123,6 +123,7 @@
#include "lib/sandbox/sandbox.h"
#include "feature/nodelist/torcert.h"
#include "lib/math/fp.h"
+#include "lib/net/resolve.h"
#include "feature/dirauth/dirvote.h"
#include "feature/dirauth/mode.h"
diff --git a/src/feature/nodelist/torcert.c b/src/feature/nodelist/torcert.c
index 172d4f9de3..a276082021 100644
--- a/src/feature/nodelist/torcert.c
+++ b/src/feature/nodelist/torcert.c
@@ -30,7 +30,7 @@
#include "lib/crypt_ops/crypto_util.h"
#include "feature/nodelist/torcert.h"
#include "trunnel/ed25519_cert.h"
-#include "lib/log/torlog.h"
+#include "lib/log/log.h"
#include "trunnel/link_handshake.h"
#include "lib/tls/tortls.h"
diff --git a/src/feature/relay/dns.c b/src/feature/relay/dns.c
index f4e39dfd3d..48319b47c8 100644
--- a/src/feature/relay/dns.c
+++ b/src/feature/relay/dns.c
@@ -2076,14 +2076,21 @@ dns_cache_entry_count(void)
return HT_SIZE(&cache_root);
}
+/* Return the total size in bytes of the DNS cache. */
+size_t
+dns_cache_total_allocation(void)
+{
+ return sizeof(struct cached_resolve_t) * dns_cache_entry_count() +
+ HT_MEM_USAGE(&cache_root);
+}
+
/** Log memory information about our internal DNS cache at level 'severity'. */
void
dump_dns_mem_usage(int severity)
{
/* This should never be larger than INT_MAX. */
int hash_count = dns_cache_entry_count();
- size_t hash_mem = sizeof(struct cached_resolve_t) * hash_count;
- hash_mem += HT_MEM_USAGE(&cache_root);
+ size_t hash_mem = dns_cache_total_allocation();
/* Print out the count and estimated size of our &cache_root. It undercounts
hostnames in cached reverse resolves.
@@ -2093,6 +2100,36 @@ dump_dns_mem_usage(int severity)
(unsigned)hash_mem);
}
+/* Do a round of OOM cleanup on all DNS entries. Return the amount of removed
+ * bytes. It is possible that the returned value is lower than min_remove_bytes
+ * if the caches get emptied out so the caller should be aware of this. */
+size_t
+dns_cache_handle_oom(time_t now, size_t min_remove_bytes)
+{
+ time_t time_inc = 0;
+ size_t total_bytes_removed = 0;
+ size_t current_size = dns_cache_total_allocation();
+
+ do {
+ /* If no DNS entries left, break loop. */
+ if (!dns_cache_entry_count())
+ break;
+
+ /* Get cutoff interval and remove entries. */
+ time_t cutoff = now + time_inc;
+ purge_expired_resolves(cutoff);
+
+ /* Update amount of bytes removed and array size. */
+ size_t bytes_removed = current_size - dns_cache_total_allocation();
+ current_size -= bytes_removed;
+ total_bytes_removed += bytes_removed;
+
+ time_inc += 3600; /* Increase time_inc by 1 hour. */
+ } while (total_bytes_removed < min_remove_bytes);
+
+ return total_bytes_removed;
+}
+
#ifdef DEBUG_DNS_CACHE
/** Exit with an assertion if the DNS cache is corrupt. */
static void
diff --git a/src/feature/relay/dns.h b/src/feature/relay/dns.h
index 69c1764b73..1dd6f903d1 100644
--- a/src/feature/relay/dns.h
+++ b/src/feature/relay/dns.h
@@ -38,7 +38,9 @@ void dns_launch_correctness_checks(void);
int dns_seems_to_be_broken(void);
int dns_seems_to_be_broken_for_ipv6(void);
void dns_reset_correctness_checks(void);
+size_t dns_cache_total_allocation(void);
void dump_dns_mem_usage(int severity);
+size_t dns_cache_handle_oom(time_t now, size_t min_remove_bytes);
#ifdef DNS_PRIVATE
#include "feature/relay/dns_structs.h"
diff --git a/src/feature/relay/router.c b/src/feature/relay/router.c
index 973d3e1100..e4ec01af24 100644
--- a/src/feature/relay/router.c
+++ b/src/feature/relay/router.c
@@ -164,22 +164,12 @@ routerinfo_err_to_string(int err)
int
routerinfo_err_is_transient(int err)
{
- switch (err) {
- case TOR_ROUTERINFO_ERROR_NO_EXT_ADDR:
- return 1;
- case TOR_ROUTERINFO_ERROR_CANNOT_PARSE:
- return 1;
- case TOR_ROUTERINFO_ERROR_NOT_A_SERVER:
- return 0;
- case TOR_ROUTERINFO_ERROR_DIGEST_FAILED:
- return 0; // XXX: bug?
- case TOR_ROUTERINFO_ERROR_CANNOT_GENERATE:
- return 1;
- case TOR_ROUTERINFO_ERROR_DESC_REBUILDING:
- return 1;
- }
-
- return 0;
+ /**
+ * For simplicity, we consider all errors other than
+ * "not a server" transient - see discussion on
+ * https://trac.torproject.org/projects/tor/ticket/27034
+ */
+ return err != TOR_ROUTERINFO_ERROR_NOT_A_SERVER;
}
/** Replace the current onion key with <b>k</b>. Does not affect
@@ -2360,8 +2350,8 @@ router_build_fresh_descriptor(routerinfo_t **r, extrainfo_t **e)
}
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) {
+ if (BUG(crypto_pk_get_digest(ri->identity_pkey,
+ ri->cache_info.identity_digest) < 0)) {
routerinfo_free(ri);
return TOR_ROUTERINFO_ERROR_DIGEST_FAILED;
}
@@ -2686,6 +2676,9 @@ log_addr_has_changed(int severity,
char addrbuf_prev[TOR_ADDR_BUF_LEN];
char addrbuf_cur[TOR_ADDR_BUF_LEN];
+ if (BUG(!server_mode(get_options())))
+ return;
+
if (tor_addr_to_str(addrbuf_prev, prev, sizeof(addrbuf_prev), 1) == NULL)
strlcpy(addrbuf_prev, "???", TOR_ADDR_BUF_LEN);
if (tor_addr_to_str(addrbuf_cur, cur, sizeof(addrbuf_cur), 1) == NULL)
diff --git a/src/feature/relay/routerkeys.c b/src/feature/relay/routerkeys.c
index f12eb3d332..294d452e17 100644
--- a/src/feature/relay/routerkeys.c
+++ b/src/feature/relay/routerkeys.c
@@ -248,6 +248,9 @@ write_secret_key(const ed25519_secret_key_t *key, int encrypted,
* <b>fname</b>, with certificate type <b>cert_type</b>. On failure, return
* NULL; on success return the keypair.
*
+ * The <b>options</b> is used to look at the change_key_passphrase value when
+ * writing to disk a secret key. It is safe to be NULL even in that case.
+ *
* If INIT_ED_KEY_CREATE is set in <b>flags</b>, then create the key (and
* certificate if requested) if it doesn't exist, and save it to disk.
*
@@ -276,9 +279,6 @@ write_secret_key(const ed25519_secret_key_t *key, int encrypted,
* secret key unless no public key is found. Do not return a secret key. (but
* create and save one if needed).
*
- * If INIT_ED_KEY_NO_LOAD_SECRET is set in <b>flags</b>, don't try to load
- * a secret key, no matter what.
- *
* If INIT_ED_KEY_TRY_ENCRYPTED is set, we look for an encrypted secret key
* and consider encrypting any new secret key.
*
@@ -291,6 +291,9 @@ write_secret_key(const ed25519_secret_key_t *key, int encrypted,
*
* If INIT_ED_KEY_EXPLICIT_FNAME is set, use the provided file name for the
* secret key file, encrypted or not.
+ *
+ * If INIT_ED_KEY_OFFLINE_SECRET is set, we won't try to load the master
+ * secret key and we log a message at <b>severity</b> that we've done so.
*/
ed25519_keypair_t *
ed_key_init_from_file(const char *fname, uint32_t flags,
@@ -299,7 +302,8 @@ ed_key_init_from_file(const char *fname, uint32_t flags,
time_t now,
time_t lifetime,
uint8_t cert_type,
- struct tor_cert_st **cert_out)
+ struct tor_cert_st **cert_out,
+ const or_options_t *options)
{
char *secret_fname = NULL;
char *encrypted_secret_fname = NULL;
@@ -503,7 +507,8 @@ ed_key_init_from_file(const char *fname, uint32_t flags,
/* Write it to disk if we're supposed to do with a new passphrase, or if
* we just created it. */
- if (created_sk || (have_secret && get_options()->change_key_passphrase)) {
+ if (created_sk || (have_secret && options != NULL &&
+ options->change_key_passphrase)) {
if (write_secret_key(&keypair->seckey,
encrypt_key,
secret_fname, tag, encrypted_secret_fname) < 0
@@ -734,7 +739,7 @@ load_ed_keys(const or_options_t *options, time_t now)
INIT_ED_KEY_NEEDCERT|
INIT_ED_KEY_INCLUDE_SIGNING_KEY_IN_CERT,
LOG_INFO,
- NULL, 0, 0, CERT_TYPE_ID_SIGNING, &sign_cert);
+ NULL, 0, 0, CERT_TYPE_ID_SIGNING, &sign_cert, options);
tor_free(fname);
check_signing_cert = sign_cert;
use_signing = sign;
@@ -836,7 +841,7 @@ load_ed_keys(const or_options_t *options, time_t now)
id = ed_key_init_from_file(
fname,
flags,
- LOG_WARN, NULL, 0, 0, 0, NULL);
+ LOG_WARN, NULL, 0, 0, 0, NULL, options);
tor_free(fname);
if (!id) {
if (need_new_signing_key) {
@@ -904,7 +909,7 @@ load_ed_keys(const or_options_t *options, time_t now)
flags, LOG_WARN,
sign_signing_key_with_id, now,
options->SigningKeyLifetime,
- CERT_TYPE_ID_SIGNING, &sign_cert);
+ CERT_TYPE_ID_SIGNING, &sign_cert, options);
tor_free(fname);
if (!sign)
FAIL("Missing signing key");
diff --git a/src/feature/relay/routerkeys.h b/src/feature/relay/routerkeys.h
index a6f06f6e20..f52ed0f306 100644
--- a/src/feature/relay/routerkeys.h
+++ b/src/feature/relay/routerkeys.h
@@ -27,7 +27,8 @@ ed25519_keypair_t *ed_key_init_from_file(const char *fname, uint32_t flags,
time_t now,
time_t lifetime,
uint8_t cert_type,
- struct tor_cert_st **cert_out);
+ struct tor_cert_st **cert_out,
+ const or_options_t *options);
ed25519_keypair_t *ed_key_new(const ed25519_keypair_t *signing_key,
uint32_t flags,
time_t now,
diff --git a/src/feature/rend/rendservice.c b/src/feature/rend/rendservice.c
index da4a98b3d1..1af9117aaf 100644
--- a/src/feature/rend/rendservice.c
+++ b/src/feature/rend/rendservice.c
@@ -37,6 +37,7 @@
#include "feature/nodelist/routerparse.h"
#include "feature/nodelist/routerset.h"
#include "lib/encoding/confline.h"
+#include "lib/net/resolve.h"
#include "core/or/cpath_build_state_st.h"
#include "core/or/crypt_path_st.h"
@@ -1340,6 +1341,29 @@ rend_service_poison_new_single_onion_dir(const rend_service_t *s,
return 0;
}
+/* Return true iff the given service identity key is present on disk. This is
+ * used to try to learn the service version during configuration time. */
+int
+rend_service_key_on_disk(const char *directory_path)
+{
+ int ret = 0;
+ char *fname;
+ crypto_pk_t *pk = NULL;
+
+ tor_assert(directory_path);
+
+ /* Load key */
+ fname = hs_path_from_filename(directory_path, private_key_fname);
+ pk = init_key_from_file(fname, 0, LOG_DEBUG, 0);
+ if (pk) {
+ ret = 1;
+ }
+
+ crypto_pk_free(pk);
+ tor_free(fname);
+ return ret;
+}
+
/** Load and/or generate private keys for all hidden services, possibly
* including keys for client authorization.
* If a <b>service_list</b> is provided, treat it as the list of hidden
diff --git a/src/feature/rend/rendservice.h b/src/feature/rend/rendservice.h
index 7096789629..7186289fc7 100644
--- a/src/feature/rend/rendservice.h
+++ b/src/feature/rend/rendservice.h
@@ -145,6 +145,7 @@ int rend_config_service(const struct config_line_t *line_,
void rend_service_prune_list(void);
void rend_service_free_staging_list(void);
int rend_service_load_all_keys(const smartlist_t *service_list);
+int rend_service_key_on_disk(const char *directory_path);
void rend_services_add_filenames_to_lists(smartlist_t *open_lst,
smartlist_t *stat_lst);
void rend_consider_services_intro_points(time_t now);
diff --git a/src/lib/cc/compat_compiler.h b/src/lib/cc/compat_compiler.h
index 0f1acc381a..d45316b241 100644
--- a/src/lib/cc/compat_compiler.h
+++ b/src/lib/cc/compat_compiler.h
@@ -3,6 +3,12 @@
* Copyright (c) 2007-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file compat_compiler.h
+ * \brief Utility macros to handle different features and behavior in different
+ * compilers.
+ **/
+
#ifndef TOR_COMPAT_COMPILER_H
#define TOR_COMPAT_COMPILER_H
diff --git a/src/lib/cc/torint.h b/src/lib/cc/torint.h
index 91db25833b..5097724726 100644
--- a/src/lib/cc/torint.h
+++ b/src/lib/cc/torint.h
@@ -5,18 +5,13 @@
/**
* \file torint.h
- * \brief Header file to define uint32_t and friends
+ *
+ * \brief Integer definitions used throughout Tor.
**/
#ifndef TOR_TORINT_H
#define TOR_TORINT_H
-/**
- * \file torint.h
- *
- * \brief Integer definitions used throughout Tor.
- **/
-
#include "orconfig.h"
#include <stdint.h>
@@ -105,6 +100,16 @@ typedef int32_t ssize_t;
# define TOR_PRIuSZ "zu"
#endif
+#ifdef _WIN32
+# ifdef _WIN64
+# define TOR_PRIdSZ PRId64
+# else
+# define TOR_PRIdSZ PRId32
+# endif
+#else
+# define TOR_PRIdSZ "zd"
+#endif
+
#ifndef SSIZE_MAX
#if (SIZEOF_SIZE_T == 4)
#define SSIZE_MAX INT32_MAX
diff --git a/src/lib/compress/compress.c b/src/lib/compress/compress.c
index e87e788f14..2ad9b15b2e 100644
--- a/src/lib/compress/compress.c
+++ b/src/lib/compress/compress.c
@@ -22,7 +22,7 @@
#include <netinet/in.h>
#endif
-#include "lib/log/torlog.h"
+#include "lib/log/log.h"
#include "lib/log/util_bug.h"
#include "lib/arch/bytes.h"
#include "lib/ctime/di_ops.h"
@@ -32,7 +32,7 @@
#include "lib/compress/compress_zlib.h"
#include "lib/compress/compress_zstd.h"
#include "lib/intmath/cmp.h"
-#include "lib/malloc/util_malloc.h"
+#include "lib/malloc/malloc.h"
#include "lib/thread/threads.h"
/** Total number of bytes allocated for compression state overhead. */
diff --git a/src/lib/compress/compress_lzma.c b/src/lib/compress/compress_lzma.c
index 3b6f91b84b..e6c8368f6a 100644
--- a/src/lib/compress/compress_lzma.c
+++ b/src/lib/compress/compress_lzma.c
@@ -15,9 +15,9 @@
#include "lib/compress/compress.h"
#include "lib/compress/compress_lzma.h"
-#include "lib/log/torlog.h"
+#include "lib/log/log.h"
#include "lib/log/util_bug.h"
-#include "lib/malloc/util_malloc.h"
+#include "lib/malloc/malloc.h"
#include "lib/thread/threads.h"
#ifdef HAVE_LZMA
diff --git a/src/lib/compress/compress_none.c b/src/lib/compress/compress_none.c
index 9574c47a7e..a0e82d5a99 100644
--- a/src/lib/compress/compress_none.c
+++ b/src/lib/compress/compress_none.c
@@ -16,7 +16,7 @@
#include "orconfig.h"
-#include "lib/log/torlog.h"
+#include "lib/log/log.h"
#include "lib/compress/compress.h"
#include "lib/compress/compress_none.h"
#include "lib/intmath/cmp.h"
diff --git a/src/lib/compress/compress_zlib.c b/src/lib/compress/compress_zlib.c
index 12e6727dee..64be1d4256 100644
--- a/src/lib/compress/compress_zlib.c
+++ b/src/lib/compress/compress_zlib.c
@@ -13,7 +13,7 @@
#include "orconfig.h"
-#include "lib/log/torlog.h"
+#include "lib/log/log.h"
#include "lib/log/util_bug.h"
#include "lib/compress/compress.h"
#include "lib/compress/compress_zlib.h"
diff --git a/src/lib/compress/compress_zstd.c b/src/lib/compress/compress_zstd.c
index 0a553db55c..fe88d4a544 100644
--- a/src/lib/compress/compress_zstd.c
+++ b/src/lib/compress/compress_zstd.c
@@ -13,7 +13,7 @@
#include "orconfig.h"
-#include "lib/log/torlog.h"
+#include "lib/log/log.h"
#include "lib/log/util_bug.h"
#include "lib/compress/compress.h"
#include "lib/compress/compress_zstd.h"
@@ -28,10 +28,14 @@
#endif
#ifdef HAVE_ZSTD
+#ifdef HAVE_CFLAG_WUNUSED_CONST_VARIABLE
DISABLE_GCC_WARNING(unused-const-variable)
+#endif
#include <zstd.h>
+#ifdef HAVE_CFLAG_WUNUSED_CONST_VARIABLE
ENABLE_GCC_WARNING(unused-const-variable)
#endif
+#endif
/** Total number of bytes allocated for Zstandard state. */
static atomic_counter_t total_zstd_allocation;
diff --git a/src/lib/container/bitarray.h b/src/lib/container/bitarray.h
index 172d56cc06..ae82a4ab4d 100644
--- a/src/lib/container/bitarray.h
+++ b/src/lib/container/bitarray.h
@@ -15,7 +15,7 @@
#include "orconfig.h"
#include <string.h>
#include "lib/cc/torint.h"
-#include "lib/malloc/util_malloc.h"
+#include "lib/malloc/malloc.h"
#if SIZEOF_INT == 4
#define BITARRAY_SHIFT 5
diff --git a/src/lib/container/bloomfilt.c b/src/lib/container/bloomfilt.c
index 1cab817e18..ea2d2917c7 100644
--- a/src/lib/container/bloomfilt.c
+++ b/src/lib/container/bloomfilt.c
@@ -10,7 +10,7 @@
#include <stdlib.h>
-#include "lib/malloc/util_malloc.h"
+#include "lib/malloc/malloc.h"
#include "lib/container/bloomfilt.h"
#include "lib/intmath/bits.h"
#include "lib/log/util_bug.h"
diff --git a/src/lib/container/buffers.c b/src/lib/container/buffers.c
index 5849704e35..87d782d7ef 100644
--- a/src/lib/container/buffers.c
+++ b/src/lib/container/buffers.c
@@ -27,10 +27,10 @@
#include <stddef.h>
#include "lib/container/buffers.h"
#include "lib/cc/torint.h"
-#include "lib/log/torlog.h"
+#include "lib/log/log.h"
#include "lib/log/util_bug.h"
#include "lib/ctime/di_ops.h"
-#include "lib/malloc/util_malloc.h"
+#include "lib/malloc/malloc.h"
#include "lib/string/printf.h"
#include "lib/time/compat_time.h"
diff --git a/src/lib/container/handles.h b/src/lib/container/handles.h
index 21ec0dfeec..7144e1720d 100644
--- a/src/lib/container/handles.h
+++ b/src/lib/container/handles.h
@@ -52,7 +52,7 @@
#include "orconfig.h"
#include "lib/log/util_bug.h"
-#include "lib/malloc/util_malloc.h"
+#include "lib/malloc/malloc.h"
#define HANDLE_ENTRY(name, structname) \
struct name ## _handle_head_t *handle_head
diff --git a/src/lib/container/map.c b/src/lib/container/map.c
index 0602eac891..85e074e10a 100644
--- a/src/lib/container/map.c
+++ b/src/lib/container/map.c
@@ -14,7 +14,7 @@
#include "lib/ctime/di_ops.h"
#include "lib/defs/digest_sizes.h"
#include "lib/string/util_string.h"
-#include "lib/malloc/util_malloc.h"
+#include "lib/malloc/malloc.h"
#include "lib/log/util_bug.h"
diff --git a/src/lib/container/smartlist.c b/src/lib/container/smartlist.c
index c3abbff513..4b29d834d9 100644
--- a/src/lib/container/smartlist.c
+++ b/src/lib/container/smartlist.c
@@ -17,7 +17,7 @@
#include "lib/container/smartlist.h"
#include "lib/err/torerr.h"
-#include "lib/malloc/util_malloc.h"
+#include "lib/malloc/malloc.h"
#include "lib/defs/digest_sizes.h"
#include "lib/ctime/di_ops.h"
#include "lib/string/compat_ctype.h"
@@ -189,6 +189,33 @@ smartlist_ints_eq(const smartlist_t *sl1, const smartlist_t *sl2)
return 1;
}
+/**
+ * Return true if there is shallow equality between smartlists -
+ * i.e. all indices correspond to exactly same object (pointer
+ * values are matching). Otherwise, return false.
+ */
+int
+smartlist_ptrs_eq(const smartlist_t *s1, const smartlist_t *s2)
+{
+ if (s1 == s2)
+ return 1;
+
+ // Note: pointers cannot both be NULL at this point, because
+ // above check.
+ if (s1 == NULL || s2 == NULL)
+ return 0;
+
+ if (smartlist_len(s1) != smartlist_len(s2))
+ return 0;
+
+ for (int i = 0; i < smartlist_len(s1); i++) {
+ if (smartlist_get(s1, i) != smartlist_get(s2, i))
+ return 0;
+ }
+
+ return 1;
+}
+
/** Return true iff <b>sl</b> has some element E such that
* tor_memeq(E,<b>element</b>,DIGEST_LEN)
*/
diff --git a/src/lib/container/smartlist.h b/src/lib/container/smartlist.h
index 3b19cbfce4..9705396ac9 100644
--- a/src/lib/container/smartlist.h
+++ b/src/lib/container/smartlist.h
@@ -37,6 +37,9 @@ int smartlist_overlap(const smartlist_t *sl1, const smartlist_t *sl2);
void smartlist_intersect(smartlist_t *sl1, const smartlist_t *sl2);
void smartlist_subtract(smartlist_t *sl1, const smartlist_t *sl2);
+int smartlist_ptrs_eq(const smartlist_t *s1,
+ const smartlist_t *s2);
+
void smartlist_sort(smartlist_t *sl,
int (*compare)(const void **a, const void **b));
void *smartlist_get_most_frequent_(const smartlist_t *sl,
diff --git a/src/lib/crypt_ops/aes.c b/src/lib/crypt_ops/aes.c
index a01b1e16b2..ff9d4d855c 100644
--- a/src/lib/crypt_ops/aes.c
+++ b/src/lib/crypt_ops/aes.c
@@ -38,7 +38,7 @@ DISABLE_GCC_WARNING(redundant-decls)
ENABLE_GCC_WARNING(redundant-decls)
#include "lib/crypt_ops/aes.h"
-#include "lib/log/torlog.h"
+#include "lib/log/log.h"
#include "lib/ctime/di_ops.h"
#ifdef ANDROID
diff --git a/src/lib/crypt_ops/aes.h b/src/lib/crypt_ops/aes.h
index a57654159a..578a1a65a2 100644
--- a/src/lib/crypt_ops/aes.h
+++ b/src/lib/crypt_ops/aes.h
@@ -14,7 +14,7 @@
*/
#include "lib/cc/torint.h"
-#include "lib/malloc/util_malloc.h"
+#include "lib/malloc/malloc.h"
typedef struct aes_cnt_cipher aes_cnt_cipher_t;
diff --git a/src/lib/crypt_ops/crypto.c b/src/lib/crypt_ops/crypto.c
index 48574016bf..5bc2da76ab 100644
--- a/src/lib/crypt_ops/crypto.c
+++ b/src/lib/crypt_ops/crypto.c
@@ -62,7 +62,7 @@ ENABLE_GCC_WARNING(redundant-decls)
#include <unistd.h>
#endif
-#include "lib/log/torlog.h"
+#include "lib/log/log.h"
#include "lib/log/util_bug.h"
#include "lib/cc/torint.h"
#include "lib/crypt_ops/aes.h"
diff --git a/src/lib/crypt_ops/crypto_curve25519.c b/src/lib/crypt_ops/crypto_curve25519.c
index 09f492e544..6ad2587f48 100644
--- a/src/lib/crypt_ops/crypto_curve25519.c
+++ b/src/lib/crypt_ops/crypto_curve25519.c
@@ -26,7 +26,7 @@
#include "lib/crypt_ops/crypto_format.h"
#include "lib/crypt_ops/crypto_rand.h"
#include "lib/crypt_ops/crypto_util.h"
-#include "lib/log/torlog.h"
+#include "lib/log/log.h"
#include "lib/log/util_bug.h"
#include "ed25519/donna/ed25519_donna_tor.h"
diff --git a/src/lib/crypt_ops/crypto_curve25519.h b/src/lib/crypt_ops/crypto_curve25519.h
index acb36fde3b..1bab4a4197 100644
--- a/src/lib/crypt_ops/crypto_curve25519.h
+++ b/src/lib/crypt_ops/crypto_curve25519.h
@@ -1,6 +1,11 @@
/* Copyright (c) 2012-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file crypto_curve25519.h
+ * \brief Header for crypto_curve25519.c
+ **/
+
#ifndef TOR_CRYPTO_CURVE25519_H
#define TOR_CRYPTO_CURVE25519_H
diff --git a/src/lib/crypt_ops/crypto_dh.c b/src/lib/crypt_ops/crypto_dh.c
index c37e286daf..3e82996935 100644
--- a/src/lib/crypt_ops/crypto_dh.c
+++ b/src/lib/crypt_ops/crypto_dh.c
@@ -14,7 +14,7 @@
#include "lib/crypt_ops/crypto_digest.h"
#include "lib/crypt_ops/crypto_hkdf.h"
#include "lib/crypt_ops/crypto_util.h"
-#include "lib/log/torlog.h"
+#include "lib/log/log.h"
#include "lib/log/util_bug.h"
DISABLE_GCC_WARNING(redundant-decls)
diff --git a/src/lib/crypt_ops/crypto_digest.c b/src/lib/crypt_ops/crypto_digest.c
index 949e694053..ee5c362e38 100644
--- a/src/lib/crypt_ops/crypto_digest.c
+++ b/src/lib/crypt_ops/crypto_digest.c
@@ -14,7 +14,7 @@
#include "lib/crypt_ops/crypto_digest.h"
#include "lib/crypt_ops/crypto_openssl_mgt.h"
#include "lib/crypt_ops/crypto_util.h"
-#include "lib/log/torlog.h"
+#include "lib/log/log.h"
#include "lib/log/util_bug.h"
#include "keccak-tiny/keccak-tiny.h"
diff --git a/src/lib/crypt_ops/crypto_digest.h b/src/lib/crypt_ops/crypto_digest.h
index 15bc5ad5b9..9facf3b981 100644
--- a/src/lib/crypt_ops/crypto_digest.h
+++ b/src/lib/crypt_ops/crypto_digest.h
@@ -15,7 +15,7 @@
#include "lib/cc/torint.h"
#include "lib/defs/digest_sizes.h"
-#include "lib/malloc/util_malloc.h"
+#include "lib/malloc/malloc.h"
/** Length of a sha1 message digest when encoded in base32 with trailing =
* signs removed. */
diff --git a/src/lib/crypt_ops/crypto_ed25519.c b/src/lib/crypt_ops/crypto_ed25519.c
index 985652ecba..9d2c9e9fab 100644
--- a/src/lib/crypt_ops/crypto_ed25519.c
+++ b/src/lib/crypt_ops/crypto_ed25519.c
@@ -28,7 +28,7 @@
#include "lib/crypt_ops/crypto_format.h"
#include "lib/crypt_ops/crypto_rand.h"
#include "lib/crypt_ops/crypto_util.h"
-#include "lib/log/torlog.h"
+#include "lib/log/log.h"
#include "lib/log/util_bug.h"
#include "lib/encoding/binascii.h"
#include "lib/string/util_string.h"
diff --git a/src/lib/crypt_ops/crypto_ed25519.h b/src/lib/crypt_ops/crypto_ed25519.h
index 5ecd4530d8..03b3afe206 100644
--- a/src/lib/crypt_ops/crypto_ed25519.h
+++ b/src/lib/crypt_ops/crypto_ed25519.h
@@ -1,6 +1,11 @@
/* Copyright (c) 2012-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file crypto_ed25519.h
+ * \brief Header for crypto_ed25519.c
+ **/
+
#ifndef TOR_CRYPTO_ED25519_H
#define TOR_CRYPTO_ED25519_H
diff --git a/src/lib/crypt_ops/crypto_format.c b/src/lib/crypt_ops/crypto_format.c
index 8c71b265bf..50916a8d68 100644
--- a/src/lib/crypt_ops/crypto_format.c
+++ b/src/lib/crypt_ops/crypto_format.c
@@ -24,7 +24,7 @@
#include "lib/string/util_string.h"
#include "lib/string/printf.h"
#include "lib/encoding/binascii.h"
-#include "lib/log/torlog.h"
+#include "lib/log/log.h"
#include "lib/log/util_bug.h"
#include "lib/fs/files.h"
diff --git a/src/lib/crypt_ops/crypto_format.h b/src/lib/crypt_ops/crypto_format.h
index 4a29b07b3b..a246071458 100644
--- a/src/lib/crypt_ops/crypto_format.h
+++ b/src/lib/crypt_ops/crypto_format.h
@@ -4,6 +4,11 @@
* Copyright (c) 2007-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file crypto_format.h
+ * \brief Header for crypto_format.c
+ **/
+
#ifndef TOR_CRYPTO_FORMAT_H
#define TOR_CRYPTO_FORMAT_H
diff --git a/src/lib/crypt_ops/crypto_hkdf.c b/src/lib/crypt_ops/crypto_hkdf.c
index 0200d0fe9c..1873632a9d 100644
--- a/src/lib/crypt_ops/crypto_hkdf.c
+++ b/src/lib/crypt_ops/crypto_hkdf.c
@@ -19,9 +19,9 @@
#include <openssl/opensslv.h>
-#if OPENSSL_VERSION_NUMBER >= OPENSSL_V_SERIES(1,1,0)
-#define HAVE_OPENSSL_HKDF 1
+#if defined(HAVE_ERR_LOAD_KDF_STRINGS)
#include <openssl/kdf.h>
+#define HAVE_OPENSSL_HKDF 1
#endif
#include <string.h>
diff --git a/src/lib/crypt_ops/crypto_ope.c b/src/lib/crypt_ops/crypto_ope.c
new file mode 100644
index 0000000000..ca42ae4341
--- /dev/null
+++ b/src/lib/crypt_ops/crypto_ope.c
@@ -0,0 +1,185 @@
+/* Copyright (c) 2018, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+/**
+ * A rudimentary order-preserving encryption scheme.
+ *
+ * To compute the encryption of N, this scheme uses an AES-CTR stream to
+ * generate M-byte values, and adds the first N of them together. (+1 each to
+ * insure that the ciphertexts are strictly decreasing.)
+ *
+ * We use this for generating onion service revision counters based on the
+ * current time, without leaking the amount of skew in our view of the current
+ * time. MUCH more analysis would be needed before using it for anything
+ * else!
+ */
+
+#include "orconfig.h"
+
+#define CRYPTO_OPE_PRIVATE
+#include "lib/crypt_ops/crypto_ope.h"
+#include "lib/crypt_ops/crypto.h"
+#include "lib/crypt_ops/crypto_util.h"
+#include "lib/log/util_bug.h"
+#include "lib/malloc/malloc.h"
+#include "lib/arch/bytes.h"
+
+#include <string.h>
+
+/**
+ * How infrequent should the precomputed values be for this encryption?
+ * The choice of this value creates a space/time tradeoff.
+ *
+ * Note that this value must be a multiple of 16; see
+ * ope_get_cipher()
+ */
+#define SAMPLE_INTERVAL 1024
+/** Number of precomputed samples to make for each OPE key. */
+#define N_SAMPLES (OPE_INPUT_MAX / SAMPLE_INTERVAL)
+
+struct crypto_ope_t {
+ /** An AES key for use with this object. */
+ uint8_t key[OPE_KEY_LEN];
+ /** Cached intermediate encryption values at SAMPLE_INTERVAL,
+ * SAMPLE_INTERVAL*2,...SAMPLE_INTERVAL*N_SAMPLES */
+ uint64_t samples[N_SAMPLES];
+};
+
+/** The type to add up in order to produce our OPE ciphertexts */
+typedef uint16_t ope_val_t;
+
+#ifdef WORDS_BIG_ENDIAN
+/** Convert an OPE value to little-endian */
+static inline ope_val_t
+ope_val_to_le(ope_val_t x)
+{
+ return
+ ((x) >> 8) |
+ (((x)&0xff) << 8);
+}
+#else
+#define ope_val_to_le(x) (x)
+#endif
+
+/**
+ * Return a new AES256-CTR stream cipher object for <b>ope</b>, ready to yield
+ * bytes from the stream at position <b>initial_idx</b>.
+ *
+ * Note that because the index is converted directly to an IV, it must be a
+ * multiple of the AES block size (16).
+ */
+STATIC crypto_cipher_t *
+ope_get_cipher(const crypto_ope_t *ope, uint32_t initial_idx)
+{
+ uint8_t iv[CIPHER_IV_LEN];
+ tor_assert((initial_idx & 0xf) == 0);
+ uint32_t n = tor_htonl(initial_idx >> 4);
+ memset(iv, 0, sizeof(iv));
+ memcpy(iv + CIPHER_IV_LEN - sizeof(n), &n, sizeof(n));
+
+ return crypto_cipher_new_with_iv_and_bits(ope->key,
+ iv,
+ OPE_KEY_LEN * 8);
+}
+
+/**
+ * Retrieve and add the next <b>n</b> values from the stream cipher <b>c</b>,
+ * and return their sum.
+ *
+ * Note that values are taken in little-endian order (for performance on
+ * prevalent hardware), and are mapped from range 0..2^n-1 to range 1..2^n (so
+ * that each input encrypts to a different output).
+ *
+ * NOTE: this function is not constant-time.
+ */
+STATIC uint64_t
+sum_values_from_cipher(crypto_cipher_t *c, size_t n)
+{
+#define BUFSZ 256
+ ope_val_t buf[BUFSZ];
+ uint64_t total = 0;
+ unsigned i;
+ while (n >= BUFSZ) {
+ memset(buf, 0, sizeof(buf));
+ crypto_cipher_crypt_inplace(c, (char*)buf, BUFSZ*sizeof(ope_val_t));
+
+ for (i = 0; i < BUFSZ; ++i) {
+ total += ope_val_to_le(buf[i]);
+ total += 1;
+ }
+ n -= BUFSZ;
+ }
+
+ memset(buf, 0, n*sizeof(ope_val_t));
+ crypto_cipher_crypt_inplace(c, (char*)buf, n*sizeof(ope_val_t));
+ for (i = 0; i < n; ++i) {
+ total += ope_val_to_le(buf[i]);
+ total += 1;
+ }
+
+ memset(buf, 0, sizeof(buf));
+ return total;
+}
+
+/**
+ * Return a new crypto_ope_t object, using the provided 256-bit key.
+ */
+crypto_ope_t *
+crypto_ope_new(const uint8_t *key)
+{
+ crypto_ope_t *ope = tor_malloc_zero(sizeof(crypto_ope_t));
+ memcpy(ope->key, key, OPE_KEY_LEN);
+
+ crypto_cipher_t *cipher = ope_get_cipher(ope, 0);
+
+ uint64_t v = 0;
+ int i;
+ for (i = 0; i < N_SAMPLES; ++i) {
+ v += sum_values_from_cipher(cipher, SAMPLE_INTERVAL);
+ ope->samples[i] = v;
+ }
+
+ crypto_cipher_free(cipher);
+ return ope;
+}
+
+/** Free all storage held in <>ope</b>. */
+void
+crypto_ope_free_(crypto_ope_t *ope)
+{
+ if (!ope)
+ return;
+ memwipe(ope, 0, sizeof(*ope));
+ tor_free(ope);
+}
+
+/**
+ * Return the encrypted value corresponding to <b>input</b>. The input value
+ * must be in range 1..OPE_INPUT_MAX. Returns CRYPTO_OPE_ERROR on an invalid
+ * input.
+ *
+ * NOTE: this function is not constant-time.
+ */
+uint64_t
+crypto_ope_encrypt(const crypto_ope_t *ope, int plaintext)
+{
+ if (plaintext <= 0 || plaintext > OPE_INPUT_MAX)
+ return CRYPTO_OPE_ERROR;
+
+ const int sample_idx = (plaintext / SAMPLE_INTERVAL);
+ const int starting_iv = sample_idx * SAMPLE_INTERVAL;
+ const int remaining_values = plaintext - starting_iv;
+ uint64_t v;
+ if (sample_idx == 0) {
+ v = 0;
+ } else {
+ v = ope->samples[sample_idx - 1];
+ }
+ crypto_cipher_t *cipher = ope_get_cipher(ope, starting_iv*sizeof(ope_val_t));
+
+ v += sum_values_from_cipher(cipher, remaining_values);
+
+ crypto_cipher_free(cipher);
+
+ return v;
+}
diff --git a/src/lib/crypt_ops/crypto_ope.h b/src/lib/crypt_ops/crypto_ope.h
new file mode 100644
index 0000000000..c62ed2a942
--- /dev/null
+++ b/src/lib/crypt_ops/crypto_ope.h
@@ -0,0 +1,46 @@
+/* Copyright (c) 2018, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+#ifndef CRYPTO_OPE_H
+#define CRYPTO_OPE_H
+
+#include "orconfig.h"
+#include "lib/cc/torint.h"
+#include "lib/crypt_ops/crypto_ope.h"
+#include "lib/testsupport/testsupport.h"
+
+/** Length of OPE key, in bytes. */
+#define OPE_KEY_LEN 32
+
+/** Largest value that can be passed to crypto_ope_encrypt().
+ *
+ * Expressed as 2^18 because the OPE system prefers powers of two.
+ *
+ * The current max value stands for about 70 hours. The rationale here is as
+ * follows: The rev counter is the time of seconds since the start of an SRV
+ * period. SRVs are useful for about 48 hours (that's how long they stick
+ * around on the consensus). Let's also add 12 hours of drift for clock skewed
+ * services that might be using an old consensus and we arrive to 60
+ * hours. The max value should be beyond that.
+ */
+#define OPE_INPUT_MAX (1<<18)
+
+#define CRYPTO_OPE_ERROR UINT64_MAX
+
+typedef struct crypto_ope_t crypto_ope_t;
+
+crypto_ope_t *crypto_ope_new(const uint8_t *key);
+void crypto_ope_free_(crypto_ope_t *ope);
+#define crypto_ope_free(ope) \
+ FREE_AND_NULL(crypto_ope_t, crypto_ope_free_, (ope))
+
+uint64_t crypto_ope_encrypt(const crypto_ope_t *ope, int plaintext);
+
+#ifdef CRYPTO_OPE_PRIVATE
+struct aes_cnt_cipher;
+STATIC struct aes_cnt_cipher *ope_get_cipher(const crypto_ope_t *ope,
+ uint32_t initial_idx);
+STATIC uint64_t sum_values_from_cipher(struct aes_cnt_cipher *c, size_t n);
+#endif
+
+#endif
diff --git a/src/lib/crypt_ops/crypto_openssl_mgt.c b/src/lib/crypt_ops/crypto_openssl_mgt.c
index d1affa7258..01de6a9d9e 100644
--- a/src/lib/crypt_ops/crypto_openssl_mgt.c
+++ b/src/lib/crypt_ops/crypto_openssl_mgt.c
@@ -5,7 +5,7 @@
/* See LICENSE for licensing information */
/**
- * \file crypto_openssl.c
+ * \file crypto_openssl_mgt.c
*
* \brief Block of functions related to operations from OpenSSL.
**/
diff --git a/src/lib/crypt_ops/crypto_openssl_mgt.h b/src/lib/crypt_ops/crypto_openssl_mgt.h
index 8251f65ecf..a2c53302e1 100644
--- a/src/lib/crypt_ops/crypto_openssl_mgt.h
+++ b/src/lib/crypt_ops/crypto_openssl_mgt.h
@@ -5,9 +5,9 @@
/* See LICENSE for licensing information */
/**
- * \file crypto_openssl.h
+ * \file crypto_openssl_mgt.h
*
- * \brief Headers for crypto_openssl.c
+ * \brief Headers for crypto_openssl_mgt.c
**/
#ifndef TOR_CRYPTO_OPENSSL_H
diff --git a/src/lib/crypt_ops/crypto_rand.c b/src/lib/crypt_ops/crypto_rand.c
index 6f479b013b..fb9d0c2c6c 100644
--- a/src/lib/crypt_ops/crypto_rand.c
+++ b/src/lib/crypt_ops/crypto_rand.c
@@ -26,9 +26,9 @@
#include "lib/crypt_ops/crypto_util.h"
#include "lib/encoding/binascii.h"
#include "lib/intmath/weakrng.h"
-#include "lib/log/torlog.h"
+#include "lib/log/log.h"
#include "lib/log/util_bug.h"
-#include "lib/malloc/util_malloc.h"
+#include "lib/malloc/malloc.h"
#include "lib/sandbox/sandbox.h"
#include "lib/string/compat_string.h"
#include "lib/string/util_string.h"
diff --git a/src/lib/crypt_ops/crypto_rsa.c b/src/lib/crypt_ops/crypto_rsa.c
index 9290414de0..5ec69d7319 100644
--- a/src/lib/crypt_ops/crypto_rsa.c
+++ b/src/lib/crypt_ops/crypto_rsa.c
@@ -36,7 +36,7 @@ DISABLE_GCC_WARNING(redundant-decls)
ENABLE_GCC_WARNING(redundant-decls)
-#include "lib/log/torlog.h"
+#include "lib/log/log.h"
#include "lib/encoding/binascii.h"
#include <string.h>
diff --git a/src/lib/crypt_ops/crypto_rsa.h b/src/lib/crypt_ops/crypto_rsa.h
index 093f2cec6c..51fc974821 100644
--- a/src/lib/crypt_ops/crypto_rsa.h
+++ b/src/lib/crypt_ops/crypto_rsa.h
@@ -18,7 +18,7 @@
#include "lib/crypt_ops/crypto_digest.h"
#include "lib/cc/torint.h"
#include "lib/testsupport/testsupport.h"
-#include "lib/log/torlog.h"
+#include "lib/log/log.h"
/** Length of our public keys. */
#define PK_BYTES (1024/8)
diff --git a/src/lib/crypt_ops/crypto_util.c b/src/lib/crypt_ops/crypto_util.c
index 19b0885256..79988c6a91 100644
--- a/src/lib/crypt_ops/crypto_util.c
+++ b/src/lib/crypt_ops/crypto_util.c
@@ -31,7 +31,7 @@ DISABLE_GCC_WARNING(redundant-decls)
ENABLE_GCC_WARNING(redundant-decls)
-#include "lib/log/torlog.h"
+#include "lib/log/log.h"
#include "lib/log/util_bug.h"
/**
diff --git a/src/lib/crypt_ops/include.am b/src/lib/crypt_ops/include.am
index 1b88b880d0..017d7956d0 100644
--- a/src/lib/crypt_ops/include.am
+++ b/src/lib/crypt_ops/include.am
@@ -14,6 +14,7 @@ src_lib_libtor_crypt_ops_a_SOURCES = \
src/lib/crypt_ops/crypto_ed25519.c \
src/lib/crypt_ops/crypto_format.c \
src/lib/crypt_ops/crypto_hkdf.c \
+ src/lib/crypt_ops/crypto_ope.c \
src/lib/crypt_ops/crypto_openssl_mgt.c \
src/lib/crypt_ops/crypto_pwbox.c \
src/lib/crypt_ops/crypto_rand.c \
@@ -38,6 +39,7 @@ noinst_HEADERS += \
src/lib/crypt_ops/crypto.h \
src/lib/crypt_ops/crypto_hkdf.h \
src/lib/crypt_ops/crypto_openssl_mgt.h \
+ src/lib/crypt_ops/crypto_ope.h \
src/lib/crypt_ops/crypto_pwbox.h \
src/lib/crypt_ops/crypto_rand.h \
src/lib/crypt_ops/crypto_rsa.h \
diff --git a/src/lib/ctime/di_ops.c b/src/lib/ctime/di_ops.c
index 287ff6080a..011baf2654 100644
--- a/src/lib/ctime/di_ops.c
+++ b/src/lib/ctime/di_ops.c
@@ -9,7 +9,7 @@
#include "orconfig.h"
#include "lib/ctime/di_ops.h"
#include "lib/err/torerr.h"
-#include "lib/malloc/util_malloc.h"
+#include "lib/malloc/malloc.h"
#include <string.h>
diff --git a/src/lib/defs/dh_sizes.h b/src/lib/defs/dh_sizes.h
index b60957281c..a02ffc5281 100644
--- a/src/lib/defs/dh_sizes.h
+++ b/src/lib/defs/dh_sizes.h
@@ -4,6 +4,15 @@
* Copyright (c) 2007-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file dh_sizes.h
+
+ * \brief Definitions for sizes of Diffie-Hellman groups elements in Z_p.
+ *
+ * Tor uses these definitions throughout its codebase, even in parts that
+ * don't actually do any Diffie-Hellman calculations.
+ **/
+
#ifndef TOR_DH_SIZES_H
#define TOR_DH_SIZES_H
diff --git a/src/lib/defs/x25519_sizes.h b/src/lib/defs/x25519_sizes.h
index adaaab8c4d..d8ada46b97 100644
--- a/src/lib/defs/x25519_sizes.h
+++ b/src/lib/defs/x25519_sizes.h
@@ -4,6 +4,15 @@
* Copyright (c) 2007-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file x25519_sizes.h
+
+ * \brief Definitions for sizes of x25519 keys and elements.
+ *
+ * Tor uses these definitions throughout its codebase, even in parts that
+ * don't actually do any x25519 calculations.
+ **/
+
#ifndef TOR_X25519_SIZES_H
#define TOR_X25519_SIZES_H
diff --git a/src/lib/encoding/binascii.c b/src/lib/encoding/binascii.c
index df9bb4a813..e9140d9432 100644
--- a/src/lib/encoding/binascii.c
+++ b/src/lib/encoding/binascii.c
@@ -14,12 +14,12 @@
#include "orconfig.h"
#include "lib/encoding/binascii.h"
-#include "lib/log/torlog.h"
+#include "lib/log/log.h"
#include "lib/log/util_bug.h"
#include "lib/cc/torint.h"
#include "lib/string/compat_ctype.h"
#include "lib/intmath/muldiv.h"
-#include "lib/malloc/util_malloc.h"
+#include "lib/malloc/malloc.h"
#include <stddef.h>
#include <string.h>
diff --git a/src/lib/encoding/confline.c b/src/lib/encoding/confline.c
index 3486b6a82b..dd5193d3a7 100644
--- a/src/lib/encoding/confline.c
+++ b/src/lib/encoding/confline.c
@@ -17,9 +17,9 @@
#include "lib/encoding/confline.h"
#include "lib/encoding/cstring.h"
-#include "lib/log/torlog.h"
+#include "lib/log/log.h"
#include "lib/log/util_bug.h"
-#include "lib/malloc/util_malloc.h"
+#include "lib/malloc/malloc.h"
#include "lib/string/compat_ctype.h"
#include "lib/string/compat_string.h"
#include "lib/string/util_string.h"
diff --git a/src/lib/encoding/cstring.c b/src/lib/encoding/cstring.c
index 994a52e70c..69aa7f3da5 100644
--- a/src/lib/encoding/cstring.c
+++ b/src/lib/encoding/cstring.c
@@ -11,9 +11,9 @@
**/
#include "lib/encoding/cstring.h"
-#include "lib/log/torlog.h"
+#include "lib/log/log.h"
#include "lib/log/util_bug.h"
-#include "lib/malloc/util_malloc.h"
+#include "lib/malloc/malloc.h"
#include "lib/string/compat_ctype.h"
#include <string.h>
diff --git a/src/lib/encoding/keyval.c b/src/lib/encoding/keyval.c
index 53ee776fe7..d5e4e4e438 100644
--- a/src/lib/encoding/keyval.c
+++ b/src/lib/encoding/keyval.c
@@ -12,7 +12,7 @@
#include "orconfig.h"
#include "lib/encoding/keyval.h"
#include "lib/log/escape.h"
-#include "lib/log/torlog.h"
+#include "lib/log/log.h"
#include "lib/log/util_bug.h"
#include <stdlib.h>
diff --git a/src/lib/encoding/time_fmt.c b/src/lib/encoding/time_fmt.c
index c2ff34a91a..a921fc681c 100644
--- a/src/lib/encoding/time_fmt.c
+++ b/src/lib/encoding/time_fmt.c
@@ -15,13 +15,13 @@
**/
#include "lib/encoding/time_fmt.h"
-#include "lib/log/torlog.h"
+#include "lib/log/log.h"
#include "lib/log/escape.h"
#include "lib/log/util_bug.h"
-#include "lib/malloc/util_malloc.h"
+#include "lib/malloc/malloc.h"
#include "lib/string/printf.h"
#include "lib/string/scanf.h"
-#include "lib/wallclock/tm_cvt.h"
+#include "lib/wallclock/time_to_tm.h"
#include <string.h>
#include <time.h>
diff --git a/src/lib/evloop/compat_libevent.c b/src/lib/evloop/compat_libevent.c
index 5e5faf163c..2ee71c5598 100644
--- a/src/lib/evloop/compat_libevent.c
+++ b/src/lib/evloop/compat_libevent.c
@@ -11,7 +11,7 @@
#include "lib/evloop/compat_libevent.h"
#include "lib/crypt_ops/crypto_rand.h"
-#include "lib/log/torlog.h"
+#include "lib/log/log.h"
#include "lib/log/util_bug.h"
#include "lib/string/compat_string.h"
diff --git a/src/lib/evloop/compat_libevent.h b/src/lib/evloop/compat_libevent.h
index 0a50cfa667..5fda49f741 100644
--- a/src/lib/evloop/compat_libevent.h
+++ b/src/lib/evloop/compat_libevent.h
@@ -1,12 +1,17 @@
/* Copyright (c) 2009-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file compat_libevent.h
+ * \brief Header for compat_libevent.c
+ **/
+
#ifndef TOR_COMPAT_LIBEVENT_H
#define TOR_COMPAT_LIBEVENT_H
#include "orconfig.h"
#include "lib/testsupport/testsupport.h"
-#include "lib/malloc/util_malloc.h"
+#include "lib/malloc/malloc.h"
void configure_libevent_logging(void);
void suppress_libevent_log_msg(const char *msg);
diff --git a/src/lib/evloop/procmon.c b/src/lib/evloop/procmon.c
index a923fbad74..e0c26caab2 100644
--- a/src/lib/evloop/procmon.c
+++ b/src/lib/evloop/procmon.c
@@ -8,10 +8,10 @@
#include "lib/evloop/procmon.h"
-#include "lib/log/torlog.h"
+#include "lib/log/log.h"
#include "lib/log/util_bug.h"
#include "lib/log/win32err.h"
-#include "lib/malloc/util_malloc.h"
+#include "lib/malloc/malloc.h"
#include "lib/string/parse_int.h"
#ifdef HAVE_SIGNAL_H
diff --git a/src/lib/evloop/procmon.h b/src/lib/evloop/procmon.h
index b596e5cc6d..42c3788692 100644
--- a/src/lib/evloop/procmon.h
+++ b/src/lib/evloop/procmon.h
@@ -11,7 +11,7 @@
#include "lib/evloop/compat_libevent.h"
-#include "lib/log/torlog.h"
+#include "lib/log/log.h"
typedef struct tor_process_monitor_t tor_process_monitor_t;
diff --git a/src/lib/evloop/timers.c b/src/lib/evloop/timers.c
index c07bd2e726..c4e85c7c93 100644
--- a/src/lib/evloop/timers.c
+++ b/src/lib/evloop/timers.c
@@ -34,9 +34,9 @@
#include "lib/evloop/compat_libevent.h"
#include "lib/evloop/timers.h"
#include "lib/intmath/muldiv.h"
-#include "lib/log/torlog.h"
+#include "lib/log/log.h"
#include "lib/log/util_bug.h"
-#include "lib/malloc/util_malloc.h"
+#include "lib/malloc/malloc.h"
#include "lib/time/compat_time.h"
#ifdef _WIN32
diff --git a/src/lib/evloop/timers.h b/src/lib/evloop/timers.h
index 2348c7b7c1..4ffed1b458 100644
--- a/src/lib/evloop/timers.h
+++ b/src/lib/evloop/timers.h
@@ -1,6 +1,11 @@
/* Copyright (c) 2016-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file timers.h
+ * \brief Header for timers.c
+ **/
+
#ifndef TOR_TIMERS_H
#define TOR_TIMERS_H
@@ -28,4 +33,3 @@ STATIC void timers_run_pending(void);
#endif
#endif /* !defined(TOR_TIMERS_H) */
-
diff --git a/src/lib/evloop/token_bucket.h b/src/lib/evloop/token_bucket.h
index 787317fa1f..f004358f47 100644
--- a/src/lib/evloop/token_bucket.h
+++ b/src/lib/evloop/token_bucket.h
@@ -2,8 +2,8 @@
/* See LICENSE for licensing information */
/**
- * \file token_bucket_rw.h
- * \brief Headers for token_bucket_rw.c
+ * \file token_bucket.h
+ * \brief Headers for token_bucket.c
**/
#ifndef TOR_TOKEN_BUCKET_H
@@ -115,4 +115,3 @@ STATIC uint32_t rate_per_sec_to_rate_per_step(uint32_t rate);
#endif
#endif /* TOR_TOKEN_BUCKET_H */
-
diff --git a/src/lib/evloop/workqueue.c b/src/lib/evloop/workqueue.c
index 4d36f352e3..931f65e710 100644
--- a/src/lib/evloop/workqueue.c
+++ b/src/lib/evloop/workqueue.c
@@ -30,7 +30,7 @@
#include "lib/crypt_ops/crypto_rand.h"
#include "lib/intmath/weakrng.h"
#include "lib/log/ratelim.h"
-#include "lib/log/torlog.h"
+#include "lib/log/log.h"
#include "lib/log/util_bug.h"
#include "lib/net/alertsock.h"
#include "lib/net/socket.h"
diff --git a/src/lib/evloop/workqueue.h b/src/lib/evloop/workqueue.h
index 4e5c424be6..da292d1f05 100644
--- a/src/lib/evloop/workqueue.h
+++ b/src/lib/evloop/workqueue.h
@@ -1,6 +1,11 @@
/* Copyright (c) 2013-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file workqueue.h
+ * \brief Header for workqueue.c
+ **/
+
#ifndef TOR_WORKQUEUE_H
#define TOR_WORKQUEUE_H
diff --git a/src/lib/fs/.may_include b/src/lib/fs/.may_include
index 6c9ce6ca04..b1e49fc891 100644
--- a/src/lib/fs/.may_include
+++ b/src/lib/fs/.may_include
@@ -1,4 +1,7 @@
orconfig.h
+
+ext/getdelim.c
+
lib/cc/*.h
lib/container/*.h
lib/encoding/*.h
diff --git a/src/lib/fs/conffile.c b/src/lib/fs/conffile.c
index 600c7f6b70..d8622bff6b 100644
--- a/src/lib/fs/conffile.c
+++ b/src/lib/fs/conffile.c
@@ -17,8 +17,8 @@
#include "lib/fs/dir.h"
#include "lib/fs/files.h"
#include "lib/fs/path.h"
-#include "lib/log/torlog.h"
-#include "lib/malloc/util_malloc.h"
+#include "lib/log/log.h"
+#include "lib/malloc/malloc.h"
#include "lib/string/printf.h"
static smartlist_t *config_get_file_list(const char *path,
diff --git a/src/lib/fs/dir.c b/src/lib/fs/dir.c
index cc339f747e..6c24460005 100644
--- a/src/lib/fs/dir.c
+++ b/src/lib/fs/dir.c
@@ -14,12 +14,12 @@
#include "lib/fs/path.h"
#include "lib/fs/userdb.h"
-#include "lib/log/torlog.h"
+#include "lib/log/log.h"
#include "lib/log/util_bug.h"
#include "lib/log/win32err.h"
#include "lib/container/smartlist.h"
#include "lib/sandbox/sandbox.h"
-#include "lib/malloc/util_malloc.h"
+#include "lib/malloc/malloc.h"
#include "lib/string/printf.h"
#include "lib/string/compat_string.h"
diff --git a/src/lib/fs/files.c b/src/lib/fs/files.c
index 4e0a398baa..43dcbad333 100644
--- a/src/lib/fs/files.c
+++ b/src/lib/fs/files.c
@@ -16,11 +16,11 @@
#include "lib/fs/files.h"
#include "lib/fs/path.h"
#include "lib/container/smartlist.h"
-#include "lib/log/torlog.h"
+#include "lib/log/log.h"
#include "lib/log/util_bug.h"
#include "lib/log/escape.h"
#include "lib/err/torerr.h"
-#include "lib/malloc/util_malloc.h"
+#include "lib/malloc/malloc.h"
#include "lib/sandbox/sandbox.h"
#include "lib/string/printf.h"
#include "lib/string/util_string.h"
@@ -715,3 +715,7 @@ read_file_to_str, (const char *filename, int flags, struct stat *stat_out))
return string;
}
+
+#if !defined(HAVE_GETDELIM) || defined(TOR_UNIT_TESTS)
+#include "ext/getdelim.c"
+#endif
diff --git a/src/lib/fs/files.h b/src/lib/fs/files.h
index 5a12eb8215..2ee1b20149 100644
--- a/src/lib/fs/files.h
+++ b/src/lib/fs/files.h
@@ -103,4 +103,43 @@ char *read_file_to_str_until_eof(int fd, size_t max_bytes_to_read,
size_t *sz_out)
ATTR_MALLOC;
+#if !defined(HAVE_GETDELIM) || defined(TOR_UNIT_TESTS)
+/** Internal back-end function to implement getdelim(): only exists when
+ * Tor is built for unit tests, or when Tor is built on an operating system
+ * without its own getdelim(). */
+ssize_t compat_getdelim_(char **lineptr, size_t *n, int delim, FILE *stream);
+#endif
+
+#ifdef HAVE_GETDELIM
+/**
+ * Cross-platform wrapper for getdelim(): behaves as the POSIX-standard
+ * getdelim() function.
+ *
+ * See `getdelim(3)` for more information.
+ *
+ * Note that this function will use the libc memory allocator -- so any memory
+ * passed to this function must come from raw_malloc(), and must be freed by
+ * raw_free() -- don't use tor_malloc() and tor_free() with this.
+ */
+#define tor_getdelim(lineptr, n, delim, stream) \
+ getdelim((lineptr), (n), (delim), (stream))
+#else
+#define tor_getdelim(lineptr, n, delim, stream) \
+ compat_getdelim_((lineptr), (n), (delim), (stream))
+#endif
+
+#ifdef HAVE_GETLINE
+/**
+ * Cross-platform wrapper for getline(): behaves as the POSIX-standard
+ * getline() function.
+ *
+ * See tor_getdelim() for usage notes.
+ */
+#define tor_getline(lineptr, n, stream) \
+ getline((lineptr), (n), (stream))
+#else
+#define tor_getline(lineptr, n, stream) \
+ tor_getdelim((lineptr), (n), '\n', (stream))
+#endif
+
#endif
diff --git a/src/lib/fs/lockfile.c b/src/lib/fs/lockfile.c
index 972fd5658d..ca1711c344 100644
--- a/src/lib/fs/lockfile.c
+++ b/src/lib/fs/lockfile.c
@@ -13,9 +13,9 @@
#include "orconfig.h"
#include "lib/fs/files.h"
#include "lib/fs/lockfile.h"
-#include "lib/log/torlog.h"
+#include "lib/log/log.h"
#include "lib/log/util_bug.h"
-#include "lib/malloc/util_malloc.h"
+#include "lib/malloc/malloc.h"
#ifdef HAVE_SYS_FILE_H
#include <sys/file.h>
diff --git a/src/lib/fs/mmap.c b/src/lib/fs/mmap.c
index 2d758c1b5f..e7da6fc63a 100644
--- a/src/lib/fs/mmap.c
+++ b/src/lib/fs/mmap.c
@@ -11,11 +11,11 @@
#include "lib/fs/mmap.h"
#include "lib/fs/files.h"
-#include "lib/log/torlog.h"
+#include "lib/log/log.h"
#include "lib/log/util_bug.h"
#include "lib/log/win32err.h"
#include "lib/string/compat_string.h"
-#include "lib/malloc/util_malloc.h"
+#include "lib/malloc/malloc.h"
#ifdef HAVE_MMAP
#include <sys/mman.h>
diff --git a/src/lib/fs/path.c b/src/lib/fs/path.c
index 708ff0505a..eb5170920c 100644
--- a/src/lib/fs/path.c
+++ b/src/lib/fs/path.c
@@ -10,8 +10,8 @@
**/
#include "lib/fs/path.h"
-#include "lib/malloc/util_malloc.h"
-#include "lib/log/torlog.h"
+#include "lib/malloc/malloc.h"
+#include "lib/log/log.h"
#include "lib/log/util_bug.h"
#include "lib/string/printf.h"
#include "lib/string/util_string.h"
diff --git a/src/lib/fs/storagedir.c b/src/lib/fs/storagedir.c
index 1cda2374d8..014eb4d9eb 100644
--- a/src/lib/fs/storagedir.c
+++ b/src/lib/fs/storagedir.c
@@ -20,9 +20,9 @@
#include "lib/fs/files.h"
#include "lib/fs/mmap.h"
#include "lib/log/escape.h"
-#include "lib/log/torlog.h"
+#include "lib/log/log.h"
#include "lib/log/util_bug.h"
-#include "lib/malloc/util_malloc.h"
+#include "lib/malloc/malloc.h"
#include "lib/memarea/memarea.h"
#include "lib/sandbox/sandbox.h"
#include "lib/string/printf.h"
diff --git a/src/lib/fs/userdb.c b/src/lib/fs/userdb.c
index 3d7a9da59d..df2935baa8 100644
--- a/src/lib/fs/userdb.c
+++ b/src/lib/fs/userdb.c
@@ -12,8 +12,8 @@
#include "lib/fs/userdb.h"
#ifndef _WIN32
-#include "lib/malloc/util_malloc.h"
-#include "lib/log/torlog.h"
+#include "lib/malloc/malloc.h"
+#include "lib/log/log.h"
#include "lib/log/util_bug.h"
#include <pwd.h>
diff --git a/src/lib/lock/compat_mutex.c b/src/lib/lock/compat_mutex.c
index bfab6dd29b..b53676cf49 100644
--- a/src/lib/lock/compat_mutex.c
+++ b/src/lib/lock/compat_mutex.c
@@ -10,7 +10,7 @@
**/
#include "lib/lock/compat_mutex.h"
-#include "lib/malloc/util_malloc.h"
+#include "lib/malloc/malloc.h"
/** Return a newly allocated, ready-for-use mutex. */
tor_mutex_t *
diff --git a/src/lib/lock/compat_mutex.h b/src/lib/lock/compat_mutex.h
index f467aa5dba..f8689422b1 100644
--- a/src/lib/lock/compat_mutex.h
+++ b/src/lib/lock/compat_mutex.h
@@ -14,7 +14,7 @@
#include "orconfig.h"
#include "lib/cc/torint.h"
-#include "lib/malloc/util_malloc.h"
+#include "lib/malloc/malloc.h"
#if defined(HAVE_PTHREAD_H) && !defined(_WIN32)
#include <pthread.h>
diff --git a/src/lib/log/escape.c b/src/lib/log/escape.c
index 7561710309..37d7e0fdc4 100644
--- a/src/lib/log/escape.c
+++ b/src/lib/log/escape.c
@@ -3,11 +3,16 @@
* Copyright (c) 2007-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file escape.c
+ * \brief Escape untrusted strings before sending them to the log.
+ **/
+
#include "lib/log/escape.h"
#include "lib/log/util_bug.h"
#include "lib/string/compat_ctype.h"
#include "lib/string/printf.h"
-#include "lib/malloc/util_malloc.h"
+#include "lib/malloc/malloc.h"
/** Allocate and return a new string representing the contents of <b>s</b>,
* surrounded by quotes and using standard C escapes.
diff --git a/src/lib/log/escape.h b/src/lib/log/escape.h
index 5d2e79d6c2..f47e7e004d 100644
--- a/src/lib/log/escape.h
+++ b/src/lib/log/escape.h
@@ -4,6 +4,11 @@
* Copyright (c) 2007-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file escape.h
+ * \brief Header for escape.c
+ **/
+
#ifndef TOR_ESCAPE_H
#define TOR_ESCAPE_H
diff --git a/src/core/or/git_revision.c b/src/lib/log/git_revision.c
index 28ec1a7933..9d29ecd2a2 100644
--- a/src/core/or/git_revision.c
+++ b/src/lib/log/git_revision.c
@@ -3,7 +3,8 @@
* Copyright (c) 2007-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
-#include "core/or/git_revision.h"
+#include "orconfig.h"
+#include "lib/log/git_revision.h"
/** String describing which Tor Git repository version the source was
* built from. This string is generated by a bit of shell kludging in
@@ -14,3 +15,10 @@ const char tor_git_revision[] =
#include "micro-revision.i"
#endif
"";
+
+const char tor_bug_suffix[] = " (on Tor " VERSION
+#ifndef _MSC_VER
+ " "
+#include "micro-revision.i"
+#endif
+ ")";
diff --git a/src/core/or/git_revision.h b/src/lib/log/git_revision.h
index 02070cfd5e..0ce1190795 100644
--- a/src/core/or/git_revision.h
+++ b/src/lib/log/git_revision.h
@@ -7,6 +7,6 @@
#define TOR_GIT_REVISION_H
extern const char tor_git_revision[];
+extern const char tor_bug_suffix[];
#endif /* !defined(TOR_GIT_REVISION_H) */
-
diff --git a/src/lib/log/include.am b/src/lib/log/include.am
index f0491b3863..4a6c9b3686 100644
--- a/src/lib/log/include.am
+++ b/src/lib/log/include.am
@@ -7,8 +7,9 @@ endif
src_lib_libtor_log_a_SOURCES = \
src/lib/log/escape.c \
+ src/lib/log/git_revision.c \
src/lib/log/ratelim.c \
- src/lib/log/torlog.c \
+ src/lib/log/log.c \
src/lib/log/util_bug.c
if WIN32
@@ -20,12 +21,16 @@ src_lib_libtor_log_testing_a_SOURCES = \
src_lib_libtor_log_testing_a_CPPFLAGS = $(AM_CPPFLAGS) $(TEST_CPPFLAGS)
src_lib_libtor_log_testing_a_CFLAGS = $(AM_CFLAGS) $(TEST_CFLAGS)
-src/lib/log/torlog.$(OBJEXT) \
- src/lib/log/src_lib_libtor_log_testing_a-torlog.$(OBJEXT): micro-revision.i
+# Declare that these object files depend on micro-revision.i. Without this
+# rule, we could try to build them before micro-revision.i was created.
+src/lib/log/git_revision.$(OBJEXT) \
+ src/lib/log/src_lib_libtor_log_testing_a-git_revision.$(OBJEXT): \
+ micro-revision.i
noinst_HEADERS += \
src/lib/log/escape.h \
+ src/lib/log/git_revision.h \
src/lib/log/ratelim.h \
- src/lib/log/torlog.h \
+ src/lib/log/log.h \
src/lib/log/util_bug.h \
src/lib/log/win32err.h
diff --git a/src/lib/log/torlog.c b/src/lib/log/log.c
index 1c9f33790d..d60ce6308a 100644
--- a/src/lib/log/torlog.c
+++ b/src/lib/log/log.c
@@ -5,7 +5,7 @@
/* See LICENSE for licensing information */
/**
- * \file torlog.c
+ * \file log.c
* \brief Functions to send messages to log files or the console.
**/
@@ -31,7 +31,8 @@
#endif
#define LOG_PRIVATE
-#include "lib/log/torlog.h"
+#include "lib/log/log.h"
+#include "lib/log/git_revision.h"
#include "lib/log/ratelim.h"
#include "lib/lock/compat_mutex.h"
#include "lib/smartlist_core/smartlist_core.h"
@@ -41,11 +42,11 @@
#include "lib/intmath/bits.h"
#include "lib/string/compat_string.h"
#include "lib/string/printf.h"
-#include "lib/malloc/util_malloc.h"
+#include "lib/malloc/malloc.h"
#include "lib/string/util_string.h"
#include "lib/wallclock/tor_gettimeofday.h"
#include "lib/wallclock/approx_time.h"
-#include "lib/wallclock/tm_cvt.h"
+#include "lib/wallclock/time_to_tm.h"
#include "lib/fdio/fdio.h"
#ifdef HAVE_ANDROID_LOG_H
@@ -100,7 +101,7 @@ sev_to_string(int severity)
case LOG_NOTICE: return "notice";
case LOG_WARN: return "warn";
case LOG_ERR: return "err";
- default: /* Call assert, not tor_assert, since tor_assert
+ default: /* Call raw_assert, not tor_assert, since tor_assert
* calls log on failure. */
raw_assert_unreached(); return "UNKNOWN"; // LCOV_EXCL_LINE
}
@@ -121,7 +122,8 @@ should_log_function_name(log_domain_mask_t domain, int severity)
/* We care about places where bugs occur. */
return (domain & (LD_BUG|LD_NOFUNCNAME)) == LD_BUG;
default:
- /* Call assert, not tor_assert, since tor_assert calls log on failure. */
+ /* Call raw_assert, not tor_assert, since tor_assert calls
+ * log on failure. */
raw_assert(0); return 0; // LCOV_EXCL_LINE
}
}
@@ -353,13 +355,6 @@ log_tor_version(logfile_t *lf, int reset)
return 0;
}
-static const char bug_suffix[] = " (on Tor " VERSION
-#ifndef _MSC_VER
- " "
-#include "micro-revision.i"
-#endif
- ")";
-
/** Helper: Format a log message into a fixed-sized buffer. (This is
* factored out of <b>logv</b> so that we never format a message more
* than once.) Return a pointer to the first character of the message
@@ -442,9 +437,9 @@ format_msg(char *buf, size_t buf_len,
}
if (domain == LD_BUG &&
- buf_len - n > strlen(bug_suffix)+1) {
- memcpy(buf+n, bug_suffix, strlen(bug_suffix));
- n += strlen(bug_suffix);
+ buf_len - n > strlen(tor_bug_suffix)+1) {
+ memcpy(buf+n, tor_bug_suffix, strlen(tor_bug_suffix));
+ n += strlen(tor_bug_suffix);
}
buf[n]='\n';
@@ -585,7 +580,7 @@ logv,(int severity, log_domain_mask_t domain, const char *funcname,
char *end_of_prefix=NULL;
int callbacks_deferred = 0;
- /* Call assert, not raw_assert, since raw_assert calls log on failure. */
+ /* Call raw_assert, not tor_assert, since tor_assert calls log on failure. */
raw_assert(format);
/* check that severity is sane. Overrunning the masks array leads to
* interesting and hard to diagnose effects */
@@ -700,7 +695,7 @@ tor_log_update_sigsafe_err_fds(void)
if (!found_real_stderr &&
int_array_contains(fds, n_fds, STDOUT_FILENO)) {
/* Don't use a virtual stderr when we're also logging to stdout. */
- raw_assert(n_fds >= 2); /* Don't raw_assert inside log fns */
+ raw_assert(n_fds >= 2); /* Don't tor_assert inside log fns */
fds[0] = fds[--n_fds];
}
diff --git a/src/lib/log/torlog.h b/src/lib/log/log.h
index c24b638191..493409756f 100644
--- a/src/lib/log/torlog.h
+++ b/src/lib/log/log.h
@@ -5,7 +5,7 @@
/* See LICENSE for licensing information */
/**
- * \file torlog.h
+ * \file log.h
*
* \brief Headers for log.c
**/
diff --git a/src/lib/log/ratelim.c b/src/lib/log/ratelim.c
index 677c499110..2d0e8b17ca 100644
--- a/src/lib/log/ratelim.c
+++ b/src/lib/log/ratelim.c
@@ -3,8 +3,13 @@
* Copyright (c) 2007-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file ratelim.c
+ * \brief Summarize similar messages that would otherwise flood the logs.
+ **/
+
#include "lib/log/ratelim.h"
-#include "lib/malloc/util_malloc.h"
+#include "lib/malloc/malloc.h"
#include "lib/string/printf.h"
/** If the rate-limiter <b>lim</b> is ready at <b>now</b>, return the number
diff --git a/src/lib/log/ratelim.h b/src/lib/log/ratelim.h
index 4ee6c5fed4..d423e10b85 100644
--- a/src/lib/log/ratelim.h
+++ b/src/lib/log/ratelim.h
@@ -3,6 +3,11 @@
* Copyright (c) 2007-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file ratelim.h
+ * \brief Summarize similar messages that would otherwise flood the logs.
+ **/
+
#ifndef TOR_RATELIM_H
#define TOR_RATELIM_H
diff --git a/src/lib/log/util_bug.c b/src/lib/log/util_bug.c
index 78af08f022..b23f4edc97 100644
--- a/src/lib/log/util_bug.c
+++ b/src/lib/log/util_bug.c
@@ -9,21 +9,17 @@
#include "orconfig.h"
#include "lib/log/util_bug.h"
-#include "lib/log/torlog.h"
+#include "lib/log/log.h"
#include "lib/err/backtrace.h"
#ifdef TOR_UNIT_TESTS
#include "lib/smartlist_core/smartlist_core.h"
#include "lib/smartlist_core/smartlist_foreach.h"
#endif
-#include "lib/malloc/util_malloc.h"
+#include "lib/malloc/malloc.h"
#include "lib/string/printf.h"
#include <string.h>
-#ifdef __COVERITY__
-int bug_macro_deadcode_dummy__ = 0;
-#endif
-
#ifdef TOR_UNIT_TESTS
static void (*failed_assertion_cb)(void) = NULL;
static int n_bugs_to_capture = 0;
diff --git a/src/lib/log/util_bug.h b/src/lib/log/util_bug.h
index a0753c807b..44a4f8381c 100644
--- a/src/lib/log/util_bug.h
+++ b/src/lib/log/util_bug.h
@@ -38,7 +38,7 @@
#include "orconfig.h"
#include "lib/cc/compat_compiler.h"
-#include "lib/log/torlog.h"
+#include "lib/log/log.h"
#include "lib/testsupport/testsupport.h"
/* Replace assert() with a variant that sends failures to the log before
@@ -86,13 +86,10 @@
*/
#ifdef __COVERITY__
-extern int bug_macro_deadcode_dummy__;
#undef BUG
// Coverity defines this in global headers; let's override it. This is a
// magic coverity-only preprocessor thing.
-// We use this "deadcode_dummy__" trick to prevent coverity from
-// complaining about unreachable bug cases.
-#nodef BUG(x) ((x)?(__coverity_panic__(),1):(0+bug_macro_deadcode_dummy__))
+#nodef BUG(x) (x)
#endif /* defined(__COVERITY__) */
#if defined(__COVERITY__) || defined(__clang_analyzer__)
diff --git a/src/lib/log/win32err.c b/src/lib/log/win32err.c
index 4586c23c84..41f563bfa5 100644
--- a/src/lib/log/win32err.c
+++ b/src/lib/log/win32err.c
@@ -3,10 +3,15 @@
* Copyright (c) 2007-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file win32err.c
+ * \brief Convert windows error codes to useful C strings.
+ **/
+
#ifdef _WIN32
#include "orconfig.h"
#include "lib/log/win32err.h"
-#include "lib/malloc/util_malloc.h"
+#include "lib/malloc/malloc.h"
#include <tchar.h>
#include <windows.h>
diff --git a/src/lib/log/win32err.h b/src/lib/log/win32err.h
index 61d3af57dd..92958c9879 100644
--- a/src/lib/log/win32err.h
+++ b/src/lib/log/win32err.h
@@ -3,6 +3,11 @@
* Copyright (c) 2007-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file win32err.h
+ * \brief Header for win32err.c
+ **/
+
#ifndef TOR_WIN32ERR_H
#define TOR_WIN32ERR_H
diff --git a/src/lib/malloc/include.am b/src/lib/malloc/include.am
index 50de9cb736..502cc1c6b7 100644
--- a/src/lib/malloc/include.am
+++ b/src/lib/malloc/include.am
@@ -6,7 +6,7 @@ noinst_LIBRARIES += src/lib/libtor-malloc-testing.a
endif
src_lib_libtor_malloc_a_SOURCES = \
- src/lib/malloc/util_malloc.c
+ src/lib/malloc/malloc.c
if USE_OPENBSD_MALLOC
src_lib_libtor_malloc_a_SOURCES += src/ext/OpenBSD_malloc_Linux.c
@@ -18,4 +18,4 @@ src_lib_libtor_malloc_testing_a_CPPFLAGS = $(AM_CPPFLAGS) $(TEST_CPPFLAGS)
src_lib_libtor_malloc_testing_a_CFLAGS = $(AM_CFLAGS) $(TEST_CFLAGS)
noinst_HEADERS += \
- src/lib/malloc/util_malloc.h
+ src/lib/malloc/malloc.h
diff --git a/src/lib/malloc/util_malloc.c b/src/lib/malloc/malloc.c
index f3b0e50c70..271e84071a 100644
--- a/src/lib/malloc/util_malloc.c
+++ b/src/lib/malloc/malloc.c
@@ -4,7 +4,7 @@
/* See LICENSE for licensing information */
/**
- * \file util_malloc.c
+ * \file malloc.c
* \brief Wrappers for C malloc code, and replacements for items that
* may be missing.
**/
@@ -16,7 +16,7 @@
#include "lib/testsupport/testsupport.h"
#define UTIL_MALLOC_PRIVATE
-#include "lib/malloc/util_malloc.h"
+#include "lib/malloc/malloc.h"
#include "lib/cc/torint.h"
#include "lib/err/torerr.h"
diff --git a/src/lib/malloc/util_malloc.h b/src/lib/malloc/malloc.h
index a1e9531176..26ee30742e 100644
--- a/src/lib/malloc/util_malloc.h
+++ b/src/lib/malloc/malloc.h
@@ -4,7 +4,7 @@
/* See LICENSE for licensing information */
/**
- * \file util_malloc.h
+ * \file malloc.h
* \brief Headers for util_malloc.c
**/
diff --git a/src/lib/memarea/memarea.c b/src/lib/memarea/memarea.c
index 9d494ab2d4..dd7c48c079 100644
--- a/src/lib/memarea/memarea.c
+++ b/src/lib/memarea/memarea.c
@@ -17,9 +17,9 @@
#include "lib/arch/bytes.h"
#include "lib/cc/torint.h"
#include "lib/container/smartlist.h"
-#include "lib/log/torlog.h"
+#include "lib/log/log.h"
#include "lib/log/util_bug.h"
-#include "lib/malloc/util_malloc.h"
+#include "lib/malloc/malloc.h"
#ifndef DISABLE_MEMORY_SENTINELS
diff --git a/src/lib/meminfo/meminfo.c b/src/lib/meminfo/meminfo.c
index b5a74ce624..648f54e0c5 100644
--- a/src/lib/meminfo/meminfo.c
+++ b/src/lib/meminfo/meminfo.c
@@ -15,8 +15,8 @@
#include "lib/cc/compat_compiler.h"
#include "lib/cc/torint.h"
#include "lib/fs/files.h"
-#include "lib/log/torlog.h"
-#include "lib/malloc/util_malloc.h"
+#include "lib/log/log.h"
+#include "lib/malloc/malloc.h"
#ifdef HAVE_SYS_SYSCTL_H
#include <sys/sysctl.h>
diff --git a/src/lib/net/address.c b/src/lib/net/address.c
index f3eddca7bb..619fa13e9b 100644
--- a/src/lib/net/address.c
+++ b/src/lib/net/address.c
@@ -6,6 +6,9 @@
/**
* \file address.c
* \brief Functions to use and manipulate the tor_addr_t structure.
+ *
+ * This module doesn't have any support for the libc resolver: that is all in
+ * resolve.c.
**/
#define ADDRESS_PRIVATE
@@ -37,13 +40,12 @@
#include "lib/net/address.h"
#include "lib/net/socket.h"
-#include "lib/net/resolve.h"
#include "lib/container/smartlist.h"
#include "lib/ctime/di_ops.h"
-#include "lib/log/torlog.h"
+#include "lib/log/log.h"
#include "lib/log/escape.h"
-#include "lib/malloc/util_malloc.h"
-#include "lib/net/ipv4.h"
+#include "lib/malloc/malloc.h"
+#include "lib/net/inaddr.h"
#include "lib/string/compat_ctype.h"
#include "lib/string/compat_string.h"
#include "lib/string/parse_int.h"
@@ -234,127 +236,6 @@ tor_addr_make_null(tor_addr_t *a, sa_family_t family)
a->family = family;
}
-/** Similar behavior to Unix gethostbyname: resolve <b>name</b>, and set
- * *<b>addr</b> to the proper IP address and family. The <b>family</b>
- * argument (which must be AF_INET, AF_INET6, or AF_UNSPEC) declares a
- * <i>preferred</i> family, though another one may be returned if only one
- * family is implemented for this address.
- *
- * Return 0 on success, -1 on failure; 1 on transient failure.
- */
-MOCK_IMPL(int,
-tor_addr_lookup,(const char *name, uint16_t family, tor_addr_t *addr))
-{
- /* Perhaps eventually this should be replaced by a tor_getaddrinfo or
- * something.
- */
- struct in_addr iaddr;
- struct in6_addr iaddr6;
- tor_assert(name);
- tor_assert(addr);
- tor_assert(family == AF_INET || family == AF_INET6 || family == AF_UNSPEC);
- if (!*name) {
- /* Empty address is an error. */
- return -1;
- } else if (tor_inet_pton(AF_INET, name, &iaddr)) {
- /* It's an IPv4 IP. */
- if (family == AF_INET6)
- return -1;
- tor_addr_from_in(addr, &iaddr);
- return 0;
- } else if (tor_inet_pton(AF_INET6, name, &iaddr6)) {
- if (family == AF_INET)
- return -1;
- tor_addr_from_in6(addr, &iaddr6);
- return 0;
- } else {
-#ifdef HAVE_GETADDRINFO
- int err;
- struct addrinfo *res=NULL, *res_p;
- struct addrinfo *best=NULL;
- struct addrinfo hints;
- int result = -1;
- memset(&hints, 0, sizeof(hints));
- hints.ai_family = family;
- hints.ai_socktype = SOCK_STREAM;
- err = tor_getaddrinfo(name, NULL, &hints, &res);
- /* The check for 'res' here shouldn't be necessary, but it makes static
- * analysis tools happy. */
- if (!err && res) {
- best = NULL;
- for (res_p = res; res_p; res_p = res_p->ai_next) {
- if (family == AF_UNSPEC) {
- if (res_p->ai_family == AF_INET) {
- best = res_p;
- break;
- } else if (res_p->ai_family == AF_INET6 && !best) {
- best = res_p;
- }
- } else if (family == res_p->ai_family) {
- best = res_p;
- break;
- }
- }
- if (!best)
- best = res;
- if (best->ai_family == AF_INET) {
- tor_addr_from_in(addr,
- &((struct sockaddr_in*)best->ai_addr)->sin_addr);
- result = 0;
- } else if (best->ai_family == AF_INET6) {
- tor_addr_from_in6(addr,
- &((struct sockaddr_in6*)best->ai_addr)->sin6_addr);
- result = 0;
- }
- tor_freeaddrinfo(res);
- return result;
- }
- return (err == EAI_AGAIN) ? 1 : -1;
-#else /* !(defined(HAVE_GETADDRINFO)) */
- struct hostent *ent;
- int err;
-#ifdef HAVE_GETHOSTBYNAME_R_6_ARG
- char buf[2048];
- struct hostent hostent;
- int r;
- r = gethostbyname_r(name, &hostent, buf, sizeof(buf), &ent, &err);
-#elif defined(HAVE_GETHOSTBYNAME_R_5_ARG)
- char buf[2048];
- struct hostent hostent;
- ent = gethostbyname_r(name, &hostent, buf, sizeof(buf), &err);
-#elif defined(HAVE_GETHOSTBYNAME_R_3_ARG)
- struct hostent_data data;
- struct hostent hent;
- memset(&data, 0, sizeof(data));
- err = gethostbyname_r(name, &hent, &data);
- ent = err ? NULL : &hent;
-#else
- ent = gethostbyname(name);
-#ifdef _WIN32
- err = WSAGetLastError();
-#else
- err = h_errno;
-#endif
-#endif /* defined(HAVE_GETHOSTBYNAME_R_6_ARG) || ... */
- if (ent) {
- if (ent->h_addrtype == AF_INET) {
- tor_addr_from_in(addr, (struct in_addr*) ent->h_addr);
- } else if (ent->h_addrtype == AF_INET6) {
- tor_addr_from_in6(addr, (struct in6_addr*) ent->h_addr);
- } else {
- tor_assert(0); // LCOV_EXCL_LINE: gethostbyname() returned bizarre type
- }
- return 0;
- }
-#ifdef _WIN32
- return (err == WSATRY_AGAIN) ? 1 : -1;
-#else
- return (err == TRY_AGAIN) ? 1 : -1;
-#endif
-#endif /* defined(HAVE_GETADDRINFO) */
- }
-}
-
/** Return true iff <b>ip</b> is an IP reserved to localhost or local networks
* in RFC1918 or RFC4193 or RFC4291. (fec0::/10, deprecated by RFC3879, is
* also treated as internal for now.)
@@ -1324,64 +1205,6 @@ tor_addr_parse(tor_addr_t *addr, const char *src)
return result;
}
-/** Parse an address or address-port combination from <b>s</b>, resolve the
- * address as needed, and put the result in <b>addr_out</b> and (optionally)
- * <b>port_out</b>. Return 0 on success, negative on failure. */
-int
-tor_addr_port_lookup(const char *s, tor_addr_t *addr_out, uint16_t *port_out)
-{
- const char *port;
- tor_addr_t addr;
- uint16_t portval;
- char *tmp = NULL;
-
- tor_assert(s);
- tor_assert(addr_out);
-
- s = eat_whitespace(s);
-
- if (*s == '[') {
- port = strstr(s, "]");
- if (!port)
- goto err;
- tmp = tor_strndup(s+1, port-(s+1));
- port = port+1;
- if (*port == ':')
- port++;
- else
- port = NULL;
- } else {
- port = strchr(s, ':');
- if (port)
- tmp = tor_strndup(s, port-s);
- else
- tmp = tor_strdup(s);
- if (port)
- ++port;
- }
-
- if (tor_addr_lookup(tmp, AF_UNSPEC, &addr) != 0)
- goto err;
- tor_free(tmp);
-
- if (port) {
- portval = (int) tor_parse_long(port, 10, 1, 65535, NULL, NULL);
- if (!portval)
- goto err;
- } else {
- portval = 0;
- }
-
- if (port_out)
- *port_out = portval;
- tor_addr_copy(addr_out, &addr);
-
- return 0;
- err:
- tor_free(tmp);
- return -1;
-}
-
#ifdef _WIN32
typedef ULONG (WINAPI *GetAdaptersAddresses_fn_t)(
ULONG, ULONG, PVOID, PIP_ADAPTER_ADDRESSES, PULONG);
@@ -1927,7 +1750,7 @@ tor_addr_port_split(int severity, const char *addrport,
tor_assert(addrport);
tor_assert(address_out);
tor_assert(port_out);
- /* We need to check for IPv6 manually because addr_port_lookup() doesn't
+ /* We need to check for IPv6 manually because the logic below doesn't
* do a good job on IPv6 addresses that lack a port. */
if (tor_addr_parse(&a_tmp, addrport) == AF_INET6) {
*port_out = 0;
@@ -1935,30 +1758,11 @@ tor_addr_port_split(int severity, const char *addrport,
return 0;
}
- return addr_port_lookup(severity, addrport, address_out, NULL, port_out);
-}
-
-/** Parse a string of the form "host[:port]" from <b>addrport</b>. If
- * <b>address</b> is provided, set *<b>address</b> to a copy of the
- * host portion of the string. If <b>addr</b> is provided, try to
- * resolve the host portion of the string and store it into
- * *<b>addr</b> (in host byte order). If <b>port_out</b> is provided,
- * store the port number into *<b>port_out</b>, or 0 if no port is given.
- * If <b>port_out</b> is NULL, then there must be no port number in
- * <b>addrport</b>.
- * Return 0 on success, -1 on failure.
- */
-int
-addr_port_lookup(int severity, const char *addrport, char **address,
- uint32_t *addr, uint16_t *port_out)
-{
const char *colon;
char *address_ = NULL;
int port_;
int ok = 1;
- tor_assert(addrport);
-
colon = strrchr(addrport, ':');
if (colon) {
address_ = tor_strndup(addrport, colon-addrport);
@@ -1980,22 +1784,13 @@ addr_port_lookup(int severity, const char *addrport, char **address,
port_ = 0;
}
- if (addr) {
- /* There's an addr pointer, so we need to resolve the hostname. */
- if (tor_lookup_hostname(address_,addr)) {
- log_fn(severity, LD_NET, "Couldn't look up %s", escaped(address_));
- ok = 0;
- *addr = 0;
- }
- }
-
- if (address && ok) {
- *address = address_;
+ if (ok) {
+ *address_out = address_;
} else {
- if (address)
- *address = NULL;
+ *address_out = NULL;
tor_free(address_);
}
+
if (port_out)
*port_out = ok ? ((uint16_t) port_) : 0;
diff --git a/src/lib/net/address.h b/src/lib/net/address.h
index f8ea573c30..e857b4068b 100644
--- a/src/lib/net/address.h
+++ b/src/lib/net/address.h
@@ -14,7 +14,7 @@
#include "orconfig.h"
#include "lib/cc/torint.h"
#include "lib/log/util_bug.h"
-#include "lib/net/ipv6.h"
+#include "lib/net/inaddr_st.h"
#include "lib/net/nettypes.h"
#ifdef HAVE_NETINET_IN_H
@@ -204,8 +204,6 @@ tor_addr_eq_ipv4h(const tor_addr_t *a, uint32_t u)
*/
#define TOR_ADDR_BUF_LEN 48
-MOCK_DECL(int, tor_addr_lookup,(const char *name, uint16_t family,
- tor_addr_t *addr_out));
char *tor_addr_to_str_dup(const tor_addr_t *addr) ATTR_MALLOC;
/** Wrapper function of fmt_addr_impl(). It does not decorate IPv6
@@ -263,9 +261,6 @@ int tor_addr_to_PTR_name(char *out, size_t outlen,
int tor_addr_parse_PTR_name(tor_addr_t *result, const char *address,
int family, int accept_regular);
-int tor_addr_port_lookup(const char *s, tor_addr_t *addr_out,
- uint16_t *port_out);
-
/* Does the address * yield an AF_UNSPEC wildcard address (1),
* which expands to corresponding wildcard IPv4 and IPv6 rules, and do we
* allow *4 and *6 for IPv4 and IPv6 wildcards, respectively;
@@ -330,8 +325,6 @@ int tor_addr_port_parse(int severity, const char *addrport,
int tor_addr_hostname_is_local(const char *name);
/* IPv4 helpers */
-int addr_port_lookup(int severity, const char *addrport, char **address,
- uint32_t *addr, uint16_t *port_out);
int parse_port_range(const char *port, uint16_t *port_min_out,
uint16_t *port_max_out);
int addr_mask_get_bits(uint32_t mask);
diff --git a/src/lib/net/buffers_net.c b/src/lib/net/buffers_net.c
index edc9954f22..c52ea2784e 100644
--- a/src/lib/net/buffers_net.c
+++ b/src/lib/net/buffers_net.c
@@ -4,10 +4,15 @@
* Copyright (c) 2007-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file buffers_net.c
+ * \brief Read and write data on a buf_t object.
+ **/
+
#define BUFFERS_PRIVATE
#include "lib/net/buffers_net.h"
#include "lib/container/buffers.h"
-#include "lib/log/torlog.h"
+#include "lib/log/log.h"
#include "lib/log/util_bug.h"
#include "lib/net/nettypes.h"
diff --git a/src/lib/net/gethostname.c b/src/lib/net/gethostname.c
index b6cc9b8e5f..1c4431af29 100644
--- a/src/lib/net/gethostname.c
+++ b/src/lib/net/gethostname.c
@@ -3,6 +3,11 @@
* Copyright (c) 2007-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file gethostname.c
+ * \brief Mockable wrapper for gethostname().
+ */
+
#include "orconfig.h"
#include "lib/net/gethostname.h"
diff --git a/src/lib/net/gethostname.h b/src/lib/net/gethostname.h
index d83c5fe096..7bf0ce5920 100644
--- a/src/lib/net/gethostname.h
+++ b/src/lib/net/gethostname.h
@@ -3,6 +3,11 @@
* Copyright (c) 2007-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file gethostname.h
+ * \brief Header for gethostname.c
+ **/
+
#ifndef TOR_GETHOSTNAME_H
#define TOR_GETHOSTNAME_H
diff --git a/src/lib/net/ipv6.c b/src/lib/net/inaddr.c
index 35d7ddb901..dcd8fcdd65 100644
--- a/src/lib/net/ipv6.c
+++ b/src/lib/net/inaddr.c
@@ -3,14 +3,21 @@
* Copyright (c) 2007-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
-#include "lib/net/ipv6.h"
-#include "lib/net/ipv4.h"
-#include "lib/string/util_string.h"
-#include "lib/string/compat_string.h"
+/**
+ * \file inaddr.c
+ * \brief Convert in_addr and in6_addr to and from strings.
+ **/
+
+#include "lib/net/inaddr.h"
+
+#include "lib/cc/torint.h"
+#include "lib/log/util_bug.h"
+#include "lib/net/inaddr_st.h"
#include "lib/string/compat_ctype.h"
+#include "lib/string/compat_string.h"
#include "lib/string/printf.h"
#include "lib/string/scanf.h"
-#include "lib/log/util_bug.h"
+#include "lib/string/util_string.h"
#ifdef HAVE_ARPA_INET_H
#include <arpa/inet.h>
@@ -19,6 +26,45 @@
#include <stdlib.h>
#include <string.h>
+#ifdef _WIN32
+#include <winsock2.h>
+#endif
+
+/** Set *addr to the IP address (in dotted-quad notation) stored in *str.
+ * Return 1 on success, 0 if *str is badly formatted.
+ * (Like inet_aton(str,addr), but works on Windows and Solaris.)
+ */
+int
+tor_inet_aton(const char *str, struct in_addr* addr)
+{
+ unsigned a,b,c,d;
+ char more;
+ if (tor_sscanf(str, "%3u.%3u.%3u.%3u%c", &a,&b,&c,&d,&more) != 4)
+ return 0;
+ if (a > 255) return 0;
+ if (b > 255) return 0;
+ if (c > 255) return 0;
+ if (d > 255) return 0;
+ addr->s_addr = htonl((a<<24) | (b<<16) | (c<<8) | d);
+ return 1;
+}
+
+/** Given an IPv4 in_addr struct *<b>in</b> (in network order, as usual),
+ * write it as a string into the <b>buf_len</b>-byte buffer in
+ * <b>buf</b>. Returns a non-negative integer on success.
+ * Returns -1 on failure.
+ */
+int
+tor_inet_ntoa(const struct in_addr *in, char *buf, size_t buf_len)
+{
+ uint32_t a = ntohl(in->s_addr);
+ return tor_snprintf(buf, buf_len, "%d.%d.%d.%d",
+ (int)(uint8_t)((a>>24)&0xff),
+ (int)(uint8_t)((a>>16)&0xff),
+ (int)(uint8_t)((a>>8 )&0xff),
+ (int)(uint8_t)((a )&0xff));
+}
+
/** Given <b>af</b>==AF_INET and <b>src</b> a struct in_addr, or
* <b>af</b>==AF_INET6 and <b>src</b> a struct in6_addr, try to format the
* address and store it in the <b>len</b>-byte buffer <b>dst</b>. Returns
diff --git a/src/lib/net/ipv4.h b/src/lib/net/inaddr.h
index 1ccc729970..121025a126 100644
--- a/src/lib/net/ipv4.h
+++ b/src/lib/net/inaddr.h
@@ -3,15 +3,25 @@
* Copyright (c) 2007-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
-#ifndef TOR_IPV4_H
-#define TOR_IPV4_H
+/**
+ * \file inaddr.h
+ * \brief Header for inaddr.c.
+ **/
+#ifndef TOR_INADDR_H
+#define TOR_INADDR_H
+
+#include "orconfig.h"
#include <stddef.h>
struct in_addr;
+
int tor_inet_aton(const char *str, struct in_addr *addr);
/** Length of a buffer to allocate to hold the results of tor_inet_ntoa.*/
#define INET_NTOA_BUF_LEN 16
int tor_inet_ntoa(const struct in_addr *in, char *buf, size_t buf_len);
+const char *tor_inet_ntop(int af, const void *src, char *dst, size_t len);
+int tor_inet_pton(int af, const char *src, void *dst);
+
#endif
diff --git a/src/lib/net/ipv6.h b/src/lib/net/inaddr_st.h
index 0a12e046ac..dc4c6e3a00 100644
--- a/src/lib/net/ipv6.h
+++ b/src/lib/net/inaddr_st.h
@@ -3,21 +3,42 @@
* Copyright (c) 2007-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
-#ifndef TOR_IPV6_H
-#define TOR_IPV6_H
+/**
+ * \file inaddr_st.h
+ *
+ * \brief Define in6_addr, its members, and related types on platforms that
+ * lack it.
+ **/
+
+#ifndef TOR_INADDR_ST_H
+#define TOR_INADDR_ST_H
#include "orconfig.h"
#include <stddef.h>
+
+#ifdef HAVE_ARPA_INET_H
+#include <arpa/inet.h>
+#endif
+#ifdef HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
#ifdef HAVE_NETINET_IN6_H
#include <netinet/in6.h>
#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+
#ifdef _WIN32
#include <winsock2.h>
#include <ws2tcpip.h>
#include <windows.h>
#endif
+
#include "lib/cc/torint.h"
+struct in_addr;
+
/** Implementation of struct in6_addr for platforms that do not have it.
* Generally, these platforms are ones without IPv6 support, but we want to
* have a working in6_addr there anyway, so we can use it to parse IPv6
@@ -80,7 +101,4 @@ struct sockaddr_in6 {
};
#endif /* !defined(HAVE_STRUCT_SOCKADDR_IN6) */
-const char *tor_inet_ntop(int af, const void *src, char *dst, size_t len);
-int tor_inet_pton(int af, const char *src, void *dst);
-
-#endif
+#endif /* TOR_INADDR_ST_H */
diff --git a/src/lib/net/include.am b/src/lib/net/include.am
index 6fda173614..67db0d5af2 100644
--- a/src/lib/net/include.am
+++ b/src/lib/net/include.am
@@ -10,8 +10,7 @@ src_lib_libtor_net_a_SOURCES = \
src/lib/net/alertsock.c \
src/lib/net/buffers_net.c \
src/lib/net/gethostname.c \
- src/lib/net/ipv4.c \
- src/lib/net/ipv6.c \
+ src/lib/net/inaddr.c \
src/lib/net/resolve.c \
src/lib/net/socket.c
@@ -25,8 +24,8 @@ noinst_HEADERS += \
src/lib/net/alertsock.h \
src/lib/net/buffers_net.h \
src/lib/net/gethostname.h \
- src/lib/net/ipv4.h \
- src/lib/net/ipv6.h \
+ src/lib/net/inaddr.h \
+ src/lib/net/inaddr_st.h \
src/lib/net/nettypes.h \
src/lib/net/resolve.h \
src/lib/net/socket.h \
diff --git a/src/lib/net/ipv4.c b/src/lib/net/ipv4.c
deleted file mode 100644
index 18e69761e2..0000000000
--- a/src/lib/net/ipv4.c
+++ /dev/null
@@ -1,52 +0,0 @@
-/* Copyright (c) 2003-2004, Roger Dingledine
- * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2018, The Tor Project, Inc. */
-/* See LICENSE for licensing information */
-
-#include "orconfig.h"
-#include "lib/cc/torint.h"
-#include "lib/net/ipv4.h"
-#include "lib/string/printf.h"
-#include "lib/string/scanf.h"
-
-#ifdef HAVE_ARPA_INET_H
-#include <arpa/inet.h>
-#endif
-#ifdef _WIN32
-#include <winsock2.h>
-#endif
-
-/** Set *addr to the IP address (in dotted-quad notation) stored in *str.
- * Return 1 on success, 0 if *str is badly formatted.
- * (Like inet_aton(str,addr), but works on Windows and Solaris.)
- */
-int
-tor_inet_aton(const char *str, struct in_addr* addr)
-{
- unsigned a,b,c,d;
- char more;
- if (tor_sscanf(str, "%3u.%3u.%3u.%3u%c", &a,&b,&c,&d,&more) != 4)
- return 0;
- if (a > 255) return 0;
- if (b > 255) return 0;
- if (c > 255) return 0;
- if (d > 255) return 0;
- addr->s_addr = htonl((a<<24) | (b<<16) | (c<<8) | d);
- return 1;
-}
-
-/** Given an IPv4 in_addr struct *<b>in</b> (in network order, as usual),
- * write it as a string into the <b>buf_len</b>-byte buffer in
- * <b>buf</b>. Returns a non-negative integer on success.
- * Returns -1 on failure.
- */
-int
-tor_inet_ntoa(const struct in_addr *in, char *buf, size_t buf_len)
-{
- uint32_t a = ntohl(in->s_addr);
- return tor_snprintf(buf, buf_len, "%d.%d.%d.%d",
- (int)(uint8_t)((a>>24)&0xff),
- (int)(uint8_t)((a>>16)&0xff),
- (int)(uint8_t)((a>>8 )&0xff),
- (int)(uint8_t)((a )&0xff));
-}
diff --git a/src/lib/net/nettypes.h b/src/lib/net/nettypes.h
index f212374368..f7f2ec7d6a 100644
--- a/src/lib/net/nettypes.h
+++ b/src/lib/net/nettypes.h
@@ -3,6 +3,11 @@
* Copyright (c) 2007-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file nettypes.h
+ * \brief Declarations for types used throughout the Tor networking system
+ **/
+
#ifndef TOR_NET_TYPES_H
#define TOR_NET_TYPES_H
diff --git a/src/lib/net/resolve.c b/src/lib/net/resolve.c
index cbe368ccfb..7c8df3e307 100644
--- a/src/lib/net/resolve.c
+++ b/src/lib/net/resolve.c
@@ -3,9 +3,18 @@
* Copyright (c) 2007-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file resolve.c
+ * \brief Use the libc DNS resolver to convert hostnames into addresses.
+ **/
+
#include "lib/net/resolve.h"
+
#include "lib/net/address.h"
-#include "lib/malloc/util_malloc.h"
+#include "lib/net/inaddr.h"
+#include "lib/malloc/malloc.h"
+#include "lib/string/parse_int.h"
+#include "lib/string/util_string.h"
#include "siphash.h"
#include "ht.h"
@@ -47,6 +56,185 @@ tor_lookup_hostname,(const char *name, uint32_t *addr))
return -1;
}
+/** Similar behavior to Unix gethostbyname: resolve <b>name</b>, and set
+ * *<b>addr</b> to the proper IP address and family. The <b>family</b>
+ * argument (which must be AF_INET, AF_INET6, or AF_UNSPEC) declares a
+ * <i>preferred</i> family, though another one may be returned if only one
+ * family is implemented for this address.
+ *
+ * Return 0 on success, -1 on failure; 1 on transient failure.
+ */
+MOCK_IMPL(int,
+tor_addr_lookup,(const char *name, uint16_t family, tor_addr_t *addr))
+{
+ /* Perhaps eventually this should be replaced by a tor_getaddrinfo or
+ * something.
+ */
+ struct in_addr iaddr;
+ struct in6_addr iaddr6;
+ tor_assert(name);
+ tor_assert(addr);
+ tor_assert(family == AF_INET || family == AF_INET6 || family == AF_UNSPEC);
+ if (!*name) {
+ /* Empty address is an error. */
+ return -1;
+ } else if (tor_inet_pton(AF_INET, name, &iaddr)) {
+ /* It's an IPv4 IP. */
+ if (family == AF_INET6)
+ return -1;
+ tor_addr_from_in(addr, &iaddr);
+ return 0;
+ } else if (tor_inet_pton(AF_INET6, name, &iaddr6)) {
+ if (family == AF_INET)
+ return -1;
+ tor_addr_from_in6(addr, &iaddr6);
+ return 0;
+ } else {
+#ifdef HAVE_GETADDRINFO
+ int err;
+ struct addrinfo *res=NULL, *res_p;
+ struct addrinfo *best=NULL;
+ struct addrinfo hints;
+ int result = -1;
+ memset(&hints, 0, sizeof(hints));
+ hints.ai_family = family;
+ hints.ai_socktype = SOCK_STREAM;
+ err = tor_getaddrinfo(name, NULL, &hints, &res);
+ /* The check for 'res' here shouldn't be necessary, but it makes static
+ * analysis tools happy. */
+ if (!err && res) {
+ best = NULL;
+ for (res_p = res; res_p; res_p = res_p->ai_next) {
+ if (family == AF_UNSPEC) {
+ if (res_p->ai_family == AF_INET) {
+ best = res_p;
+ break;
+ } else if (res_p->ai_family == AF_INET6 && !best) {
+ best = res_p;
+ }
+ } else if (family == res_p->ai_family) {
+ best = res_p;
+ break;
+ }
+ }
+ if (!best)
+ best = res;
+ if (best->ai_family == AF_INET) {
+ tor_addr_from_in(addr,
+ &((struct sockaddr_in*)best->ai_addr)->sin_addr);
+ result = 0;
+ } else if (best->ai_family == AF_INET6) {
+ tor_addr_from_in6(addr,
+ &((struct sockaddr_in6*)best->ai_addr)->sin6_addr);
+ result = 0;
+ }
+ tor_freeaddrinfo(res);
+ return result;
+ }
+ return (err == EAI_AGAIN) ? 1 : -1;
+#else /* !(defined(HAVE_GETADDRINFO)) */
+ struct hostent *ent;
+ int err;
+#ifdef HAVE_GETHOSTBYNAME_R_6_ARG
+ char buf[2048];
+ struct hostent hostent;
+ int r;
+ r = gethostbyname_r(name, &hostent, buf, sizeof(buf), &ent, &err);
+#elif defined(HAVE_GETHOSTBYNAME_R_5_ARG)
+ char buf[2048];
+ struct hostent hostent;
+ ent = gethostbyname_r(name, &hostent, buf, sizeof(buf), &err);
+#elif defined(HAVE_GETHOSTBYNAME_R_3_ARG)
+ struct hostent_data data;
+ struct hostent hent;
+ memset(&data, 0, sizeof(data));
+ err = gethostbyname_r(name, &hent, &data);
+ ent = err ? NULL : &hent;
+#else
+ ent = gethostbyname(name);
+#ifdef _WIN32
+ err = WSAGetLastError();
+#else
+ err = h_errno;
+#endif
+#endif /* defined(HAVE_GETHOSTBYNAME_R_6_ARG) || ... */
+ if (ent) {
+ if (ent->h_addrtype == AF_INET) {
+ tor_addr_from_in(addr, (struct in_addr*) ent->h_addr);
+ } else if (ent->h_addrtype == AF_INET6) {
+ tor_addr_from_in6(addr, (struct in6_addr*) ent->h_addr);
+ } else {
+ tor_assert(0); // LCOV_EXCL_LINE: gethostbyname() returned bizarre type
+ }
+ return 0;
+ }
+#ifdef _WIN32
+ return (err == WSATRY_AGAIN) ? 1 : -1;
+#else
+ return (err == TRY_AGAIN) ? 1 : -1;
+#endif
+#endif /* defined(HAVE_GETADDRINFO) */
+ }
+}
+
+/** Parse an address or address-port combination from <b>s</b>, resolve the
+ * address as needed, and put the result in <b>addr_out</b> and (optionally)
+ * <b>port_out</b>. Return 0 on success, negative on failure. */
+int
+tor_addr_port_lookup(const char *s, tor_addr_t *addr_out, uint16_t *port_out)
+{
+ const char *port;
+ tor_addr_t addr;
+ uint16_t portval;
+ char *tmp = NULL;
+
+ tor_assert(s);
+ tor_assert(addr_out);
+
+ s = eat_whitespace(s);
+
+ if (*s == '[') {
+ port = strstr(s, "]");
+ if (!port)
+ goto err;
+ tmp = tor_strndup(s+1, port-(s+1));
+ port = port+1;
+ if (*port == ':')
+ port++;
+ else
+ port = NULL;
+ } else {
+ port = strchr(s, ':');
+ if (port)
+ tmp = tor_strndup(s, port-s);
+ else
+ tmp = tor_strdup(s);
+ if (port)
+ ++port;
+ }
+
+ if (tor_addr_lookup(tmp, AF_UNSPEC, &addr) != 0)
+ goto err;
+ tor_free(tmp);
+
+ if (port) {
+ portval = (int) tor_parse_long(port, 10, 1, 65535, NULL, NULL);
+ if (!portval)
+ goto err;
+ } else {
+ portval = 0;
+ }
+
+ if (port_out)
+ *port_out = portval;
+ tor_addr_copy(addr_out, &addr);
+
+ return 0;
+ err:
+ tor_free(tmp);
+ return -1;
+}
+
#ifdef USE_SANDBOX_GETADDRINFO
/** True if we should only return cached values */
static int sandbox_getaddrinfo_is_active = 0;
diff --git a/src/lib/net/resolve.h b/src/lib/net/resolve.h
index f2280ae7e8..bf870c44c4 100644
--- a/src/lib/net/resolve.h
+++ b/src/lib/net/resolve.h
@@ -3,6 +3,11 @@
* Copyright (c) 2007-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file resolve.h
+ * \brief Header for resolve.c
+ **/
+
#ifndef TOR_RESOLVE_H
#define TOR_RESOLVE_H
@@ -17,7 +22,13 @@
#define USE_SANDBOX_GETADDRINFO
#endif
-MOCK_DECL(int,tor_lookup_hostname,(const char *name, uint32_t *addr));
+struct tor_addr_t;
+
+MOCK_DECL(int, tor_lookup_hostname,(const char *name, uint32_t *addr));
+MOCK_DECL(int, tor_addr_lookup,(const char *name, uint16_t family,
+ struct tor_addr_t *addr_out));
+int tor_addr_port_lookup(const char *s, struct tor_addr_t *addr_out,
+ uint16_t *port_out);
struct addrinfo;
#ifdef USE_SANDBOX_GETADDRINFO
diff --git a/src/lib/net/socket.c b/src/lib/net/socket.c
index dc3d1531ff..5847bb8734 100644
--- a/src/lib/net/socket.c
+++ b/src/lib/net/socket.c
@@ -3,13 +3,19 @@
* Copyright (c) 2007-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file socket.c
+ * \brief Compatibility and utility functions for working with network
+ * sockets.
+ **/
+
#define SOCKET_PRIVATE
#include "lib/net/socket.h"
#include "lib/net/address.h"
#include "lib/cc/compat_compiler.h"
#include "lib/err/torerr.h"
#include "lib/lock/compat_mutex.h"
-#include "lib/log/torlog.h"
+#include "lib/log/log.h"
#include "lib/log/util_bug.h"
#ifdef _WIN32
diff --git a/src/lib/net/socket.h b/src/lib/net/socket.h
index cb0ccbe817..e2092c727a 100644
--- a/src/lib/net/socket.h
+++ b/src/lib/net/socket.h
@@ -3,6 +3,11 @@
* Copyright (c) 2007-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file socket.h
+ * \brief Header for socket.c
+ **/
+
#ifndef TOR_SOCKET_H
#define TOR_SOCKET_H
diff --git a/src/lib/net/socks5_status.h b/src/lib/net/socks5_status.h
index 74b9c91023..0f31132545 100644
--- a/src/lib/net/socks5_status.h
+++ b/src/lib/net/socks5_status.h
@@ -3,6 +3,16 @@
* Copyright (c) 2007-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file socks5_status.h
+ * \brief Status codes used by the SOCKS5 protocol.
+ **/
+
+/* NOTE: it probably isn't necessary to put this header in lib/net, but
+ * we need it in _some_ lower-level layer for now, since it is used by
+ * tools/tor-resolve.c.
+ */
+
#ifndef TOR_SOCKS5_STATUS_H
#define TOR_SOCKS5_STATUS_H
diff --git a/src/lib/osinfo/uname.c b/src/lib/osinfo/uname.c
index a0fa26d1d2..9d1923695d 100644
--- a/src/lib/osinfo/uname.c
+++ b/src/lib/osinfo/uname.c
@@ -3,6 +3,11 @@
* Copyright (c) 2007-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file uname.c
+ * \brief Look up a description of the operating system.
+ **/
+
#include "orconfig.h"
#include "lib/osinfo/uname.h"
diff --git a/src/lib/osinfo/uname.h b/src/lib/osinfo/uname.h
index 1f0b78385f..ef8cd078ee 100644
--- a/src/lib/osinfo/uname.h
+++ b/src/lib/osinfo/uname.h
@@ -1,3 +1,12 @@
+/* Copyright (c) 2003-2004, Roger Dingledine
+ * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
+ * Copyright (c) 2007-2018, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+/**
+ * \file uname.h
+ * \brief Header for uname.c
+ **/
#ifndef HAVE_TOR_UNAME_H
#define HAVE_TOR_UNAME_H
diff --git a/src/lib/process/daemon.c b/src/lib/process/daemon.c
index edffb04683..671579838e 100644
--- a/src/lib/process/daemon.c
+++ b/src/lib/process/daemon.c
@@ -3,13 +3,18 @@
* Copyright (c) 2007-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file daemon.c
+ * \brief Run the tor process in the background (unix only)
+ **/
+
#include "orconfig.h"
#include "lib/process/daemon.h"
#ifndef _WIN32
#include "lib/fs/files.h"
-#include "lib/log/torlog.h"
+#include "lib/log/log.h"
#include "lib/thread/threads.h"
#ifdef HAVE_SYS_TYPES_H
diff --git a/src/lib/process/daemon.h b/src/lib/process/daemon.h
index 48a65b22e6..1f26e92221 100644
--- a/src/lib/process/daemon.h
+++ b/src/lib/process/daemon.h
@@ -3,6 +3,11 @@
* Copyright (c) 2007-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file daemon.h
+ * \brief Header for daemon.c
+ **/
+
#ifndef TOR_DAEMON_H
#define TOR_DAEMON_H
diff --git a/src/lib/process/env.c b/src/lib/process/env.c
index 731f609ac1..dc0b63b499 100644
--- a/src/lib/process/env.c
+++ b/src/lib/process/env.c
@@ -3,15 +3,20 @@
* Copyright (c) 2007-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file env.c
+ * \brief Inspect and manipulate the environment variables.
+ **/
+
#include "orconfig.h"
#include "lib/process/env.h"
-#include "lib/malloc/util_malloc.h"
+#include "lib/malloc/malloc.h"
#include "lib/ctime/di_ops.h"
#include "lib/container/smartlist.h"
#include "lib/log/util_bug.h"
-#include "lib/log/torlog.h"
-#include "lib/malloc/util_malloc.h"
+#include "lib/log/log.h"
+#include "lib/malloc/malloc.h"
#ifdef HAVE_UNISTD_H
#include <unistd.h>
diff --git a/src/lib/process/env.h b/src/lib/process/env.h
index f22599355d..288b923ace 100644
--- a/src/lib/process/env.h
+++ b/src/lib/process/env.h
@@ -3,6 +3,11 @@
* Copyright (c) 2007-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file env.h
+ * \brief Header for env.c
+ **/
+
#ifndef TOR_ENV_H
#define TOR_ENV_H
diff --git a/src/lib/process/pidfile.c b/src/lib/process/pidfile.c
index f016f21697..ea008168ab 100644
--- a/src/lib/process/pidfile.c
+++ b/src/lib/process/pidfile.c
@@ -3,10 +3,15 @@
* Copyright (c) 2007-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file pidfile.c
+ * \brief Record this process's PID to disk.
+ **/
+
#include "orconfig.h"
#include "lib/process/pidfile.h"
-#include "lib/log/torlog.h"
+#include "lib/log/log.h"
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
diff --git a/src/lib/process/pidfile.h b/src/lib/process/pidfile.h
index c85cd1905e..945edee990 100644
--- a/src/lib/process/pidfile.h
+++ b/src/lib/process/pidfile.h
@@ -3,6 +3,11 @@
* Copyright (c) 2007-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file pidfile.h
+ * \brief Header for pidfile.c
+ **/
+
#ifndef TOR_PIDFILE_H
#define TOR_PIDFILE_H
diff --git a/src/lib/process/restrict.c b/src/lib/process/restrict.c
index bb44cc3d15..bca325e5bc 100644
--- a/src/lib/process/restrict.c
+++ b/src/lib/process/restrict.c
@@ -3,10 +3,15 @@
* Copyright (c) 2007-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file restrict.c
+ * \brief Drop privileges from the current process.
+ **/
+
#include "orconfig.h"
#include "lib/process/restrict.h"
#include "lib/intmath/cmp.h"
-#include "lib/log/torlog.h"
+#include "lib/log/log.h"
#include "lib/log/util_bug.h"
#include "lib/net/socket.h"
diff --git a/src/lib/process/restrict.h b/src/lib/process/restrict.h
index c7f76f8233..2e78dc468c 100644
--- a/src/lib/process/restrict.h
+++ b/src/lib/process/restrict.h
@@ -4,8 +4,8 @@
/* See LICENSE for licensing information */
/**
- * \file waitpid.h
- * \brief Headers for waitpid.c
+ * \file restrict.h
+ * \brief Header for restrict.c
**/
#ifndef TOR_RESTRICT_H
diff --git a/src/lib/process/setuid.c b/src/lib/process/setuid.c
index fa1cdc0f3f..d038039ff4 100644
--- a/src/lib/process/setuid.c
+++ b/src/lib/process/setuid.c
@@ -3,6 +3,11 @@
* Copyright (c) 2007-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file setuid.c
+ * \brief Change the user ID after Tor has started (Unix only)
+ **/
+
#include "orconfig.h"
#include "lib/process/setuid.h"
@@ -12,9 +17,9 @@
#include "lib/container/smartlist.h"
#include "lib/fs/userdb.h"
-#include "lib/log/torlog.h"
+#include "lib/log/log.h"
#include "lib/log/util_bug.h"
-#include "lib/malloc/util_malloc.h"
+#include "lib/malloc/malloc.h"
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
diff --git a/src/lib/process/setuid.h b/src/lib/process/setuid.h
index 61aeefe1b7..49751c97c2 100644
--- a/src/lib/process/setuid.h
+++ b/src/lib/process/setuid.h
@@ -3,6 +3,11 @@
* Copyright (c) 2007-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file setuid.h
+ * \brief Header for setuid.c
+ **/
+
#ifndef TOR_SETUID_H
#define TOR_SETUID_H
diff --git a/src/lib/process/subprocess.c b/src/lib/process/subprocess.c
index 516494d105..70851c15e0 100644
--- a/src/lib/process/subprocess.c
+++ b/src/lib/process/subprocess.c
@@ -3,15 +3,20 @@
* Copyright (c) 2007-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file subprocess.c
+ * \brief Launch and monitor other processes.
+ **/
+
#define SUBPROCESS_PRIVATE
#include "lib/process/subprocess.h"
#include "lib/container/smartlist.h"
#include "lib/err/torerr.h"
-#include "lib/log/torlog.h"
+#include "lib/log/log.h"
#include "lib/log/util_bug.h"
#include "lib/log/win32err.h"
-#include "lib/malloc/util_malloc.h"
+#include "lib/malloc/malloc.h"
#include "lib/process/env.h"
#include "lib/process/waitpid.h"
#include "lib/string/compat_ctype.h"
diff --git a/src/lib/process/subprocess.h b/src/lib/process/subprocess.h
index a319b3505c..5b4318ef2b 100644
--- a/src/lib/process/subprocess.h
+++ b/src/lib/process/subprocess.h
@@ -3,6 +3,11 @@
* Copyright (c) 2007-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file subprocess.h
+ * \brief Header for subprocess.c
+ **/
+
#ifndef TOR_SUBPROCESS_H
#define TOR_SUBPROCESS_H
diff --git a/src/lib/process/waitpid.c b/src/lib/process/waitpid.c
index 66c77b05f3..32ba4530da 100644
--- a/src/lib/process/waitpid.c
+++ b/src/lib/process/waitpid.c
@@ -4,10 +4,8 @@
/* See LICENSE for licensing information */
/**
- * \file util_process.c
- * \brief utility functions for launching processes and checking their
- * status. These functions are kept separately from procmon so that they
- * won't require linking against libevent.
+ * \file waitpid.c
+ * \brief Convenience structures for handlers for handling waitpid().
**/
#include "orconfig.h"
@@ -15,9 +13,9 @@
#ifndef _WIN32
#include "lib/process/waitpid.h"
-#include "lib/log/torlog.h"
+#include "lib/log/log.h"
#include "lib/log/util_bug.h"
-#include "lib/malloc/util_malloc.h"
+#include "lib/malloc/malloc.h"
#include "ht.h"
#ifdef HAVE_SYS_WAIT_H
diff --git a/src/lib/sandbox/sandbox.c b/src/lib/sandbox/sandbox.c
index 25dd6d1c26..48e37ba127 100644
--- a/src/lib/sandbox/sandbox.c
+++ b/src/lib/sandbox/sandbox.c
@@ -36,10 +36,10 @@
#include "lib/sandbox/sandbox.h"
#include "lib/container/map.h"
#include "lib/err/torerr.h"
-#include "lib/log/torlog.h"
+#include "lib/log/log.h"
#include "lib/cc/torint.h"
#include "lib/net/resolve.h"
-#include "lib/malloc/util_malloc.h"
+#include "lib/malloc/malloc.h"
#include "lib/string/scanf.h"
#include "tor_queue.h"
@@ -455,7 +455,7 @@ allow_file_open(scmp_filter_ctx ctx, int use_openat, const char *file)
{
if (use_openat) {
return seccomp_rule_add_2(ctx, SCMP_ACT_ALLOW, SCMP_SYS(openat),
- SCMP_CMP_STR(0, SCMP_CMP_EQ, AT_FDCWD),
+ SCMP_CMP(0, SCMP_CMP_EQ, (unsigned int)AT_FDCWD),
SCMP_CMP_STR(1, SCMP_CMP_EQ, file));
} else {
return seccomp_rule_add_1(ctx, SCMP_ACT_ALLOW, SCMP_SYS(open),
diff --git a/src/lib/smartlist_core/smartlist_core.c b/src/lib/smartlist_core/smartlist_core.c
index b9c5f728ce..8364a8180b 100644
--- a/src/lib/smartlist_core/smartlist_core.c
+++ b/src/lib/smartlist_core/smartlist_core.c
@@ -11,7 +11,7 @@
**/
#include "lib/err/torerr.h"
-#include "lib/malloc/util_malloc.h"
+#include "lib/malloc/malloc.h"
#include "lib/smartlist_core/smartlist_core.h"
#include <stdlib.h>
diff --git a/src/lib/smartlist_core/smartlist_core.h b/src/lib/smartlist_core/smartlist_core.h
index b1adf2ebdb..974fb01758 100644
--- a/src/lib/smartlist_core/smartlist_core.h
+++ b/src/lib/smartlist_core/smartlist_core.h
@@ -3,6 +3,11 @@
* Copyright (c) 2007-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file smartlist_core.h
+ * \brief Top-level declarations for the smartlist_t dynamic array type.
+ **/
+
#ifndef TOR_SMARTLIST_CORE_H
#define TOR_SMARTLIST_CORE_H
diff --git a/src/lib/smartlist_core/smartlist_foreach.h b/src/lib/smartlist_core/smartlist_foreach.h
index 4bef36d99c..54f08ac47d 100644
--- a/src/lib/smartlist_core/smartlist_foreach.h
+++ b/src/lib/smartlist_core/smartlist_foreach.h
@@ -3,6 +3,11 @@
* Copyright (c) 2007-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file smartlist_foreach.h
+ * \brief Macros for iterating over the elements of a smartlist_t.
+ **/
+
#ifndef TOR_SMARTLIST_FOREACH_H
#define TOR_SMARTLIST_FOREACH_H
diff --git a/src/lib/smartlist_core/smartlist_split.c b/src/lib/smartlist_core/smartlist_split.c
index b9340e7924..f63894869c 100644
--- a/src/lib/smartlist_core/smartlist_split.c
+++ b/src/lib/smartlist_core/smartlist_split.c
@@ -3,13 +3,18 @@
* Copyright (c) 2007-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file smartlist_split.c
+ * \brief Split a string into a smartlist_t of substrings.
+ **/
+
#include "lib/smartlist_core/smartlist_core.h"
#include "lib/smartlist_core/smartlist_split.h"
#include "lib/err/torerr.h"
#include "lib/string/util_string.h"
#include "lib/string/compat_ctype.h"
-#include "lib/malloc/util_malloc.h"
+#include "lib/malloc/malloc.h"
#include <string.h>
diff --git a/src/lib/smartlist_core/smartlist_split.h b/src/lib/smartlist_core/smartlist_split.h
index 8ed2abafb8..4dd48295ce 100644
--- a/src/lib/smartlist_core/smartlist_split.h
+++ b/src/lib/smartlist_core/smartlist_split.h
@@ -3,6 +3,11 @@
* Copyright (c) 2007-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file smartlist_split.h
+ * \brief Header for smartlist_split.c
+ **/
+
#ifndef TOR_SMARTLIST_SPLIT_H
#define TOR_SMARTLIST_SPLIT_H
diff --git a/src/lib/string/compat_ctype.c b/src/lib/string/compat_ctype.c
index d1d4ce0ffc..35f4ec6534 100644
--- a/src/lib/string/compat_ctype.c
+++ b/src/lib/string/compat_ctype.c
@@ -3,6 +3,11 @@
* Copyright (c) 2007-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file compat_ctype.c
+ * \brief Locale-independent character-type inspection (backend)
+ **/
+
#include "lib/string/compat_ctype.h"
/**
diff --git a/src/lib/string/compat_ctype.h b/src/lib/string/compat_ctype.h
index 530a10270f..210c460c31 100644
--- a/src/lib/string/compat_ctype.h
+++ b/src/lib/string/compat_ctype.h
@@ -3,6 +3,11 @@
* Copyright (c) 2007-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file compat_ctype.h
+ * \brief Locale-independent character-type inspection (header)
+ **/
+
#ifndef TOR_COMPAT_CTYPE_H
#define TOR_COMPAT_CTYPE_H
diff --git a/src/lib/string/compat_string.c b/src/lib/string/compat_string.c
index 8b063b7242..eae82fdae0 100644
--- a/src/lib/string/compat_string.c
+++ b/src/lib/string/compat_string.c
@@ -3,6 +3,12 @@
* Copyright (c) 2007-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file compat_string.c
+ * \brief Useful string-processing functions that some platforms don't
+ * provide.
+ **/
+
#include "lib/string/compat_string.h"
#include "lib/err/torerr.h"
diff --git a/src/lib/string/compat_string.h b/src/lib/string/compat_string.h
index 4726d2b5b6..9292717337 100644
--- a/src/lib/string/compat_string.h
+++ b/src/lib/string/compat_string.h
@@ -3,6 +3,11 @@
* Copyright (c) 2007-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file compat_string.h
+ * \brief Header for compat_string.c
+ **/
+
#ifndef TOR_COMPAT_STRING_H
#define TOR_COMPAT_STRING_H
diff --git a/src/lib/string/parse_int.c b/src/lib/string/parse_int.c
index e552730cc4..52ff49ef1e 100644
--- a/src/lib/string/parse_int.c
+++ b/src/lib/string/parse_int.c
@@ -3,6 +3,11 @@
* Copyright (c) 2007-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file parse_int.c
+ * \brief Convert strings into the integers they encode, with bounds checking.
+ **/
+
#include "lib/string/parse_int.h"
#include <errno.h>
diff --git a/src/lib/string/parse_int.h b/src/lib/string/parse_int.h
index 6f56fc32a8..663a5acd74 100644
--- a/src/lib/string/parse_int.h
+++ b/src/lib/string/parse_int.h
@@ -3,6 +3,11 @@
* Copyright (c) 2007-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file parse_int.h
+ * \brief Header for parse_int.c
+ **/
+
#ifndef TOR_PARSE_INT_H
#define TOR_PARSE_INT_H
diff --git a/src/lib/string/printf.c b/src/lib/string/printf.c
index 4443e25fb4..e23da69d0e 100644
--- a/src/lib/string/printf.c
+++ b/src/lib/string/printf.c
@@ -3,10 +3,15 @@
* Copyright (c) 2007-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file printf.c
+ * \brief Compatibility wrappers around snprintf and its friends
+ **/
+
#include "lib/string/printf.h"
#include "lib/err/torerr.h"
#include "lib/cc/torint.h"
-#include "lib/malloc/util_malloc.h"
+#include "lib/malloc/malloc.h"
#include <stdlib.h>
#include <stdio.h>
@@ -96,7 +101,7 @@ tor_vasprintf(char **strp, const char *fmt, va_list args)
/* If the platform gives us one, use it. */
int r = vasprintf(&strp_tmp, fmt, args);
if (r < 0)
- *strp = NULL;
+ *strp = NULL; // LCOV_EXCL_LINE -- no cross-platform way to force this
else
*strp = strp_tmp;
return r;
diff --git a/src/lib/string/printf.h b/src/lib/string/printf.h
index 69b724379a..49c37d43e0 100644
--- a/src/lib/string/printf.h
+++ b/src/lib/string/printf.h
@@ -3,6 +3,11 @@
* Copyright (c) 2007-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file printf.h
+ * \brief Header for printf.c
+ **/
+
#ifndef TOR_UTIL_PRINTF_H
#define TOR_UTIL_PRINTF_H
diff --git a/src/lib/string/scanf.c b/src/lib/string/scanf.c
index 0c5082799c..7b08442148 100644
--- a/src/lib/string/scanf.c
+++ b/src/lib/string/scanf.c
@@ -3,6 +3,11 @@
* Copyright (c) 2007-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file scanf.c
+ * \brief Locale-independent minimal implementation of sscanf().
+ **/
+
#include "lib/string/scanf.h"
#include "lib/string/compat_ctype.h"
#include "lib/cc/torint.h"
diff --git a/src/lib/string/scanf.h b/src/lib/string/scanf.h
index 9cfa9cc6c1..ada2322bb1 100644
--- a/src/lib/string/scanf.h
+++ b/src/lib/string/scanf.h
@@ -3,6 +3,11 @@
* Copyright (c) 2007-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file scanf.h
+ * \brief Header for scanf.c
+ **/
+
#ifndef TOR_UTIL_SCANF_H
#define TOR_UTIL_SCANF_H
diff --git a/src/lib/string/util_string.c b/src/lib/string/util_string.c
index e8ed3d4f54..a6b0a3d68a 100644
--- a/src/lib/string/util_string.c
+++ b/src/lib/string/util_string.c
@@ -3,6 +3,11 @@
* Copyright (c) 2007-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file util_string.c
+ * \brief Non-standard string functions used throughout Tor.
+ **/
+
#include "lib/string/util_string.h"
#include "lib/string/compat_ctype.h"
#include "lib/err/torerr.h"
diff --git a/src/lib/string/util_string.h b/src/lib/string/util_string.h
index 75407d5ffa..471613462a 100644
--- a/src/lib/string/util_string.h
+++ b/src/lib/string/util_string.h
@@ -3,6 +3,11 @@
* Copyright (c) 2007-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file util_string.h
+ * \brief Header for util_string.c
+ **/
+
#ifndef TOR_UTIL_STRING_H
#define TOR_UTIL_STRING_H
diff --git a/src/lib/term/getpass.c b/src/lib/term/getpass.c
index 10c99914f8..27a27179b6 100644
--- a/src/lib/term/getpass.c
+++ b/src/lib/term/getpass.c
@@ -3,10 +3,15 @@
* Copyright (c) 2007-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file getpass.c
+ * \brief Cross-platform wrapper to read passphrases from the terminal.
+ **/
+
#include "lib/term/getpass.h"
#include "lib/log/util_bug.h"
-#include "lib/malloc/util_malloc.h"
+#include "lib/malloc/malloc.h"
#ifdef _WIN32
#include <windows.h>
diff --git a/src/lib/term/getpass.h b/src/lib/term/getpass.h
index 9d03f7036c..e8347e7fe8 100644
--- a/src/lib/term/getpass.h
+++ b/src/lib/term/getpass.h
@@ -3,6 +3,11 @@
* Copyright (c) 2007-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file getpass.h
+ * \brief Header for getpass.c
+ **/
+
#ifndef TOR_GETPASS_H
#define TOR_GETPASS_H
diff --git a/src/lib/testsupport/testsupport.h b/src/lib/testsupport/testsupport.h
index 9a55d306fc..3ae1b48f87 100644
--- a/src/lib/testsupport/testsupport.h
+++ b/src/lib/testsupport/testsupport.h
@@ -1,10 +1,24 @@
/* Copyright (c) 2013-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file testsupport.h
+ *
+ * \brief Macros to implement mocking and selective exposure for the test code.
+ *
+ * Each Tor source file is built twice: once with TOR_UNIT_TESTS defined, and
+ * once with it undefined. The only difference between these configurations
+ * should be that when building for the tests, more functions are exposed as
+ * non-static, and a number of functions are declared as mockable.
+ **/
+
#ifndef TOR_TESTSUPPORT_H
#define TOR_TESTSUPPORT_H
#ifdef TOR_UNIT_TESTS
+/** The "STATIC" macro marks a function or variable that is static when
+ * building Tor for production, but non-static when building the unit
+ * tests. */
#define STATIC
#define EXTERN(type, name) extern type name;
#else
@@ -87,4 +101,3 @@
/** @} */
#endif /* !defined(TOR_TESTSUPPORT_H) */
-
diff --git a/src/lib/thread/compat_pthreads.c b/src/lib/thread/compat_pthreads.c
index 246c6254bb..934067e4c1 100644
--- a/src/lib/thread/compat_pthreads.c
+++ b/src/lib/thread/compat_pthreads.c
@@ -12,7 +12,7 @@
#include "orconfig.h"
#include "lib/thread/threads.h"
-#include "lib/log/torlog.h"
+#include "lib/log/log.h"
#include "lib/log/util_bug.h"
#include <sys/time.h>
diff --git a/src/lib/thread/compat_threads.c b/src/lib/thread/compat_threads.c
index 972960e242..7f1970af45 100644
--- a/src/lib/thread/compat_threads.c
+++ b/src/lib/thread/compat_threads.c
@@ -15,7 +15,7 @@
#include <stdlib.h>
#include "lib/thread/threads.h"
-#include "lib/log/torlog.h"
+#include "lib/log/log.h"
#include "lib/log/util_bug.h"
#include <string.h>
@@ -57,7 +57,7 @@ in_main_thread(void)
return main_thread_id == tor_get_thread_id();
}
-#ifndef HAVE_STDATOMIC_H
+#ifndef HAVE_WORKING_STDATOMIC
/** Initialize a new atomic counter with the value 0 */
void
atomic_counter_init(atomic_counter_t *counter)
@@ -108,4 +108,4 @@ atomic_counter_exchange(atomic_counter_t *counter, size_t newval)
tor_mutex_release(&counter->mutex);
return oldval;
}
-#endif /* !defined(HAVE_STDATOMIC_H) */
+#endif /* !defined(HAVE_WORKING_STDATOMIC) */
diff --git a/src/lib/thread/compat_winthreads.c b/src/lib/thread/compat_winthreads.c
index 7f9877d21e..799eeda1b4 100644
--- a/src/lib/thread/compat_winthreads.c
+++ b/src/lib/thread/compat_winthreads.c
@@ -15,7 +15,7 @@
#include <windows.h>
#include <process.h>
#include "lib/thread/threads.h"
-#include "lib/log/torlog.h"
+#include "lib/log/log.h"
#include "lib/log/util_bug.h"
#include "lib/log/win32err.h"
diff --git a/src/lib/thread/numcpus.c b/src/lib/thread/numcpus.c
index 534b0570f8..cca15eb7aa 100644
--- a/src/lib/thread/numcpus.c
+++ b/src/lib/thread/numcpus.c
@@ -3,9 +3,14 @@
* Copyright (c) 2007-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file numcpus.c
+ * \brief Compute the number of CPUs configured on this system.
+ **/
+
#include "orconfig.h"
#include "lib/thread/numcpus.h"
-#include "lib/log/torlog.h"
+#include "lib/log/log.h"
#include "lib/log/util_bug.h"
#ifdef HAVE_UNISTD_H
diff --git a/src/lib/thread/numcpus.h b/src/lib/thread/numcpus.h
index 2899a9ec8a..0b026e4249 100644
--- a/src/lib/thread/numcpus.h
+++ b/src/lib/thread/numcpus.h
@@ -3,6 +3,11 @@
* Copyright (c) 2007-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file numcpus.h
+ * \brief Header for numcpus.c
+ **/
+
#ifndef TOR_NUMCPUS_H
#define TOR_NUMCPUS_H
diff --git a/src/lib/thread/threads.h b/src/lib/thread/threads.h
index fcccc643d5..4d5191124c 100644
--- a/src/lib/thread/threads.h
+++ b/src/lib/thread/threads.h
@@ -3,6 +3,11 @@
* Copyright (c) 2007-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file threads.h
+ * \brief Header for threads.c
+ **/
+
#ifndef TOR_COMPAT_THREADS_H
#define TOR_COMPAT_THREADS_H
@@ -11,7 +16,11 @@
#include "lib/testsupport/testsupport.h"
#include "lib/lock/compat_mutex.h"
-#ifdef HAVE_STDATOMIC_H
+#if defined(HAVE_STDATOMIC_H) && defined(STDATOMIC_WORKS)
+#define HAVE_WORKING_STDATOMIC
+#endif
+
+#ifdef HAVE_WORKING_STDATOMIC
#include <stdatomic.h>
#endif
@@ -93,18 +102,18 @@ void tor_threadlocal_set(tor_threadlocal_t *threadlocal, void *value);
/**
* Atomic counter type; holds a size_t value.
*/
-#ifdef HAVE_STDATOMIC_H
+#ifdef HAVE_WORKING_STDATOMIC
typedef struct atomic_counter_t {
atomic_size_t val;
} atomic_counter_t;
#define ATOMIC_LINKAGE static
-#else /* !(defined(HAVE_STDATOMIC_H)) */
+#else /* !(defined(HAVE_WORKING_STDATOMIC)) */
typedef struct atomic_counter_t {
tor_mutex_t mutex;
size_t val;
} atomic_counter_t;
#define ATOMIC_LINKAGE
-#endif /* defined(HAVE_STDATOMIC_H) */
+#endif /* defined(HAVE_WORKING_STDATOMIC) */
ATOMIC_LINKAGE void atomic_counter_init(atomic_counter_t *counter);
ATOMIC_LINKAGE void atomic_counter_destroy(atomic_counter_t *counter);
@@ -115,7 +124,7 @@ ATOMIC_LINKAGE size_t atomic_counter_exchange(atomic_counter_t *counter,
size_t newval);
#undef ATOMIC_LINKAGE
-#ifdef HAVE_STDATOMIC_H
+#ifdef HAVE_WORKING_STDATOMIC
/** Initialize a new atomic counter with the value 0 */
static inline void
atomic_counter_init(atomic_counter_t *counter)
@@ -153,7 +162,7 @@ atomic_counter_exchange(atomic_counter_t *counter, size_t newval)
return atomic_exchange(&counter->val, newval);
}
-#else /* !(defined(HAVE_STDATOMIC_H)) */
-#endif /* defined(HAVE_STDATOMIC_H) */
+#else /* !(defined(HAVE_WORKING_STDATOMIC)) */
+#endif /* defined(HAVE_WORKING_STDATOMIC) */
#endif /* !defined(TOR_COMPAT_THREADS_H) */
diff --git a/src/lib/time/compat_time.c b/src/lib/time/compat_time.c
index 2ea6eca988..d26cb6880d 100644
--- a/src/lib/time/compat_time.c
+++ b/src/lib/time/compat_time.c
@@ -13,7 +13,7 @@
#include "lib/time/compat_time.h"
#include "lib/err/torerr.h"
-#include "lib/log/torlog.h"
+#include "lib/log/log.h"
#include "lib/log/util_bug.h"
#include "lib/intmath/muldiv.h"
#include "lib/intmath/bits.h"
diff --git a/src/lib/time/tvdiff.c b/src/lib/time/tvdiff.c
index cfd1ace771..8617110e52 100644
--- a/src/lib/time/tvdiff.c
+++ b/src/lib/time/tvdiff.c
@@ -3,10 +3,15 @@
* Copyright (c) 2007-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file tvdiff.c
+ * \brief Compute the difference between timevals, in various units.
+ **/
+
#include "lib/time/tvdiff.h"
#include "lib/cc/compat_compiler.h"
-#include "lib/log/torlog.h"
+#include "lib/log/log.h"
#ifdef _WIN32
#include <winsock2.h>
diff --git a/src/lib/time/tvdiff.h b/src/lib/time/tvdiff.h
index 215de9cf37..d78330d7d8 100644
--- a/src/lib/time/tvdiff.h
+++ b/src/lib/time/tvdiff.h
@@ -3,6 +3,11 @@
* Copyright (c) 2007-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file tvdiff.h
+ * \brief Header for tvdiff.c
+ **/
+
#ifndef TOR_TVDIFF_H
#define TOR_TVDIFF_H
diff --git a/src/lib/tls/buffers_tls.c b/src/lib/tls/buffers_tls.c
index 243e0eb0bc..69ae4f7fc0 100644
--- a/src/lib/tls/buffers_tls.c
+++ b/src/lib/tls/buffers_tls.c
@@ -4,13 +4,18 @@
* Copyright (c) 2007-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file buffers_tls.c
+ * \brief Read and write data on a tor_tls_t connection from a buf_t object.
+ **/
+
#define BUFFERS_PRIVATE
#include "orconfig.h"
#include <stddef.h>
#include "lib/container/buffers.h"
#include "lib/tls/buffers_tls.h"
#include "lib/cc/torint.h"
-#include "lib/log/torlog.h"
+#include "lib/log/log.h"
#include "lib/log/util_bug.h"
#include "lib/tls/tortls.h"
diff --git a/src/lib/tls/buffers_tls.h b/src/lib/tls/buffers_tls.h
index d9d26c82bd..7a1ca6d16c 100644
--- a/src/lib/tls/buffers_tls.h
+++ b/src/lib/tls/buffers_tls.h
@@ -4,6 +4,11 @@
* Copyright (c) 2007-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file buffers_tls.h
+ * \brief Header for buffers_tls.c
+ **/
+
#ifndef TOR_BUFFERS_TLS_H
#define TOR_BUFFERS_TLS_H
@@ -16,4 +21,3 @@ int buf_flush_to_tls(struct buf_t *buf, struct tor_tls_t *tls,
size_t sz, size_t *buf_flushlen);
#endif /* !defined(TOR_BUFFERS_TLS_H) */
-
diff --git a/src/lib/tls/tortls.c b/src/lib/tls/tortls.c
index 1cd22a7eba..7135820d2f 100644
--- a/src/lib/tls/tortls.c
+++ b/src/lib/tls/tortls.c
@@ -52,7 +52,7 @@ ENABLE_GCC_WARNING(redundant-decls)
#define TORTLS_PRIVATE
#include "lib/tls/tortls.h"
-#include "lib/log/torlog.h"
+#include "lib/log/log.h"
#include "lib/log/util_bug.h"
#include "lib/container/smartlist.h"
#include "lib/string/compat_string.h"
@@ -926,18 +926,20 @@ tor_tls_cert_get_key(tor_x509_cert_t *cert)
MOCK_IMPL(int,
tor_tls_cert_matches_key,(const tor_tls_t *tls, const tor_x509_cert_t *cert))
{
- X509 *peercert = SSL_get_peer_certificate(tls->ssl);
+ tor_x509_cert_t *peer = tor_tls_get_peer_cert((tor_tls_t *)tls);
+ if (!peer)
+ return 0;
+
+ X509 *peercert = peer->cert;
EVP_PKEY *link_key = NULL, *cert_key = NULL;
int result;
- if (!peercert)
- return 0;
link_key = X509_get_pubkey(peercert);
cert_key = X509_get_pubkey(cert->cert);
result = link_key && cert_key && EVP_PKEY_cmp(cert_key, link_key) == 1;
- X509_free(peercert);
+ tor_x509_cert_free(peer);
if (link_key)
EVP_PKEY_free(link_key);
if (cert_key)
diff --git a/src/lib/trace/debug.h b/src/lib/trace/debug.h
index 9b5d9d05c8..191d94226d 100644
--- a/src/lib/trace/debug.h
+++ b/src/lib/trace/debug.h
@@ -1,10 +1,15 @@
/* Copyright (c) 2017-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file debug.h
+ * \brief Macros for debugging our event-trace support.
+ **/
+
#ifndef TOR_TRACE_LOG_DEBUG_H
#define TOR_TRACE_LOG_DEBUG_H
-#include "lib/log/torlog.h"
+#include "lib/log/log.h"
/* Stringify pre-processor trick. */
#define XSTR(d) STR(d)
diff --git a/src/lib/trace/trace.c b/src/lib/trace/trace.c
index c0bbbb0cc6..535ffde183 100644
--- a/src/lib/trace/trace.c
+++ b/src/lib/trace/trace.c
@@ -1,6 +1,13 @@
/* Copyright (c) 2017-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file trace.c
+ * \brief Common functions for event-tracing implementation
+ *
+ * See trace.h and doc/HACKING/Tracing.md for more information.
+ **/
+
#include "lib/trace/trace.h"
/** Initialize the tracing library. */
@@ -8,4 +15,3 @@ void
tor_trace_init(void)
{
}
-
diff --git a/src/lib/trace/trace.h b/src/lib/trace/trace.h
index 2dd51aace1..5f7b0ee7cd 100644
--- a/src/lib/trace/trace.h
+++ b/src/lib/trace/trace.h
@@ -1,10 +1,14 @@
/* Copyright (c) 2017-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file trace.h
+ * \brief Header for trace.c
+ **/
+
#ifndef TOR_TRACE_TRACE_H
#define TOR_TRACE_TRACE_H
void tor_trace_init(void);
#endif // TOR_TRACE_TRACE_H
-
diff --git a/src/lib/wallclock/approx_time.c b/src/lib/wallclock/approx_time.c
index 2528954f13..bb9a292369 100644
--- a/src/lib/wallclock/approx_time.c
+++ b/src/lib/wallclock/approx_time.c
@@ -3,6 +3,11 @@
* Copyright (c) 2007-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file approx_time.c
+ * \brief Cache the last result of time(), for performance and testing.
+ **/
+
#include "orconfig.h"
#include "lib/wallclock/approx_time.h"
diff --git a/src/lib/wallclock/approx_time.h b/src/lib/wallclock/approx_time.h
index c57ff5bcd3..becc632fe3 100644
--- a/src/lib/wallclock/approx_time.h
+++ b/src/lib/wallclock/approx_time.h
@@ -3,6 +3,11 @@
* Copyright (c) 2007-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file approx_time.h
+ * \brief Header for approx_time.c
+ **/
+
#ifndef TOR_APPROX_TIME_H
#define TOR_APPROX_TIME_H
diff --git a/src/lib/wallclock/include.am b/src/lib/wallclock/include.am
index 7864c21e16..1961639bd7 100644
--- a/src/lib/wallclock/include.am
+++ b/src/lib/wallclock/include.am
@@ -7,7 +7,7 @@ endif
src_lib_libtor_wallclock_a_SOURCES = \
src/lib/wallclock/approx_time.c \
- src/lib/wallclock/tm_cvt.c \
+ src/lib/wallclock/time_to_tm.c \
src/lib/wallclock/tor_gettimeofday.c
src_lib_libtor_wallclock_testing_a_SOURCES = \
@@ -18,5 +18,5 @@ src_lib_libtor_wallclock_testing_a_CFLAGS = $(AM_CFLAGS) $(TEST_CFLAGS)
noinst_HEADERS += \
src/lib/wallclock/approx_time.h \
src/lib/wallclock/timeval.h \
- src/lib/wallclock/tm_cvt.h \
+ src/lib/wallclock/time_to_tm.h \
src/lib/wallclock/tor_gettimeofday.h
diff --git a/src/lib/wallclock/tm_cvt.c b/src/lib/wallclock/time_to_tm.c
index 31d929e635..6543b97e37 100644
--- a/src/lib/wallclock/tm_cvt.c
+++ b/src/lib/wallclock/time_to_tm.c
@@ -3,10 +3,15 @@
* Copyright (c) 2007-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file time_to_tm.c
+ * \brief Convert to struct tm, portably.
+ **/
+
#include "orconfig.h"
#include "lib/cc/torint.h"
#include "lib/cc/compat_compiler.h"
-#include "lib/wallclock/tm_cvt.h"
+#include "lib/wallclock/time_to_tm.h"
#include "lib/string/printf.h"
#include "lib/err/torerr.h"
diff --git a/src/lib/wallclock/tm_cvt.h b/src/lib/wallclock/time_to_tm.h
index 4d87acd4fa..0527a97b34 100644
--- a/src/lib/wallclock/tm_cvt.h
+++ b/src/lib/wallclock/time_to_tm.h
@@ -3,8 +3,13 @@
* Copyright (c) 2007-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
-#ifndef TOR_WALLCLOCK_TM_CVT_H
-#define TOR_WALLCLOCK_TM_CVT_H
+/**
+ * \file time_to_tm.h
+ * \brief Header for time_to_tm.c
+ **/
+
+#ifndef TOR_WALLCLOCK_TIME_TO_TM_H
+#define TOR_WALLCLOCK_TIME_TO_TM_H
#include <sys/types.h>
diff --git a/src/lib/wallclock/timeval.c b/src/lib/wallclock/timeval.c
deleted file mode 100644
index e69de29bb2..0000000000
--- a/src/lib/wallclock/timeval.c
+++ /dev/null
diff --git a/src/lib/wallclock/timeval.h b/src/lib/wallclock/timeval.h
index 6a9b36a022..b34277cda6 100644
--- a/src/lib/wallclock/timeval.h
+++ b/src/lib/wallclock/timeval.h
@@ -3,6 +3,13 @@
* Copyright (c) 2007-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file timeval.h
+ *
+ * \brief Declarations for timeval-related macros that some platforms
+ * are missing.
+ **/
+
#ifndef TOR_TIMEVAL_H
#define TOR_TIMEVAL_H
diff --git a/src/lib/wallclock/tor_gettimeofday.c b/src/lib/wallclock/tor_gettimeofday.c
index eb902e681d..aefe796ad2 100644
--- a/src/lib/wallclock/tor_gettimeofday.c
+++ b/src/lib/wallclock/tor_gettimeofday.c
@@ -4,9 +4,9 @@
/* See LICENSE for licensing information */
/**
- * \file compat_time.c
- * \brief Portable wrappers for finding out the current time, running
- * timers, etc.
+ * \file tor_gettimeofday.c
+ * \brief Implementat gettimeofday() for windows, and other platforms without
+ * it.
**/
#include "orconfig.h"
diff --git a/src/lib/wallclock/tor_gettimeofday.h b/src/lib/wallclock/tor_gettimeofday.h
index 728ad9565d..aac6366a65 100644
--- a/src/lib/wallclock/tor_gettimeofday.h
+++ b/src/lib/wallclock/tor_gettimeofday.h
@@ -3,6 +3,11 @@
* Copyright (c) 2007-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
+/**
+ * \file tor_gettimeofday.h
+ * \brief Header for tor_gettimeofday.c
+ **/
+
#ifndef TOR_GETTIMEOFDAY_H
#define TOR_GETTIMEOFDAY_H
diff --git a/src/rust/.rustfmt.toml b/src/rust/.rustfmt.toml
index f25bd51883..4ff839dcf3 100644
--- a/src/rust/.rustfmt.toml
+++ b/src/rust/.rustfmt.toml
@@ -1,2 +1,12 @@
-max_width = 80
-comment_width = 80
+max_width = 100
+hard_tabs = false
+tab_spaces = 4
+newline_style = "Unix"
+#use_small_heuristics = "Default"
+reorder_imports = true
+reorder_modules = true
+remove_nested_parens = true
+merge_derives = true
+use_try_shorthand = false
+use_field_init_shorthand = false
+force_explicit_abi = true
diff --git a/src/rust/Cargo.toml b/src/rust/Cargo.toml
index c3e44d2a79..4bbadbe535 100644
--- a/src/rust/Cargo.toml
+++ b/src/rust/Cargo.toml
@@ -14,3 +14,12 @@ members = [
debug = true
panic = "abort"
+[features]
+default = []
+# If this feature is enabled, test code which calls Tor C code from Rust will
+# execute with `cargo test`. Due to numerous linker issues (#25386), this is
+# currently disabled by default. Crates listed here are those which, in their
+# unittests, doctests, and/or integration tests, call C code.
+test-c-from-rust = [
+ "crypto/test-c-from-rust",
+]
diff --git a/src/rust/build.rs b/src/rust/build.rs
index 2cf85b404a..bf389cf7df 100644
--- a/src/rust/build.rs
+++ b/src/rust/build.rs
@@ -10,14 +10,12 @@
use std::collections::HashMap;
use std::env;
use std::fs::File;
-use std::io::prelude::*;
use std::io;
+use std::io::prelude::*;
use std::path::PathBuf;
/// Wrapper around a key-value map.
-struct Config(
- HashMap<String,String>
-);
+struct Config(HashMap<String, String>);
/// Locate a config.rust file generated by autoconf, starting in the OUT_DIR
/// location provided by cargo and recursing up the directory tree. Note that
@@ -31,9 +29,9 @@ fn find_cfg() -> io::Result<String> {
return Ok(path.to_str().unwrap().to_owned());
}
path.pop(); // remove config.rust
- if ! path.pop() { // can't remove last part of directory
- return Err(io::Error::new(io::ErrorKind::NotFound,
- "No config.rust"));
+ if !path.pop() {
+ // can't remove last part of directory
+ return Err(io::Error::new(io::ErrorKind::NotFound, "No config.rust"));
}
}
}
@@ -55,12 +53,11 @@ impl Config {
}
let idx = match s.find("=") {
None => {
- return Err(io::Error::new(io::ErrorKind::InvalidData,
- "missing ="));
- },
- Some(x) => x
+ return Err(io::Error::new(io::ErrorKind::InvalidData, "missing ="));
+ }
+ Some(x) => x,
};
- let (var,eq_val) = s.split_at(idx);
+ let (var, eq_val) = s.split_at(idx);
let val = &eq_val[1..];
map.insert(var.to_owned(), val.to_owned());
}
@@ -70,34 +67,34 @@ impl Config {
/// Return a reference to the value whose key is 'key'.
///
/// Panics if 'key' is not found in the configuration.
- fn get(&self, key : &str) -> &str {
+ fn get(&self, key: &str) -> &str {
self.0.get(key).unwrap()
}
/// Add a dependency on a static C library that is part of Tor, by name.
- fn component(&self, s : &str) {
+ fn component(&self, s: &str) {
println!("cargo:rustc-link-lib=static={}", s);
}
/// Add a dependency on a native library that is not part of Tor, by name.
- fn dependency(&self, s : &str) {
+ fn dependency(&self, s: &str) {
println!("cargo:rustc-link-lib={}", s);
}
/// Add a link path, relative to Tor's build directory.
- fn link_relpath(&self, s : &str) {
+ fn link_relpath(&self, s: &str) {
let builddir = self.get("BUILDDIR");
println!("cargo:rustc-link-search=native={}/{}", builddir, s);
}
/// Add an absolute link path.
- fn link_path(&self, s : &str) {
+ fn link_path(&self, s: &str) {
println!("cargo:rustc-link-search=native={}", s);
}
/// Parse the CFLAGS in s, looking for -l and -L items, and adding
/// rust configuration as appropriate.
- fn from_cflags(&self, s : &str) {
+ fn from_cflags(&self, s: &str) {
let mut next_is_lib = false;
let mut next_is_path = false;
for ent in self.get(s).split_whitespace() {
@@ -149,14 +146,16 @@ pub fn main() {
// tor uses. We must be careful with factoring and dependencies
// moving forward!
cfg.component("tor-crypt-ops-testing");
- cfg.component("tor-sandbox");
+ cfg.component("tor-sandbox-testing");
cfg.component("tor-encoding-testing");
- cfg.component("tor-net");
+ cfg.component("tor-fs-testing");
+ cfg.component("tor-time-testing");
+ cfg.component("tor-net-testing");
cfg.component("tor-thread-testing");
cfg.component("tor-memarea-testing");
- cfg.component("tor-log");
- cfg.component("tor-lock");
- cfg.component("tor-fdio");
+ cfg.component("tor-log-testing");
+ cfg.component("tor-lock-testing");
+ cfg.component("tor-fdio-testing");
cfg.component("tor-container-testing");
cfg.component("tor-smartlist-core-testing");
cfg.component("tor-string-testing");
@@ -182,7 +181,7 @@ pub fn main() {
cfg.from_cflags("TOR_LZMA_LIBS");
cfg.from_cflags("TOR_ZSTD_LIBS");
cfg.from_cflags("LIBS");
- },
+ }
_ => {
panic!("No configuration in build.rs for package {}", package);
}
diff --git a/src/rust/crypto/Cargo.toml b/src/rust/crypto/Cargo.toml
index 869e0d6256..d68ac48e28 100644
--- a/src/rust/crypto/Cargo.toml
+++ b/src/rust/crypto/Cargo.toml
@@ -26,3 +26,7 @@ rand = { version = "=0.5.0-pre.2", default-features = false }
rand_core = { version = "=0.2.0-pre.0", default-features = false }
[features]
+# If this feature is enabled, test code which calls Tor C code from Rust will
+# execute with `cargo test`. Due to numerous linker issues (#25386), this is
+# currently disabled by default.
+test-c-from-rust = []
diff --git a/src/rust/crypto/digests/sha2.rs b/src/rust/crypto/digests/sha2.rs
index 03e0843dc0..55d0027665 100644
--- a/src/rust/crypto/digests/sha2.rs
+++ b/src/rust/crypto/digests/sha2.rs
@@ -6,17 +6,17 @@
pub use digest::Digest;
+use digest::generic_array::typenum::U32;
+use digest::generic_array::typenum::U64;
+use digest::generic_array::GenericArray;
use digest::BlockInput;
use digest::FixedOutput;
use digest::Input;
-use digest::generic_array::GenericArray;
-use digest::generic_array::typenum::U32;
-use digest::generic_array::typenum::U64;
-use external::crypto_digest::CryptoDigest;
-use external::crypto_digest::DigestAlgorithm;
use external::crypto_digest::get_256_bit_digest;
use external::crypto_digest::get_512_bit_digest;
+use external::crypto_digest::CryptoDigest;
+use external::crypto_digest::DigestAlgorithm;
pub use external::crypto_digest::DIGEST256_LEN;
pub use external::crypto_digest::DIGEST512_LEN;
@@ -54,7 +54,9 @@ pub struct Sha256 {
/// A new `Sha256` digest.
impl Default for Sha256 {
fn default() -> Sha256 {
- Sha256{ engine: CryptoDigest::new(Some(DigestAlgorithm::SHA2_256)) }
+ Sha256 {
+ engine: CryptoDigest::new(Some(DigestAlgorithm::SHA2_256)),
+ }
}
}
@@ -121,7 +123,9 @@ pub struct Sha512 {
/// A new `Sha512` digest.
impl Default for Sha512 {
fn default() -> Sha512 {
- Sha512{ engine: CryptoDigest::new(Some(DigestAlgorithm::SHA2_512)) }
+ Sha512 {
+ engine: CryptoDigest::new(Some(DigestAlgorithm::SHA2_512)),
+ }
}
}
@@ -165,22 +169,27 @@ impl FixedOutput for Sha512 {
#[cfg(test)]
mod test {
+ #[cfg(feature = "test-c-from-rust")]
use digest::Digest;
+ #[cfg(feature = "test-c-from-rust")]
use super::*;
+ #[cfg(feature = "test-c-from-rust")]
#[test]
fn sha256_default() {
let _: Sha256 = Sha256::default();
}
+ #[cfg(feature = "test-c-from-rust")]
#[test]
fn sha256_digest() {
let mut h: Sha256 = Sha256::new();
let mut result: [u8; DIGEST256_LEN] = [0u8; DIGEST256_LEN];
- let expected = [151, 223, 53, 136, 181, 163, 242, 75, 171, 195,
- 133, 27, 55, 47, 11, 167, 26, 157, 205, 222, 212,
- 59, 20, 185, 208, 105, 97, 191, 193, 112, 125, 157];
+ let expected = [
+ 151, 223, 53, 136, 181, 163, 242, 75, 171, 195, 133, 27, 55, 47, 11, 167, 26, 157, 205,
+ 222, 212, 59, 20, 185, 208, 105, 97, 191, 193, 112, 125, 157,
+ ];
h.input(b"foo");
h.input(b"bar");
@@ -193,21 +202,24 @@ mod test {
assert_eq!(result, expected);
}
+ #[cfg(feature = "test-c-from-rust")]
#[test]
fn sha512_default() {
let _: Sha512 = Sha512::default();
}
+ #[cfg(feature = "test-c-from-rust")]
#[test]
fn sha512_digest() {
let mut h: Sha512 = Sha512::new();
let mut result: [u8; DIGEST512_LEN] = [0u8; DIGEST512_LEN];
- let expected = [203, 55, 124, 16, 176, 245, 166, 44, 128, 54, 37, 167,
- 153, 217, 233, 8, 190, 69, 231, 103, 245, 209, 71, 212, 116,
- 73, 7, 203, 5, 89, 122, 164, 237, 211, 41, 160, 175, 20, 122,
- 221, 12, 244, 24, 30, 211, 40, 250, 30, 121, 148, 38, 88, 38,
- 179, 237, 61, 126, 246, 240, 103, 202, 153, 24, 90];
+ let expected = [
+ 203, 55, 124, 16, 176, 245, 166, 44, 128, 54, 37, 167, 153, 217, 233, 8, 190, 69, 231,
+ 103, 245, 209, 71, 212, 116, 73, 7, 203, 5, 89, 122, 164, 237, 211, 41, 160, 175, 20,
+ 122, 221, 12, 244, 24, 30, 211, 40, 250, 30, 121, 148, 38, 88, 38, 179, 237, 61, 126,
+ 246, 240, 103, 202, 153, 24, 90,
+ ];
h.input(b"foo");
h.input(b"bar");
diff --git a/src/rust/crypto/lib.rs b/src/rust/crypto/lib.rs
index f72a859dd7..4eceb4cbd1 100644
--- a/src/rust/crypto/lib.rs
+++ b/src/rust/crypto/lib.rs
@@ -24,7 +24,8 @@
//! assert!(result == [b'X'; DIGEST256_LEN]);
//! ```
-#[deny(missing_docs)]
+// XXX: add missing docs
+//#![deny(missing_docs)]
// External crates from cargo or TOR_RUST_DEPENDENCIES.
extern crate digest;
@@ -41,5 +42,5 @@ extern crate external;
#[macro_use]
extern crate tor_log;
-pub mod digests; // Unfortunately named "digests" plural to avoid name conflict with the digest crate
+pub mod digests; // Unfortunately named "digests" plural to avoid name conflict with the digest crate
pub mod rand;
diff --git a/src/rust/crypto/rand/rng.rs b/src/rust/crypto/rand/rng.rs
index 07a0a7bdc7..64ceb22424 100644
--- a/src/rust/crypto/rand/rng.rs
+++ b/src/rust/crypto/rand/rng.rs
@@ -12,15 +12,15 @@
mod internal {
use std::u64;
+ use rand_core::impls::next_u32_via_fill;
+ use rand_core::impls::next_u64_via_fill;
use rand_core::CryptoRng;
use rand_core::Error;
use rand_core::RngCore;
- use rand_core::impls::next_u32_via_fill;
- use rand_core::impls::next_u64_via_fill;
use external::c_tor_crypto_rand;
- use external::c_tor_crypto_strongest_rand;
use external::c_tor_crypto_seed_rng;
+ use external::c_tor_crypto_strongest_rand;
use tor_log::LogDomain;
use tor_log::LogSeverity;
@@ -45,12 +45,15 @@ mod internal {
#[allow(dead_code)]
pub fn new() -> Self {
if !c_tor_crypto_seed_rng() {
- tor_log_msg!(LogSeverity::Warn, LogDomain::General,
- "TorRng::from_seed()",
- "The RNG could not be seeded!");
+ tor_log_msg!(
+ LogSeverity::Warn,
+ LogDomain::General,
+ "TorRng::from_seed()",
+ "The RNG could not be seeded!"
+ );
}
// XXX also log success at info level —isis
- TorRng{ _unused: [0u8; 0] }
+ TorRng { _unused: [0u8; 0] }
}
}
@@ -92,12 +95,15 @@ mod internal {
#[allow(dead_code)]
pub fn new() -> Self {
if !c_tor_crypto_seed_rng() {
- tor_log_msg!(LogSeverity::Warn, LogDomain::General,
- "TorStrongestRng::from_seed()",
- "The RNG could not be seeded!");
+ tor_log_msg!(
+ LogSeverity::Warn,
+ LogDomain::General,
+ "TorStrongestRng::from_seed()",
+ "The RNG could not be seeded!"
+ );
}
// XXX also log success at info level —isis
- TorStrongestRng{ _unused: [0u8; 0] }
+ TorStrongestRng { _unused: [0u8; 0] }
}
}
@@ -137,4 +143,3 @@ mod internal {
// Finally, expose the public functionality of whichever appropriate internal
// module.
pub use self::internal::*;
-
diff --git a/src/rust/external/crypto_digest.rs b/src/rust/external/crypto_digest.rs
index 3e8801f203..ebcf2e88a9 100644
--- a/src/rust/external/crypto_digest.rs
+++ b/src/rust/external/crypto_digest.rs
@@ -125,15 +125,35 @@ type smartlist_t = Stringlist;
#[allow(dead_code)]
extern "C" {
fn crypto_digest(digest: *mut c_char, m: *const c_char, len: size_t) -> c_int;
- fn crypto_digest256(digest: *mut c_char, m: *const c_char, len: size_t,
- algorithm: digest_algorithm_t) -> c_int;
- fn crypto_digest512(digest: *mut c_char, m: *const c_char, len: size_t,
- algorithm: digest_algorithm_t) -> c_int;
- fn crypto_common_digests(ds_out: *mut common_digests_t, m: *const c_char, len: size_t) -> c_int;
- fn crypto_digest_smartlist_prefix(digest_out: *mut c_char, len_out: size_t, prepend: *const c_char,
- lst: *const smartlist_t, append: *const c_char, alg: digest_algorithm_t);
- fn crypto_digest_smartlist(digest_out: *mut c_char, len_out: size_t,
- lst: *const smartlist_t, append: *const c_char, alg: digest_algorithm_t);
+ fn crypto_digest256(
+ digest: *mut c_char,
+ m: *const c_char,
+ len: size_t,
+ algorithm: digest_algorithm_t,
+ ) -> c_int;
+ fn crypto_digest512(
+ digest: *mut c_char,
+ m: *const c_char,
+ len: size_t,
+ algorithm: digest_algorithm_t,
+ ) -> c_int;
+ fn crypto_common_digests(ds_out: *mut common_digests_t, m: *const c_char, len: size_t)
+ -> c_int;
+ fn crypto_digest_smartlist_prefix(
+ digest_out: *mut c_char,
+ len_out: size_t,
+ prepend: *const c_char,
+ lst: *const smartlist_t,
+ append: *const c_char,
+ alg: digest_algorithm_t,
+ );
+ fn crypto_digest_smartlist(
+ digest_out: *mut c_char,
+ len_out: size_t,
+ lst: *const smartlist_t,
+ append: *const c_char,
+ alg: digest_algorithm_t,
+ );
fn crypto_digest_algorithm_get_name(alg: digest_algorithm_t) -> *const c_char;
fn crypto_digest_algorithm_get_length(alg: digest_algorithm_t) -> size_t;
fn crypto_digest_algorithm_parse_name(name: *const c_char) -> c_int;
@@ -145,11 +165,21 @@ extern "C" {
fn crypto_digest_get_digest(digest: *mut crypto_digest_t, out: *mut c_char, out_len: size_t);
fn crypto_digest_dup(digest: *const crypto_digest_t) -> *mut crypto_digest_t;
fn crypto_digest_assign(into: *mut crypto_digest_t, from: *const crypto_digest_t);
- fn crypto_hmac_sha256(hmac_out: *mut c_char, key: *const c_char, key_len: size_t,
- msg: *const c_char, msg_len: size_t);
- fn crypto_mac_sha3_256(mac_out: *mut uint8_t, len_out: size_t,
- key: *const uint8_t, key_len: size_t,
- msg: *const uint8_t, msg_len: size_t);
+ fn crypto_hmac_sha256(
+ hmac_out: *mut c_char,
+ key: *const c_char,
+ key_len: size_t,
+ msg: *const c_char,
+ msg_len: size_t,
+ );
+ fn crypto_mac_sha3_256(
+ mac_out: *mut uint8_t,
+ len_out: size_t,
+ key: *const uint8_t,
+ key_len: size_t,
+ msg: *const uint8_t,
+ msg_len: size_t,
+ );
fn crypto_xof_new() -> *mut crypto_xof_t;
fn crypto_xof_add_bytes(xof: *mut crypto_xof_t, data: *const uint8_t, len: size_t);
fn crypto_xof_squeeze_bytes(xof: *mut crypto_xof_t, out: *mut uint8_t, len: size_t);
@@ -238,12 +268,12 @@ impl CryptoDigest {
unsafe {
// XXX This is a pretty awkward API to use from Rust...
digest = match algo {
- DIGEST_SHA1 => crypto_digest_new(),
- DIGEST_SHA256 => crypto_digest256_new(DIGEST_SHA256),
+ DIGEST_SHA1 => crypto_digest_new(),
+ DIGEST_SHA256 => crypto_digest256_new(DIGEST_SHA256),
DIGEST_SHA3_256 => crypto_digest256_new(DIGEST_SHA3_256),
- DIGEST_SHA512 => crypto_digest512_new(DIGEST_SHA512),
+ DIGEST_SHA512 => crypto_digest512_new(DIGEST_SHA512),
DIGEST_SHA3_512 => crypto_digest512_new(DIGEST_SHA3_512),
- _ => abort(),
+ _ => abort(),
}
}
}
@@ -285,9 +315,11 @@ impl CryptoDigest {
/// * `crypto_digest_add_bytes`
pub fn add_bytes(&self, bytes: &[u8]) {
unsafe {
- crypto_digest_add_bytes(self.0 as *mut crypto_digest_t,
- bytes.as_ptr() as *const c_char,
- bytes.len() as size_t)
+ crypto_digest_add_bytes(
+ self.0 as *mut crypto_digest_t,
+ bytes.as_ptr() as *const c_char,
+ bytes.len() as size_t,
+ )
}
}
}
@@ -331,9 +363,11 @@ pub fn get_256_bit_digest(digest: CryptoDigest) -> [u8; DIGEST256_LEN] {
let mut buffer: [u8; DIGEST256_LEN] = [0u8; DIGEST256_LEN];
unsafe {
- crypto_digest_get_digest(digest.0,
- buffer.as_mut_ptr() as *mut c_char,
- DIGEST256_LEN as size_t);
+ crypto_digest_get_digest(
+ digest.0,
+ buffer.as_mut_ptr() as *mut c_char,
+ DIGEST256_LEN as size_t,
+ );
if buffer.as_ptr().is_null() {
abort();
@@ -373,9 +407,11 @@ pub fn get_512_bit_digest(digest: CryptoDigest) -> [u8; DIGEST512_LEN] {
let mut buffer: [u8; DIGEST512_LEN] = [0u8; DIGEST512_LEN];
unsafe {
- crypto_digest_get_digest(digest.0,
- buffer.as_mut_ptr() as *mut c_char,
- DIGEST512_LEN as size_t);
+ crypto_digest_get_digest(
+ digest.0,
+ buffer.as_mut_ptr() as *mut c_char,
+ DIGEST512_LEN as size_t,
+ );
if buffer.as_ptr().is_null() {
abort();
@@ -390,17 +426,29 @@ mod test {
#[test]
fn test_layout_common_digests_t() {
- assert_eq!(::std::mem::size_of::<common_digests_t>(), 64usize,
- concat!("Size of: ", stringify!(common_digests_t)));
- assert_eq!(::std::mem::align_of::<common_digests_t>(), 1usize,
- concat!("Alignment of ", stringify!(common_digests_t)));
+ assert_eq!(
+ ::std::mem::size_of::<common_digests_t>(),
+ 64usize,
+ concat!("Size of: ", stringify!(common_digests_t))
+ );
+ assert_eq!(
+ ::std::mem::align_of::<common_digests_t>(),
+ 1usize,
+ concat!("Alignment of ", stringify!(common_digests_t))
+ );
}
#[test]
fn test_layout_crypto_digest_t() {
- assert_eq!(::std::mem::size_of::<crypto_digest_t>(), 0usize,
- concat!("Size of: ", stringify!(crypto_digest_t)));
- assert_eq!(::std::mem::align_of::<crypto_digest_t>(), 1usize,
- concat!("Alignment of ", stringify!(crypto_digest_t)));
+ assert_eq!(
+ ::std::mem::size_of::<crypto_digest_t>(),
+ 0usize,
+ concat!("Size of: ", stringify!(crypto_digest_t))
+ );
+ assert_eq!(
+ ::std::mem::align_of::<crypto_digest_t>(),
+ 1usize,
+ concat!("Alignment of ", stringify!(crypto_digest_t))
+ );
}
}
diff --git a/src/rust/external/crypto_rand.rs b/src/rust/external/crypto_rand.rs
index af1ade0161..b68f98b358 100644
--- a/src/rust/external/crypto_rand.rs
+++ b/src/rust/external/crypto_rand.rs
@@ -2,7 +2,7 @@
// Copyright (c) 2018, isis agora lovecruft
// See LICENSE for licensing information
-//! Bindings to external (P)RNG interfaces and utilities in
+//! Bindings to external (P)RNG interfaces and utilities in
//! src/common/crypto_rand.[ch].
//!
//! We wrap our C implementations in src/common/crypto_rand.[ch] here in order
@@ -80,8 +80,5 @@ pub fn c_tor_crypto_rand_time_range(min: &Duration, max: &Duration) -> Duration
/// Return a pseudorandom 64-bit float, chosen uniformly from the range [0.0, 1.0).
pub fn c_tor_crypto_rand_double() -> f64 {
- unsafe {
- crypto_rand_double()
- }
+ unsafe { crypto_rand_double() }
}
-
diff --git a/src/rust/external/external.rs b/src/rust/external/external.rs
index 059fdd0df7..874c7c3153 100644
--- a/src/rust/external/external.rs
+++ b/src/rust/external/external.rs
@@ -5,10 +5,7 @@ use libc::{c_char, c_int};
use std::ffi::CString;
extern "C" {
- fn tor_version_as_new_as(
- platform: *const c_char,
- cutoff: *const c_char,
- ) -> c_int;
+ fn tor_version_as_new_as(platform: *const c_char, cutoff: *const c_char) -> c_int;
}
/// Wrap calls to tor_version_as_new_as, defined in routerparse.c
@@ -25,9 +22,7 @@ pub fn c_tor_version_as_new_as(platform: &str, cutoff: &str) -> bool {
Err(_) => return false,
};
- let result: c_int = unsafe {
- tor_version_as_new_as(c_platform.as_ptr(), c_cutoff.as_ptr())
- };
+ let result: c_int = unsafe { tor_version_as_new_as(c_platform.as_ptr(), c_cutoff.as_ptr()) };
result == 1
}
diff --git a/src/rust/protover/errors.rs b/src/rust/protover/errors.rs
index 56473d12e6..71fbc53e17 100644
--- a/src/rust/protover/errors.rs
+++ b/src/rust/protover/errors.rs
@@ -24,20 +24,30 @@ pub enum ProtoverError {
impl Display for ProtoverError {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
match *self {
- ProtoverError::Overlap
- => write!(f, "Two or more (low, high) protover ranges would overlap once expanded."),
- ProtoverError::LowGreaterThanHigh
- => write!(f, "The low in a (low, high) protover range was greater than high."),
- ProtoverError::Unparseable
- => write!(f, "The protover string was unparseable."),
- ProtoverError::ExceedsMax
- => write!(f, "The high in a (low, high) protover range exceeds u32::MAX."),
- ProtoverError::ExceedsExpansionLimit
- => write!(f, "The protover string would exceed the maximum expansion limit."),
- ProtoverError::UnknownProtocol
- => write!(f, "A protocol in the protover string we attempted to parse is unknown."),
- ProtoverError::ExceedsNameLimit
- => write!(f, "An unrecognised protocol name was too long."),
+ ProtoverError::Overlap => write!(
+ f,
+ "Two or more (low, high) protover ranges would overlap once expanded."
+ ),
+ ProtoverError::LowGreaterThanHigh => write!(
+ f,
+ "The low in a (low, high) protover range was greater than high."
+ ),
+ ProtoverError::Unparseable => write!(f, "The protover string was unparseable."),
+ ProtoverError::ExceedsMax => write!(
+ f,
+ "The high in a (low, high) protover range exceeds u32::MAX."
+ ),
+ ProtoverError::ExceedsExpansionLimit => write!(
+ f,
+ "The protover string would exceed the maximum expansion limit."
+ ),
+ ProtoverError::UnknownProtocol => write!(
+ f,
+ "A protocol in the protover string we attempted to parse is unknown."
+ ),
+ ProtoverError::ExceedsNameLimit => {
+ write!(f, "An unrecognised protocol name was too long.")
+ }
}
}
}
diff --git a/src/rust/protover/ffi.rs b/src/rust/protover/ffi.rs
index 3055893d43..0c28d032c6 100644
--- a/src/rust/protover/ffi.rs
+++ b/src/rust/protover/ffi.rs
@@ -42,7 +42,6 @@ pub extern "C" fn protover_all_supported(
c_relay_version: *const c_char,
missing_out: *mut *mut c_char,
) -> c_int {
-
if c_relay_version.is_null() {
return 1;
}
@@ -58,13 +57,11 @@ pub extern "C" fn protover_all_supported(
let relay_proto_entry: UnvalidatedProtoEntry =
match UnvalidatedProtoEntry::from_str_any_len(relay_version) {
- Ok(n) => n,
- Err(_) => return 1,
- };
- let maybe_unsupported: Option<UnvalidatedProtoEntry> = relay_proto_entry.all_supported();
+ Ok(n) => n,
+ Err(_) => return 1,
+ };
- if maybe_unsupported.is_some() {
- let unsupported: UnvalidatedProtoEntry = maybe_unsupported.unwrap();
+ if let Some(unsupported) = relay_proto_entry.all_supported() {
let c_unsupported: CString = match CString::new(unsupported.to_string()) {
Ok(n) => n,
Err(_) => return 1,
@@ -100,23 +97,22 @@ pub extern "C" fn protocol_list_supports_protocol(
Err(_) => return 1,
};
let proto_entry: UnvalidatedProtoEntry = match protocol_list.parse() {
- Ok(n) => n,
+ Ok(n) => n,
Err(_) => return 0,
};
let protocol: UnknownProtocol = match translate_to_rust(c_protocol) {
Ok(n) => n.into(),
Err(_) => return 0,
};
- match proto_entry.supports_protocol(&protocol, &version) {
- false => return 0,
- true => return 1,
+ if proto_entry.supports_protocol(&protocol, &version) {
+ 1
+ } else {
+ 0
}
}
#[no_mangle]
-pub extern "C" fn protover_contains_long_protocol_names_(
- c_protocol_list: *const c_char
-) -> c_int {
+pub extern "C" fn protover_contains_long_protocol_names_(c_protocol_list: *const c_char) -> c_int {
if c_protocol_list.is_null() {
return 1;
}
@@ -127,13 +123,10 @@ pub extern "C" fn protover_contains_long_protocol_names_(
let protocol_list = match c_str.to_str() {
Ok(n) => n,
- Err(_) => return 1
+ Err(_) => return 1,
};
- let protocol_entry : Result<UnvalidatedProtoEntry,_> =
- protocol_list.parse();
-
- match protocol_entry {
+ match protocol_list.parse::<UnvalidatedProtoEntry>() {
Ok(_) => 0,
Err(_) => 1,
}
@@ -166,7 +159,7 @@ pub extern "C" fn protocol_list_supports_protocol_or_later(
};
let proto_entry: UnvalidatedProtoEntry = match protocol_list.parse() {
- Ok(n) => n,
+ Ok(n) => n,
Err(_) => return 1,
};
@@ -196,10 +189,8 @@ pub extern "C" fn protover_compute_vote(
threshold: c_int,
allow_long_proto_names: bool,
) -> *mut c_char {
-
if list.is_null() {
- let empty = String::new();
- return allocate_and_copy_string(&empty);
+ return allocate_and_copy_string("");
}
// Dereference of raw pointer requires an unsafe block. The pointer is
@@ -209,13 +200,16 @@ pub extern "C" fn protover_compute_vote(
let mut proto_entries: Vec<UnvalidatedProtoEntry> = Vec::new();
for datum in data {
- let entry: UnvalidatedProtoEntry = match allow_long_proto_names {
- true => match UnvalidatedProtoEntry::from_str_any_len(datum.as_str()) {
- Ok(n) => n,
- Err(_) => continue},
- false => match datum.parse() {
- Ok(n) => n,
- Err(_) => continue},
+ let entry: UnvalidatedProtoEntry = if allow_long_proto_names {
+ match UnvalidatedProtoEntry::from_str_any_len(datum.as_str()) {
+ Ok(n) => n,
+ Err(_) => continue,
+ }
+ } else {
+ match datum.parse() {
+ Ok(n) => n,
+ Err(_) => continue,
+ }
};
proto_entries.push(entry);
}
@@ -227,10 +221,7 @@ pub extern "C" fn protover_compute_vote(
/// Provide an interface for C to translate arguments and return types for
/// protover::is_supported_here
#[no_mangle]
-pub extern "C" fn protover_is_supported_here(
- c_protocol: uint32_t,
- version: uint32_t,
-) -> c_int {
+pub extern "C" fn protover_is_supported_here(c_protocol: uint32_t, version: uint32_t) -> c_int {
let protocol = match translate_to_rust(c_protocol) {
Ok(n) => n,
Err(_) => return 0,
diff --git a/src/rust/protover/lib.rs b/src/rust/protover/lib.rs
index 5da562c1e0..9625cb58ad 100644
--- a/src/rust/protover/lib.rs
+++ b/src/rust/protover/lib.rs
@@ -22,18 +22,19 @@
//! protocols to develop independently, without having to claim compatibility
//! with specific versions of Tor.
-#[deny(missing_docs)]
+// XXX: add missing docs
+//#![deny(missing_docs)]
+extern crate external;
extern crate libc;
extern crate smartlist;
-extern crate external;
extern crate tor_allocate;
#[macro_use]
extern crate tor_util;
pub mod errors;
+pub mod ffi;
pub mod protoset;
mod protover;
-pub mod ffi;
pub use protover::*;
diff --git a/src/rust/protover/protoset.rs b/src/rust/protover/protoset.rs
index 4afc50edf8..db33592f95 100644
--- a/src/rust/protover/protoset.rs
+++ b/src/rust/protover/protoset.rs
@@ -53,7 +53,7 @@ impl Default for ProtoSet {
fn default() -> Self {
let pairs: Vec<(Version, Version)> = Vec::new();
- ProtoSet{ pairs }
+ ProtoSet { pairs }
}
}
@@ -73,7 +73,7 @@ impl<'a> ProtoSet {
pairs.sort_unstable();
pairs.dedup();
- ProtoSet{ pairs }.is_ok()
+ ProtoSet { pairs }.is_ok()
}
}
@@ -263,7 +263,8 @@ impl ProtoSet {
/// ```
// XXX we could probably do something more efficient here. —isis
pub fn retain<F>(&mut self, f: F)
- where F: FnMut(&Version) -> bool
+ where
+ F: FnMut(&Version) -> bool,
{
let mut expanded: Vec<Version> = self.clone().expand();
expanded.retain(f);
@@ -299,7 +300,7 @@ impl FromStr for ProtoSet {
/// * there are greater than 2^16 version numbers to expand.
///
/// # Examples
- ///
+ ///
/// ```
/// use std::str::FromStr;
///
@@ -340,20 +341,18 @@ impl FromStr for ProtoSet {
/// ```
fn from_str(version_string: &str) -> Result<Self, Self::Err> {
let mut pairs: Vec<(Version, Version)> = Vec::new();
- let pieces: ::std::str::Split<char> = version_string.trim().split(',');
-
- for piece in pieces {
- let p: &str = piece.trim();
+ let pieces: ::std::str::Split<char> = version_string.split(',');
+ for p in pieces {
if p.is_empty() {
continue;
} else if p.contains('-') {
- let mut pair = p.split('-');
+ let mut pair = p.splitn(2, '-');
- let low = pair.next().ok_or(ProtoverError::Unparseable)?;
+ let low = pair.next().ok_or(ProtoverError::Unparseable)?;
let high = pair.next().ok_or(ProtoverError::Unparseable)?;
- let lo: Version = low.parse().or(Err(ProtoverError::Unparseable))?;
+ let lo: Version = low.parse().or(Err(ProtoverError::Unparseable))?;
let hi: Version = high.parse().or(Err(ProtoverError::Unparseable))?;
if lo == u32::MAX || hi == u32::MAX {
@@ -369,7 +368,7 @@ impl FromStr for ProtoSet {
pairs.push((v, v));
}
}
- // If we were passed in an empty string, or a bunch of whitespace, or
+ // If we were passed in an empty string, or
// simply a comma, or a pile of commas, then return an empty ProtoSet.
if pairs.len() == 0 {
return Ok(ProtoSet::default());
@@ -457,11 +456,11 @@ impl From<Vec<Version>> for ProtoSet {
if has_range {
let first: Version = match v.first() {
Some(x) => *x,
- None => continue,
+ None => continue,
};
- let last: Version = match v.get(index) {
+ let last: Version = match v.get(index) {
Some(x) => *x,
- None => continue,
+ None => continue,
};
debug_assert!(last == end, format!("last = {}, end = {}", last, end));
@@ -474,7 +473,7 @@ impl From<Vec<Version>> for ProtoSet {
} else {
let last: Version = match v.get(index) {
Some(x) => *x,
- None => continue,
+ None => continue,
};
version_pairs.push((last, last));
v.remove(index);
@@ -498,22 +497,22 @@ mod test {
}
macro_rules! assert_contains_each {
- ($protoset:expr, $versions:expr) => (
+ ($protoset:expr, $versions:expr) => {
for version in $versions {
assert!($protoset.contains(version));
}
- )
+ };
}
macro_rules! test_protoset_contains_versions {
- ($list:expr, $str:expr) => (
+ ($list:expr, $str:expr) => {
let versions: &[Version] = $list;
let protoset: Result<ProtoSet, ProtoverError> = ProtoSet::from_str($str);
assert!(protoset.is_ok());
let p = protoset.unwrap();
assert_contains_each!(p, versions);
- )
+ };
}
#[test]
@@ -539,6 +538,18 @@ mod test {
}
#[test]
+ fn test_versions_from_str_hyphens() {
+ assert_eq!(Err(ProtoverError::Unparseable), ProtoSet::from_str("--1"));
+ assert_eq!(Err(ProtoverError::Unparseable), ProtoSet::from_str("-1-2"));
+ assert_eq!(Err(ProtoverError::Unparseable), ProtoSet::from_str("1--2"));
+ }
+
+ #[test]
+ fn test_versions_from_str_triple() {
+ assert_eq!(Err(ProtoverError::Unparseable), ProtoSet::from_str("1-2-3"));
+ }
+
+ #[test]
fn test_versions_from_str_1exclam() {
assert_eq!(Err(ProtoverError::Unparseable), ProtoSet::from_str("1,!"));
}
@@ -549,32 +560,54 @@ mod test {
}
#[test]
+ fn test_versions_from_str_whitespace() {
+ assert_eq!(Err(ProtoverError::Unparseable), ProtoSet::from_str("1,2\n"));
+ assert_eq!(Err(ProtoverError::Unparseable), ProtoSet::from_str("1\r,2"));
+ assert_eq!(Err(ProtoverError::Unparseable), ProtoSet::from_str("1,\t2"));
+ }
+
+ #[test]
fn test_versions_from_str_overlap() {
assert_eq!(Err(ProtoverError::Overlap), ProtoSet::from_str("1-3,2-4"));
}
#[test]
fn test_versions_from_slice_overlap() {
- assert_eq!(Err(ProtoverError::Overlap), ProtoSet::from_slice(&[(1, 3), (2, 4)]));
+ assert_eq!(
+ Err(ProtoverError::Overlap),
+ ProtoSet::from_slice(&[(1, 3), (2, 4)])
+ );
}
#[test]
fn test_versions_from_str_max() {
- assert_eq!(Err(ProtoverError::ExceedsMax), ProtoSet::from_str("4294967295"));
+ assert_eq!(
+ Err(ProtoverError::ExceedsMax),
+ ProtoSet::from_str("4294967295")
+ );
}
#[test]
fn test_versions_from_slice_max() {
- assert_eq!(Err(ProtoverError::ExceedsMax), ProtoSet::from_slice(&[(4294967295, 4294967295)]));
+ assert_eq!(
+ Err(ProtoverError::ExceedsMax),
+ ProtoSet::from_slice(&[(4294967295, 4294967295)])
+ );
}
#[test]
fn test_protoset_contains() {
let protoset: ProtoSet = ProtoSet::from_slice(&[(0, 5), (7, 9), (13, 14)]).unwrap();
- for x in 0..6 { assert!(protoset.contains(&x), format!("should contain {}", x)); }
- for x in 7..10 { assert!(protoset.contains(&x), format!("should contain {}", x)); }
- for x in 13..15 { assert!(protoset.contains(&x), format!("should contain {}", x)); }
+ for x in 0..6 {
+ assert!(protoset.contains(&x), format!("should contain {}", x));
+ }
+ for x in 7..10 {
+ assert!(protoset.contains(&x), format!("should contain {}", x));
+ }
+ for x in 13..15 {
+ assert!(protoset.contains(&x), format!("should contain {}", x));
+ }
for x in [6, 10, 11, 12, 15, 42, 43, 44, 45, 1234584].iter() {
assert!(!protoset.contains(&x), format!("should not contain {}", x));
@@ -585,7 +618,9 @@ mod test {
fn test_protoset_contains_0_3() {
let protoset: ProtoSet = ProtoSet::from_slice(&[(0, 3)]).unwrap();
- for x in 0..4 { assert!(protoset.contains(&x), format!("should contain {}", x)); }
+ for x in 0..4 {
+ assert!(protoset.contains(&x), format!("should contain {}", x));
+ }
}
macro_rules! assert_protoset_from_vec_contains_all {
@@ -611,7 +646,7 @@ mod test {
#[test]
fn test_protoset_from_vec_unordered() {
- let v: Vec<Version> = vec!(2, 3, 8, 4, 3, 9, 7, 2);
+ let v: Vec<Version> = vec![2, 3, 8, 4, 3, 9, 7, 2];
let ps: ProtoSet = v.into();
assert_eq!(ps.to_string(), "2-4,7-9");
diff --git a/src/rust/protover/protover.rs b/src/rust/protover/protover.rs
index 299e433722..157027750f 100644
--- a/src/rust/protover/protover.rs
+++ b/src/rust/protover/protover.rs
@@ -1,8 +1,8 @@
// Copyright (c) 2016-2018, The Tor Project, Inc. */
// See LICENSE for licensing information */
-use std::collections::HashMap;
use std::collections::hash_map;
+use std::collections::HashMap;
use std::ffi::CStr;
use std::fmt;
use std::str;
@@ -12,8 +12,8 @@ use std::string::String;
use external::c_tor_version_as_new_as;
use errors::ProtoverError;
-use protoset::Version;
use protoset::ProtoSet;
+use protoset::Version;
/// The first version of Tor that included "proto" entries in its descriptors.
/// Authorities should use this to decide whether to guess proto lines.
@@ -26,7 +26,7 @@ const FIRST_TOR_VERSION_TO_ADVERTISE_PROTOCOLS: &'static str = "0.2.9.3-alpha";
/// before concluding that someone is trying to DoS us
///
/// C_RUST_COUPLED: protover.c `MAX_PROTOCOLS_TO_EXPAND`
-const MAX_PROTOCOLS_TO_EXPAND: usize = (1<<16);
+const MAX_PROTOCOLS_TO_EXPAND: usize = (1 << 16);
/// The maximum size an `UnknownProtocol`'s name may be.
pub(crate) const MAX_PROTOCOL_NAME_LENGTH: usize = 100;
@@ -132,16 +132,18 @@ impl From<Protocol> for UnknownProtocol {
///
// C_RUST_COUPLED: protover.c `protover_get_supported_protocols`
pub(crate) fn get_supported_protocols_cstr() -> &'static CStr {
- cstr!("Cons=1-2 \
- Desc=1-2 \
- DirCache=1-2 \
- HSDir=1-2 \
- HSIntro=3-4 \
- HSRend=1-2 \
- Link=1-5 \
- LinkAuth=1,3 \
- Microdesc=1-2 \
- Relay=1-2")
+ cstr!(
+ "Cons=1-2 \
+ Desc=1-2 \
+ DirCache=1-2 \
+ HSDir=1-2 \
+ HSIntro=3-4 \
+ HSRend=1-2 \
+ Link=1-5 \
+ LinkAuth=1,3 \
+ Microdesc=1-2 \
+ Relay=1-2"
+ )
}
/// A map of protocol names to the versions of them which are supported.
@@ -150,7 +152,7 @@ pub struct ProtoEntry(HashMap<Protocol, ProtoSet>);
impl Default for ProtoEntry {
fn default() -> ProtoEntry {
- ProtoEntry( HashMap::new() )
+ ProtoEntry(HashMap::new())
}
}
@@ -204,9 +206,7 @@ impl FromStr for ProtoEntry {
///
/// # Returns
///
- /// A `Result` whose `Ok` value is a `ProtoEntry`, where the
- /// first element is the subprotocol type (see `protover::Protocol`) and the last
- /// element is an ordered set of `(low, high)` unique version numbers which are supported.
+ /// A `Result` whose `Ok` value is a `ProtoEntry`.
/// Otherwise, the `Err` value of this `Result` is a `ProtoverError`.
fn from_str(protocol_entry: &str) -> Result<ProtoEntry, ProtoverError> {
let mut proto_entry: ProtoEntry = ProtoEntry::default();
@@ -240,7 +240,7 @@ impl FromStr for ProtoEntry {
/// Generate an implementation of `ToString` for either a `ProtoEntry` or an
/// `UnvalidatedProtoEntry`.
macro_rules! impl_to_string_for_proto_entry {
- ($t:ty) => (
+ ($t:ty) => {
impl ToString for $t {
fn to_string(&self) -> String {
let mut parts: Vec<String> = Vec::new();
@@ -252,7 +252,7 @@ macro_rules! impl_to_string_for_proto_entry {
parts.join(" ")
}
}
- )
+ };
}
impl_to_string_for_proto_entry!(ProtoEntry);
@@ -266,7 +266,7 @@ pub struct UnvalidatedProtoEntry(HashMap<UnknownProtocol, ProtoSet>);
impl Default for UnvalidatedProtoEntry {
fn default() -> UnvalidatedProtoEntry {
- UnvalidatedProtoEntry( HashMap::new() )
+ UnvalidatedProtoEntry(HashMap::new())
}
}
@@ -324,7 +324,7 @@ impl UnvalidatedProtoEntry {
pub fn all_supported(&self) -> Option<UnvalidatedProtoEntry> {
let mut unsupported: UnvalidatedProtoEntry = UnvalidatedProtoEntry::default();
let supported: ProtoEntry = match ProtoEntry::supported() {
- Ok(x) => x,
+ Ok(x) => x,
Err(_) => return None,
};
@@ -452,11 +452,12 @@ impl UnvalidatedProtoEntry {
/// following are true:
///
/// * If a protocol name is an empty string, e.g. `"Cons=1,3 =3-5"`.
- /// * If a protocol name cannot be parsed as utf-8.
- /// * If the version numbers are an empty string, e.g. `"Cons="`.
- fn parse_protocol_and_version_str<'a>(protocol_string: &'a str)
- -> Result<Vec<(&'a str, &'a str)>, ProtoverError>
- {
+ /// * If an entry has no equals sign, e.g. `"Cons=1,3 Desc"`.
+ /// * If there is leading or trailing whitespace, e.g. `" Cons=1,3 Link=3"`.
+ /// * If there is any other extra whitespice, e.g. `"Cons=1,3 Link=3"`.
+ fn parse_protocol_and_version_str<'a>(
+ protocol_string: &'a str,
+ ) -> Result<Vec<(&'a str, &'a str)>, ProtoverError> {
let mut protovers: Vec<(&str, &str)> = Vec::new();
for subproto in protocol_string.split(' ') {
@@ -492,11 +493,9 @@ impl FromStr for UnvalidatedProtoEntry {
///
/// # Returns
///
- /// A `Result` whose `Ok` value is a `ProtoSet` holding all of the
- /// unique version numbers.
+ /// A `Result` whose `Ok` value is an `UnvalidatedProtoEntry`.
///
- /// The returned `Result`'s `Err` value is an `ProtoverError` whose `Display`
- /// impl has a description of the error.
+ /// The returned `Result`'s `Err` value is an `ProtoverError`.
///
/// # Errors
///
@@ -523,9 +522,9 @@ impl FromStr for UnvalidatedProtoEntry {
impl UnvalidatedProtoEntry {
/// Create an `UnknownProtocol`, ignoring whether or not it
/// exceeds MAX_PROTOCOL_NAME_LENGTH.
- pub(crate) fn from_str_any_len(protocol_string: &str)
- -> Result<UnvalidatedProtoEntry, ProtoverError>
- {
+ pub(crate) fn from_str_any_len(
+ protocol_string: &str,
+ ) -> Result<UnvalidatedProtoEntry, ProtoverError> {
let mut parsed: UnvalidatedProtoEntry = UnvalidatedProtoEntry::default();
let parts: Vec<(&str, &str)> =
UnvalidatedProtoEntry::parse_protocol_and_version_str(protocol_string)?;
@@ -560,11 +559,11 @@ impl From<ProtoEntry> for UnvalidatedProtoEntry {
/// The "protocols" are *not* guaranteed to be known/supported `Protocol`s, in
/// order to allow new subprotocols to be introduced even if Directory
/// Authorities don't yet know of them.
-pub struct ProtoverVote( HashMap<UnknownProtocol, HashMap<Version, usize>> );
+pub struct ProtoverVote(HashMap<UnknownProtocol, HashMap<Version, usize>>);
impl Default for ProtoverVote {
fn default() -> ProtoverVote {
- ProtoverVote( HashMap::new() )
+ ProtoverVote(HashMap::new())
}
}
@@ -578,9 +577,10 @@ impl IntoIterator for ProtoverVote {
}
impl ProtoverVote {
- pub fn entry(&mut self, key: UnknownProtocol)
- -> hash_map::Entry<UnknownProtocol, HashMap<Version, usize>>
- {
+ pub fn entry(
+ &mut self,
+ key: UnknownProtocol,
+ ) -> hash_map::Entry<UnknownProtocol, HashMap<Version, usize>> {
self.0.entry(key)
}
@@ -602,7 +602,10 @@ impl ProtoverVote {
/// assert_eq!("Link=3", vote.to_string());
/// ```
// C_RUST_COUPLED: protover.c protover_compute_vote
- pub fn compute(proto_entries: &[UnvalidatedProtoEntry], threshold: &usize) -> UnvalidatedProtoEntry {
+ pub fn compute(
+ proto_entries: &[UnvalidatedProtoEntry],
+ threshold: &usize,
+ ) -> UnvalidatedProtoEntry {
let mut all_count: ProtoverVote = ProtoverVote::default();
let mut final_output: UnvalidatedProtoEntry = UnvalidatedProtoEntry::default();
@@ -628,8 +631,7 @@ impl ProtoverVote {
all_count.entry(protocol.clone()).or_insert(HashMap::new());
for version in versions.clone().expand() {
- let counter: &mut usize =
- supported_vers.entry(version).or_insert(0);
+ let counter: &mut usize = supported_vers.entry(version).or_insert(0);
*counter += 1;
}
}
@@ -708,16 +710,22 @@ pub(crate) fn compute_for_old_tor_cstr(version: &str) -> &'static CStr {
return empty;
}
if c_tor_version_as_new_as(version, "0.2.9.1-alpha") {
- return cstr!("Cons=1-2 Desc=1-2 DirCache=1 HSDir=1 HSIntro=3 HSRend=1-2 \
- Link=1-4 LinkAuth=1 Microdesc=1-2 Relay=1-2");
+ return cstr!(
+ "Cons=1-2 Desc=1-2 DirCache=1 HSDir=1 HSIntro=3 HSRend=1-2 \
+ Link=1-4 LinkAuth=1 Microdesc=1-2 Relay=1-2"
+ );
}
if c_tor_version_as_new_as(version, "0.2.7.5") {
- return cstr!("Cons=1-2 Desc=1-2 DirCache=1 HSDir=1 HSIntro=3 HSRend=1 \
- Link=1-4 LinkAuth=1 Microdesc=1-2 Relay=1-2");
+ return cstr!(
+ "Cons=1-2 Desc=1-2 DirCache=1 HSDir=1 HSIntro=3 HSRend=1 \
+ Link=1-4 LinkAuth=1 Microdesc=1-2 Relay=1-2"
+ );
}
if c_tor_version_as_new_as(version, "0.2.4.19") {
- return cstr!("Cons=1 Desc=1 DirCache=1 HSDir=1 HSIntro=3 HSRend=1 \
- Link=1-4 LinkAuth=1 Microdesc=1 Relay=1-2");
+ return cstr!(
+ "Cons=1 Desc=1 DirCache=1 HSDir=1 HSIntro=3 HSRend=1 \
+ Link=1-4 LinkAuth=1 Microdesc=1 Relay=1-2"
+ );
}
empty
}
@@ -752,7 +760,9 @@ pub(crate) fn compute_for_old_tor_cstr(version: &str) -> &'static CStr {
pub fn compute_for_old_tor(version: &str) -> Result<&'static str, ProtoverError> {
// .to_str() fails with a Utf8Error if it couldn't validate the
// utf-8, so convert that here into an Unparseable ProtoverError.
- compute_for_old_tor_cstr(version).to_str().or(Err(ProtoverError::Unparseable))
+ compute_for_old_tor_cstr(version)
+ .to_str()
+ .or(Err(ProtoverError::Unparseable))
}
#[cfg(test)]
@@ -763,19 +773,19 @@ mod test {
use super::*;
macro_rules! assert_protoentry_is_parseable {
- ($e:expr) => (
+ ($e:expr) => {
let protoentry: Result<ProtoEntry, ProtoverError> = $e.parse();
assert!(protoentry.is_ok(), format!("{:?}", protoentry.err()));
- )
+ };
}
macro_rules! assert_protoentry_is_unparseable {
- ($e:expr) => (
+ ($e:expr) => {
let protoentry: Result<ProtoEntry, ProtoverError> = $e.parse();
assert!(protoentry.is_err());
- )
+ };
}
#[test]
@@ -861,24 +871,45 @@ mod test {
#[test]
fn test_contract_protocol_list() {
let mut versions = "";
- assert_eq!(String::from(versions), ProtoSet::from_str(&versions).unwrap().to_string());
+ assert_eq!(
+ String::from(versions),
+ ProtoSet::from_str(&versions).unwrap().to_string()
+ );
versions = "1";
- assert_eq!(String::from(versions), ProtoSet::from_str(&versions).unwrap().to_string());
+ assert_eq!(
+ String::from(versions),
+ ProtoSet::from_str(&versions).unwrap().to_string()
+ );
versions = "1-2";
- assert_eq!(String::from(versions), ProtoSet::from_str(&versions).unwrap().to_string());
+ assert_eq!(
+ String::from(versions),
+ ProtoSet::from_str(&versions).unwrap().to_string()
+ );
versions = "1,3";
- assert_eq!(String::from(versions), ProtoSet::from_str(&versions).unwrap().to_string());
+ assert_eq!(
+ String::from(versions),
+ ProtoSet::from_str(&versions).unwrap().to_string()
+ );
versions = "1-4";
- assert_eq!(String::from(versions), ProtoSet::from_str(&versions).unwrap().to_string());
+ assert_eq!(
+ String::from(versions),
+ ProtoSet::from_str(&versions).unwrap().to_string()
+ );
versions = "1,3,5-7";
- assert_eq!(String::from(versions), ProtoSet::from_str(&versions).unwrap().to_string());
+ assert_eq!(
+ String::from(versions),
+ ProtoSet::from_str(&versions).unwrap().to_string()
+ );
versions = "1-3,500";
- assert_eq!(String::from(versions), ProtoSet::from_str(&versions).unwrap().to_string());
+ assert_eq!(
+ String::from(versions),
+ ProtoSet::from_str(&versions).unwrap().to_string()
+ );
}
}
diff --git a/src/rust/protover/tests/protover.rs b/src/rust/protover/tests/protover.rs
index ac78d34b7a..a091e692d6 100644
--- a/src/rust/protover/tests/protover.rs
+++ b/src/rust/protover/tests/protover.rs
@@ -3,10 +3,10 @@
extern crate protover;
+use protover::errors::ProtoverError;
use protover::ProtoEntry;
use protover::ProtoverVote;
use protover::UnvalidatedProtoEntry;
-use protover::errors::ProtoverError;
#[test]
fn parse_protocol_with_single_proto_and_single_version() {
@@ -179,14 +179,16 @@ fn protover_compute_vote_returns_two_protocols_for_two_matching() {
#[test]
fn protover_compute_vote_returns_one_protocol_when_one_out_of_two_matches() {
- let protocols: &[UnvalidatedProtoEntry] = &["Cons=1 Link=2".parse().unwrap(), "Cons=1".parse().unwrap()];
+ let protocols: &[UnvalidatedProtoEntry] =
+ &["Cons=1 Link=2".parse().unwrap(), "Cons=1".parse().unwrap()];
let listed = ProtoverVote::compute(protocols, &2);
assert_eq!("Cons=1", listed.to_string());
}
#[test]
fn protover_compute_vote_returns_protocols_that_it_doesnt_currently_support() {
- let protocols: &[UnvalidatedProtoEntry] = &["Foo=1 Cons=2".parse().unwrap(), "Bar=1".parse().unwrap()];
+ let protocols: &[UnvalidatedProtoEntry] =
+ &["Foo=1 Cons=2".parse().unwrap(), "Bar=1".parse().unwrap()];
let listed = ProtoverVote::compute(protocols, &1);
assert_eq!("Bar=1 Cons=2 Foo=1", listed.to_string());
}
@@ -222,10 +224,12 @@ fn protover_compute_vote_returns_matching_for_longer_mix_with_threshold_two() {
#[test]
fn protover_compute_vote_handles_duplicated_versions() {
- let protocols: &[UnvalidatedProtoEntry] = &["Cons=1".parse().unwrap(), "Cons=1".parse().unwrap()];
+ let protocols: &[UnvalidatedProtoEntry] =
+ &["Cons=1".parse().unwrap(), "Cons=1".parse().unwrap()];
assert_eq!("Cons=1", ProtoverVote::compute(protocols, &2).to_string());
- let protocols: &[UnvalidatedProtoEntry] = &["Cons=1-2".parse().unwrap(), "Cons=1-2".parse().unwrap()];
+ let protocols: &[UnvalidatedProtoEntry] =
+ &["Cons=1-2".parse().unwrap(), "Cons=1-2".parse().unwrap()];
assert_eq!("Cons=1-2", ProtoverVote::compute(protocols, &2).to_string());
}
@@ -246,12 +250,18 @@ fn parse_protocol_with_single_protocol_and_two_nonsequential_versions() {
#[test]
fn protover_is_supported_here_returns_true_for_supported_protocol() {
- assert_eq!(true, protover::is_supported_here(&protover::Protocol::Cons, &1));
+ assert_eq!(
+ true,
+ protover::is_supported_here(&protover::Protocol::Cons, &1)
+ );
}
#[test]
fn protover_is_supported_here_returns_false_for_unsupported_protocol() {
- assert_eq!(false, protover::is_supported_here(&protover::Protocol::Cons, &5));
+ assert_eq!(
+ false,
+ protover::is_supported_here(&protover::Protocol::Cons, &5)
+ );
}
#[test]
diff --git a/src/rust/smartlist/smartlist.rs b/src/rust/smartlist/smartlist.rs
index 747d22f78c..bce58c0ef9 100644
--- a/src/rust/smartlist/smartlist.rs
+++ b/src/rust/smartlist/smartlist.rs
@@ -1,9 +1,9 @@
// Copyright (c) 2016-2018, The Tor Project, Inc. */
// See LICENSE for licensing information */
-use std::slice;
use libc::{c_char, c_int};
use std::ffi::CStr;
+use std::slice;
/// Smartlists are a type used in C code in tor to define a collection of a
/// generic type, which has a capacity and a number used. Each Smartlist
@@ -65,8 +65,8 @@ mod test {
fn test_get_list_of_strings() {
extern crate libc;
- use std::ffi::CString;
use libc::c_char;
+ use std::ffi::CString;
use super::Smartlist;
use super::Stringlist;
@@ -89,13 +89,13 @@ mod test {
let args = vec![String::from("a"), String::from("b")];
// for each string, transform it into a CString
- let c_strings: Vec<_> = args.iter()
+ let c_strings: Vec<_> = args
+ .iter()
.map(|arg| CString::new(arg.as_str()).unwrap())
.collect();
// then, collect a pointer for each CString
- let p_args: Vec<_> =
- c_strings.iter().map(|arg| arg.as_ptr()).collect();
+ let p_args: Vec<_> = c_strings.iter().map(|arg| arg.as_ptr()).collect();
let p: *const *const c_char = p_args.as_ptr();
diff --git a/src/rust/tor_allocate/tor_allocate.rs b/src/rust/tor_allocate/tor_allocate.rs
index 47fa5fc593..48351d8482 100644
--- a/src/rust/tor_allocate/tor_allocate.rs
+++ b/src/rust/tor_allocate/tor_allocate.rs
@@ -3,15 +3,15 @@
// No-op defined purely for testing at the module level
use libc::c_char;
-#[cfg(not(feature = "testing"))]
-use std::{ptr, slice, mem};
use libc::c_void;
+#[cfg(not(feature = "testing"))]
+use std::{mem, ptr, slice};
// Define a no-op implementation for testing Rust modules without linking to C
#[cfg(feature = "testing")]
-pub fn allocate_and_copy_string(s: &String) -> *mut c_char {
+pub fn allocate_and_copy_string(s: &str) -> *mut c_char {
use std::ffi::CString;
- CString::new(s.as_str()).unwrap().into_raw()
+ CString::new(s).unwrap().into_raw()
}
// Defined only for tests, used for testing purposes, so that we don't need
@@ -39,7 +39,7 @@ extern "C" {
/// A `*mut c_char` that should be freed by tor_free in C
///
#[cfg(not(feature = "testing"))]
-pub fn allocate_and_copy_string(src: &String) -> *mut c_char {
+pub fn allocate_and_copy_string(src: &str) -> *mut c_char {
let bytes: &[u8] = src.as_bytes();
let size = mem::size_of_val::<[u8]>(bytes);
@@ -72,16 +72,14 @@ mod test {
#[test]
fn test_allocate_and_copy_string_with_empty() {
+ use libc::{c_void, free};
use std::ffi::CStr;
- use libc::{free, c_void};
use tor_allocate::allocate_and_copy_string;
- let empty = String::new();
- let allocated_empty = allocate_and_copy_string(&empty);
+ let allocated_empty = allocate_and_copy_string("");
- let allocated_empty_rust =
- unsafe { CStr::from_ptr(allocated_empty).to_str().unwrap() };
+ let allocated_empty_rust = unsafe { CStr::from_ptr(allocated_empty).to_str().unwrap() };
assert_eq!("", allocated_empty_rust);
@@ -90,16 +88,14 @@ mod test {
#[test]
fn test_allocate_and_copy_string_with_not_empty_string() {
+ use libc::{c_void, free};
use std::ffi::CStr;
- use libc::{free, c_void};
use tor_allocate::allocate_and_copy_string;
- let empty = String::from("foo bar biz");
- let allocated_empty = allocate_and_copy_string(&empty);
+ let allocated_empty = allocate_and_copy_string("foo bar biz");
- let allocated_empty_rust =
- unsafe { CStr::from_ptr(allocated_empty).to_str().unwrap() };
+ let allocated_empty_rust = unsafe { CStr::from_ptr(allocated_empty).to_str().unwrap() };
assert_eq!("foo bar biz", allocated_empty_rust);
diff --git a/src/rust/tor_log/tor_log.rs b/src/rust/tor_log/tor_log.rs
index 49a1e7b158..5231d0c631 100644
--- a/src/rust/tor_log/tor_log.rs
+++ b/src/rust/tor_log/tor_log.rs
@@ -48,12 +48,7 @@ macro_rules! tor_log_msg {
}
#[inline]
-pub fn tor_log_msg_impl(
- severity: LogSeverity,
- domain: LogDomain,
- function: &str,
- message: String,
-) {
+pub fn tor_log_msg_impl(severity: LogSeverity, domain: LogDomain, function: &str, message: String) {
use std::ffi::CString;
/// Default function name to log in case of errors when converting
@@ -63,7 +58,7 @@ pub fn tor_log_msg_impl(
/// Default message to log in case of errors when converting a log
/// message to a CString
const ERR_LOG_MSG: &str = "Unable to log message from Rust \
- module due to error when converting to CString";
+ module due to error when converting to CString";
let func = match CString::new(function) {
Ok(n) => n,
@@ -90,9 +85,9 @@ pub fn tor_log_msg_impl(
/// testing.
#[cfg(not(test))]
pub mod log {
- use libc::{c_char, c_int};
use super::LogDomain;
use super::LogSeverity;
+ use libc::{c_char, c_int};
/// Severity log types. These mirror definitions in /src/common/torlog.h
/// C_RUST_COUPLED: src/common/log.c, log domain types
@@ -144,9 +139,9 @@ pub mod log {
/// without linking to C.
#[cfg(test)]
pub mod log {
- use libc::{c_char, c_int};
use super::LogDomain;
use super::LogSeverity;
+ use libc::{c_char, c_int};
pub static mut LAST_LOGGED_FUNCTION: *mut String = 0 as *mut String;
pub static mut LAST_LOGGED_MESSAGE: *mut String = 0 as *mut String;
@@ -185,8 +180,8 @@ pub mod log {
#[cfg(test)]
mod test {
- use tor_log::*;
use tor_log::log::{LAST_LOGGED_FUNCTION, LAST_LOGGED_MESSAGE};
+ use tor_log::*;
#[test]
fn test_get_log_message() {
@@ -198,7 +193,7 @@ mod test {
"test_macro",
"test log message {}",
"a",
- );
+ );
}
test_macro();
@@ -244,21 +239,21 @@ mod test {
"test_macro",
"{}",
"All the world's a stage, and all the men and women \
- merely players: they have their exits and their \
- entrances; and one man in his time plays many parts, his \
- acts being seven ages."
+ merely players: they have their exits and their \
+ entrances; and one man in his time plays many parts, his \
+ acts being seven ages."
);
}
test_macro();
let expected_string = "All the world's a \
- stage, and all the men \
- and women merely players: \
- they have their exits and \
- their entrances; and one man \
- in his time plays many parts, \
- his acts being seven ages.";
+ stage, and all the men \
+ and women merely players: \
+ they have their exits and \
+ their entrances; and one man \
+ in his time plays many parts, \
+ his acts being seven ages.";
let function = unsafe { Box::from_raw(LAST_LOGGED_FUNCTION) };
assert_eq!("test_macro", *function);
diff --git a/src/rust/tor_rust/include.am b/src/rust/tor_rust/include.am
index ecc821a887..ce673abbee 100644
--- a/src/rust/tor_rust/include.am
+++ b/src/rust/tor_rust/include.am
@@ -7,7 +7,6 @@ EXTRA_CARGO_OPTIONS=
@TOR_RUST_LIB_PATH@: FORCE
( cd "$(abs_top_builddir)/src/rust" ; \
CARGO_TARGET_DIR="$(abs_top_builddir)/src/rust/target" \
- CARGO_HOME="$(abs_top_builddir)/src/rust" \
$(CARGO) build --release $(EXTRA_CARGO_OPTIONS) \
$(CARGO_ONLINE) \
--manifest-path "$(abs_top_srcdir)/src/rust/tor_rust/Cargo.toml" )
@@ -15,7 +14,6 @@ EXTRA_CARGO_OPTIONS=
distclean-rust:
( cd "$(abs_top_builddir)/src/rust" ; \
CARGO_TARGET_DIR="$(abs_top_builddir)/src/rust/target" \
- CARGO_HOME="$(abs_top_builddir)/src/rust" \
$(CARGO) clean $(EXTRA_CARGO_OPTIONS) \
$(CARGO_ONLINE) \
--manifest-path "$(abs_top_srcdir)/src/rust/tor_rust/Cargo.toml" )
diff --git a/src/rust/tor_rust/lib.rs b/src/rust/tor_rust/lib.rs
index c1585c0480..18519f8497 100644
--- a/src/rust/tor_rust/lib.rs
+++ b/src/rust/tor_rust/lib.rs
@@ -1,5 +1,5 @@
-extern crate tor_util;
extern crate protover;
+extern crate tor_util;
-pub use tor_util::*;
pub use protover::*;
+pub use tor_util::*;
diff --git a/src/rust/tor_util/ffi.rs b/src/rust/tor_util/ffi.rs
index 4be154ff1e..f015590178 100644
--- a/src/rust/tor_util/ffi.rs
+++ b/src/rust/tor_util/ffi.rs
@@ -5,7 +5,7 @@
//! called from C.
//!
-use tor_log::{LogSeverity, LogDomain};
+use tor_log::{LogDomain, LogSeverity};
/// Returns a short string to announce Rust support during startup.
///
@@ -22,6 +22,6 @@ pub extern "C" fn rust_log_welcome_string() {
LogDomain::General,
"rust_log_welcome_string",
"Tor is running with Rust integration. Please report \
- any bugs you encounter."
+ any bugs you encounter."
);
}
diff --git a/src/rust/tor_util/strings.rs b/src/rust/tor_util/strings.rs
index c365564e97..d64275e06b 100644
--- a/src/rust/tor_util/strings.rs
+++ b/src/rust/tor_util/strings.rs
@@ -131,10 +131,10 @@ mod test {
#[test]
fn cstr_macro_bad_input() {
- let waving: &'static CStr = cstr!("waving not drowning o/");
+ let waving: &'static CStr = cstr!("waving not drowning o/");
let drowning: &'static CStr = cstr!("\0 drowning not waving");
- assert!(waving.to_str().unwrap() == "waving not drowning o/");
+ assert!(waving.to_str().unwrap() == "waving not drowning o/");
assert!(drowning.to_str().unwrap() == "")
}
}
diff --git a/src/test/fuzz/fuzz_http.c b/src/test/fuzz/fuzz_http.c
index 61dc2144b4..2fbb275614 100644
--- a/src/test/fuzz/fuzz_http.c
+++ b/src/test/fuzz/fuzz_http.c
@@ -12,7 +12,7 @@
#include "app/config/config.h"
#include "core/mainloop/connection.h"
#include "feature/dircache/directory.h"
-#include "lib/log/torlog.h"
+#include "lib/log/log.h"
#include "feature/dircommon/dir_connection_st.h"
diff --git a/src/test/fuzz/fuzz_http_connect.c b/src/test/fuzz/fuzz_http_connect.c
index 184bb52ee2..ca007a2c7f 100644
--- a/src/test/fuzz/fuzz_http_connect.c
+++ b/src/test/fuzz/fuzz_http_connect.c
@@ -13,7 +13,7 @@
#include "core/mainloop/connection.h"
#include "core/or/connection_edge.h"
#include "core/proto/proto_socks.h"
-#include "lib/log/torlog.h"
+#include "lib/log/log.h"
#include "core/or/entry_connection_st.h"
#include "core/or/socks_request_st.h"
diff --git a/src/test/fuzz/fuzz_socks.c b/src/test/fuzz/fuzz_socks.c
new file mode 100644
index 0000000000..14c25304b1
--- /dev/null
+++ b/src/test/fuzz/fuzz_socks.c
@@ -0,0 +1,50 @@
+/* Copyright (c) 2016-2018, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+#include "orconfig.h"
+
+#define BUFFERS_PRIVATE
+#include "core/or/or.h"
+
+#include "lib/container/buffers.h"
+#include "lib/err/backtrace.h"
+#include "lib/log/log.h"
+#include "core/proto/proto_socks.h"
+#include "feature/client/addressmap.h"
+
+#include "test/fuzz/fuzzing.h"
+
+int
+fuzz_init(void)
+{
+ addressmap_init();
+ return 0;
+}
+
+int
+fuzz_cleanup(void)
+{
+ addressmap_free_all();
+ return 0;
+}
+
+int
+fuzz_main(const uint8_t *stdin_buf, size_t data_size)
+{
+ buf_t *buffer = buf_new_with_data((char*)stdin_buf, data_size);
+ if (!buffer) {
+ tor_assert(data_size==0);
+ buffer = buf_new();
+ }
+
+ socks_request_t *request = socks_request_new();
+
+ int r = fetch_from_buf_socks(buffer, request, 0, 0);
+ log_info(LD_GENERAL, "Socks request status: %d", r);
+
+ /* Reset. */
+ buf_free(buffer);
+ socks_request_free(request);
+
+ return 0;
+}
diff --git a/src/test/fuzz/include.am b/src/test/fuzz/include.am
index 87dfe91675..09594d8272 100644
--- a/src/test/fuzz/include.am
+++ b/src/test/fuzz/include.am
@@ -17,7 +17,7 @@ FUZZING_LIBS = \
@TOR_ZSTD_LIBS@
oss-fuzz-prereqs: \
- $(TOR_INTERNAL_TESTING_LIBS)
+ $(TOR_INTERNAL_TESTING_LIBS)
noinst_HEADERS += \
src/test/fuzz/fuzzing.h
@@ -32,6 +32,7 @@ LIBOSS_FUZZ_CPPFLAGS = $(FUZZING_CPPFLAGS) -DLLVM_FUZZ
LIBOSS_FUZZ_CFLAGS = $(FUZZING_CFLAGS)
# ===== AFL fuzzers
+if UNITTESTS_ENABLED
src_test_fuzz_fuzz_consensus_SOURCES = \
src/test/fuzz/fuzzing_common.c \
src/test/fuzz/fuzz_consensus.c
@@ -39,7 +40,9 @@ src_test_fuzz_fuzz_consensus_CPPFLAGS = $(FUZZING_CPPFLAGS)
src_test_fuzz_fuzz_consensus_CFLAGS = $(FUZZING_CFLAGS)
src_test_fuzz_fuzz_consensus_LDFLAGS = $(FUZZING_LDFLAG)
src_test_fuzz_fuzz_consensus_LDADD = $(FUZZING_LIBS)
+endif
+if UNITTESTS_ENABLED
src_test_fuzz_fuzz_descriptor_SOURCES = \
src/test/fuzz/fuzzing_common.c \
src/test/fuzz/fuzz_descriptor.c
@@ -47,7 +50,9 @@ src_test_fuzz_fuzz_descriptor_CPPFLAGS = $(FUZZING_CPPFLAGS)
src_test_fuzz_fuzz_descriptor_CFLAGS = $(FUZZING_CFLAGS)
src_test_fuzz_fuzz_descriptor_LDFLAGS = $(FUZZING_LDFLAG)
src_test_fuzz_fuzz_descriptor_LDADD = $(FUZZING_LIBS)
+endif
+if UNITTESTS_ENABLED
src_test_fuzz_fuzz_diff_SOURCES = \
src/test/fuzz/fuzzing_common.c \
src/test/fuzz/fuzz_diff.c
@@ -55,7 +60,9 @@ src_test_fuzz_fuzz_diff_CPPFLAGS = $(FUZZING_CPPFLAGS)
src_test_fuzz_fuzz_diff_CFLAGS = $(FUZZING_CFLAGS)
src_test_fuzz_fuzz_diff_LDFLAGS = $(FUZZING_LDFLAG)
src_test_fuzz_fuzz_diff_LDADD = $(FUZZING_LIBS)
+endif
+if UNITTESTS_ENABLED
src_test_fuzz_fuzz_diff_apply_SOURCES = \
src/test/fuzz/fuzzing_common.c \
src/test/fuzz/fuzz_diff_apply.c
@@ -63,7 +70,9 @@ src_test_fuzz_fuzz_diff_apply_CPPFLAGS = $(FUZZING_CPPFLAGS)
src_test_fuzz_fuzz_diff_apply_CFLAGS = $(FUZZING_CFLAGS)
src_test_fuzz_fuzz_diff_apply_LDFLAGS = $(FUZZING_LDFLAG)
src_test_fuzz_fuzz_diff_apply_LDADD = $(FUZZING_LIBS)
+endif
+if UNITTESTS_ENABLED
src_test_fuzz_fuzz_extrainfo_SOURCES = \
src/test/fuzz/fuzzing_common.c \
src/test/fuzz/fuzz_extrainfo.c
@@ -71,7 +80,9 @@ src_test_fuzz_fuzz_extrainfo_CPPFLAGS = $(FUZZING_CPPFLAGS)
src_test_fuzz_fuzz_extrainfo_CFLAGS = $(FUZZING_CFLAGS)
src_test_fuzz_fuzz_extrainfo_LDFLAGS = $(FUZZING_LDFLAG)
src_test_fuzz_fuzz_extrainfo_LDADD = $(FUZZING_LIBS)
+endif
+if UNITTESTS_ENABLED
src_test_fuzz_fuzz_hsdescv2_SOURCES = \
src/test/fuzz/fuzzing_common.c \
src/test/fuzz/fuzz_hsdescv2.c
@@ -79,7 +90,9 @@ src_test_fuzz_fuzz_hsdescv2_CPPFLAGS = $(FUZZING_CPPFLAGS)
src_test_fuzz_fuzz_hsdescv2_CFLAGS = $(FUZZING_CFLAGS)
src_test_fuzz_fuzz_hsdescv2_LDFLAGS = $(FUZZING_LDFLAG)
src_test_fuzz_fuzz_hsdescv2_LDADD = $(FUZZING_LIBS)
+endif
+if UNITTESTS_ENABLED
src_test_fuzz_fuzz_hsdescv3_SOURCES = \
src/test/fuzz/fuzzing_common.c \
src/test/fuzz/fuzz_hsdescv3.c
@@ -87,7 +100,9 @@ src_test_fuzz_fuzz_hsdescv3_CPPFLAGS = $(FUZZING_CPPFLAGS)
src_test_fuzz_fuzz_hsdescv3_CFLAGS = $(FUZZING_CFLAGS)
src_test_fuzz_fuzz_hsdescv3_LDFLAGS = $(FUZZING_LDFLAG)
src_test_fuzz_fuzz_hsdescv3_LDADD = $(FUZZING_LIBS)
+endif
+if UNITTESTS_ENABLED
src_test_fuzz_fuzz_http_SOURCES = \
src/test/fuzz/fuzzing_common.c \
src/test/fuzz/fuzz_http.c
@@ -95,7 +110,9 @@ src_test_fuzz_fuzz_http_CPPFLAGS = $(FUZZING_CPPFLAGS)
src_test_fuzz_fuzz_http_CFLAGS = $(FUZZING_CFLAGS)
src_test_fuzz_fuzz_http_LDFLAGS = $(FUZZING_LDFLAG)
src_test_fuzz_fuzz_http_LDADD = $(FUZZING_LIBS)
+endif
+if UNITTESTS_ENABLED
src_test_fuzz_fuzz_http_connect_SOURCES = \
src/test/fuzz/fuzzing_common.c \
src/test/fuzz/fuzz_http_connect.c
@@ -103,7 +120,9 @@ src_test_fuzz_fuzz_http_connect_CPPFLAGS = $(FUZZING_CPPFLAGS)
src_test_fuzz_fuzz_http_connect_CFLAGS = $(FUZZING_CFLAGS)
src_test_fuzz_fuzz_http_connect_LDFLAGS = $(FUZZING_LDFLAG)
src_test_fuzz_fuzz_http_connect_LDADD = $(FUZZING_LIBS)
+endif
+if UNITTESTS_ENABLED
src_test_fuzz_fuzz_iptsv2_SOURCES = \
src/test/fuzz/fuzzing_common.c \
src/test/fuzz/fuzz_iptsv2.c
@@ -111,7 +130,9 @@ src_test_fuzz_fuzz_iptsv2_CPPFLAGS = $(FUZZING_CPPFLAGS)
src_test_fuzz_fuzz_iptsv2_CFLAGS = $(FUZZING_CFLAGS)
src_test_fuzz_fuzz_iptsv2_LDFLAGS = $(FUZZING_LDFLAG)
src_test_fuzz_fuzz_iptsv2_LDADD = $(FUZZING_LIBS)
+endif
+if UNITTESTS_ENABLED
src_test_fuzz_fuzz_microdesc_SOURCES = \
src/test/fuzz/fuzzing_common.c \
src/test/fuzz/fuzz_microdesc.c
@@ -119,7 +140,19 @@ src_test_fuzz_fuzz_microdesc_CPPFLAGS = $(FUZZING_CPPFLAGS)
src_test_fuzz_fuzz_microdesc_CFLAGS = $(FUZZING_CFLAGS)
src_test_fuzz_fuzz_microdesc_LDFLAGS = $(FUZZING_LDFLAG)
src_test_fuzz_fuzz_microdesc_LDADD = $(FUZZING_LIBS)
+endif
+if UNITTESTS_ENABLED
+src_test_fuzz_fuzz_socks_SOURCES = \
+ src/test/fuzz/fuzzing_common.c \
+ src/test/fuzz/fuzz_socks.c
+src_test_fuzz_fuzz_socks_CPPFLAGS = $(FUZZING_CPPFLAGS)
+src_test_fuzz_fuzz_socks_CFLAGS = $(FUZZING_CFLAGS)
+src_test_fuzz_fuzz_socks_LDFLAGS = $(FUZZING_LDFLAG)
+src_test_fuzz_fuzz_socks_LDADD = $(FUZZING_LIBS)
+endif
+
+if UNITTESTS_ENABLED
src_test_fuzz_fuzz_vrs_SOURCES = \
src/test/fuzz/fuzzing_common.c \
src/test/fuzz/fuzz_vrs.c
@@ -127,7 +160,9 @@ src_test_fuzz_fuzz_vrs_CPPFLAGS = $(FUZZING_CPPFLAGS)
src_test_fuzz_fuzz_vrs_CFLAGS = $(FUZZING_CFLAGS)
src_test_fuzz_fuzz_vrs_LDFLAGS = $(FUZZING_LDFLAG)
src_test_fuzz_fuzz_vrs_LDADD = $(FUZZING_LIBS)
+endif
+if UNITTESTS_ENABLED
FUZZERS = \
src/test/fuzz/fuzz-consensus \
src/test/fuzz/fuzz-descriptor \
@@ -140,94 +175,129 @@ FUZZERS = \
src/test/fuzz/fuzz-http-connect \
src/test/fuzz/fuzz-iptsv2 \
src/test/fuzz/fuzz-microdesc \
+ src/test/fuzz/fuzz-socks \
src/test/fuzz/fuzz-vrs
+endif
# ===== libfuzzer
if LIBFUZZER_ENABLED
+if UNITTESTS_ENABLED
src_test_fuzz_lf_fuzz_consensus_SOURCES = \
$(src_test_fuzz_fuzz_consensus_SOURCES)
src_test_fuzz_lf_fuzz_consensus_CPPFLAGS = $(LIBFUZZER_CPPFLAGS)
src_test_fuzz_lf_fuzz_consensus_CFLAGS = $(LIBFUZZER_CFLAGS)
src_test_fuzz_lf_fuzz_consensus_LDFLAGS = $(LIBFUZZER_LDFLAG)
src_test_fuzz_lf_fuzz_consensus_LDADD = $(LIBFUZZER_LIBS)
+endif
+if UNITTESTS_ENABLED
src_test_fuzz_lf_fuzz_descriptor_SOURCES = \
$(src_test_fuzz_fuzz_descriptor_SOURCES)
src_test_fuzz_lf_fuzz_descriptor_CPPFLAGS = $(LIBFUZZER_CPPFLAGS)
src_test_fuzz_lf_fuzz_descriptor_CFLAGS = $(LIBFUZZER_CFLAGS)
src_test_fuzz_lf_fuzz_descriptor_LDFLAGS = $(LIBFUZZER_LDFLAG)
src_test_fuzz_lf_fuzz_descriptor_LDADD = $(LIBFUZZER_LIBS)
+endif
+if UNITTESTS_ENABLED
src_test_fuzz_lf_fuzz_diff_SOURCES = \
$(src_test_fuzz_fuzz_diff_SOURCES)
src_test_fuzz_lf_fuzz_diff_CPPFLAGS = $(LIBFUZZER_CPPFLAGS)
src_test_fuzz_lf_fuzz_diff_CFLAGS = $(LIBFUZZER_CFLAGS)
src_test_fuzz_lf_fuzz_diff_LDFLAGS = $(LIBFUZZER_LDFLAG)
src_test_fuzz_lf_fuzz_diff_LDADD = $(LIBFUZZER_LIBS)
+endif
+if UNITTESTS_ENABLED
src_test_fuzz_lf_fuzz_diff_apply_SOURCES = \
$(src_test_fuzz_fuzz_diff_apply_SOURCES)
src_test_fuzz_lf_fuzz_diff_apply_CPPFLAGS = $(LIBFUZZER_CPPFLAGS)
src_test_fuzz_lf_fuzz_diff_apply_CFLAGS = $(LIBFUZZER_CFLAGS)
src_test_fuzz_lf_fuzz_diff_apply_LDFLAGS = $(LIBFUZZER_LDFLAG)
src_test_fuzz_lf_fuzz_diff_apply_LDADD = $(LIBFUZZER_LIBS)
+endif
+if UNITTESTS_ENABLED
src_test_fuzz_lf_fuzz_extrainfo_SOURCES = \
$(src_test_fuzz_fuzz_extrainfo_SOURCES)
src_test_fuzz_lf_fuzz_extrainfo_CPPFLAGS = $(LIBFUZZER_CPPFLAGS)
src_test_fuzz_lf_fuzz_extrainfo_CFLAGS = $(LIBFUZZER_CFLAGS)
src_test_fuzz_lf_fuzz_extrainfo_LDFLAGS = $(LIBFUZZER_LDFLAG)
src_test_fuzz_lf_fuzz_extrainfo_LDADD = $(LIBFUZZER_LIBS)
+endif
+if UNITTESTS_ENABLED
src_test_fuzz_lf_fuzz_hsdescv2_SOURCES = \
$(src_test_fuzz_fuzz_hsdescv2_SOURCES)
src_test_fuzz_lf_fuzz_hsdescv2_CPPFLAGS = $(LIBFUZZER_CPPFLAGS)
src_test_fuzz_lf_fuzz_hsdescv2_CFLAGS = $(LIBFUZZER_CFLAGS)
src_test_fuzz_lf_fuzz_hsdescv2_LDFLAGS = $(LIBFUZZER_LDFLAG)
src_test_fuzz_lf_fuzz_hsdescv2_LDADD = $(LIBFUZZER_LIBS)
+endif
+if UNITTESTS_ENABLED
src_test_fuzz_lf_fuzz_hsdescv3_SOURCES = \
$(src_test_fuzz_fuzz_hsdescv3_SOURCES)
src_test_fuzz_lf_fuzz_hsdescv3_CPPFLAGS = $(LIBFUZZER_CPPFLAGS)
src_test_fuzz_lf_fuzz_hsdescv3_CFLAGS = $(LIBFUZZER_CFLAGS)
src_test_fuzz_lf_fuzz_hsdescv3_LDFLAGS = $(LIBFUZZER_LDFLAG)
src_test_fuzz_lf_fuzz_hsdescv3_LDADD = $(LIBFUZZER_LIBS)
+endif
+if UNITTESTS_ENABLED
src_test_fuzz_lf_fuzz_http_SOURCES = \
$(src_test_fuzz_fuzz_http_SOURCES)
src_test_fuzz_lf_fuzz_http_CPPFLAGS = $(LIBFUZZER_CPPFLAGS)
src_test_fuzz_lf_fuzz_http_CFLAGS = $(LIBFUZZER_CFLAGS)
src_test_fuzz_lf_fuzz_http_LDFLAGS = $(LIBFUZZER_LDFLAG)
src_test_fuzz_lf_fuzz_http_LDADD = $(LIBFUZZER_LIBS)
+endif
+if UNITTESTS_ENABLED
src_test_fuzz_lf_fuzz_http_connect_SOURCES = \
$(src_test_fuzz_fuzz_http_connect_SOURCES)
src_test_fuzz_lf_fuzz_http_connect_CPPFLAGS = $(LIBFUZZER_CPPFLAGS)
src_test_fuzz_lf_fuzz_http_connect_CFLAGS = $(LIBFUZZER_CFLAGS)
src_test_fuzz_lf_fuzz_http_connect_LDFLAGS = $(LIBFUZZER_LDFLAG)
src_test_fuzz_lf_fuzz_http_connect_LDADD = $(LIBFUZZER_LIBS)
+endif
+if UNITTESTS_ENABLED
src_test_fuzz_lf_fuzz_iptsv2_SOURCES = \
$(src_test_fuzz_fuzz_iptsv2_SOURCES)
src_test_fuzz_lf_fuzz_iptsv2_CPPFLAGS = $(LIBFUZZER_CPPFLAGS)
src_test_fuzz_lf_fuzz_iptsv2_CFLAGS = $(LIBFUZZER_CFLAGS)
src_test_fuzz_lf_fuzz_iptsv2_LDFLAGS = $(LIBFUZZER_LDFLAG)
src_test_fuzz_lf_fuzz_iptsv2_LDADD = $(LIBFUZZER_LIBS)
+endif
+if UNITTESTS_ENABLED
src_test_fuzz_lf_fuzz_microdesc_SOURCES = \
$(src_test_fuzz_fuzz_microdesc_SOURCES)
src_test_fuzz_lf_fuzz_microdesc_CPPFLAGS = $(LIBFUZZER_CPPFLAGS)
src_test_fuzz_lf_fuzz_microdesc_CFLAGS = $(LIBFUZZER_CFLAGS)
src_test_fuzz_lf_fuzz_microdesc_LDFLAGS = $(LIBFUZZER_LDFLAG)
src_test_fuzz_lf_fuzz_microdesc_LDADD = $(LIBFUZZER_LIBS)
+endif
+if UNITTESTS_ENABLED
+src_test_fuzz_lf_fuzz_socks_SOURCES = \
+ $(src_test_fuzz_fuzz_socks_SOURCES)
+src_test_fuzz_lf_fuzz_socks_CPPFLAGS = $(LIBFUZZER_CPPFLAGS)
+src_test_fuzz_lf_fuzz_socks_CFLAGS = $(LIBFUZZER_CFLAGS)
+src_test_fuzz_lf_fuzz_socks_LDFLAGS = $(LIBFUZZER_LDFLAG)
+src_test_fuzz_lf_fuzz_socks_LDADD = $(LIBFUZZER_LIBS)
+endif
+
+if UNITTESTS_ENABLED
src_test_fuzz_lf_fuzz_vrs_SOURCES = \
$(src_test_fuzz_fuzz_vrs_SOURCES)
src_test_fuzz_lf_fuzz_vrs_CPPFLAGS = $(LIBFUZZER_CPPFLAGS)
src_test_fuzz_lf_fuzz_vrs_CFLAGS = $(LIBFUZZER_CFLAGS)
src_test_fuzz_lf_fuzz_vrs_LDFLAGS = $(LIBFUZZER_LDFLAG)
src_test_fuzz_lf_fuzz_vrs_LDADD = $(LIBFUZZER_LIBS)
+endif
LIBFUZZER_FUZZERS = \
src/test/fuzz/lf-fuzz-consensus \
@@ -241,6 +311,7 @@ LIBFUZZER_FUZZERS = \
src/test/fuzz/lf-fuzz-http-connect \
src/test/fuzz/lf-fuzz-iptsv2 \
src/test/fuzz/lf-fuzz-microdesc \
+ src/test/fuzz/lf-fuzz-socks \
src/test/fuzz/lf-fuzz-vrs
else
@@ -250,65 +321,96 @@ endif
# ===== oss-fuzz
if OSS_FUZZ_ENABLED
+if UNITTESTS_ENABLED
src_test_fuzz_liboss_fuzz_consensus_a_SOURCES = \
$(src_test_fuzz_fuzz_consensus_SOURCES)
src_test_fuzz_liboss_fuzz_consensus_a_CPPFLAGS = $(LIBOSS_FUZZ_CPPFLAGS)
src_test_fuzz_liboss_fuzz_consensus_a_CFLAGS = $(LIBOSS_FUZZ_CFLAGS)
+endif
+if UNITTESTS_ENABLED
src_test_fuzz_liboss_fuzz_descriptor_a_SOURCES = \
$(src_test_fuzz_fuzz_descriptor_SOURCES)
src_test_fuzz_liboss_fuzz_descriptor_a_CPPFLAGS = $(LIBOSS_FUZZ_CPPFLAGS)
src_test_fuzz_liboss_fuzz_descriptor_a_CFLAGS = $(LIBOSS_FUZZ_CFLAGS)
+endif
+if UNITTESTS_ENABLED
src_test_fuzz_liboss_fuzz_diff_a_SOURCES = \
$(src_test_fuzz_fuzz_diff_SOURCES)
src_test_fuzz_liboss_fuzz_diff_a_CPPFLAGS = $(LIBOSS_FUZZ_CPPFLAGS)
src_test_fuzz_liboss_fuzz_diff_a_CFLAGS = $(LIBOSS_FUZZ_CFLAGS)
+endif
+if UNITTESTS_ENABLED
src_test_fuzz_liboss_fuzz_diff_apply_a_SOURCES = \
$(src_test_fuzz_fuzz_diff_apply_SOURCES)
src_test_fuzz_liboss_fuzz_diff_apply_a_CPPFLAGS = $(LIBOSS_FUZZ_CPPFLAGS)
src_test_fuzz_liboss_fuzz_diff_apply_a_CFLAGS = $(LIBOSS_FUZZ_CFLAGS)
+endif
+if UNITTESTS_ENABLED
src_test_fuzz_liboss_fuzz_extrainfo_a_SOURCES = \
$(src_test_fuzz_fuzz_extrainfo_SOURCES)
src_test_fuzz_liboss_fuzz_extrainfo_a_CPPFLAGS = $(LIBOSS_FUZZ_CPPFLAGS)
src_test_fuzz_liboss_fuzz_extrainfo_a_CFLAGS = $(LIBOSS_FUZZ_CFLAGS)
+endif
+if UNITTESTS_ENABLED
src_test_fuzz_liboss_fuzz_hsdescv2_a_SOURCES = \
$(src_test_fuzz_fuzz_hsdescv2_SOURCES)
src_test_fuzz_liboss_fuzz_hsdescv2_a_CPPFLAGS = $(LIBOSS_FUZZ_CPPFLAGS)
src_test_fuzz_liboss_fuzz_hsdescv2_a_CFLAGS = $(LIBOSS_FUZZ_CFLAGS)
+endif
+if UNITTESTS_ENABLED
src_test_fuzz_liboss_fuzz_hsdescv3_a_SOURCES = \
$(src_test_fuzz_fuzz_hsdescv3_SOURCES)
src_test_fuzz_liboss_fuzz_hsdescv3_a_CPPFLAGS = $(LIBOSS_FUZZ_CPPFLAGS)
src_test_fuzz_liboss_fuzz_hsdescv3_a_CFLAGS = $(LIBOSS_FUZZ_CFLAGS)
+endif
+if UNITTESTS_ENABLED
src_test_fuzz_liboss_fuzz_http_a_SOURCES = \
$(src_test_fuzz_fuzz_http_SOURCES)
src_test_fuzz_liboss_fuzz_http_a_CPPFLAGS = $(LIBOSS_FUZZ_CPPFLAGS)
src_test_fuzz_liboss_fuzz_http_a_CFLAGS = $(LIBOSS_FUZZ_CFLAGS)
+endif
+if UNITTESTS_ENABLED
src_test_fuzz_liboss_fuzz_http_connect_a_SOURCES = \
$(src_test_fuzz_fuzz_http_connect_SOURCES)
src_test_fuzz_liboss_fuzz_http_connect_a_CPPFLAGS = $(LIBOSS_FUZZ_CPPFLAGS)
src_test_fuzz_liboss_fuzz_http_connect_a_CFLAGS = $(LIBOSS_FUZZ_CFLAGS)
+endif
+if UNITTESTS_ENABLED
src_test_fuzz_liboss_fuzz_iptsv2_a_SOURCES = \
$(src_test_fuzz_fuzz_iptsv2_SOURCES)
src_test_fuzz_liboss_fuzz_iptsv2_a_CPPFLAGS = $(LIBOSS_FUZZ_CPPFLAGS)
src_test_fuzz_liboss_fuzz_iptsv2_a_CFLAGS = $(LIBOSS_FUZZ_CFLAGS)
+endif
+if UNITTESTS_ENABLED
src_test_fuzz_liboss_fuzz_microdesc_a_SOURCES = \
$(src_test_fuzz_fuzz_microdesc_SOURCES)
src_test_fuzz_liboss_fuzz_microdesc_a_CPPFLAGS = $(LIBOSS_FUZZ_CPPFLAGS)
src_test_fuzz_liboss_fuzz_microdesc_a_CFLAGS = $(LIBOSS_FUZZ_CFLAGS)
+endif
+if UNITTESTS_ENABLED
+src_test_fuzz_liboss_fuzz_socks_a_SOURCES = \
+ $(src_test_fuzz_fuzz_socks_SOURCES)
+src_test_fuzz_liboss_fuzz_socks_a_CPPFLAGS = $(LIBOSS_FUZZ_CPPFLAGS)
+src_test_fuzz_liboss_fuzz_socks_a_CFLAGS = $(LIBOSS_FUZZ_CFLAGS)
+endif
+
+if UNITTESTS_ENABLED
src_test_fuzz_liboss_fuzz_vrs_a_SOURCES = \
$(src_test_fuzz_fuzz_vrs_SOURCES)
src_test_fuzz_liboss_fuzz_vrs_a_CPPFLAGS = $(LIBOSS_FUZZ_CPPFLAGS)
src_test_fuzz_liboss_fuzz_vrs_a_CFLAGS = $(LIBOSS_FUZZ_CFLAGS)
+endif
OSS_FUZZ_FUZZERS = \
src/test/fuzz/liboss-fuzz-consensus.a \
@@ -322,6 +424,7 @@ OSS_FUZZ_FUZZERS = \
src/test/fuzz/liboss-fuzz-http-connect.a \
src/test/fuzz/liboss-fuzz-iptsv2.a \
src/test/fuzz/liboss-fuzz-microdesc.a \
+ src/test/fuzz/liboss-fuzz-socks.a \
src/test/fuzz/liboss-fuzz-vrs.a
else
diff --git a/src/test/include.am b/src/test/include.am
index a749ff1436..9367b0cb82 100644
--- a/src/test/include.am
+++ b/src/test/include.am
@@ -51,7 +51,7 @@ TEST_CHUTNEY_FLAVORS = basic-min bridges-min hs-v2-min hs-v3-min \
TEST_CHUTNEY_FLAVORS_IPV6 = bridges+ipv6-min ipv6-exit-min hs-v23-ipv6-md \
single-onion-ipv6-md
# only run if we can find a stable (or simply another) version of tor
-TEST_CHUTNEY_FLAVORS_MIXED = mixed+hs-v23
+TEST_CHUTNEY_FLAVORS_MIXED = mixed+hs-v2
### This is a lovely feature, but it requires automake >= 1.12, and Tor
### doesn't require that yet.
@@ -117,6 +117,7 @@ src_test_test_SOURCES += \
src/test/test_controller.c \
src/test/test_controller_events.c \
src/test/test_crypto.c \
+ src/test/test_crypto_ope.c \
src/test/test_crypto_openssl.c \
src/test/test_data.c \
src/test/test_dir.c \
@@ -321,6 +322,7 @@ src_test_test_hs_ntor_cl_AM_CPPFLAGS = \
$(AM_CPPFLAGS)
+if UNITTESTS_ENABLED
noinst_PROGRAMS += src/test/test-bt-cl
src_test_test_bt_cl_SOURCES = src/test/test_bt_cl.c
src_test_test_bt_cl_LDADD = \
@@ -330,6 +332,7 @@ src_test_test_bt_cl_LDADD = \
@TOR_LIB_WS32@ @TOR_LIB_IPHLPAPI@ @TOR_LIB_GDI@ @TOR_LIB_USERENV@
src_test_test_bt_cl_CFLAGS = $(AM_CFLAGS) $(TEST_CFLAGS)
src_test_test_bt_cl_CPPFLAGS= $(src_test_AM_CPPFLAGS) $(TEST_CPPFLAGS)
+endif
EXTRA_DIST += \
src/test/bt_test.py \
diff --git a/src/test/log_test_helpers.c b/src/test/log_test_helpers.c
index e814555ba1..0d0f7574c3 100644
--- a/src/test/log_test_helpers.c
+++ b/src/test/log_test_helpers.c
@@ -1,7 +1,7 @@
/* Copyright (c) 2015-2018, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#define LOG_PRIVATE
-#include "lib/log/torlog.h"
+#include "lib/log/log.h"
#include "test/log_test_helpers.h"
/**
diff --git a/src/test/ope_ref.py b/src/test/ope_ref.py
new file mode 100644
index 0000000000..3677e57a61
--- /dev/null
+++ b/src/test/ope_ref.py
@@ -0,0 +1,40 @@
+#!/usr/bin/python3
+# Copyright 2018, The Tor Project, Inc. See LICENSE for licensing info.
+
+# Reference implementation for our rudimentary OPE code, used to
+# generate test vectors. See crypto_ope.c for more details.
+
+from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
+from cryptography.hazmat.primitives.ciphers.algorithms import AES
+from cryptography.hazmat.backends import default_backend
+
+from binascii import a2b_hex
+
+#randomly generated and values.
+KEY = a2b_hex(
+ "19e05891d55232c08c2cad91d612fdb9cbd6691949a0742434a76c80bc6992fe")
+PTS = [ 121132, 82283, 72661, 72941, 123122, 12154, 121574, 11391, 65845,
+ 86301, 61284, 70505, 30438, 60150, 114800, 109403, 21893, 123569,
+ 95617, 48561, 53334, 92746, 7110, 9612, 106958, 46889, 87790, 68878,
+ 47917, 121128, 108602, 28217, 69498, 63870, 57542, 122148, 46254,
+ 42850, 92661, 57720]
+
+IV = b'\x00' * 16
+
+backend = default_backend()
+
+def words():
+ cipher = Cipher(algorithms.AES(KEY), modes.CTR(IV), backend=backend)
+ e = cipher.encryptor()
+ while True:
+ v = e.update(b'\x00\x00')
+ yield v[0] + 256 * v[1] + 1
+
+def encrypt(n):
+ return sum(w for w, _ in zip(words(), range(n)))
+
+def example(n):
+ return ' {{ {}, UINT64_C({}) }},'.format(n, encrypt(n))
+
+for v in PTS:
+ print(example(v))
diff --git a/src/test/test-memwipe.c b/src/test/test-memwipe.c
index 8a4610e904..c879013ed6 100644
--- a/src/test/test-memwipe.c
+++ b/src/test/test-memwipe.c
@@ -5,7 +5,7 @@
#include "lib/crypt_ops/crypto_util.h"
#include "lib/intmath/cmp.h"
-#include "lib/malloc/util_malloc.h"
+#include "lib/malloc/malloc.h"
#include <string.h>
#include <stdio.h>
diff --git a/src/test/test.c b/src/test/test.c
index 2addeec968..f96a0b33ed 100644
--- a/src/test/test.c
+++ b/src/test/test.c
@@ -26,6 +26,8 @@
#include <dirent.h>
#endif /* defined(_WIN32) */
+#include <math.h>
+
/* These macros pull in declarations for some functions and structures that
* are typically file-private. */
#define ROUTER_PRIVATE
@@ -34,14 +36,6 @@
#define MAIN_PRIVATE
#define STATEFILE_PRIVATE
-/*
- * Linux doesn't provide lround in math.h by default, but mac os does...
- * It's best just to leave math.h out of the picture entirely.
- */
-//#include <math.h>
-long int lround(double x);
-double fabs(double x);
-
#include "core/or/or.h"
#include "lib/err/backtrace.h"
#include "lib/container/buffers.h"
@@ -865,6 +859,7 @@ struct testgroup_t testgroups[] = {
{ "control/", controller_tests },
{ "control/event/", controller_event_tests },
{ "crypto/", crypto_tests },
+ { "crypto/ope/", crypto_ope_tests },
{ "crypto/openssl/", crypto_openssl_tests },
{ "dir/", dir_tests },
{ "dir_handle_get/", dir_handle_get_tests },
diff --git a/src/test/test.h b/src/test/test.h
index 602acca1cd..bfe50cbb8c 100644
--- a/src/test/test.h
+++ b/src/test/test.h
@@ -203,6 +203,7 @@ extern struct testcase_t container_tests[];
extern struct testcase_t controller_tests[];
extern struct testcase_t controller_event_tests[];
extern struct testcase_t crypto_tests[];
+extern struct testcase_t crypto_ope_tests[];
extern struct testcase_t crypto_openssl_tests[];
extern struct testcase_t dir_tests[];
extern struct testcase_t dir_handle_get_tests[];
diff --git a/src/test/test_addr.c b/src/test/test_addr.c
index 9ab921c5b6..a9004048a5 100644
--- a/src/test/test_addr.c
+++ b/src/test/test_addr.c
@@ -10,71 +10,16 @@
#include "test/test.h"
#include "feature/client/addressmap.h"
#include "test/log_test_helpers.h"
+#include "lib/net/resolve.h"
#ifdef HAVE_SYS_UN_H
#include <sys/un.h>
#endif
-/** Mocking replacement: only handles localhost. */
-static int
-mock_tor_addr_lookup(const char *name, uint16_t family, tor_addr_t *addr_out)
-{
- if (!strcmp(name, "localhost")) {
- if (family == AF_INET || family == AF_UNSPEC) {
- tor_addr_from_ipv4h(addr_out, 0x7f000001);
- return 0;
- } else if (family == AF_INET6) {
- char bytes[16] = { 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1 };
- tor_addr_from_ipv6_bytes(addr_out, bytes);
- return 0;
- }
- }
- return -1;
-}
-
static void
test_addr_basic(void *arg)
{
- uint32_t u32;
- uint16_t u16;
- char *cp;
-
- /* Test addr_port_lookup */
- (void)arg;
- cp = NULL; u32 = 3; u16 = 3;
- tt_assert(!addr_port_lookup(LOG_WARN, "1.2.3.4", &cp, &u32, &u16));
- tt_str_op(cp,OP_EQ, "1.2.3.4");
- tt_int_op(u32,OP_EQ, 0x01020304u);
- tt_int_op(u16,OP_EQ, 0);
- tor_free(cp);
- tt_assert(!addr_port_lookup(LOG_WARN, "4.3.2.1:99", &cp, &u32, &u16));
- tt_str_op(cp,OP_EQ, "4.3.2.1");
- tt_int_op(u32,OP_EQ, 0x04030201u);
- tt_int_op(u16,OP_EQ, 99);
- tor_free(cp);
-
- MOCK(tor_addr_lookup, mock_tor_addr_lookup);
-
- tt_assert(!addr_port_lookup(LOG_WARN, "nonexistent.address:4040",
- &cp, NULL, &u16));
- tt_str_op(cp,OP_EQ, "nonexistent.address");
- tt_int_op(u16,OP_EQ, 4040);
- tor_free(cp);
- tt_assert(!addr_port_lookup(LOG_WARN, "localhost:9999", &cp, &u32, &u16));
- tt_str_op(cp,OP_EQ, "localhost");
- tt_int_op(u16,OP_EQ, 9999);
- tt_int_op(u32,OP_EQ, 0x7f000001u);
- tor_free(cp);
- u32 = 3;
- tt_assert(!addr_port_lookup(LOG_WARN, "localhost", NULL, &u32, &u16));
- tt_ptr_op(cp,OP_EQ, NULL);
- tt_int_op(u32,OP_EQ, 0x7f000001u);
- tt_int_op(u16,OP_EQ, 0);
- tor_free(cp);
-
- tt_assert(addr_port_lookup(LOG_WARN, "localhost:3", &cp, &u32, NULL));
- tor_free(cp);
+ (void) arg;
tt_int_op(0,OP_EQ, addr_mask_get_bits(0x0u));
tt_int_op(32,OP_EQ, addr_mask_get_bits(0xFFFFFFFFu));
@@ -102,8 +47,7 @@ test_addr_basic(void *arg)
}
done:
- UNMOCK(tor_addr_lookup);
- tor_free(cp);
+ ;
}
#define test_op_ip6_(a,op,b,e1,e2) \
diff --git a/src/test/test_address.c b/src/test/test_address.c
index abe7c2c0ad..e99220f838 100644
--- a/src/test/test_address.c
+++ b/src/test/test_address.c
@@ -24,6 +24,7 @@
#endif /* defined(HAVE_IFCONF_TO_SMARTLIST) */
#include "core/or/or.h"
+#include "feature/nodelist/nodelist.h"
#include "lib/net/address.h"
#include "test/test.h"
#include "test/log_test_helpers.h"
@@ -1139,6 +1140,36 @@ test_address_tor_addr_eq_ipv4h(void *ignored)
tor_free(a);
}
+static void
+test_address_tor_addr_in_same_network_family(void *ignored)
+{
+ (void)ignored;
+ tor_addr_t a, b;
+
+ tor_addr_parse(&a, "8.8.8.8");
+ tor_addr_parse(&b, "8.8.4.4");
+ tt_int_op(addrs_in_same_network_family(&a, &b), OP_EQ, 1);
+
+ tor_addr_parse(&a, "8.8.8.8");
+ tor_addr_parse(&b, "1.1.1.1");
+ tt_int_op(addrs_in_same_network_family(&a, &b), OP_EQ, 0);
+
+ tor_addr_parse(&a, "8.8.8.8");
+ tor_addr_parse(&b, "2001:4860:4860::8844");
+ tt_int_op(addrs_in_same_network_family(&a, &b), OP_EQ, 0);
+
+ tor_addr_parse(&a, "2001:4860:4860::8888");
+ tor_addr_parse(&b, "2001:4860:4860::8844");
+ tt_int_op(addrs_in_same_network_family(&a, &b), OP_EQ, 1);
+
+ tor_addr_parse(&a, "2001:4860:4860::8888");
+ tor_addr_parse(&b, "2001:470:20::2");
+ tt_int_op(addrs_in_same_network_family(&a, &b), OP_EQ, 0);
+
+ done:
+ return;
+}
+
#define ADDRESS_TEST(name, flags) \
{ #name, test_address_ ## name, flags, NULL, NULL }
@@ -1170,6 +1201,7 @@ struct testcase_t address_tests[] = {
ADDRESS_TEST(tor_addr_to_ipv4n, 0),
ADDRESS_TEST(tor_addr_to_mapped_ipv4h, 0),
ADDRESS_TEST(tor_addr_eq_ipv4h, 0),
+ ADDRESS_TEST(tor_addr_in_same_network_family, 0),
END_OF_TESTCASES
};
diff --git a/src/test/test_bt.sh b/src/test/test_bt.sh
index 312905a4e2..df8bcb8eda 100755
--- a/src/test/test_bt.sh
+++ b/src/test/test_bt.sh
@@ -3,6 +3,8 @@
exitcode=0
+ulimit -c 0
+
export ASAN_OPTIONS="handle_segv=0:allow_user_segv_handler=1"
"${builddir:-.}/src/test/test-bt-cl" backtraces || exit $?
"${builddir:-.}/src/test/test-bt-cl" assert 2>&1 | "${PYTHON:-python}" "${abs_top_srcdir:-.}/src/test/bt_test.py" || exitcode="$?"
diff --git a/src/test/test_bt_cl.c b/src/test/test_bt_cl.c
index 716cff36e0..89cbca2066 100644
--- a/src/test/test_bt_cl.c
+++ b/src/test/test_bt_cl.c
@@ -9,7 +9,7 @@
#undef TOR_COVERAGE
#include "core/or/or.h"
#include "lib/err/backtrace.h"
-#include "lib/log/torlog.h"
+#include "lib/log/log.h"
#ifdef HAVE_UNISTD_H
#include <unistd.h>
diff --git a/src/test/test_bwmgt.c b/src/test/test_bwmgt.c
index 7aa053f6c3..7a1782c2c9 100644
--- a/src/test/test_bwmgt.c
+++ b/src/test/test_bwmgt.c
@@ -124,46 +124,52 @@ test_bwmgt_token_buf_refill(void *arg)
{
(void)arg;
token_bucket_rw_t b;
- const uint32_t SEC =
+ const uint32_t BW_SEC =
(uint32_t)monotime_msec_to_approx_coarse_stamp_units(1000);
token_bucket_rw_init(&b, 16*KB, 64*KB, START_TS);
/* Make the buffer much emptier, then let one second elapse. */
token_bucket_rw_dec_read(&b, 48*KB);
tt_int_op(b.read_bucket.bucket, OP_EQ, 16*KB);
- tt_int_op(0, OP_EQ, token_bucket_rw_refill(&b, START_TS + SEC));
+ tt_int_op(0, OP_EQ, token_bucket_rw_refill(&b, START_TS + BW_SEC));
tt_int_op(b.read_bucket.bucket, OP_GT, 32*KB - 300);
tt_int_op(b.read_bucket.bucket, OP_LT, 32*KB + 300);
/* Another half second. */
- tt_int_op(0, OP_EQ, token_bucket_rw_refill(&b, START_TS + SEC*3/2));
+ tt_int_op(0, OP_EQ, token_bucket_rw_refill(&b, START_TS + BW_SEC*3/2));
tt_int_op(b.read_bucket.bucket, OP_GT, 40*KB - 400);
tt_int_op(b.read_bucket.bucket, OP_LT, 40*KB + 400);
- tt_uint_op(b.last_refilled_at_timestamp, OP_EQ, START_TS + SEC*3/2);
+ tt_uint_op(b.last_refilled_at_timestamp, OP_EQ, START_TS + BW_SEC*3/2);
/* No time: nothing happens. */
{
const uint32_t bucket_orig = b.read_bucket.bucket;
- tt_int_op(0, OP_EQ, token_bucket_rw_refill(&b, START_TS + SEC*3/2));
+ tt_int_op(0, OP_EQ, token_bucket_rw_refill(&b, START_TS + BW_SEC*3/2));
tt_int_op(b.read_bucket.bucket, OP_EQ, bucket_orig);
}
/* Another 30 seconds: fill the bucket. */
- tt_int_op(0, OP_EQ, token_bucket_rw_refill(&b, START_TS + SEC*3/2 + SEC*30));
+ tt_int_op(0, OP_EQ, token_bucket_rw_refill(&b,
+ START_TS + BW_SEC*3/2 + BW_SEC*30));
tt_int_op(b.read_bucket.bucket, OP_EQ, b.cfg.burst);
- tt_uint_op(b.last_refilled_at_timestamp, OP_EQ, START_TS + SEC*3/2 + SEC*30);
+ tt_uint_op(b.last_refilled_at_timestamp, OP_EQ,
+ START_TS + BW_SEC*3/2 + BW_SEC*30);
/* Another 30 seconds: nothing happens. */
- tt_int_op(0, OP_EQ, token_bucket_rw_refill(&b, START_TS + SEC*3/2 + SEC*60));
+ tt_int_op(0, OP_EQ, token_bucket_rw_refill(&b,
+ START_TS + BW_SEC*3/2 + BW_SEC*60));
tt_int_op(b.read_bucket.bucket, OP_EQ, b.cfg.burst);
- tt_uint_op(b.last_refilled_at_timestamp, OP_EQ, START_TS + SEC*3/2 + SEC*60);
+ tt_uint_op(b.last_refilled_at_timestamp, OP_EQ,
+ START_TS + BW_SEC*3/2 + BW_SEC*60);
/* Empty the bucket, let two seconds pass, and make sure that a refill is
* noticed. */
tt_int_op(1, OP_EQ, token_bucket_rw_dec_read(&b, b.cfg.burst));
tt_int_op(0, OP_EQ, b.read_bucket.bucket);
- tt_int_op(1, OP_EQ, token_bucket_rw_refill(&b, START_TS + SEC*3/2 + SEC*61));
- tt_int_op(0, OP_EQ, token_bucket_rw_refill(&b, START_TS + SEC*3/2 + SEC*62));
+ tt_int_op(1, OP_EQ, token_bucket_rw_refill(&b,
+ START_TS + BW_SEC*3/2 + BW_SEC*61));
+ tt_int_op(0, OP_EQ, token_bucket_rw_refill(&b,
+ START_TS + BW_SEC*3/2 + BW_SEC*62));
tt_int_op(b.read_bucket.bucket, OP_GT, 32*KB-400);
tt_int_op(b.read_bucket.bucket, OP_LT, 32*KB+400);
@@ -172,16 +178,16 @@ test_bwmgt_token_buf_refill(void *arg)
token_bucket_rw_dec_read(&b, b.read_bucket.bucket+16*KB));
tt_int_op(-16*KB, OP_EQ, b.read_bucket.bucket);
// half a second passes...
- tt_int_op(0, OP_EQ, token_bucket_rw_refill(&b, START_TS + SEC*64));
+ tt_int_op(0, OP_EQ, token_bucket_rw_refill(&b, START_TS + BW_SEC*64));
tt_int_op(b.read_bucket.bucket, OP_GT, -8*KB-300);
tt_int_op(b.read_bucket.bucket, OP_LT, -8*KB+300);
// a second passes
- tt_int_op(1, OP_EQ, token_bucket_rw_refill(&b, START_TS + SEC*65));
+ tt_int_op(1, OP_EQ, token_bucket_rw_refill(&b, START_TS + BW_SEC*65));
tt_int_op(b.read_bucket.bucket, OP_GT, 8*KB-400);
tt_int_op(b.read_bucket.bucket, OP_LT, 8*KB+400);
// We step a second backwards, and nothing happens.
- tt_int_op(0, OP_EQ, token_bucket_rw_refill(&b, START_TS + SEC*64));
+ tt_int_op(0, OP_EQ, token_bucket_rw_refill(&b, START_TS + BW_SEC*64));
tt_int_op(b.read_bucket.bucket, OP_GT, 8*KB-400);
tt_int_op(b.read_bucket.bucket, OP_LT, 8*KB+400);
@@ -225,4 +231,3 @@ struct testcase_t bwmgt_tests[] = {
BWMGT(token_buf_helpers),
END_OF_TESTCASES
};
-
diff --git a/src/test/test_config.c b/src/test/test_config.c
index af3a8a7cfe..bf21a8d512 100644
--- a/src/test/test_config.c
+++ b/src/test/test_config.c
@@ -10,6 +10,7 @@
#define ROUTERSET_PRIVATE
#include "core/or/or.h"
#include "lib/net/address.h"
+#include "lib/net/resolve.h"
#include "feature/client/addressmap.h"
#include "feature/client/bridges.h"
#include "core/or/circuitmux_ewma.h"
@@ -4636,6 +4637,20 @@ test_config_parse_port_config__ports__ports_given(void *data)
tor_addr_parse(&addr, "127.0.0.46");
tt_assert(tor_addr_eq(&port_cfg->addr, &addr))
+ // Test success with a port of auto in mixed case
+ config_free_lines(config_port_valid); config_port_valid = NULL;
+ SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf));
+ smartlist_clear(slout);
+ config_port_valid = mock_config_line("DNSPort", "AuTo");
+ ret = parse_port_config(slout, config_port_valid, "DNS", 0,
+ "127.0.0.46", 0, 0);
+ tt_int_op(ret, OP_EQ, 0);
+ tt_int_op(smartlist_len(slout), OP_EQ, 1);
+ port_cfg = (port_cfg_t *)smartlist_get(slout, 0);
+ tt_int_op(port_cfg->port, OP_EQ, CFG_AUTO_PORT);
+ tor_addr_parse(&addr, "127.0.0.46");
+ tt_assert(tor_addr_eq(&port_cfg->addr, &addr))
+
// Test success with parsing both an address and an auto port
config_free_lines(config_port_valid); config_port_valid = NULL;
SMARTLIST_FOREACH(slout,port_cfg_t *,pf,port_cfg_free(pf));
@@ -5585,6 +5600,12 @@ test_config_include_opened_file_list(void *data)
config_line_t *result = NULL;
smartlist_t *opened_files = smartlist_new();
+ char *torrcd = NULL;
+ char *subfolder = NULL;
+ char *path = NULL;
+ char *empty = NULL;
+ char *file = NULL;
+ char *dot = NULL;
char *dir = tor_strdup(get_fname("test_include_opened_file_list"));
tt_ptr_op(dir, OP_NE, NULL);
@@ -5594,8 +5615,7 @@ test_config_include_opened_file_list(void *data)
tt_int_op(mkdir(dir, 0700), OP_EQ, 0);
#endif
- char torrcd[PATH_MAX+1];
- tor_snprintf(torrcd, sizeof(torrcd), "%s"PATH_SEPARATOR"%s", dir, "torrc.d");
+ tor_asprintf(&torrcd, "%s"PATH_SEPARATOR"%s", dir, "torrc.d");
#ifdef _WIN32
tt_int_op(mkdir(torrcd), OP_EQ, 0);
@@ -5603,9 +5623,7 @@ test_config_include_opened_file_list(void *data)
tt_int_op(mkdir(torrcd, 0700), OP_EQ, 0);
#endif
- char subfolder[PATH_MAX+1];
- tor_snprintf(subfolder, sizeof(subfolder), "%s"PATH_SEPARATOR"%s", torrcd,
- "subfolder");
+ tor_asprintf(&subfolder, "%s"PATH_SEPARATOR"%s", torrcd, "subfolder");
#ifdef _WIN32
tt_int_op(mkdir(subfolder), OP_EQ, 0);
@@ -5613,21 +5631,17 @@ test_config_include_opened_file_list(void *data)
tt_int_op(mkdir(subfolder, 0700), OP_EQ, 0);
#endif
- char path[PATH_MAX+1];
- tor_snprintf(path, sizeof(path), "%s"PATH_SEPARATOR"%s", subfolder,
+ tor_asprintf(&path, "%s"PATH_SEPARATOR"%s", subfolder,
"01_file_in_subfolder");
tt_int_op(write_str_to_file(path, "Test 1\n", 0), OP_EQ, 0);
- char empty[PATH_MAX+1];
- tor_snprintf(empty, sizeof(empty), "%s"PATH_SEPARATOR"%s", torrcd, "empty");
+ tor_asprintf(&empty, "%s"PATH_SEPARATOR"%s", torrcd, "empty");
tt_int_op(write_str_to_file(empty, "", 0), OP_EQ, 0);
- char file[PATH_MAX+1];
- tor_snprintf(file, sizeof(file), "%s"PATH_SEPARATOR"%s", torrcd, "file");
+ tor_asprintf(&file, "%s"PATH_SEPARATOR"%s", torrcd, "file");
tt_int_op(write_str_to_file(file, "Test 2\n", 0), OP_EQ, 0);
- char dot[PATH_MAX+1];
- tor_snprintf(dot, sizeof(dot), "%s"PATH_SEPARATOR"%s", torrcd, ".dot");
+ tor_asprintf(&dot, "%s"PATH_SEPARATOR"%s", torrcd, ".dot");
tt_int_op(write_str_to_file(dot, "Test 3\n", 0), OP_EQ, 0);
char torrc_contents[1000];
@@ -5654,6 +5668,12 @@ test_config_include_opened_file_list(void *data)
SMARTLIST_FOREACH(opened_files, char *, f, tor_free(f));
smartlist_free(opened_files);
config_free_lines(result);
+ tor_free(torrcd);
+ tor_free(subfolder);
+ tor_free(path);
+ tor_free(empty);
+ tor_free(file);
+ tor_free(dot);
tor_free(dir);
}
@@ -5725,6 +5745,72 @@ test_config_compute_max_mem_in_queues(void *data)
#undef MEGABYTE
}
+static void
+test_config_extended_fmt(void *arg)
+{
+ (void)arg;
+ config_line_t *lines = NULL, *lp;
+ const char string1[] =
+ "thing1 is here\n"
+ "+thing2 is over here\n"
+ "/thing3\n"
+ "/thing4 is back here\n";
+
+ /* Try with the "extended" flag disabled. */
+ int r = config_get_lines(string1, &lines, 0);
+ tt_int_op(r, OP_EQ, 0);
+ lp = lines;
+ tt_ptr_op(lp, OP_NE, NULL);
+ tt_str_op(lp->key, OP_EQ, "thing1");
+ tt_str_op(lp->value, OP_EQ, "is here");
+ tt_int_op(lp->command, OP_EQ, CONFIG_LINE_NORMAL);
+ lp = lp->next;
+ tt_ptr_op(lp, OP_NE, NULL);
+ tt_str_op(lp->key, OP_EQ, "+thing2");
+ tt_str_op(lp->value, OP_EQ, "is over here");
+ tt_int_op(lp->command, OP_EQ, CONFIG_LINE_NORMAL);
+ lp = lp->next;
+ tt_ptr_op(lp, OP_NE, NULL);
+ tt_str_op(lp->key, OP_EQ, "/thing3");
+ tt_str_op(lp->value, OP_EQ, "");
+ tt_int_op(lp->command, OP_EQ, CONFIG_LINE_NORMAL);
+ lp = lp->next;
+ tt_ptr_op(lp, OP_NE, NULL);
+ tt_str_op(lp->key, OP_EQ, "/thing4");
+ tt_str_op(lp->value, OP_EQ, "is back here");
+ tt_int_op(lp->command, OP_EQ, CONFIG_LINE_NORMAL);
+ lp = lp->next;
+ config_free_lines(lines);
+
+ /* Try with the "extended" flag enabled. */
+ r = config_get_lines(string1, &lines, 1);
+ tt_int_op(r, OP_EQ, 0);
+ lp = lines;
+ tt_ptr_op(lp, OP_NE, NULL);
+ tt_str_op(lp->key, OP_EQ, "thing1");
+ tt_str_op(lp->value, OP_EQ, "is here");
+ tt_int_op(lp->command, OP_EQ, CONFIG_LINE_NORMAL);
+ lp = lp->next;
+ tt_ptr_op(lp, OP_NE, NULL);
+ tt_str_op(lp->key, OP_EQ, "thing2");
+ tt_str_op(lp->value, OP_EQ, "is over here");
+ tt_int_op(lp->command, OP_EQ, CONFIG_LINE_APPEND);
+ lp = lp->next;
+ tt_ptr_op(lp, OP_NE, NULL);
+ tt_str_op(lp->key, OP_EQ, "thing3");
+ tt_str_op(lp->value, OP_EQ, "");
+ tt_int_op(lp->command, OP_EQ, CONFIG_LINE_CLEAR);
+ lp = lp->next;
+ tt_ptr_op(lp, OP_NE, NULL);
+ tt_str_op(lp->key, OP_EQ, "thing4");
+ tt_str_op(lp->value, OP_EQ, "");
+ tt_int_op(lp->command, OP_EQ, CONFIG_LINE_CLEAR);
+ lp = lp->next;
+
+ done:
+ config_free_lines(lines);
+}
+
#define CONFIG_TEST(name, flags) \
{ #name, test_config_ ## name, flags, NULL, NULL }
@@ -5775,5 +5861,6 @@ struct testcase_t config_tests[] = {
CONFIG_TEST(check_bridge_distribution_setting_unrecognised, 0),
CONFIG_TEST(include_opened_file_list, 0),
CONFIG_TEST(compute_max_mem_in_queues, 0),
+ CONFIG_TEST(extended_fmt, 0),
END_OF_TESTCASES
};
diff --git a/src/test/test_connection.c b/src/test/test_connection.c
index c423c6573f..e716c83fe1 100644
--- a/src/test/test_connection.c
+++ b/src/test/test_connection.c
@@ -20,6 +20,7 @@
#include "feature/rend/rendcache.h"
#include "feature/dircache/directory.h"
#include "core/or/connection_or.h"
+#include "lib/net/resolve.h"
#include "test/test_connection.h"
#include "test/test_helpers.h"
@@ -899,4 +900,3 @@ struct testcase_t connection_tests[] = {
{ "failed_orconn_tracker", test_failed_orconn_tracker, TT_FORK, NULL, NULL },
END_OF_TESTCASES
};
-
diff --git a/src/test/test_controller.c b/src/test/test_controller.c
index 2ded04619c..d0aa868448 100644
--- a/src/test/test_controller.c
+++ b/src/test/test_controller.c
@@ -14,6 +14,7 @@
#include "feature/nodelist/nodelist.h"
#include "test/test.h"
#include "test/test_helpers.h"
+#include "lib/net/resolve.h"
#include "feature/control/control_connection_st.h"
#include "feature/dirclient/download_status_st.h"
diff --git a/src/test/test_crypto_ope.c b/src/test/test_crypto_ope.c
new file mode 100644
index 0000000000..7dcad7b4b2
--- /dev/null
+++ b/src/test/test_crypto_ope.c
@@ -0,0 +1,152 @@
+/* Copyright (c) 2001-2004, Roger Dingledine.
+ * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+#include "orconfig.h"
+
+#define CRYPTO_OPE_PRIVATE
+
+#include "lib/crypt_ops/crypto_ope.h"
+#include "lib/crypt_ops/crypto.h"
+#include "lib/encoding/binascii.h"
+#include "test/test.h"
+#include "tinytest.h"
+
+#include <stddef.h>
+#include <string.h>
+
+static void
+test_crypto_ope_consistency(void *arg)
+{
+ (void)arg;
+
+ crypto_ope_t *ope = NULL;
+ crypto_cipher_t *aes = NULL;
+ const int TEST_VALS[] = { 5, 500, 1023, 1024, 1025, 2046, 2047, 2048, 2049,
+ 10000, OPE_INPUT_MAX };
+ unsigned i;
+ const uint8_t key[32] = "A fixed key, chosen arbitrarily.";
+
+ ope = crypto_ope_new(key);
+ tt_assert(ope);
+
+ uint64_t last_val = 0;
+ for (i = 0; i < ARRAY_LENGTH(TEST_VALS); ++i) {
+ aes = ope_get_cipher(ope, 0);
+ int val = TEST_VALS[i];
+ uint64_t v1 = crypto_ope_encrypt(ope, val);
+ uint64_t v2 = sum_values_from_cipher(aes, val);
+ tt_u64_op(v1, OP_EQ, v2);
+ tt_u64_op(v2, OP_GT, last_val);
+ last_val = v2;
+ crypto_cipher_free(aes);
+ }
+
+ done:
+ crypto_cipher_free(aes);
+ crypto_ope_free(ope);
+}
+
+static void
+test_crypto_ope_oob(void *arg)
+{
+ (void)arg;
+
+ crypto_ope_t *ope = NULL;
+ const uint8_t key[32] = "A fixed key, chosen arbitrarily.";
+ ope = crypto_ope_new(key);
+
+ tt_u64_op(UINT64_MAX, OP_EQ, crypto_ope_encrypt(ope,INT_MIN));
+ tt_u64_op(UINT64_MAX, OP_EQ, crypto_ope_encrypt(ope,-100));
+ tt_u64_op(UINT64_MAX, OP_EQ, crypto_ope_encrypt(ope,0));
+ tt_u64_op(UINT64_MAX, OP_NE, crypto_ope_encrypt(ope,1));
+ tt_u64_op(UINT64_MAX, OP_NE, crypto_ope_encrypt(ope,7000));
+ tt_u64_op(UINT64_MAX, OP_NE, crypto_ope_encrypt(ope,OPE_INPUT_MAX));
+ tt_u64_op(UINT64_MAX, OP_EQ, crypto_ope_encrypt(ope,OPE_INPUT_MAX+1));
+ tt_u64_op(UINT64_MAX, OP_EQ, crypto_ope_encrypt(ope,INT_MAX));
+ done:
+ crypto_ope_free(ope);
+}
+
+static const char OPE_TEST_KEY[] =
+ "19e05891d55232c08c2cad91d612fdb9cbd6691949a0742434a76c80bc6992fe";
+
+/* generated by a separate python implementation. */
+static const struct {
+ int v;
+ uint64_t r;
+} OPE_TEST_VECTORS[] = {
+ { 121132, UINT64_C(3971694514) },
+ { 82283, UINT64_C(2695743564) },
+ { 72661, UINT64_C(2381548866) },
+ { 72941, UINT64_C(2390408421) },
+ { 123122, UINT64_C(4036781069) },
+ { 12154, UINT64_C(402067100) },
+ { 121574, UINT64_C(3986197593) },
+ { 11391, UINT64_C(376696838) },
+ { 65845, UINT64_C(2161801517) },
+ { 86301, UINT64_C(2828270975) },
+ { 61284, UINT64_C(2013616892) },
+ { 70505, UINT64_C(2313368870) },
+ { 30438, UINT64_C(1001394664) },
+ { 60150, UINT64_C(1977329668) },
+ { 114800, UINT64_C(3764946628) },
+ { 109403, UINT64_C(3585352477) },
+ { 21893, UINT64_C(721388468) },
+ { 123569, UINT64_C(4051780471) },
+ { 95617, UINT64_C(3134921876) },
+ { 48561, UINT64_C(1597596985) },
+ { 53334, UINT64_C(1753691710) },
+ { 92746, UINT64_C(3040874493) },
+ { 7110, UINT64_C(234966492) },
+ { 9612, UINT64_C(318326551) },
+ { 106958, UINT64_C(3506124249) },
+ { 46889, UINT64_C(1542219146) },
+ { 87790, UINT64_C(2877361609) },
+ { 68878, UINT64_C(2260369112) },
+ { 47917, UINT64_C(1576681737) },
+ { 121128, UINT64_C(3971553290) },
+ { 108602, UINT64_C(3559176081) },
+ { 28217, UINT64_C(929692460) },
+ { 69498, UINT64_C(2280554161) },
+ { 63870, UINT64_C(2098322675) },
+ { 57542, UINT64_C(1891698992) },
+ { 122148, UINT64_C(4004515805) },
+ { 46254, UINT64_C(1521227949) },
+ { 42850, UINT64_C(1408996941) },
+ { 92661, UINT64_C(3037901517) },
+ { 57720, UINT64_C(1897369989) },
+};
+
+static void
+test_crypto_ope_vectors(void *arg)
+{
+ (void)arg;
+ uint8_t key[32];
+ crypto_ope_t *ope = NULL, *ope2 = NULL;
+
+ base16_decode((char*)key, 32, OPE_TEST_KEY, strlen(OPE_TEST_KEY));
+
+ ope = crypto_ope_new(key);
+ key[8] += 1;
+ ope2 = crypto_ope_new(key);
+ unsigned i;
+ for (i = 0; i < ARRAY_LENGTH(OPE_TEST_VECTORS); ++i) {
+ int val = OPE_TEST_VECTORS[i].v;
+ uint64_t res = OPE_TEST_VECTORS[i].r;
+
+ tt_u64_op(crypto_ope_encrypt(ope, val), OP_EQ, res);
+ tt_u64_op(crypto_ope_encrypt(ope2, val), OP_NE, res);
+ }
+ done:
+ crypto_ope_free(ope);
+ crypto_ope_free(ope2);
+}
+
+struct testcase_t crypto_ope_tests[] = {
+ { "consistency", test_crypto_ope_consistency, 0, NULL, NULL },
+ { "oob", test_crypto_ope_oob, 0, NULL, NULL },
+ { "vectors", test_crypto_ope_vectors, 0, NULL, NULL },
+ END_OF_TESTCASES
+};
diff --git a/src/test/test_crypto_openssl.c b/src/test/test_crypto_openssl.c
index b1a5613eaf..92f9cbab2f 100644
--- a/src/test/test_crypto_openssl.c
+++ b/src/test/test_crypto_openssl.c
@@ -10,7 +10,7 @@
#include "lib/crypt_ops/compat_openssl.h"
#include "lib/crypt_ops/crypto_rand.h"
#include "lib/encoding/binascii.h"
-#include "lib/malloc/util_malloc.h"
+#include "lib/malloc/malloc.h"
#include "test/test.h"
#include <openssl/evp.h>
diff --git a/src/test/test_dir.c b/src/test/test_dir.c
index bda56b3a8e..c2f3f5297d 100644
--- a/src/test/test_dir.c
+++ b/src/test/test_dir.c
@@ -23,6 +23,7 @@
#include "app/config/confparse.h"
#include "app/config/config.h"
#include "feature/control/control.h"
+#include "lib/encoding/confline.h"
#include "lib/crypt_ops/crypto_ed25519.h"
#include "lib/crypt_ops/crypto_format.h"
#include "lib/crypt_ops/crypto_rand.h"
@@ -1591,25 +1592,6 @@ test_dir_measured_bw_kb(void *arg)
return;
}
-/* Test dirserv_read_measured_bandwidths */
-static void
-test_dir_dirserv_read_measured_bandwidths_empty(void *arg)
-{
- char *fname=NULL;
- (void)arg;
-
- fname = tor_strdup(get_fname("V3BandwidthsFile"));
- /* Test an empty file */
- write_str_to_file(fname, "", 0);
- setup_capture_of_logs(LOG_WARN);
- tt_int_op(-1, OP_EQ, dirserv_read_measured_bandwidths(fname, NULL));
- expect_log_msg("Empty bandwidth file\n");
-
- done:
- tor_free(fname);
- teardown_capture_of_logs();
-}
-
/* Unit tests for measured_bw_line_parse using line_is_after_headers flag.
* When the end of the header is detected (a first complete bw line is parsed),
* incomplete lines fail and give warnings, but do not give warnings if
@@ -1653,7 +1635,7 @@ test_dir_measured_bw_kb_line_is_after_headers(void *arg)
teardown_capture_of_logs();
}
-/* Test dirserv_read_measured_bandwidths with whole files. */
+/* Test dirserv_read_measured_bandwidths with headers and complete files. */
static void
test_dir_dirserv_read_measured_bandwidths(void *arg)
{
@@ -1661,76 +1643,321 @@ test_dir_dirserv_read_measured_bandwidths(void *arg)
char *content = NULL;
time_t timestamp = time(NULL);
char *fname = tor_strdup(get_fname("V3BandwidthsFile"));
-
- /* Test Torflow file only with timestamp*/
- tor_asprintf(&content, "%ld", (long)timestamp);
- write_str_to_file(fname, content, 0);
- tor_free(content);
- tt_int_op(-1, OP_EQ, dirserv_read_measured_bandwidths(fname, NULL));
-
- /* Test Torflow file with timestamp followed by '\n' */
- tor_asprintf(&content, "%ld\n", (long)timestamp);
- write_str_to_file(fname, content, 0);
- tor_free(content);
- tt_int_op(0, OP_EQ, dirserv_read_measured_bandwidths(fname, NULL));
-
- /* Test Torflow complete file*/
- const char *torflow_relay_lines=
+ smartlist_t *bw_file_headers = smartlist_new();
+ /* bw file strings in vote */
+ char *bw_file_headers_str = NULL;
+ char *bw_file_headers_str_v100 = NULL;
+ char *bw_file_headers_str_v110 = NULL;
+ char *bw_file_headers_str_bad = NULL;
+ char *bw_file_headers_str_extra = NULL;
+ char bw_file_headers_str_long[MAX_BW_FILE_HEADER_COUNT_IN_VOTE * 8 + 1] = "";
+ /* string header lines in bw file */
+ char *header_lines_v100 = NULL;
+ char *header_lines_v110_no_terminator = NULL;
+ char *header_lines_v110 = NULL;
+ char header_lines_long[MAX_BW_FILE_HEADER_COUNT_IN_VOTE * 8 + 1] = "";
+ int i;
+ const char *header_lines_v110_no_terminator_no_timestamp =
+ "version=1.1.0\n"
+ "software=sbws\n"
+ "software_version=0.1.0\n"
+ "earliest_bandwidth=2018-05-08T16:13:26\n"
+ "file_created=2018-04-16T21:49:18\n"
+ "generator_started=2018-05-08T16:13:25\n"
+ "latest_bandwidth=2018-04-16T20:49:18\n";
+ const char *bw_file_headers_str_v110_no_timestamp =
+ "version=1.1.0 software=sbws "
+ "software_version=0.1.0 "
+ "earliest_bandwidth=2018-05-08T16:13:26 "
+ "file_created=2018-04-16T21:49:18 "
+ "generator_started=2018-05-08T16:13:25 "
+ "latest_bandwidth=2018-04-16T20:49:18";
+ const char *relay_lines_v100 =
"node_id=$557365204145532d32353620696e73746561642e bw=1024 "
"nick=Test measured_at=1523911725 updated_at=1523911725 "
"pid_error=4.11374090719 pid_error_sum=4.11374090719 "
"pid_bw=57136645 pid_delta=2.12168374577 circ_fail=0.2 "
"scanner=/filepath\n";
-
- tor_asprintf(&content, "%ld\n%s", (long)timestamp, torflow_relay_lines);
+ const char *relay_lines_v110 =
+ "node_id=$68A483E05A2ABDCA6DA5A3EF8DB5177638A27F80 "
+ "master_key_ed25519=YaqV4vbvPYKucElk297eVdNArDz9HtIwUoIeo0+cVIpQ "
+ "bw=760 nick=Test rtt=380 time=2018-05-08T16:13:26\n";
+ const char *relay_lines_bad =
+ "node_id=$68A483E05A2ABDCA6DA5A3EF8DB5177638A\n";
+
+ tor_asprintf(&header_lines_v100, "%ld\n", (long)timestamp);
+ tor_asprintf(&header_lines_v110_no_terminator, "%ld\n%s", (long)timestamp,
+ header_lines_v110_no_terminator_no_timestamp);
+ tor_asprintf(&header_lines_v110, "%s%s",
+ header_lines_v110_no_terminator, BW_FILE_HEADERS_TERMINATOR);
+
+ tor_asprintf(&bw_file_headers_str_v100, "timestamp=%ld",(long)timestamp);
+ tor_asprintf(&bw_file_headers_str_v110, "timestamp=%ld %s",
+ (long)timestamp, bw_file_headers_str_v110_no_timestamp);
+ tor_asprintf(&bw_file_headers_str_bad, "%s "
+ "node_id=$68A483E05A2ABDCA6DA5A3EF8DB5177638A",
+ bw_file_headers_str_v110);
+
+ for (i=0; i<MAX_BW_FILE_HEADER_COUNT_IN_VOTE; i++) {
+ strlcat(header_lines_long, "foo=bar\n",
+ sizeof(header_lines_long));
+ }
+ /* 8 is the number of v110 lines in header_lines_v110 */
+ for (i=0; i<MAX_BW_FILE_HEADER_COUNT_IN_VOTE - 8 - 1; i++) {
+ strlcat(bw_file_headers_str_long, "foo=bar ",
+ sizeof(bw_file_headers_str_long));
+ }
+ strlcat(bw_file_headers_str_long, "foo=bar",
+ sizeof(bw_file_headers_str_long));
+ tor_asprintf(&bw_file_headers_str_extra,
+ "%s %s",
+ bw_file_headers_str_v110,
+ bw_file_headers_str_long);
+
+ /* Test an empty bandwidth file. bw_file_headers will be empty string */
+ write_str_to_file(fname, "", 0);
+ setup_capture_of_logs(LOG_WARN);
+ tt_int_op(-1, OP_EQ, dirserv_read_measured_bandwidths(fname, NULL,
+ bw_file_headers));
+ expect_log_msg("Empty bandwidth file\n");
+ teardown_capture_of_logs();
+ bw_file_headers_str = smartlist_join_strings(bw_file_headers, " ", 0, NULL);
+ tt_str_op("", OP_EQ, bw_file_headers_str);
+ SMARTLIST_FOREACH(bw_file_headers, char *, c, tor_free(c));
+ smartlist_free(bw_file_headers);
+ tor_free(bw_file_headers_str);
+
+ /* Test bandwidth file with only timestamp.
+ * bw_file_headers will be empty string */
+ bw_file_headers = smartlist_new();
+ tor_asprintf(&content, "%ld", (long)timestamp);
write_str_to_file(fname, content, 0);
tor_free(content);
- tt_int_op(0, OP_EQ, dirserv_read_measured_bandwidths(fname, NULL));
-
- /* Test Torflow complete file including v1.1.0 headers */
- const char *v110_header_lines=
- "version=1.1.0\n"
- "software=sbws\n"
- "software_version=0.1.0\n"
- "generator_started=2018-05-08T16:13:25\n"
- "earliest_bandwidth=2018-05-08T16:13:26\n"
- "====\n";
-
- tor_asprintf(&content, "%ld\n%s%s", (long)timestamp, v110_header_lines,
- torflow_relay_lines);
+ tt_int_op(-1, OP_EQ, dirserv_read_measured_bandwidths(fname, NULL,
+ bw_file_headers));
+ bw_file_headers_str = smartlist_join_strings(bw_file_headers, " ", 0, NULL);
+ tt_str_op("", OP_EQ, bw_file_headers_str);
+ SMARTLIST_FOREACH(bw_file_headers, char *, c, tor_free(c));
+ smartlist_free(bw_file_headers);
+ tor_free(bw_file_headers_str);
+
+ /* Test v1.0.0 bandwidth file headers */
+ write_str_to_file(fname, header_lines_v100, 0);
+ bw_file_headers = smartlist_new();
+ tt_int_op(0, OP_EQ, dirserv_read_measured_bandwidths(fname, NULL,
+ bw_file_headers));
+ bw_file_headers_str = smartlist_join_strings(bw_file_headers, " ", 0, NULL);
+ tt_str_op(bw_file_headers_str_v100, OP_EQ, bw_file_headers_str);
+ SMARTLIST_FOREACH(bw_file_headers, char *, c, tor_free(c));
+ smartlist_free(bw_file_headers);
+ tor_free(bw_file_headers_str);
+
+ /* Test v1.0.0 complete bandwidth file */
+ bw_file_headers = smartlist_new();
+ tor_asprintf(&content, "%s%s", header_lines_v100, relay_lines_v100);
write_str_to_file(fname, content, 0);
tor_free(content);
- tt_int_op(0, OP_EQ, dirserv_read_measured_bandwidths(fname, NULL));
-
- /* Test Torflow with additional headers afer a correct bw line */
- tor_asprintf(&content, "%ld\n%s%s", (long)timestamp, torflow_relay_lines,
- v110_header_lines);
+ tt_int_op(0, OP_EQ, dirserv_read_measured_bandwidths(fname, NULL,
+ bw_file_headers));
+ bw_file_headers_str = smartlist_join_strings(bw_file_headers, " ", 0, NULL);
+ tt_str_op(bw_file_headers_str_v100, OP_EQ, bw_file_headers_str);
+ SMARTLIST_FOREACH(bw_file_headers, char *, c, tor_free(c));
+ smartlist_free(bw_file_headers);
+ tor_free(bw_file_headers_str);
+
+ /* Test v1.0.0 complete bandwidth file with NULL bw_file_headers. */
+ tor_asprintf(&content, "%s%s", header_lines_v100, relay_lines_v100);
write_str_to_file(fname, content, 0);
tor_free(content);
- tt_int_op(0, OP_EQ, dirserv_read_measured_bandwidths(fname, NULL));
+ tt_int_op(0, OP_EQ, dirserv_read_measured_bandwidths(fname, NULL, NULL));
- /* Test Torflow with additional headers afer a correct bw line and more
- * bw lines after the headers. */
- tor_asprintf(&content, "%ld\n%s%s%s", (long)timestamp, torflow_relay_lines,
- v110_header_lines, torflow_relay_lines);
+ /* Test bandwidth file including v1.1.0 bandwidth headers and
+ * v1.0.0 relay lines. bw_file_headers will contain the v1.1.0 headers. */
+ bw_file_headers = smartlist_new();
+ tor_asprintf(&content, "%s%s%s", header_lines_v100, header_lines_v110,
+ relay_lines_v100);
write_str_to_file(fname, content, 0);
tor_free(content);
- tt_int_op(0, OP_EQ, dirserv_read_measured_bandwidths(fname, NULL));
-
- /* Test sbws file */
- const char *sbws_relay_lines=
- "node_id=$68A483E05A2ABDCA6DA5A3EF8DB5177638A27F80 "
- "master_key_ed25519=YaqV4vbvPYKucElk297eVdNArDz9HtIwUoIeo0+cVIpQ "
- "bw=760 nick=Test rtt=380 time=2018-05-08T16:13:26\n";
-
- tor_asprintf(&content, "%ld\n%s%s", (long)timestamp, v110_header_lines,
- sbws_relay_lines);
+ tt_int_op(0, OP_EQ, dirserv_read_measured_bandwidths(fname, NULL,
+ bw_file_headers));
+ bw_file_headers_str = smartlist_join_strings(bw_file_headers, " ", 0, NULL);
+ tt_str_op(bw_file_headers_str_v110, OP_EQ, bw_file_headers_str);
+ SMARTLIST_FOREACH(bw_file_headers, char *, c, tor_free(c));
+ smartlist_free(bw_file_headers);
+ tor_free(bw_file_headers_str);
+
+ /* Test v1.0.0 complete bandwidth file with v1.1.0 headers at the end.
+ * bw_file_headers will contain only v1.0.0 headers and the additional
+ * headers will be interpreted as malformed relay lines. */
+ bw_file_headers = smartlist_new();
+ tor_asprintf(&content, "%s%s%s", header_lines_v100, relay_lines_v100,
+ header_lines_v110);
+ write_str_to_file(fname, content, 0);
+ tor_free(content);
+ tt_int_op(0, OP_EQ, dirserv_read_measured_bandwidths(fname, NULL,
+ bw_file_headers));
+ bw_file_headers_str = smartlist_join_strings(bw_file_headers, " ", 0, NULL);
+ tt_str_op(bw_file_headers_str_v100, OP_EQ, bw_file_headers_str);
+ SMARTLIST_FOREACH(bw_file_headers, char *, c, tor_free(c));
+ smartlist_free(bw_file_headers);
+ tor_free(bw_file_headers_str);
+
+ /* Test v1.0.0 complete bandwidth file, the v1.1.0 headers and more relay
+ * lines. bw_file_headers will contain only v1.0.0 headers, the additional
+ * headers will be interpreted as malformed relay lines and the last relay
+ * lines will be correctly interpreted as relay lines. */
+ bw_file_headers = smartlist_new();
+ tor_asprintf(&content, "%s%s%s%s", header_lines_v100, relay_lines_v100,
+ header_lines_v110, relay_lines_v100);
+ write_str_to_file(fname, content, 0);
+ tor_free(content);
+ tt_int_op(0, OP_EQ, dirserv_read_measured_bandwidths(fname, NULL,
+ bw_file_headers));
+ bw_file_headers_str = smartlist_join_strings(bw_file_headers, " ", 0, NULL);
+ tt_str_op(bw_file_headers_str_v100, OP_EQ, bw_file_headers_str);
+ SMARTLIST_FOREACH(bw_file_headers, char *, c, tor_free(c));
+ smartlist_free(bw_file_headers);
+ tor_free(bw_file_headers_str);
+
+ /* Test v1.1.0 bandwidth headers without terminator */
+ bw_file_headers = smartlist_new();
+ write_str_to_file(fname, header_lines_v110_no_terminator, 0);
+ tt_int_op(0, OP_EQ, dirserv_read_measured_bandwidths(fname, NULL,
+ bw_file_headers));
+ bw_file_headers_str = smartlist_join_strings(bw_file_headers, " ", 0, NULL);
+ tt_str_op(bw_file_headers_str_v110, OP_EQ, bw_file_headers_str);
+ SMARTLIST_FOREACH(bw_file_headers, char *, c, tor_free(c));
+ smartlist_free(bw_file_headers);
+ tor_free(bw_file_headers_str);
+
+ /* Test v1.1.0 bandwidth headers with terminator */
+ bw_file_headers = smartlist_new();
+ write_str_to_file(fname, header_lines_v110, 0);
+ tt_int_op(0, OP_EQ, dirserv_read_measured_bandwidths(fname, NULL,
+ bw_file_headers));
+ bw_file_headers_str = smartlist_join_strings(bw_file_headers, " ", 0, NULL);
+ tt_str_op(bw_file_headers_str_v110, OP_EQ, bw_file_headers_str);
+ SMARTLIST_FOREACH(bw_file_headers, char *, c, tor_free(c));
+ smartlist_free(bw_file_headers);
+ tor_free(bw_file_headers_str);
+
+ /* Test v1.1.0 bandwidth file without terminator, then relay lines.
+ * bw_file_headers will contain the v1.1.0 headers. */
+ bw_file_headers = smartlist_new();
+ tor_asprintf(&content, "%s%s",
+ header_lines_v110_no_terminator, relay_lines_v110);
+ write_str_to_file(fname, content, 0);
+ tor_free(content);
+ tt_int_op(0, OP_EQ, dirserv_read_measured_bandwidths(fname, NULL,
+ bw_file_headers));
+ bw_file_headers_str = smartlist_join_strings(bw_file_headers, " ", 0, NULL);
+ tt_str_op(bw_file_headers_str_v110, OP_EQ, bw_file_headers_str);
+ SMARTLIST_FOREACH(bw_file_headers, char *, c, tor_free(c));
+ smartlist_free(bw_file_headers);
+ tor_free(bw_file_headers_str);
+
+ /* Test v1.1.0 bandwidth headers with terminator, then relay lines
+ * bw_file_headers will contain the v1.1.0 headers. */
+ bw_file_headers = smartlist_new();
+ tor_asprintf(&content, "%s%s",
+ header_lines_v110, relay_lines_v110);
+ write_str_to_file(fname, content, 0);
+ tor_free(content);
+ tt_int_op(0, OP_EQ, dirserv_read_measured_bandwidths(fname, NULL,
+ bw_file_headers));
+ bw_file_headers_str = smartlist_join_strings(bw_file_headers, " ", 0, NULL);
+ tt_str_op(bw_file_headers_str_v110, OP_EQ, bw_file_headers_str);
+ SMARTLIST_FOREACH(bw_file_headers, char *, c, tor_free(c));
+ smartlist_free(bw_file_headers);
+ tor_free(bw_file_headers_str);
+
+ /* Test v1.1.0 bandwidth headers with terminator, then bad relay lines,
+ * then terminator, then relay_lines_bad.
+ * bw_file_headers will contain the v1.1.0 headers. */
+ bw_file_headers = smartlist_new();
+ tor_asprintf(&content, "%s%s%s%s", header_lines_v110, relay_lines_bad,
+ BW_FILE_HEADERS_TERMINATOR, relay_lines_bad);
write_str_to_file(fname, content, 0);
tor_free(content);
- tt_int_op(0, OP_EQ, dirserv_read_measured_bandwidths(fname, NULL));
+ tt_int_op(0, OP_EQ, dirserv_read_measured_bandwidths(fname, NULL,
+ bw_file_headers));
+ bw_file_headers_str = smartlist_join_strings(bw_file_headers, " ", 0, NULL);
+ tt_str_op(bw_file_headers_str_v110, OP_EQ, bw_file_headers_str);
+ SMARTLIST_FOREACH(bw_file_headers, char *, c, tor_free(c));
+ smartlist_free(bw_file_headers);
+ tor_free(bw_file_headers_str);
+
+ /* Test v1.1.0 bandwidth headers without terminator, then bad relay lines,
+ * then relay lines. bw_file_headers will contain the v1.1.0 headers and
+ * the bad relay lines. */
+ bw_file_headers = smartlist_new();
+ tor_asprintf(&content, "%s%s%s",
+ header_lines_v110_no_terminator, relay_lines_bad,
+ relay_lines_v110);
+ write_str_to_file(fname, content, 0);
+ tor_free(content);
+ tt_int_op(0, OP_EQ, dirserv_read_measured_bandwidths(fname, NULL,
+ bw_file_headers));
+ bw_file_headers_str = smartlist_join_strings(bw_file_headers, " ", 0, NULL);
+ tt_str_op(bw_file_headers_str_bad, OP_EQ, bw_file_headers_str);
+ SMARTLIST_FOREACH(bw_file_headers, char *, c, tor_free(c));
+ smartlist_free(bw_file_headers);
+ tor_free(bw_file_headers_str);
+
+ /* Test v1.1.0 bandwidth headers without terminator,
+ * then many bad relay lines, then relay lines.
+ * bw_file_headers will contain the v1.1.0 headers and the bad relay lines
+ * to a maximum of MAX_BW_FILE_HEADER_COUNT_IN_VOTE header lines. */
+ bw_file_headers = smartlist_new();
+ tor_asprintf(&content, "%s%s%s",
+ header_lines_v110_no_terminator, header_lines_long,
+ relay_lines_v110);
+ write_str_to_file(fname, content, 0);
+ tor_free(content);
+ tt_int_op(0, OP_EQ, dirserv_read_measured_bandwidths(fname, NULL,
+ bw_file_headers));
+ tt_int_op(MAX_BW_FILE_HEADER_COUNT_IN_VOTE, OP_EQ,
+ smartlist_len(bw_file_headers));
+ bw_file_headers_str = smartlist_join_strings(bw_file_headers, " ", 0, NULL);
+ tt_str_op(bw_file_headers_str_extra, OP_EQ, bw_file_headers_str);
+ SMARTLIST_FOREACH(bw_file_headers, char *, c, tor_free(c));
+ smartlist_free(bw_file_headers);
+ tor_free(bw_file_headers_str);
+
+ /* Test v1.1.0 bandwidth headers without terminator,
+ * then many bad relay lines, then relay lines.
+ * bw_file_headers will contain the v1.1.0 headers and the bad relay lines.
+ * Force bw_file_headers to have more than MAX_BW_FILE_HEADER_COUNT_IN_VOTE
+ * This test is needed while there is not dirvote test. */
+ bw_file_headers = smartlist_new();
+ tor_asprintf(&content, "%s%s%s",
+ header_lines_v110_no_terminator, header_lines_long,
+ relay_lines_v110);
+ write_str_to_file(fname, content, 0);
+ tor_free(content);
+ tt_int_op(0, OP_EQ, dirserv_read_measured_bandwidths(fname, NULL,
+ bw_file_headers));
+ tt_int_op(MAX_BW_FILE_HEADER_COUNT_IN_VOTE, OP_EQ,
+ smartlist_len(bw_file_headers));
+ /* force bw_file_headers to be bigger than
+ * MAX_BW_FILE_HEADER_COUNT_IN_VOTE */
+ char line[8] = "foo=bar\0";
+ smartlist_add_strdup(bw_file_headers, line);
+ tt_int_op(MAX_BW_FILE_HEADER_COUNT_IN_VOTE, OP_LT,
+ smartlist_len(bw_file_headers));
+ SMARTLIST_FOREACH(bw_file_headers, char *, c, tor_free(c));
+ smartlist_free(bw_file_headers);
+ tor_free(bw_file_headers_str);
done:
tor_free(fname);
+ tor_free(header_lines_v100);
+ tor_free(header_lines_v110_no_terminator);
+ tor_free(header_lines_v110);
+ tor_free(bw_file_headers_str_v100);
+ tor_free(bw_file_headers_str_v110);
+ tor_free(bw_file_headers_str_bad);
+ tor_free(bw_file_headers_str_extra);
}
#define MBWC_INIT_TIME 1000
@@ -5979,6 +6206,57 @@ test_dir_networkstatus_consensus_has_ipv6(void *arg)
UNMOCK(networkstatus_get_latest_consensus_by_flavor);
}
+static void
+test_dir_format_versions_list(void *arg)
+{
+ (void)arg;
+ char *s = NULL;
+ config_line_t *lines = NULL;
+
+ setup_capture_of_logs(LOG_WARN);
+ s = format_recommended_version_list(lines, 1);
+ tt_str_op(s, OP_EQ, "");
+
+ tor_free(s);
+ config_line_append(&lines, "ignored", "0.3.4.1, 0.2.9.111-alpha, 4.4.4-rc");
+ s = format_recommended_version_list(lines, 1);
+ tt_str_op(s, OP_EQ, "0.2.9.111-alpha,0.3.4.1,4.4.4-rc");
+
+ tor_free(s);
+ config_line_append(&lines, "ignored", "0.1.2.3,0.2.9.10 ");
+ s = format_recommended_version_list(lines, 1);
+ tt_str_op(s, OP_EQ, "0.1.2.3,0.2.9.10,0.2.9.111-alpha,0.3.4.1,4.4.4-rc");
+
+ /* There should be no warnings so far. */
+ expect_no_log_entry();
+
+ /* Now try a line with a space in it. */
+ tor_free(s);
+ config_line_append(&lines, "ignored", "1.3.3.8 1.3.3.7");
+ s = format_recommended_version_list(lines, 1);
+ tt_str_op(s, OP_EQ, "0.1.2.3,0.2.9.10,0.2.9.111-alpha,0.3.4.1,"
+ "1.3.3.7,1.3.3.8,4.4.4-rc");
+
+ expect_single_log_msg_containing(
+ "Unexpected space in versions list member \"1.3.3.8 1.3.3.7\"." );
+
+ /* Start over, with a line containing a bogus version */
+ config_free_lines(lines);
+ lines = NULL;
+ tor_free(s);
+ mock_clean_saved_logs();
+ config_line_append(&lines, "ignored", "0.1.2.3, alpha-complex, 0.1.1.8-rc");
+ s = format_recommended_version_list(lines,1);
+ tt_str_op(s, OP_EQ, "0.1.1.8-rc,0.1.2.3,alpha-complex");
+ expect_single_log_msg_containing(
+ "Recommended version \"alpha-complex\" does not look valid.");
+
+ done:
+ tor_free(s);
+ config_free_lines(lines);
+ teardown_capture_of_logs();
+}
+
#define DIR_LEGACY(name) \
{ #name, test_dir_ ## name , TT_FORK, NULL, NULL }
@@ -6001,7 +6279,6 @@ struct testcase_t dir_tests[] = {
DIR_LEGACY(versions),
DIR_LEGACY(fp_pairs),
DIR(split_fps, 0),
- DIR_LEGACY(dirserv_read_measured_bandwidths_empty),
DIR_LEGACY(measured_bw_kb),
DIR_LEGACY(measured_bw_kb_line_is_after_headers),
DIR_LEGACY(measured_bw_kb_cache),
@@ -6049,5 +6326,6 @@ struct testcase_t dir_tests[] = {
DIR(networkstatus_compute_bw_weights_v10, 0),
DIR(platform_str, 0),
DIR(networkstatus_consensus_has_ipv6, TT_FORK),
+ DIR(format_versions_list, TT_FORK),
END_OF_TESTCASES
};
diff --git a/src/test/test_helpers.c b/src/test/test_helpers.c
index c666bca59a..c9138611d8 100644
--- a/src/test/test_helpers.c
+++ b/src/test/test_helpers.c
@@ -24,6 +24,7 @@
#include "core/or/relay.h"
#include "feature/nodelist/routerlist.h"
#include "lib/encoding/confline.h"
+#include "lib/net/resolve.h"
#include "core/or/cell_st.h"
#include "core/or/connection_st.h"
diff --git a/src/test/test_hs_cell.c b/src/test/test_hs_cell.c
index b47929e8eb..5b48dd3785 100644
--- a/src/test/test_hs_cell.c
+++ b/src/test/test_hs_cell.c
@@ -39,7 +39,7 @@ test_gen_establish_intro_cell(void *arg)
attempt to parse it. */
{
/* We only need the auth key pair here. */
- hs_service_intro_point_t *ip = service_intro_point_new(NULL, 0);
+ hs_service_intro_point_t *ip = service_intro_point_new(NULL, 0, 0);
/* Auth key pair is generated in the constructor so we are all set for
* using this IP object. */
ret = hs_cell_build_establish_intro(circ_nonce, ip, buf);
@@ -107,7 +107,7 @@ test_gen_establish_intro_cell_bad(void *arg)
ed25519_sign_prefixed() function and make it fail. */
cell = trn_cell_establish_intro_new();
tt_assert(cell);
- ip = service_intro_point_new(NULL, 0);
+ ip = service_intro_point_new(NULL, 0, 0);
cell_len = hs_cell_build_establish_intro(circ_nonce, ip, NULL);
service_intro_point_free(ip);
expect_log_msg_containing("Unable to make signature for "
diff --git a/src/test/test_hs_common.c b/src/test/test_hs_common.c
index f17cc8aeb3..c1001ee5c4 100644
--- a/src/test/test_hs_common.c
+++ b/src/test/test_hs_common.c
@@ -1344,6 +1344,10 @@ run_reachability_scenario(const reachability_cfg_t *cfg, int num_scenario)
&mock_service_ns->fresh_until);
voting_schedule_recalculate_timing(get_options(),
mock_service_ns->valid_after);
+ /* Check that service is in the right time period point */
+ tt_int_op(hs_in_period_between_tp_and_srv(mock_service_ns, 0), OP_EQ,
+ cfg->service_in_new_tp);
+
/* Set client consensus time. */
set_consensus_times(cfg->client_valid_after,
&mock_client_ns->valid_after);
@@ -1353,10 +1357,7 @@ run_reachability_scenario(const reachability_cfg_t *cfg, int num_scenario)
&mock_client_ns->fresh_until);
voting_schedule_recalculate_timing(get_options(),
mock_client_ns->valid_after);
-
- /* New time period checks for this scenario. */
- tt_int_op(hs_in_period_between_tp_and_srv(mock_service_ns, 0), OP_EQ,
- cfg->service_in_new_tp);
+ /* Check that client is in the right time period point */
tt_int_op(hs_in_period_between_tp_and_srv(mock_client_ns, 0), OP_EQ,
cfg->client_in_new_tp);
@@ -1367,7 +1368,8 @@ run_reachability_scenario(const reachability_cfg_t *cfg, int num_scenario)
mock_service_ns->sr_info.previous_srv = cfg->service_previous_srv;
/* Initialize a service to get keys. */
- service = helper_init_service(time(NULL));
+ update_approx_time(mock_service_ns->valid_after);
+ service = helper_init_service(mock_service_ns->valid_after+1);
/*
* === Client setup ===
diff --git a/src/test/test_hs_intropoint.c b/src/test/test_hs_intropoint.c
index 7da376471b..628d99bfde 100644
--- a/src/test/test_hs_intropoint.c
+++ b/src/test/test_hs_intropoint.c
@@ -50,7 +50,7 @@ new_establish_intro_cell(const char *circ_nonce,
/* Auth key pair is generated in the constructor so we are all set for
* using this IP object. */
- ip = service_intro_point_new(NULL, 0);
+ ip = service_intro_point_new(NULL, 0, 0);
tt_assert(ip);
cell_len = hs_cell_build_establish_intro(circ_nonce, ip, buf);
tt_i64_op(cell_len, OP_GT, 0);
@@ -76,7 +76,7 @@ new_establish_intro_encoded_cell(const char *circ_nonce, uint8_t *cell_out)
/* Auth key pair is generated in the constructor so we are all set for
* using this IP object. */
- ip = service_intro_point_new(NULL, 0);
+ ip = service_intro_point_new(NULL, 0, 0);
tt_assert(ip);
cell_len = hs_cell_build_establish_intro(circ_nonce, ip, cell_out);
tt_i64_op(cell_len, OP_GT, 0);
diff --git a/src/test/test_hs_service.c b/src/test/test_hs_service.c
index 8074d260a4..ad0b3ab342 100644
--- a/src/test/test_hs_service.c
+++ b/src/test/test_hs_service.c
@@ -250,7 +250,7 @@ static hs_service_intro_point_t *
helper_create_service_ip(void)
{
hs_desc_link_specifier_t *ls;
- hs_service_intro_point_t *ip = service_intro_point_new(NULL, 0);
+ hs_service_intro_point_t *ip = service_intro_point_new(NULL, 0, 0);
tor_assert(ip);
/* Add a first unused link specifier. */
ls = tor_malloc_zero(sizeof(*ls));
@@ -1044,7 +1044,7 @@ static void
test_rotate_descriptors(void *arg)
{
int ret;
- time_t next_rotation_time, now = time(NULL);
+ time_t next_rotation_time, now;
hs_service_t *service;
hs_service_descriptor_t *desc_next;
@@ -1068,6 +1068,9 @@ test_rotate_descriptors(void *arg)
tt_int_op(ret, OP_EQ, 0);
voting_schedule_recalculate_timing(get_options(), mock_ns.valid_after);
+ update_approx_time(mock_ns.valid_after+1);
+ now = mock_ns.valid_after+1;
+
/* Create a service with a default descriptor and state. It's added to the
* global map. */
service = helper_create_service();
@@ -1106,6 +1109,9 @@ test_rotate_descriptors(void *arg)
tt_int_op(ret, OP_EQ, 0);
voting_schedule_recalculate_timing(get_options(), mock_ns.valid_after);
+ update_approx_time(mock_ns.valid_after+1);
+ now = mock_ns.valid_after+1;
+
/* Note down what to expect for the next rotation time which is 01:00 + 23h
* meaning 00:00:00. */
next_rotation_time = mock_ns.valid_after + (23 * 60 * 60);
@@ -1168,6 +1174,9 @@ test_build_update_descriptors(void *arg)
tt_int_op(ret, OP_EQ, 0);
voting_schedule_recalculate_timing(get_options(), mock_ns.valid_after);
+ update_approx_time(mock_ns.valid_after+1);
+ now = mock_ns.valid_after+1;
+
/* Create a service without a current descriptor to trigger a build. */
service = helper_create_service();
tt_assert(service);
@@ -1309,6 +1318,9 @@ test_build_update_descriptors(void *arg)
&mock_ns.fresh_until);
tt_int_op(ret, OP_EQ, 0);
+ update_approx_time(mock_ns.valid_after+1);
+ now = mock_ns.valid_after+1;
+
/* Create a service without a current descriptor to trigger a build. */
service = helper_create_service();
tt_assert(service);
@@ -1363,7 +1375,7 @@ static void
test_upload_descriptors(void *arg)
{
int ret;
- time_t now = time(NULL);
+ time_t now;
hs_service_t *service;
(void) arg;
@@ -1382,6 +1394,10 @@ test_upload_descriptors(void *arg)
ret = parse_rfc1123_time("Sat, 26 Oct 1985 14:00:00 UTC",
&mock_ns.fresh_until);
tt_int_op(ret, OP_EQ, 0);
+ voting_schedule_recalculate_timing(get_options(), mock_ns.valid_after);
+
+ update_approx_time(mock_ns.valid_after+1);
+ now = mock_ns.valid_after+1;
/* Create a service with no descriptor. It's added to the global map. */
service = hs_service_new(get_options());
@@ -1416,66 +1432,6 @@ test_upload_descriptors(void *arg)
UNMOCK(get_or_state);
}
-/** Test the functions that save and load HS revision counters to state. */
-static void
-test_revision_counter_state(void *arg)
-{
- char *state_line_one = NULL;
- char *state_line_two = NULL;
-
- hs_service_descriptor_t *desc_one = service_descriptor_new();
- hs_service_descriptor_t *desc_two = service_descriptor_new();
-
- (void) arg;
-
- /* Prepare both descriptors */
- desc_one->desc->plaintext_data.revision_counter = 42;
- desc_two->desc->plaintext_data.revision_counter = 240;
- memset(&desc_one->blinded_kp.pubkey.pubkey, 66,
- sizeof(desc_one->blinded_kp.pubkey.pubkey));
- memset(&desc_two->blinded_kp.pubkey.pubkey, 240,
- sizeof(desc_one->blinded_kp.pubkey.pubkey));
-
- /* Turn the descriptor rev counters into state lines */
- state_line_one = encode_desc_rev_counter_for_state(desc_one);
- tt_str_op(state_line_one, OP_EQ,
- "QkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkI 42");
-
- state_line_two = encode_desc_rev_counter_for_state(desc_two);
- tt_str_op(state_line_two, OP_EQ,
- "8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PA 240");
-
- /* Now let's test our state parsing function: */
- int service_found;
- uint64_t cached_rev_counter;
-
- /* First's try with wrong pubkey and check that no service was found */
- cached_rev_counter =check_state_line_for_service_rev_counter(state_line_one,
- &desc_two->blinded_kp.pubkey,
- &service_found);
- tt_int_op(service_found, OP_EQ, 0);
- tt_u64_op(cached_rev_counter, OP_EQ, 0);
-
- /* Now let's try with the right pubkeys */
- cached_rev_counter =check_state_line_for_service_rev_counter(state_line_one,
- &desc_one->blinded_kp.pubkey,
- &service_found);
- tt_int_op(service_found, OP_EQ, 1);
- tt_u64_op(cached_rev_counter, OP_EQ, 42);
-
- cached_rev_counter =check_state_line_for_service_rev_counter(state_line_two,
- &desc_two->blinded_kp.pubkey,
- &service_found);
- tt_int_op(service_found, OP_EQ, 1);
- tt_u64_op(cached_rev_counter, OP_EQ, 240);
-
- done:
- tor_free(state_line_one);
- tor_free(state_line_two);
- service_descriptor_free(desc_one);
- service_descriptor_free(desc_two);
-}
-
/** Global vars used by test_rendezvous1_parsing() */
static char rend1_payload[RELAY_PAYLOAD_SIZE];
static size_t rend1_payload_len = 0;
@@ -1629,8 +1585,6 @@ struct testcase_t hs_service_tests[] = {
NULL, NULL },
{ "upload_descriptors", test_upload_descriptors, TT_FORK,
NULL, NULL },
- { "revision_counter_state", test_revision_counter_state, TT_FORK,
- NULL, NULL },
{ "rendezvous1_parsing", test_rendezvous1_parsing, TT_FORK,
NULL, NULL },
diff --git a/src/test/test_key_expiration.sh b/src/test/test_key_expiration.sh
index 5511dbf18c..cf6608634d 100755
--- a/src/test/test_key_expiration.sh
+++ b/src/test/test_key_expiration.sh
@@ -13,6 +13,14 @@ if [ $# -eq 0 ] || [ ! -f ${1} ] || [ ! -x ${1} ]; then
fi
fi
+UNAME_OS=`uname -s | cut -d_ -f1`
+if test "$UNAME_OS" = 'CYGWIN' || \
+ test "$UNAME_OS" = 'MSYS' || \
+ test "$UNAME_OS" = 'MINGW'; then
+ echo "This test is unreliable on Windows. See trac #26076. Skipping." >&2
+ exit 77
+fi
+
if [ $# -ge 1 ]; then
TOR_BINARY="${1}"
shift
diff --git a/src/test/test_keygen.sh b/src/test/test_keygen.sh
index b3d4d8e39a..455f9e7d42 100755
--- a/src/test/test_keygen.sh
+++ b/src/test/test_keygen.sh
@@ -13,6 +13,14 @@ if [ $# -eq 0 ] || [ ! -f ${1} ] || [ ! -x ${1} ]; then
fi
fi
+UNAME_OS=`uname -s | cut -d_ -f1`
+if test "$UNAME_OS" = 'CYGWIN' || \
+ test "$UNAME_OS" = 'MSYS' || \
+ test "$UNAME_OS" = 'MINGW'; then
+ echo "This test is unreliable on Windows. See trac #26076. Skipping." >&2
+ exit 77
+fi
+
if [ $# -ge 1 ]; then
TOR_BINARY="${1}"
shift
diff --git a/src/test/test_logging.c b/src/test/test_logging.c
index 2e3b8800ac..cd685a4af7 100644
--- a/src/test/test_logging.c
+++ b/src/test/test_logging.c
@@ -7,7 +7,7 @@
#include "core/or/or.h"
#include "app/config/config.h"
#include "lib/err/torerr.h"
-#include "lib/log/torlog.h"
+#include "lib/log/log.h"
#include "test/test.h"
#include "lib/process/subprocess.h"
diff --git a/src/test/test_options.c b/src/test/test_options.c
index a0efd7d051..56b7f3cf0f 100644
--- a/src/test/test_options.c
+++ b/src/test/test_options.c
@@ -21,6 +21,7 @@
#include "lib/encoding/confline.h"
#include "core/or/policies.h"
#include "test/test_helpers.h"
+#include "lib/net/resolve.h"
#define NS_MODULE test_options
@@ -472,6 +473,13 @@ test_options_validate__uname_for_server(void *ignored)
{
(void)ignored;
char *msg;
+
+#ifndef _WIN32
+ int unset_home_env = 0;
+ if (setenv("HOME", "/home/john", 0) == 0)
+ unset_home_env = 1;
+#endif
+
options_test_data_t *tdata = get_options_test_data(
"ORPort 127.0.0.1:5555");
setup_capture_of_logs(LOG_WARN);
@@ -511,6 +519,10 @@ test_options_validate__uname_for_server(void *ignored)
free_options_test_data(tdata);
tor_free(msg);
teardown_capture_of_logs();
+#ifndef _WIN32
+ if (unset_home_env)
+ unsetenv("HOME");
+#endif
}
static void
@@ -1412,6 +1424,13 @@ test_options_validate__paths_needed(void *ignored)
(void)ignored;
int ret;
char *msg;
+
+#ifndef _WIN32
+ int unset_home_env = 0;
+ if (setenv("HOME", "/home/john", 0) == 0)
+ unset_home_env = 1;
+#endif
+
setup_capture_of_logs(LOG_WARN);
options_test_data_t *tdata = get_options_test_data(
"PathsNeededToBuildCircuits 0.1\n"
@@ -1454,6 +1473,10 @@ test_options_validate__paths_needed(void *ignored)
teardown_capture_of_logs();
free_options_test_data(tdata);
tor_free(msg);
+#ifndef _WIN32
+ if (unset_home_env)
+ unsetenv("HOME");
+#endif
}
static void
@@ -1633,6 +1656,18 @@ test_options_validate__reachable_addresses(void *ignored)
tt_str_op(tdata->opt->ReachableAddresses->value, OP_EQ, "*:82");
tor_free(msg);
+ free_options_test_data(tdata);
+ mock_clean_saved_logs();
+ tdata = get_options_test_data("FascistFirewall 1\n"
+ "ReachableAddresses *:82\n"
+ "MaxClientCircuitsPending 1\n"
+ "ConnLimit 1\n");
+
+ ret = options_validate(tdata->old_opt, tdata->opt, tdata->def_opt, 0, &msg);
+ tt_int_op(ret, OP_EQ, -1);
+ tt_ptr_op(tdata->opt->ReachableAddresses->next, OP_EQ, NULL);
+ tor_free(msg);
+
#define SERVERS_REACHABLE_MSG "Servers must be able to freely connect to" \
" the rest of the Internet, so they must not set Reachable*Addresses or" \
" FascistFirewall or FirewallPorts or ClientUseIPv4 0."
diff --git a/src/test/test_periodic_event.c b/src/test/test_periodic_event.c
index 03ba3df793..b447ae8888 100644
--- a/src/test/test_periodic_event.c
+++ b/src/test/test_periodic_event.c
@@ -106,11 +106,11 @@ test_pe_launch(void *arg)
periodic_event_item_t *item = &periodic_events[i];
if (item->roles & PERIODIC_EVENT_ROLE_CLIENT) {
tt_int_op(periodic_event_is_enabled(item), OP_EQ, 1);
- tt_u64_op(item->last_action_time, OP_NE, 0);
} else {
tt_int_op(periodic_event_is_enabled(item), OP_EQ, 0);
- tt_u64_op(item->last_action_time, OP_EQ, 0);
}
+ // enabled or not, the event has not yet been run.
+ tt_u64_op(item->last_action_time, OP_EQ, 0);
}
/* Remove Client but become a Relay. */
@@ -127,12 +127,9 @@ test_pe_launch(void *arg)
/* Only Client role should be disabled. */
if (item->roles == PERIODIC_EVENT_ROLE_CLIENT) {
tt_int_op(periodic_event_is_enabled(item), OP_EQ, 0);
- /* Was previously enabled so they should never be to 0. */
- tt_u64_op(item->last_action_time, OP_NE, 0);
}
if (item->roles & PERIODIC_EVENT_ROLE_RELAY) {
tt_int_op(periodic_event_is_enabled(item), OP_EQ, 1);
- tt_u64_op(item->last_action_time, OP_NE, 0);
}
/* Non Relay role should be disabled, except for Dirserver. */
if (!(item->roles & roles)) {
@@ -330,4 +327,3 @@ struct testcase_t periodic_event_tests[] = {
END_OF_TESTCASES
};
-
diff --git a/src/test/test_policy.c b/src/test/test_policy.c
index 4b1adc91f0..6a07e5b1f8 100644
--- a/src/test/test_policy.c
+++ b/src/test/test_policy.c
@@ -1706,7 +1706,7 @@ test_policies_getinfo_helper_policies(void *arg)
rv = getinfo_helper_policies(NULL, "exit-policy/full", &answer,
&errmsg);
- tt_int_op(rv, OP_EQ, 0);
+ tt_int_op(rv, OP_EQ, -1);
tt_ptr_op(answer, OP_EQ, NULL);
tt_ptr_op(errmsg, OP_NE, NULL);
tt_str_op(errmsg, OP_EQ, "Key digest failed");
diff --git a/src/test/test_pt.c b/src/test/test_pt.c
index dea3791da2..d0160d1148 100644
--- a/src/test/test_pt.c
+++ b/src/test/test_pt.c
@@ -19,6 +19,7 @@
#include "test/test.h"
#include "lib/process/subprocess.h"
#include "lib/encoding/confline.h"
+#include "lib/net/resolve.h"
#include "app/config/or_state_st.h"
diff --git a/src/test/test_routerkeys.c b/src/test/test_routerkeys.c
index 1a1bf63ba0..1a9664aa02 100644
--- a/src/test/test_routerkeys.c
+++ b/src/test/test_routerkeys.c
@@ -262,13 +262,14 @@ test_routerkeys_ed_key_init_basic(void *arg)
unlink(fname2);
/* Fail to load a key that isn't there. */
- kp1 = ed_key_init_from_file(fname1, 0, LOG_INFO, NULL, now, 0, 7, &cert);
+ kp1 = ed_key_init_from_file(fname1, 0, LOG_INFO, NULL, now, 0, 7, &cert,
+ NULL);
tt_assert(kp1 == NULL);
tt_assert(cert == NULL);
/* Create the key if requested to do so. */
kp1 = ed_key_init_from_file(fname1, INIT_ED_KEY_CREATE, LOG_INFO,
- NULL, now, 0, 7, &cert);
+ NULL, now, 0, 7, &cert, NULL);
tt_assert(kp1 != NULL);
tt_assert(cert == NULL);
tt_int_op(stat(get_fname("test_ed_key_1_cert"), &st), OP_LT, 0);
@@ -276,24 +277,24 @@ test_routerkeys_ed_key_init_basic(void *arg)
/* Fail to load if we say we need a cert */
kp2 = ed_key_init_from_file(fname1, INIT_ED_KEY_NEEDCERT, LOG_INFO,
- NULL, now, 0, 7, &cert);
+ NULL, now, 0, 7, &cert, NULL);
tt_assert(kp2 == NULL);
/* Fail to load if we say the wrong key type */
kp2 = ed_key_init_from_file(fname1, 0, LOG_INFO,
- NULL, now, 0, 6, &cert);
+ NULL, now, 0, 6, &cert, NULL);
tt_assert(kp2 == NULL);
/* Load successfully if we're not picky, whether we say "create" or not. */
kp2 = ed_key_init_from_file(fname1, INIT_ED_KEY_CREATE, LOG_INFO,
- NULL, now, 0, 7, &cert);
+ NULL, now, 0, 7, &cert, NULL);
tt_assert(kp2 != NULL);
tt_assert(cert == NULL);
tt_mem_op(kp1, OP_EQ, kp2, sizeof(*kp1));
ed25519_keypair_free(kp2); kp2 = NULL;
kp2 = ed_key_init_from_file(fname1, 0, LOG_INFO,
- NULL, now, 0, 7, &cert);
+ NULL, now, 0, 7, &cert, NULL);
tt_assert(kp2 != NULL);
tt_assert(cert == NULL);
tt_mem_op(kp1, OP_EQ, kp2, sizeof(*kp1));
@@ -302,7 +303,7 @@ test_routerkeys_ed_key_init_basic(void *arg)
/* Now create a key with a cert. */
kp2 = ed_key_init_from_file(fname2, (INIT_ED_KEY_CREATE|
INIT_ED_KEY_NEEDCERT),
- LOG_INFO, kp1, now, 7200, 7, &cert);
+ LOG_INFO, kp1, now, 7200, 7, &cert, NULL);
tt_assert(kp2 != NULL);
tt_assert(cert != NULL);
tt_mem_op(kp1, OP_NE, kp2, sizeof(*kp1));
@@ -315,7 +316,7 @@ test_routerkeys_ed_key_init_basic(void *arg)
/* Now verify we can load the cert... */
kp3 = ed_key_init_from_file(fname2, (INIT_ED_KEY_CREATE|
INIT_ED_KEY_NEEDCERT),
- LOG_INFO, kp1, now, 7200, 7, &cert2);
+ LOG_INFO, kp1, now, 7200, 7, &cert2, NULL);
tt_mem_op(kp2, OP_EQ, kp3, sizeof(*kp2));
tt_mem_op(cert2->encoded, OP_EQ, cert->encoded, cert->encoded_len);
ed25519_keypair_free(kp3); kp3 = NULL;
@@ -323,7 +324,7 @@ test_routerkeys_ed_key_init_basic(void *arg)
/* ... even without create... */
kp3 = ed_key_init_from_file(fname2, INIT_ED_KEY_NEEDCERT,
- LOG_INFO, kp1, now, 7200, 7, &cert2);
+ LOG_INFO, kp1, now, 7200, 7, &cert2, NULL);
tt_mem_op(kp2, OP_EQ, kp3, sizeof(*kp2));
tt_mem_op(cert2->encoded, OP_EQ, cert->encoded, cert->encoded_len);
ed25519_keypair_free(kp3); kp3 = NULL;
@@ -331,13 +332,13 @@ test_routerkeys_ed_key_init_basic(void *arg)
/* ... but that we don't crash or anything if we say we don't want it. */
kp3 = ed_key_init_from_file(fname2, INIT_ED_KEY_NEEDCERT,
- LOG_INFO, kp1, now, 7200, 7, NULL);
+ LOG_INFO, kp1, now, 7200, 7, NULL, NULL);
tt_mem_op(kp2, OP_EQ, kp3, sizeof(*kp2));
ed25519_keypair_free(kp3); kp3 = NULL;
/* Fail if we're told the wrong signing key */
kp3 = ed_key_init_from_file(fname2, INIT_ED_KEY_NEEDCERT,
- LOG_INFO, kp2, now, 7200, 7, &cert2);
+ LOG_INFO, kp2, now, 7200, 7, &cert2, NULL);
tt_assert(kp3 == NULL);
tt_assert(cert2 == NULL);
@@ -368,13 +369,14 @@ test_routerkeys_ed_key_init_split(void *arg)
unlink(fname2);
/* Can't load key that isn't there. */
- kp1 = ed_key_init_from_file(fname1, flags, LOG_INFO, NULL, now, 0, 7, &cert);
+ kp1 = ed_key_init_from_file(fname1, flags, LOG_INFO, NULL, now, 0, 7, &cert,
+ NULL);
tt_assert(kp1 == NULL);
tt_assert(cert == NULL);
/* Create a split key */
kp1 = ed_key_init_from_file(fname1, flags|INIT_ED_KEY_CREATE,
- LOG_INFO, NULL, now, 0, 7, &cert);
+ LOG_INFO, NULL, now, 0, 7, &cert, NULL);
tt_assert(kp1 != NULL);
tt_assert(cert == NULL);
tt_int_op(stat(get_fname("test_ed_key_3_cert"), &st), OP_LT, 0);
@@ -383,7 +385,7 @@ test_routerkeys_ed_key_init_split(void *arg)
/* Load it. */
kp2 = ed_key_init_from_file(fname1, flags|INIT_ED_KEY_CREATE,
- LOG_INFO, NULL, now, 0, 7, &cert);
+ LOG_INFO, NULL, now, 0, 7, &cert, NULL);
tt_assert(kp2 != NULL);
tt_assert(cert == NULL);
tt_mem_op(kp1, OP_EQ, kp2, sizeof(*kp2));
@@ -392,7 +394,7 @@ test_routerkeys_ed_key_init_split(void *arg)
/* Okay, try killing the secret key and loading it. */
unlink(get_fname("test_ed_key_3_secret_key"));
kp2 = ed_key_init_from_file(fname1, flags,
- LOG_INFO, NULL, now, 0, 7, &cert);
+ LOG_INFO, NULL, now, 0, 7, &cert, NULL);
tt_assert(kp2 != NULL);
tt_assert(cert == NULL);
tt_mem_op(&kp1->pubkey, OP_EQ, &kp2->pubkey, sizeof(kp2->pubkey));
@@ -402,7 +404,7 @@ test_routerkeys_ed_key_init_split(void *arg)
/* Even when we're told to "create", don't create if there's a public key */
kp2 = ed_key_init_from_file(fname1, flags|INIT_ED_KEY_CREATE,
- LOG_INFO, NULL, now, 0, 7, &cert);
+ LOG_INFO, NULL, now, 0, 7, &cert, NULL);
tt_assert(kp2 != NULL);
tt_assert(cert == NULL);
tt_mem_op(&kp1->pubkey, OP_EQ, &kp2->pubkey, sizeof(kp2->pubkey));
@@ -412,7 +414,7 @@ test_routerkeys_ed_key_init_split(void *arg)
/* Make sure we fail on a tag mismatch, though */
kp2 = ed_key_init_from_file(fname1, flags,
- LOG_INFO, NULL, now, 0, 99, &cert);
+ LOG_INFO, NULL, now, 0, 99, &cert, NULL);
tt_assert(kp2 == NULL);
done:
diff --git a/src/test/test_rust.sh b/src/test/test_rust.sh
index 4ecca7834d..4afc84285f 100755
--- a/src/test/test_rust.sh
+++ b/src/test/test_rust.sh
@@ -3,13 +3,12 @@
set -e
-export LSAN_OPTIONS=suppressions=${abs_top_srcdir}/src/test/rust_supp.txt
+export LSAN_OPTIONS=suppressions=${abs_top_srcdir:-../../..}/src/test/rust_supp.txt
for cargo_toml_dir in "${abs_top_srcdir:-../../..}"/src/rust/*; do
if [ -e "${cargo_toml_dir}/Cargo.toml" ]; then
- cd "${cargo_toml_dir}" && \
+ cd "${abs_top_builddir:-../../..}/src/rust" && \
CARGO_TARGET_DIR="${abs_top_builddir:-../../..}/src/rust/target" \
- CARGO_HOME="${abs_top_builddir:-../../..}/src/rust/.cargo" \
"${CARGO:-cargo}" test ${CARGO_ONLINE-"--frozen"} \
${EXTRA_CARGO_OPTIONS} \
--manifest-path "${cargo_toml_dir}/Cargo.toml" || exitcode=1
diff --git a/src/test/test_shared_random.c b/src/test/test_shared_random.c
index b0a9da0033..72e4522da1 100644
--- a/src/test/test_shared_random.c
+++ b/src/test/test_shared_random.c
@@ -259,8 +259,7 @@ test_get_start_time_of_current_run(void *arg)
&current_time);
tt_int_op(retval, OP_EQ, 0);
voting_schedule_recalculate_timing(get_options(), current_time);
- run_start_time =
- sr_state_get_start_time_of_current_protocol_run(current_time);
+ run_start_time = sr_state_get_start_time_of_current_protocol_run();
/* Compare it with the correct result */
format_iso_time(tbuf, run_start_time);
@@ -272,8 +271,7 @@ test_get_start_time_of_current_run(void *arg)
&current_time);
tt_int_op(retval, OP_EQ, 0);
voting_schedule_recalculate_timing(get_options(), current_time);
- run_start_time =
- sr_state_get_start_time_of_current_protocol_run(current_time);
+ run_start_time = sr_state_get_start_time_of_current_protocol_run();
/* Compare it with the correct result */
format_iso_time(tbuf, run_start_time);
@@ -285,14 +283,47 @@ test_get_start_time_of_current_run(void *arg)
&current_time);
tt_int_op(retval, OP_EQ, 0);
voting_schedule_recalculate_timing(get_options(), current_time);
- run_start_time =
- sr_state_get_start_time_of_current_protocol_run(current_time);
+ run_start_time = sr_state_get_start_time_of_current_protocol_run();
/* Compare it with the correct result */
format_iso_time(tbuf, run_start_time);
tt_str_op("2015-04-20 00:00:00", OP_EQ, tbuf);
}
+ {
+ /* We want the local time to be past midnight, but the current consensus to
+ * have valid-after 23:00 (e.g. this can happen if we fetch a new consensus
+ * at 00:08 before dircaches have a chance to get the midnight consensus).
+ *
+ * Basically, we want to cause a desynch between ns->valid_after (23:00)
+ * and the voting_schedule.interval_starts (01:00), to make sure that
+ * sr_state_get_start_time_of_current_protocol_run() handles it gracefully:
+ * It should actually follow the local consensus time and not the voting
+ * schedule (which is designed for authority voting purposes). */
+ retval = parse_rfc1123_time("Mon, 20 Apr 2015 00:00:00 UTC",
+ &mock_consensus.fresh_until);
+ tt_int_op(retval, OP_EQ, 0);
+
+ retval = parse_rfc1123_time("Mon, 19 Apr 2015 23:00:00 UTC",
+ &mock_consensus.valid_after);
+
+ retval = parse_rfc1123_time("Mon, 20 Apr 2015 00:08:00 UTC",
+ &current_time);
+ tt_int_op(retval, OP_EQ, 0);
+ update_approx_time(current_time);
+ voting_schedule_recalculate_timing(get_options(), current_time);
+
+ run_start_time = sr_state_get_start_time_of_current_protocol_run();
+
+ /* Compare it with the correct result */
+ format_iso_time(tbuf, run_start_time);
+ tt_str_op("2015-04-19 00:00:00", OP_EQ, tbuf);
+ /* Check that voting_schedule.interval_starts is at 01:00 (see above) */
+ time_t interval_starts = voting_schedule_get_next_valid_after_time();
+ format_iso_time(tbuf, interval_starts);
+ tt_str_op("2015-04-20 01:00:00", OP_EQ, tbuf);
+ }
+
/* Next test is testing it without a consensus to use the testing voting
* interval . */
UNMOCK(networkstatus_get_live_consensus);
@@ -308,8 +339,7 @@ test_get_start_time_of_current_run(void *arg)
&current_time);
tt_int_op(retval, OP_EQ, 0);
voting_schedule_recalculate_timing(get_options(), current_time);
- run_start_time =
- sr_state_get_start_time_of_current_protocol_run(current_time);
+ run_start_time = sr_state_get_start_time_of_current_protocol_run();
/* Compare it with the correct result */
format_iso_time(tbuf, run_start_time);
@@ -342,7 +372,7 @@ test_get_start_time_functions(void *arg)
voting_schedule_recalculate_timing(get_options(), now);
time_t start_time_of_protocol_run =
- sr_state_get_start_time_of_current_protocol_run(now);
+ sr_state_get_start_time_of_current_protocol_run();
tt_assert(start_time_of_protocol_run);
/* Check that the round start time of the beginning of the run, is itself */
diff --git a/src/test/test_socks.c b/src/test/test_socks.c
index e064cc8db1..7f6d8a48f1 100644
--- a/src/test/test_socks.c
+++ b/src/test/test_socks.c
@@ -84,7 +84,7 @@ test_socks_4_supported_commands(void *ptr)
tt_int_op(0,OP_EQ, buf_datalen(buf));
- /* SOCKS 4 Send CONNECT [01] to IP address 2.2.2.2:4370 */
+ /* SOCKS 4 Send CONNECT [01] to IP address 2.2.2.3:4370 */
ADD_DATA(buf, "\x04\x01\x11\x12\x02\x02\x02\x03\x00");
tt_int_op(fetch_from_buf_socks(buf, socks, get_options()->TestSocks,
get_options()->SafeSocks),
@@ -100,7 +100,7 @@ test_socks_4_supported_commands(void *ptr)
tt_int_op(0,OP_EQ, buf_datalen(buf));
socks_request_clear(socks);
- /* SOCKS 4 Send CONNECT [01] to IP address 2.2.2.2:4369 with userid*/
+ /* SOCKS 4 Send CONNECT [01] to IP address 2.2.2.4:4369 with userid*/
ADD_DATA(buf, "\x04\x01\x11\x12\x02\x02\x02\x04me\x00");
tt_int_op(fetch_from_buf_socks(buf, socks, 1, 0),
OP_EQ, 1);
@@ -166,7 +166,7 @@ test_socks_4_bad_arguments(void *ptr)
tt_int_op(fetch_from_buf_socks(buf, socks, 1, 0),
OP_EQ, -1);
buf_clear(buf);
- expect_log_msg_containing("user name too long; rejecting.");
+ expect_log_msg_containing("socks4: parsing failed - invalid request.");
mock_clean_saved_logs();
/* Try with 2000-byte hostname */
@@ -194,7 +194,7 @@ test_socks_4_bad_arguments(void *ptr)
tt_int_op(fetch_from_buf_socks(buf, socks, 1, 0),
OP_EQ, -1);
buf_clear(buf);
- expect_log_msg_containing("Destaddr too long.");
+ expect_log_msg_containing("parsing failed - invalid request.");
mock_clean_saved_logs();
/* Socks4, bogus hostname */
@@ -648,7 +648,8 @@ test_socks_5_malformed_commands(void *ptr)
tt_int_op(5,OP_EQ,socks->socks_version);
tt_int_op(10,OP_EQ,socks->replylen);
tt_int_op(5,OP_EQ,socks->reply[0]);
- tt_int_op(SOCKS5_ADDRESS_TYPE_NOT_SUPPORTED,OP_EQ,socks->reply[1]);
+ /* trunnel parsing will fail with -1 */
+ tt_int_op(SOCKS5_GENERAL_ERROR,OP_EQ,socks->reply[1]);
tt_int_op(1,OP_EQ,socks->reply[3]);
done:
diff --git a/src/test/test_status.c b/src/test/test_status.c
index 3cc23955ad..15c406d2ff 100644
--- a/src/test/test_status.c
+++ b/src/test/test_status.c
@@ -12,7 +12,7 @@
#include <math.h>
#include "core/or/or.h"
-#include "lib/log/torlog.h"
+#include "lib/log/log.h"
#include "tor_queue.h"
#include "core/or/status.h"
#include "core/or/circuitlist.h"
diff --git a/src/test/test_tortls.c b/src/test/test_tortls.c
index 2b40ed72d9..52dafb9f68 100644
--- a/src/test/test_tortls.c
+++ b/src/test/test_tortls.c
@@ -31,7 +31,7 @@ DISABLE_GCC_WARNING(redundant-decls)
ENABLE_GCC_WARNING(redundant-decls)
#include "core/or/or.h"
-#include "lib/log/torlog.h"
+#include "lib/log/log.h"
#include "app/config/config.h"
#include "lib/tls/tortls.h"
#include "app/config/or_state_st.h"
@@ -554,13 +554,6 @@ test_tortls_x509_cert_get_id_digests(void *ignored)
}
#ifndef OPENSSL_OPAQUE
-static int
-fixed_pub_cmp(const EVP_PKEY *a, const EVP_PKEY *b)
-{
- (void) a; (void) b;
- return 1;
-}
-
/*
* Use only for the matching fake_x509_free() call
*/
@@ -586,70 +579,78 @@ fake_x509_free(X509 *cert)
tor_free(cert);
}
}
+#endif
+
+static tor_x509_cert_t *fixed_x509_cert = NULL;
+static tor_x509_cert_t *
+get_peer_cert_mock_return_fixed(tor_tls_t *tls)
+{
+ (void)tls;
+ if (fixed_x509_cert)
+ return tor_x509_cert_dup(fixed_x509_cert);
+ else
+ return NULL;
+}
static void
test_tortls_cert_matches_key(void *ignored)
{
(void)ignored;
- int res;
- tor_tls_t *tls;
- tor_x509_cert_t *cert;
- X509 *one = NULL, *two = NULL;
- EVP_PKEY_ASN1_METHOD *meth = EVP_PKEY_asn1_new(999, 0, NULL, NULL);
- EVP_PKEY_asn1_set_public(meth, NULL, NULL, fixed_pub_cmp, NULL, NULL, NULL);
- tls = tor_malloc_zero(sizeof(tor_tls_t));
- cert = tor_malloc_zero(sizeof(tor_x509_cert_t));
- one = fake_x509_malloc();
- one->references = 1;
- two = fake_x509_malloc();
- two->references = 1;
+ X509 *cert1 = NULL, *cert2 = NULL, *cert3 = NULL, *cert4 = NULL;
+ tor_x509_cert_t *c1 = NULL, *c2 = NULL, *c3 = NULL, *c4 = NULL;
+ crypto_pk_t *k1 = NULL, *k2 = NULL, *k3 = NULL;
- res = tor_tls_cert_matches_key(tls, cert);
- tt_int_op(res, OP_EQ, 0);
+ k1 = pk_generate(1);
+ k2 = pk_generate(2);
+ k3 = pk_generate(3);
- tls->ssl = tor_malloc_zero(sizeof(SSL));
- tls->ssl->session = tor_malloc_zero(sizeof(SSL_SESSION));
- tls->ssl->session->peer = one;
- res = tor_tls_cert_matches_key(tls, cert);
- tt_int_op(res, OP_EQ, 0);
-
- cert->cert = two;
- res = tor_tls_cert_matches_key(tls, cert);
- tt_int_op(res, OP_EQ, 0);
-
- one->cert_info = tor_malloc_zero(sizeof(X509_CINF));
- one->cert_info->key = tor_malloc_zero(sizeof(X509_PUBKEY));
- one->cert_info->key->pkey = tor_malloc_zero(sizeof(EVP_PKEY));
- one->cert_info->key->pkey->references = 1;
- one->cert_info->key->pkey->ameth = meth;
- one->cert_info->key->pkey->type = 1;
-
- two->cert_info = tor_malloc_zero(sizeof(X509_CINF));
- two->cert_info->key = tor_malloc_zero(sizeof(X509_PUBKEY));
- two->cert_info->key->pkey = tor_malloc_zero(sizeof(EVP_PKEY));
- two->cert_info->key->pkey->references = 1;
- two->cert_info->key->pkey->ameth = meth;
- two->cert_info->key->pkey->type = 2;
-
- res = tor_tls_cert_matches_key(tls, cert);
- tt_int_op(res, OP_EQ, 0);
-
- one->cert_info->key->pkey->type = 1;
- two->cert_info->key->pkey->type = 1;
- res = tor_tls_cert_matches_key(tls, cert);
- tt_int_op(res, OP_EQ, 1);
+ cert1 = tor_tls_create_certificate(k1, k2, "A", "B", 1000);
+ cert2 = tor_tls_create_certificate(k1, k3, "C", "D", 1000);
+ cert3 = tor_tls_create_certificate(k2, k3, "C", "D", 1000);
+ cert4 = tor_tls_create_certificate(k3, k2, "E", "F", 1000);
+
+ tt_assert(cert1 && cert2 && cert3 && cert4);
+
+ c1 = tor_x509_cert_new(cert1); cert1 = NULL;
+ c2 = tor_x509_cert_new(cert2); cert2 = NULL;
+ c3 = tor_x509_cert_new(cert3); cert3 = NULL;
+ c4 = tor_x509_cert_new(cert4); cert4 = NULL;
+
+ tt_assert(c1 && c2 && c3 && c4);
+
+ MOCK(tor_tls_get_peer_cert, get_peer_cert_mock_return_fixed);
+
+ fixed_x509_cert = NULL;
+ /* If the peer has no certificate, it shouldn't match anything. */
+ tt_assert(! tor_tls_cert_matches_key(NULL, c1));
+ tt_assert(! tor_tls_cert_matches_key(NULL, c2));
+ tt_assert(! tor_tls_cert_matches_key(NULL, c3));
+ tt_assert(! tor_tls_cert_matches_key(NULL, c4));
+ fixed_x509_cert = c1;
+ /* If the peer has a certificate, it should match every cert with the same
+ * subject key. */
+ tt_assert(tor_tls_cert_matches_key(NULL, c1));
+ tt_assert(tor_tls_cert_matches_key(NULL, c2));
+ tt_assert(! tor_tls_cert_matches_key(NULL, c3));
+ tt_assert(! tor_tls_cert_matches_key(NULL, c4));
done:
- EVP_PKEY_asn1_free(meth);
- tor_free(tls->ssl->session);
- tor_free(tls->ssl);
- tor_free(tls);
- tor_free(cert);
- fake_x509_free(one);
- fake_x509_free(two);
+ tor_x509_cert_free(c1);
+ tor_x509_cert_free(c2);
+ tor_x509_cert_free(c3);
+ tor_x509_cert_free(c4);
+ if (cert1) X509_free(cert1);
+ if (cert2) X509_free(cert2);
+ if (cert3) X509_free(cert3);
+ if (cert4) X509_free(cert4);
+ crypto_pk_free(k1);
+ crypto_pk_free(k2);
+ crypto_pk_free(k3);
+ UNMOCK(tor_tls_get_peer_cert);
}
+#ifndef OPENSSL_OPAQUE
static void
test_tortls_cert_get_key(void *ignored)
{
@@ -2796,7 +2797,7 @@ struct testcase_t tortls_tests[] = {
LOCAL_TEST_CASE(always_accept_verify_cb, 0),
INTRUSIVE_TEST_CASE(x509_cert_free, 0),
LOCAL_TEST_CASE(x509_cert_get_id_digests, 0),
- INTRUSIVE_TEST_CASE(cert_matches_key, 0),
+ LOCAL_TEST_CASE(cert_matches_key, 0),
INTRUSIVE_TEST_CASE(cert_get_key, 0),
LOCAL_TEST_CASE(get_my_client_auth_key, TT_FORK),
LOCAL_TEST_CASE(get_my_certs, TT_FORK),
diff --git a/src/test/test_util.c b/src/test/test_util.c
index 99fee4c5a5..6cbd504e34 100644
--- a/src/test/test_util.c
+++ b/src/test/test_util.c
@@ -922,6 +922,32 @@ test_util_time(void *arg)
teardown_capture_of_logs();
}
}
+ {
+ /* As above, but with localtime. */
+ t_res = -9223372036854775LL;
+ tor_localtime_r(&t_res, &b_time);
+ tt_assert(b_time.tm_year == (1970-1900) ||
+ b_time.tm_year == (1-1900));
+
+ /* while unlikely, the system's gmtime(_r) could return
+ * a "correct" retrospective gregorian negative year value,
+ * which I'm pretty sure is:
+ * -1*(2^63)/60/60/24*2000/730485 + 1970 = -292277022657
+ * 730485 is the number of days in two millennia, including leap days
+ * (int64_t)b_time.tm_year == (-292277022657LL-1900LL) without clamping */
+ t_res = INT64_MIN;
+ CAPTURE();
+ tor_localtime_r(&t_res, &b_time);
+ if (! (b_time.tm_year == (1970-1900) ||
+ b_time.tm_year == (1-1900))) {
+ tt_int_op(b_time.tm_year, OP_EQ, 1970-1900);
+ }
+ if (b_time.tm_year != 1970-1900) {
+ CHECK_TIMEGM_WARNING("Rounding up to ");
+ } else {
+ teardown_capture_of_logs();
+ }
+ }
#endif /* SIZEOF_TIME_T == 8 */
/* time_t >= INT_MAX yields a year clamped to 2037 or 9999,
@@ -938,6 +964,17 @@ test_util_time(void *arg)
tt_assert(b_time.tm_year == (2037-1900) ||
b_time.tm_year == (2038-1900));
}
+ {
+ /* as above but with localtime. */
+ t_res = 3*(1 << 29);
+ tor_localtime_r(&t_res, &b_time);
+ tt_assert(b_time.tm_year == (2021-1900));
+
+ t_res = INT32_MAX;
+ tor_localtime_r(&t_res, &b_time);
+ tt_assert(b_time.tm_year == (2037-1900) ||
+ b_time.tm_year == (2038-1900));
+ }
#endif /* SIZEOF_TIME_T == 4 || SIZEOF_TIME_T == 8 */
#if SIZEOF_TIME_T == 8
@@ -963,6 +1000,27 @@ test_util_time(void *arg)
tt_assert(b_time.tm_year == (2037-1900) ||
b_time.tm_year == (9999-1900));
}
+ {
+ /* As above but with localtime. */
+ t_res = 9223372036854775LL;
+ tor_localtime_r(&t_res, &b_time);
+ tt_assert(b_time.tm_year == (2037-1900) ||
+ b_time.tm_year == (9999-1900));
+
+ /* while unlikely, the system's gmtime(_r) could return
+ * a "correct" proleptic gregorian year value,
+ * which I'm pretty sure is:
+ * (2^63-1)/60/60/24*2000/730485 + 1970 = 292277026596
+ * 730485 is the number of days in two millennia, including leap days
+ * (int64_t)b_time.tm_year == (292277026596L-1900L) without clamping */
+ t_res = INT64_MAX;
+ CAPTURE();
+ tor_localtime_r(&t_res, &b_time);
+ CHECK_TIMEGM_WARNING("Rounding down to ");
+
+ tt_assert(b_time.tm_year == (2037-1900) ||
+ b_time.tm_year == (9999-1900));
+ }
#endif /* SIZEOF_TIME_T == 8 */
/* Test {format,parse}_rfc1123_time */
@@ -3163,6 +3221,21 @@ test_util_sscanf(void *arg)
test_feq(d3, -900123123.2000787);
test_feq(d4, 3.2);
+ /* missing float */
+ r = tor_sscanf("3 ", "%d %lf", &int1, &d1);
+ tt_int_op(r, OP_EQ, 1);
+ tt_int_op(int1, OP_EQ, 3);
+
+ /* not a float */
+ r = tor_sscanf("999 notafloat", "%d %lf", &int1, &d1);
+ tt_int_op(r, OP_EQ, 1);
+ tt_int_op(int1, OP_EQ, 999);
+
+ /* %s but no buffer. */
+ char *nullbuf = NULL;
+ r = tor_sscanf("hello", "%3s", nullbuf);
+ tt_int_op(r, OP_EQ, 0);
+
done:
tor_free(huge);
}
@@ -6189,6 +6262,57 @@ test_util_get_unquoted_path(void *arg)
tor_free(r);
}
+static void
+test_util_log_mallinfo(void *arg)
+{
+ (void)arg;
+ char *log1 = NULL, *log2 = NULL, *mem = NULL;
+#ifdef HAVE_MALLINFO
+ setup_capture_of_logs(LOG_INFO);
+ tor_log_mallinfo(LOG_INFO);
+ expect_single_log_msg_containing("mallinfo() said: ");
+ mock_saved_log_entry_t *lg = smartlist_get(mock_saved_logs(), 0);
+ log1 = tor_strdup(lg->generated_msg);
+
+ mock_clean_saved_logs();
+ mem = tor_malloc(8192);
+ tor_log_mallinfo(LOG_INFO);
+ expect_single_log_msg_containing("mallinfo() said: ");
+ lg = smartlist_get(mock_saved_logs(), 0);
+ log2 = tor_strdup(lg->generated_msg);
+
+ /* Make sure that the amount of used memory increased. */
+ const char *used1 = strstr(log1, "uordblks=");
+ const char *used2 = strstr(log2, "uordblks=");
+ tt_assert(used1);
+ tt_assert(used2);
+ used1 += strlen("uordblks=");
+ used2 += strlen("uordblks=");
+
+ int ok1, ok2;
+ char *next1 = NULL, *next2 = NULL;
+ uint64_t mem1 = tor_parse_uint64(used1, 10, 0, UINT64_MAX, &ok1, &next1);
+ uint64_t mem2 = tor_parse_uint64(used2, 10, 0, UINT64_MAX, &ok2, &next2);
+ tt_assert(ok1);
+ tt_assert(ok2);
+ tt_assert(next1);
+ tt_assert(next2);
+ if (mem2 == 0) {
+ /* This is a fake mallinfo that doesn't actually fill in its outputs. */
+ tt_u64_op(mem1, OP_EQ, 0);
+ } else {
+ tt_u64_op(mem1, OP_LT, mem2);
+ }
+#else
+ tt_skip();
+#endif
+ done:
+ teardown_capture_of_logs();
+ tor_free(log1);
+ tor_free(log2);
+ tor_free(mem);
+}
+
#define UTIL_LEGACY(name) \
{ #name, test_util_ ## name , 0, NULL, NULL }
@@ -6326,5 +6450,6 @@ struct testcase_t util_tests[] = {
UTIL_TEST(monotonic_time_add_msec, 0),
UTIL_TEST(htonll, 0),
UTIL_TEST(get_unquoted_path, 0),
+ UTIL_TEST(log_mallinfo, 0),
END_OF_TESTCASES
};
diff --git a/src/test/test_util_slow.c b/src/test/test_util_slow.c
index 5021e89dff..c5b24487b1 100644
--- a/src/test/test_util_slow.c
+++ b/src/test/test_util_slow.c
@@ -7,7 +7,7 @@
#define UTIL_PRIVATE
#define SUBPROCESS_PRIVATE
#include "lib/crypt_ops/crypto.h"
-#include "lib/log/torlog.h"
+#include "lib/log/log.h"
#include "lib/process/subprocess.h"
#include "lib/process/waitpid.h"
#include "lib/string/printf.h"
diff --git a/src/tools/Makefile.nmake b/src/tools/Makefile.nmake
index fda1990e0b..e223d9b135 100644
--- a/src/tools/Makefile.nmake
+++ b/src/tools/Makefile.nmake
@@ -1,4 +1,4 @@
-all: tor-resolve.exe tor-gencert.exe
+all: tor-resolve.exe tor-gencert.exe tor-print-ed-signing-cert.exe
CFLAGS = /I ..\win32 /I ..\..\..\build-alpha\include /I ..\common /I ..\or
@@ -15,5 +15,8 @@ tor-gencert.exe: tor-gencert.obj
tor-resolve.exe: tor-resolve.obj
$(CC) $(CFLAGS) $(LIBS) ..\common\*.lib tor-resolve.obj
+tor-print-ed-signing-cert.exe: tor-print-ed-signing-cert.obj
+ $(CC) $(CFLAGS) $(LIBS) ..\common\*.lib tor-print-ed-signing-cert.obj
+
clean:
del *.obj *.lib *.exe
diff --git a/src/tools/include.am b/src/tools/include.am
index 8a2ecb23c9..d5924dda5f 100644
--- a/src/tools/include.am
+++ b/src/tools/include.am
@@ -1,4 +1,4 @@
-bin_PROGRAMS+= src/tools/tor-resolve src/tools/tor-gencert
+bin_PROGRAMS+= src/tools/tor-resolve src/tools/tor-gencert src/tools/tor-print-ed-signing-cert
if COVERAGE_ENABLED
noinst_PROGRAMS+= src/tools/tor-cov-resolve src/tools/tor-cov-gencert
@@ -29,6 +29,15 @@ src_tools_tor_gencert_LDADD = \
@TOR_LIB_MATH@ @TOR_ZLIB_LIBS@ @TOR_OPENSSL_LIBS@ \
@TOR_LIB_WS32@ @TOR_LIB_IPHLPAPI@ @TOR_LIB_GDI@ @TOR_LIB_USERENV@ @CURVE25519_LIBS@
+src_tools_tor_print_ed_signing_cert_SOURCES = src/tools/tor-print-ed-signing-cert.c
+src_tools_tor_print_ed_signing_cert_LDFLAGS = @TOR_LDFLAGS_zlib@ @TOR_LDFLAGS_openssl@
+src_tools_tor_print_ed_signing_cert_LDADD = \
+ src/trunnel/libor-trunnel.a \
+ $(TOR_CRYPTO_LIBS) \
+ $(TOR_UTIL_LIBS) \
+ @TOR_LIB_MATH@ @TOR_OPENSSL_LIBS@ \
+ @TOR_LIB_WS32@ @TOR_LIB_USERENV@
+
if COVERAGE_ENABLED
src_tools_tor_cov_gencert_SOURCES = src/tools/tor-gencert.c
src_tools_tor_cov_gencert_CPPFLAGS = $(AM_CPPFLAGS) $(TEST_CPPFLAGS)
diff --git a/src/tools/tor-gencert.c b/src/tools/tor-gencert.c
index ce032ed643..ff924152a6 100644
--- a/src/tools/tor-gencert.c
+++ b/src/tools/tor-gencert.c
@@ -38,10 +38,11 @@ ENABLE_GCC_WARNING(redundant-decls)
#include "lib/encoding/binascii.h"
#include "lib/encoding/time_fmt.h"
#include "lib/fs/files.h"
-#include "lib/log/torlog.h"
-#include "lib/malloc/util_malloc.h"
+#include "lib/log/log.h"
+#include "lib/malloc/malloc.h"
#include "lib/net/address.h"
-#include "lib/net/ipv4.h"
+#include "lib/net/inaddr.h"
+#include "lib/net/resolve.h"
#include "lib/string/compat_string.h"
#include "lib/string/printf.h"
@@ -170,19 +171,22 @@ parse_commandline(int argc, char **argv)
} else if (!strcmp(argv[i], "-v")) {
verbose = 1;
} else if (!strcmp(argv[i], "-a")) {
- uint32_t addr;
+ tor_addr_t addr;
uint16_t port;
- char b[INET_NTOA_BUF_LEN];
- struct in_addr in;
if (i+1>=argc) {
fprintf(stderr, "No argument to -a\n");
return 1;
}
- if (addr_port_lookup(LOG_ERR, argv[++i], NULL, &addr, &port)<0)
+ const char *addr_arg = argv[++i];
+ if (tor_addr_port_lookup(addr_arg, &addr, &port)<0) {
+ fprintf(stderr, "Can't resolve address/port for %s", addr_arg);
return 1;
- in.s_addr = htonl(addr);
- tor_inet_ntoa(&in, b, sizeof(b));
- tor_asprintf(&address, "%s:%d", b, (int)port);
+ }
+ if (tor_addr_family(&addr) != AF_INET) {
+ fprintf(stderr, "%s must resolve to an IPv4 address", addr_arg);
+ return 1;
+ }
+ address = tor_strdup(fmt_addrport(&addr, port));
} else if (!strcmp(argv[i], "--create-identity-key")) {
make_new_id = 1;
} else if (!strcmp(argv[i], "--passphrase-fd")) {
diff --git a/src/tools/tor-print-ed-signing-cert.c b/src/tools/tor-print-ed-signing-cert.c
new file mode 100644
index 0000000000..0f64059d84
--- /dev/null
+++ b/src/tools/tor-print-ed-signing-cert.c
@@ -0,0 +1,65 @@
+/* Copyright (c) 2007-2018, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+#include <errno.h>
+#include <stdio.h>
+#include <string.h>
+#include <time.h>
+
+#include "ed25519_cert.h"
+#include "lib/cc/torint.h" /* TOR_PRIdSZ */
+#include "lib/crypt_ops/crypto_format.h"
+#include "lib/malloc/malloc.h"
+
+int
+main(int argc, char **argv)
+{
+ ed25519_cert_t *cert = NULL;
+
+ if (argc != 2) {
+ fprintf(stderr, "Usage:\n");
+ fprintf(stderr, "%s <path to ed25519_signing_cert file>\n", argv[0]);
+ return -1;
+ }
+
+ const char *filepath = argv[1];
+ char *got_tag = NULL;
+
+ uint8_t certbuf[256];
+ ssize_t cert_body_len = crypto_read_tagged_contents_from_file(
+ filepath, "ed25519v1-cert",
+ &got_tag, certbuf, sizeof(certbuf));
+
+ if (cert_body_len <= 0) {
+ fprintf(stderr, "crypto_read_tagged_contents_from_file failed with "
+ "error: %s\n", strerror(errno));
+ return -2;
+ }
+
+ if (!got_tag) {
+ fprintf(stderr, "Found no tag\n");
+ return -3;
+ }
+
+ if (strcmp(got_tag, "type4") != 0) {
+ fprintf(stderr, "Wrong tag: %s\n", got_tag);
+ return -4;
+ }
+
+ tor_free(got_tag);
+
+ ssize_t parsed = ed25519_cert_parse(&cert, certbuf, cert_body_len);
+ if (parsed <= 0) {
+ fprintf(stderr, "ed25519_cert_parse failed with return value %" TOR_PRIdSZ
+ "\n", parsed);
+ return -5;
+ }
+
+ time_t expires_at = (time_t)cert->exp_field * 60 * 60;
+
+ printf("Expires at: %s", ctime(&expires_at));
+
+ ed25519_cert_free(cert);
+
+ return 0;
+}
diff --git a/src/tools/tor-resolve.c b/src/tools/tor-resolve.c
index 1532d5f201..d5b4987832 100644
--- a/src/tools/tor-resolve.c
+++ b/src/tools/tor-resolve.c
@@ -6,8 +6,8 @@
#include "orconfig.h"
#include "lib/arch/bytes.h"
-#include "lib/log/torlog.h"
-#include "lib/malloc/util_malloc.h"
+#include "lib/log/log.h"
+#include "lib/malloc/malloc.h"
#include "lib/net/address.h"
#include "lib/net/resolve.h"
#include "lib/net/socket.h"
@@ -197,12 +197,14 @@ socks5_reason_to_string(char reason)
* address (in host order) into *<b>result_addr</b>.
*/
static int
-do_resolve(const char *hostname, uint32_t sockshost, uint16_t socksport,
+do_resolve(const char *hostname,
+ const tor_addr_t *sockshost, uint16_t socksport,
int reverse, int version,
tor_addr_t *result_addr, char **result_hostname)
{
int s = -1;
- struct sockaddr_in socksaddr;
+ struct sockaddr_storage ss;
+ socklen_t socklen;
char *req = NULL;
ssize_t len = 0;
@@ -219,11 +221,10 @@ do_resolve(const char *hostname, uint32_t sockshost, uint16_t socksport,
return -1;
}
- memset(&socksaddr, 0, sizeof(socksaddr));
- socksaddr.sin_family = AF_INET;
- socksaddr.sin_port = htons(socksport);
- socksaddr.sin_addr.s_addr = htonl(sockshost);
- if (connect(s, (struct sockaddr*)&socksaddr, sizeof(socksaddr))) {
+ socklen = tor_addr_to_sockaddr(sockshost, socksport,
+ (struct sockaddr *)&ss, sizeof(ss));
+
+ if (connect(s, (struct sockaddr*)&ss, sizeof(socklen))) {
log_sock_error("connecting to SOCKS host", s);
goto err;
}
@@ -346,7 +347,7 @@ usage(void)
int
main(int argc, char **argv)
{
- uint32_t sockshost;
+ tor_addr_t sockshost;
uint16_t socksport = 0, port_option = 0;
int isSocks4 = 0, isVerbose = 0, isReverse = 0;
char **arg;
@@ -414,7 +415,7 @@ main(int argc, char **argv)
if (n_args == 1) {
log_debug(LD_CONFIG, "defaulting to localhost");
- sockshost = 0x7f000001u; /* localhost */
+ tor_addr_from_ipv4h(&sockshost, 0x7f000001u); /* localhost */
if (port_option) {
log_debug(LD_CONFIG, "Using port %d", (int)port_option);
socksport = port_option;
@@ -423,7 +424,7 @@ main(int argc, char **argv)
socksport = 9050; /* 9050 */
}
} else if (n_args == 2) {
- if (addr_port_lookup(LOG_WARN, arg[1], NULL, &sockshost, &socksport)<0) {
+ if (tor_addr_port_lookup(arg[1], &sockshost, &socksport)<0) {
fprintf(stderr, "Couldn't parse/resolve address %s", arg[1]);
return 1;
}
@@ -445,7 +446,7 @@ main(int argc, char **argv)
return 1;
}
- if (do_resolve(arg[0], sockshost, socksport, isReverse,
+ if (do_resolve(arg[0], &sockshost, socksport, isReverse,
isSocks4 ? 4 : 5, &result,
&result_hostname))
return 1;
diff --git a/src/tools/tor_runner.c b/src/tools/tor_runner.c
index dd90af3df5..f8805e6500 100644
--- a/src/tools/tor_runner.c
+++ b/src/tools/tor_runner.c
@@ -46,6 +46,12 @@
static void child(const tor_main_configuration_t *cfg)
__attribute__((noreturn));
+const char *
+tor_api_get_provider_version(void)
+{
+ return "libtorrunner " VERSION;
+}
+
int
tor_run_main(const tor_main_configuration_t *cfg)
{
@@ -98,4 +104,3 @@ child(const tor_main_configuration_t *cfg)
abort(); /* Unreachable */
}
}
-
diff --git a/src/trunnel/include.am b/src/trunnel/include.am
index 5a0a79c3a0..03c1753e96 100644
--- a/src/trunnel/include.am
+++ b/src/trunnel/include.am
@@ -10,7 +10,8 @@ TRUNNELINPUTS = \
src/trunnel/ed25519_cert.trunnel \
src/trunnel/link_handshake.trunnel \
src/trunnel/pwbox.trunnel \
- src/trunnel/channelpadding_negotiation.trunnel
+ src/trunnel/channelpadding_negotiation.trunnel \
+ src/trunner/socks5.trunnel
TRUNNELSOURCES = \
src/ext/trunnel/trunnel.c \
@@ -21,7 +22,8 @@ TRUNNELSOURCES = \
src/trunnel/hs/cell_establish_intro.c \
src/trunnel/hs/cell_introduce1.c \
src/trunnel/hs/cell_rendezvous.c \
- src/trunnel/channelpadding_negotiation.c
+ src/trunnel/channelpadding_negotiation.c \
+ src/trunnel/socks5.c
TRUNNELHEADERS = \
src/ext/trunnel/trunnel.h \
@@ -34,7 +36,8 @@ TRUNNELHEADERS = \
src/trunnel/hs/cell_establish_intro.h \
src/trunnel/hs/cell_introduce1.h \
src/trunnel/hs/cell_rendezvous.h \
- src/trunnel/channelpadding_negotiation.h
+ src/trunnel/channelpadding_negotiation.h \
+ src/trunnel/socks5.h
src_trunnel_libor_trunnel_a_SOURCES = $(TRUNNELSOURCES)
src_trunnel_libor_trunnel_a_CPPFLAGS = \
diff --git a/src/trunnel/socks5.c b/src/trunnel/socks5.c
new file mode 100644
index 0000000000..9e5f6fcfed
--- /dev/null
+++ b/src/trunnel/socks5.c
@@ -0,0 +1,3978 @@
+/* socks5.c -- generated by Trunnel v1.5.2.
+ * https://gitweb.torproject.org/trunnel.git
+ * You probably shouldn't edit this file.
+ */
+#include <stdlib.h>
+#include "trunnel-impl.h"
+
+#include "socks5.h"
+
+#define TRUNNEL_SET_ERROR_CODE(obj) \
+ do { \
+ (obj)->trunnel_error_code_ = 1; \
+ } while (0)
+
+#if defined(__COVERITY__) || defined(__clang_analyzer__)
+/* If we're running a static analysis tool, we don't want it to complain
+ * that some of our remaining-bytes checks are dead-code. */
+int socks_deadcode_dummy__ = 0;
+#define OR_DEADCODE_DUMMY || socks_deadcode_dummy__
+#else
+#define OR_DEADCODE_DUMMY
+#endif
+
+#define CHECK_REMAINING(nbytes, label) \
+ do { \
+ if (remaining < (nbytes) OR_DEADCODE_DUMMY) { \
+ goto label; \
+ } \
+ } while (0)
+
+domainname_t *
+domainname_new(void)
+{
+ domainname_t *val = trunnel_calloc(1, sizeof(domainname_t));
+ if (NULL == val)
+ return NULL;
+ return val;
+}
+
+/** Release all storage held inside 'obj', but do not free 'obj'.
+ */
+static void
+domainname_clear(domainname_t *obj)
+{
+ (void) obj;
+ TRUNNEL_DYNARRAY_WIPE(&obj->name);
+ TRUNNEL_DYNARRAY_CLEAR(&obj->name);
+}
+
+void
+domainname_free(domainname_t *obj)
+{
+ if (obj == NULL)
+ return;
+ domainname_clear(obj);
+ trunnel_memwipe(obj, sizeof(domainname_t));
+ trunnel_free_(obj);
+}
+
+uint8_t
+domainname_get_len(const domainname_t *inp)
+{
+ return inp->len;
+}
+int
+domainname_set_len(domainname_t *inp, uint8_t val)
+{
+ inp->len = val;
+ return 0;
+}
+size_t
+domainname_getlen_name(const domainname_t *inp)
+{
+ return TRUNNEL_DYNARRAY_LEN(&inp->name);
+}
+
+char
+domainname_get_name(domainname_t *inp, size_t idx)
+{
+ return TRUNNEL_DYNARRAY_GET(&inp->name, idx);
+}
+
+char
+domainname_getconst_name(const domainname_t *inp, size_t idx)
+{
+ return domainname_get_name((domainname_t*)inp, idx);
+}
+int
+domainname_set_name(domainname_t *inp, size_t idx, char elt)
+{
+ TRUNNEL_DYNARRAY_SET(&inp->name, idx, elt);
+ return 0;
+}
+int
+domainname_add_name(domainname_t *inp, char elt)
+{
+#if SIZE_MAX >= UINT8_MAX
+ if (inp->name.n_ == UINT8_MAX)
+ goto trunnel_alloc_failed;
+#endif
+ TRUNNEL_DYNARRAY_ADD(char, &inp->name, elt, {});
+ return 0;
+ trunnel_alloc_failed:
+ TRUNNEL_SET_ERROR_CODE(inp);
+ return -1;
+}
+
+char *
+domainname_getarray_name(domainname_t *inp)
+{
+ return inp->name.elts_;
+}
+const char *
+domainname_getconstarray_name(const domainname_t *inp)
+{
+ return (const char *)domainname_getarray_name((domainname_t*)inp);
+}
+int
+domainname_setlen_name(domainname_t *inp, size_t newlen)
+{
+#if UINT8_MAX < SIZE_MAX
+ if (newlen > UINT8_MAX)
+ goto trunnel_alloc_failed;
+#endif
+ return trunnel_string_setlen(&inp->name, newlen,
+ &inp->trunnel_error_code_);
+ trunnel_alloc_failed:
+ TRUNNEL_SET_ERROR_CODE(inp);
+ return -1;
+}
+const char *
+domainname_getstr_name(domainname_t *inp)
+{
+ return trunnel_string_getstr(&inp->name);
+}
+int
+domainname_setstr0_name(domainname_t *inp, const char *val, size_t len)
+{
+#if UINT8_MAX < SIZE_MAX
+ if (len > UINT8_MAX) {
+ TRUNNEL_SET_ERROR_CODE(inp);
+ return -1;
+ }
+#endif
+ return trunnel_string_setstr0(&inp->name, val, len, &inp->trunnel_error_code_);
+}
+int
+domainname_setstr_name(domainname_t *inp, const char *val)
+{
+ return domainname_setstr0_name(inp, val, strlen(val));
+}
+const char *
+domainname_check(const domainname_t *obj)
+{
+ if (obj == NULL)
+ return "Object was NULL";
+ if (obj->trunnel_error_code_)
+ return "A set function failed on this object";
+ if (TRUNNEL_DYNARRAY_LEN(&obj->name) != obj->len)
+ return "Length mismatch for name";
+ return NULL;
+}
+
+ssize_t
+domainname_encoded_len(const domainname_t *obj)
+{
+ ssize_t result = 0;
+
+ if (NULL != domainname_check(obj))
+ return -1;
+
+
+ /* Length of u8 len */
+ result += 1;
+
+ /* Length of char name[len] */
+ result += TRUNNEL_DYNARRAY_LEN(&obj->name);
+ return result;
+}
+int
+domainname_clear_errors(domainname_t *obj)
+{
+ int r = obj->trunnel_error_code_;
+ obj->trunnel_error_code_ = 0;
+ return r;
+}
+ssize_t
+domainname_encode(uint8_t *output, const size_t avail, const domainname_t *obj)
+{
+ ssize_t result = 0;
+ size_t written = 0;
+ uint8_t *ptr = output;
+ const char *msg;
+#ifdef TRUNNEL_CHECK_ENCODED_LEN
+ const ssize_t encoded_len = domainname_encoded_len(obj);
+#endif
+
+ if (NULL != (msg = domainname_check(obj)))
+ goto check_failed;
+
+#ifdef TRUNNEL_CHECK_ENCODED_LEN
+ trunnel_assert(encoded_len >= 0);
+#endif
+
+ /* Encode u8 len */
+ trunnel_assert(written <= avail);
+ if (avail - written < 1)
+ goto truncated;
+ trunnel_set_uint8(ptr, (obj->len));
+ written += 1; ptr += 1;
+
+ /* Encode char name[len] */
+ {
+ size_t elt_len = TRUNNEL_DYNARRAY_LEN(&obj->name);
+ trunnel_assert(obj->len == elt_len);
+ trunnel_assert(written <= avail);
+ if (avail - written < elt_len)
+ goto truncated;
+ if (elt_len)
+ memcpy(ptr, obj->name.elts_, elt_len);
+ written += elt_len; ptr += elt_len;
+ }
+
+
+ trunnel_assert(ptr == output + written);
+#ifdef TRUNNEL_CHECK_ENCODED_LEN
+ {
+ trunnel_assert(encoded_len >= 0);
+ trunnel_assert((size_t)encoded_len == written);
+ }
+
+#endif
+
+ return written;
+
+ truncated:
+ result = -2;
+ goto fail;
+ check_failed:
+ (void)msg;
+ result = -1;
+ goto fail;
+ fail:
+ trunnel_assert(result < 0);
+ return result;
+}
+
+/** As domainname_parse(), but do not allocate the output object.
+ */
+static ssize_t
+domainname_parse_into(domainname_t *obj, const uint8_t *input, const size_t len_in)
+{
+ const uint8_t *ptr = input;
+ size_t remaining = len_in;
+ ssize_t result = 0;
+ (void)result;
+
+ /* Parse u8 len */
+ CHECK_REMAINING(1, truncated);
+ obj->len = (trunnel_get_uint8(ptr));
+ remaining -= 1; ptr += 1;
+
+ /* Parse char name[len] */
+ CHECK_REMAINING(obj->len, truncated);
+ if (domainname_setstr0_name(obj, (const char*)ptr, obj->len))
+ goto fail;
+ ptr += obj->len; remaining -= obj->len;
+ trunnel_assert(ptr + remaining == input + len_in);
+ return len_in - remaining;
+
+ truncated:
+ return -2;
+ fail:
+ result = -1;
+ return result;
+}
+
+ssize_t
+domainname_parse(domainname_t **output, const uint8_t *input, const size_t len_in)
+{
+ ssize_t result;
+ *output = domainname_new();
+ if (NULL == *output)
+ return -1;
+ result = domainname_parse_into(*output, input, len_in);
+ if (result < 0) {
+ domainname_free(*output);
+ *output = NULL;
+ }
+ return result;
+}
+socks4_client_request_t *
+socks4_client_request_new(void)
+{
+ socks4_client_request_t *val = trunnel_calloc(1, sizeof(socks4_client_request_t));
+ if (NULL == val)
+ return NULL;
+ val->version = 4;
+ val->command = CMD_BIND;
+ return val;
+}
+
+/** Release all storage held inside 'obj', but do not free 'obj'.
+ */
+static void
+socks4_client_request_clear(socks4_client_request_t *obj)
+{
+ (void) obj;
+ trunnel_wipestr(obj->username);
+ trunnel_free(obj->username);
+ trunnel_wipestr(obj->socks4a_addr_hostname);
+ trunnel_free(obj->socks4a_addr_hostname);
+}
+
+void
+socks4_client_request_free(socks4_client_request_t *obj)
+{
+ if (obj == NULL)
+ return;
+ socks4_client_request_clear(obj);
+ trunnel_memwipe(obj, sizeof(socks4_client_request_t));
+ trunnel_free_(obj);
+}
+
+uint8_t
+socks4_client_request_get_version(const socks4_client_request_t *inp)
+{
+ return inp->version;
+}
+int
+socks4_client_request_set_version(socks4_client_request_t *inp, uint8_t val)
+{
+ if (! ((val == 4))) {
+ TRUNNEL_SET_ERROR_CODE(inp);
+ return -1;
+ }
+ inp->version = val;
+ return 0;
+}
+uint8_t
+socks4_client_request_get_command(const socks4_client_request_t *inp)
+{
+ return inp->command;
+}
+int
+socks4_client_request_set_command(socks4_client_request_t *inp, uint8_t val)
+{
+ if (! ((val == CMD_BIND || val == CMD_CONNECT || val == CMD_RESOLVE || val == CMD_RESOLVE_PTR))) {
+ TRUNNEL_SET_ERROR_CODE(inp);
+ return -1;
+ }
+ inp->command = val;
+ return 0;
+}
+uint16_t
+socks4_client_request_get_port(const socks4_client_request_t *inp)
+{
+ return inp->port;
+}
+int
+socks4_client_request_set_port(socks4_client_request_t *inp, uint16_t val)
+{
+ inp->port = val;
+ return 0;
+}
+uint32_t
+socks4_client_request_get_addr(const socks4_client_request_t *inp)
+{
+ return inp->addr;
+}
+int
+socks4_client_request_set_addr(socks4_client_request_t *inp, uint32_t val)
+{
+ inp->addr = val;
+ return 0;
+}
+const char *
+socks4_client_request_get_username(const socks4_client_request_t *inp)
+{
+ return inp->username;
+}
+int
+socks4_client_request_set_username(socks4_client_request_t *inp, const char *val)
+{
+ trunnel_free(inp->username);
+ if (NULL == (inp->username = trunnel_strdup(val))) {
+ TRUNNEL_SET_ERROR_CODE(inp);
+ return -1;
+ }
+ return 0;
+}
+const char *
+socks4_client_request_get_socks4a_addr_hostname(const socks4_client_request_t *inp)
+{
+ return inp->socks4a_addr_hostname;
+}
+int
+socks4_client_request_set_socks4a_addr_hostname(socks4_client_request_t *inp, const char *val)
+{
+ trunnel_free(inp->socks4a_addr_hostname);
+ if (NULL == (inp->socks4a_addr_hostname = trunnel_strdup(val))) {
+ TRUNNEL_SET_ERROR_CODE(inp);
+ return -1;
+ }
+ return 0;
+}
+const char *
+socks4_client_request_check(const socks4_client_request_t *obj)
+{
+ if (obj == NULL)
+ return "Object was NULL";
+ if (obj->trunnel_error_code_)
+ return "A set function failed on this object";
+ if (! (obj->version == 4))
+ return "Integer out of bounds";
+ if (! (obj->command == CMD_BIND || obj->command == CMD_CONNECT || obj->command == CMD_RESOLVE || obj->command == CMD_RESOLVE_PTR))
+ return "Integer out of bounds";
+ if (NULL == obj->username)
+ return "Missing username";
+ switch (obj->addr) {
+
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ case 5:
+ case 6:
+ case 7:
+ case 8:
+ case 9:
+ case 10:
+ case 11:
+ case 12:
+ case 13:
+ case 14:
+ case 15:
+ case 16:
+ case 17:
+ case 18:
+ case 19:
+ case 20:
+ case 21:
+ case 22:
+ case 23:
+ case 24:
+ case 25:
+ case 26:
+ case 27:
+ case 28:
+ case 29:
+ case 30:
+ case 31:
+ case 32:
+ case 33:
+ case 34:
+ case 35:
+ case 36:
+ case 37:
+ case 38:
+ case 39:
+ case 40:
+ case 41:
+ case 42:
+ case 43:
+ case 44:
+ case 45:
+ case 46:
+ case 47:
+ case 48:
+ case 49:
+ case 50:
+ case 51:
+ case 52:
+ case 53:
+ case 54:
+ case 55:
+ case 56:
+ case 57:
+ case 58:
+ case 59:
+ case 60:
+ case 61:
+ case 62:
+ case 63:
+ case 64:
+ case 65:
+ case 66:
+ case 67:
+ case 68:
+ case 69:
+ case 70:
+ case 71:
+ case 72:
+ case 73:
+ case 74:
+ case 75:
+ case 76:
+ case 77:
+ case 78:
+ case 79:
+ case 80:
+ case 81:
+ case 82:
+ case 83:
+ case 84:
+ case 85:
+ case 86:
+ case 87:
+ case 88:
+ case 89:
+ case 90:
+ case 91:
+ case 92:
+ case 93:
+ case 94:
+ case 95:
+ case 96:
+ case 97:
+ case 98:
+ case 99:
+ case 100:
+ case 101:
+ case 102:
+ case 103:
+ case 104:
+ case 105:
+ case 106:
+ case 107:
+ case 108:
+ case 109:
+ case 110:
+ case 111:
+ case 112:
+ case 113:
+ case 114:
+ case 115:
+ case 116:
+ case 117:
+ case 118:
+ case 119:
+ case 120:
+ case 121:
+ case 122:
+ case 123:
+ case 124:
+ case 125:
+ case 126:
+ case 127:
+ case 128:
+ case 129:
+ case 130:
+ case 131:
+ case 132:
+ case 133:
+ case 134:
+ case 135:
+ case 136:
+ case 137:
+ case 138:
+ case 139:
+ case 140:
+ case 141:
+ case 142:
+ case 143:
+ case 144:
+ case 145:
+ case 146:
+ case 147:
+ case 148:
+ case 149:
+ case 150:
+ case 151:
+ case 152:
+ case 153:
+ case 154:
+ case 155:
+ case 156:
+ case 157:
+ case 158:
+ case 159:
+ case 160:
+ case 161:
+ case 162:
+ case 163:
+ case 164:
+ case 165:
+ case 166:
+ case 167:
+ case 168:
+ case 169:
+ case 170:
+ case 171:
+ case 172:
+ case 173:
+ case 174:
+ case 175:
+ case 176:
+ case 177:
+ case 178:
+ case 179:
+ case 180:
+ case 181:
+ case 182:
+ case 183:
+ case 184:
+ case 185:
+ case 186:
+ case 187:
+ case 188:
+ case 189:
+ case 190:
+ case 191:
+ case 192:
+ case 193:
+ case 194:
+ case 195:
+ case 196:
+ case 197:
+ case 198:
+ case 199:
+ case 200:
+ case 201:
+ case 202:
+ case 203:
+ case 204:
+ case 205:
+ case 206:
+ case 207:
+ case 208:
+ case 209:
+ case 210:
+ case 211:
+ case 212:
+ case 213:
+ case 214:
+ case 215:
+ case 216:
+ case 217:
+ case 218:
+ case 219:
+ case 220:
+ case 221:
+ case 222:
+ case 223:
+ case 224:
+ case 225:
+ case 226:
+ case 227:
+ case 228:
+ case 229:
+ case 230:
+ case 231:
+ case 232:
+ case 233:
+ case 234:
+ case 235:
+ case 236:
+ case 237:
+ case 238:
+ case 239:
+ case 240:
+ case 241:
+ case 242:
+ case 243:
+ case 244:
+ case 245:
+ case 246:
+ case 247:
+ case 248:
+ case 249:
+ case 250:
+ case 251:
+ case 252:
+ case 253:
+ case 254:
+ case 255:
+ if (NULL == obj->socks4a_addr_hostname)
+ return "Missing socks4a_addr_hostname";
+ break;
+
+ default:
+ break;
+ }
+ return NULL;
+}
+
+ssize_t
+socks4_client_request_encoded_len(const socks4_client_request_t *obj)
+{
+ ssize_t result = 0;
+
+ if (NULL != socks4_client_request_check(obj))
+ return -1;
+
+
+ /* Length of u8 version IN [4] */
+ result += 1;
+
+ /* Length of u8 command IN [CMD_BIND, CMD_CONNECT, CMD_RESOLVE, CMD_RESOLVE_PTR] */
+ result += 1;
+
+ /* Length of u16 port */
+ result += 2;
+
+ /* Length of u32 addr */
+ result += 4;
+
+ /* Length of nulterm username */
+ result += strlen(obj->username) + 1;
+ switch (obj->addr) {
+
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ case 5:
+ case 6:
+ case 7:
+ case 8:
+ case 9:
+ case 10:
+ case 11:
+ case 12:
+ case 13:
+ case 14:
+ case 15:
+ case 16:
+ case 17:
+ case 18:
+ case 19:
+ case 20:
+ case 21:
+ case 22:
+ case 23:
+ case 24:
+ case 25:
+ case 26:
+ case 27:
+ case 28:
+ case 29:
+ case 30:
+ case 31:
+ case 32:
+ case 33:
+ case 34:
+ case 35:
+ case 36:
+ case 37:
+ case 38:
+ case 39:
+ case 40:
+ case 41:
+ case 42:
+ case 43:
+ case 44:
+ case 45:
+ case 46:
+ case 47:
+ case 48:
+ case 49:
+ case 50:
+ case 51:
+ case 52:
+ case 53:
+ case 54:
+ case 55:
+ case 56:
+ case 57:
+ case 58:
+ case 59:
+ case 60:
+ case 61:
+ case 62:
+ case 63:
+ case 64:
+ case 65:
+ case 66:
+ case 67:
+ case 68:
+ case 69:
+ case 70:
+ case 71:
+ case 72:
+ case 73:
+ case 74:
+ case 75:
+ case 76:
+ case 77:
+ case 78:
+ case 79:
+ case 80:
+ case 81:
+ case 82:
+ case 83:
+ case 84:
+ case 85:
+ case 86:
+ case 87:
+ case 88:
+ case 89:
+ case 90:
+ case 91:
+ case 92:
+ case 93:
+ case 94:
+ case 95:
+ case 96:
+ case 97:
+ case 98:
+ case 99:
+ case 100:
+ case 101:
+ case 102:
+ case 103:
+ case 104:
+ case 105:
+ case 106:
+ case 107:
+ case 108:
+ case 109:
+ case 110:
+ case 111:
+ case 112:
+ case 113:
+ case 114:
+ case 115:
+ case 116:
+ case 117:
+ case 118:
+ case 119:
+ case 120:
+ case 121:
+ case 122:
+ case 123:
+ case 124:
+ case 125:
+ case 126:
+ case 127:
+ case 128:
+ case 129:
+ case 130:
+ case 131:
+ case 132:
+ case 133:
+ case 134:
+ case 135:
+ case 136:
+ case 137:
+ case 138:
+ case 139:
+ case 140:
+ case 141:
+ case 142:
+ case 143:
+ case 144:
+ case 145:
+ case 146:
+ case 147:
+ case 148:
+ case 149:
+ case 150:
+ case 151:
+ case 152:
+ case 153:
+ case 154:
+ case 155:
+ case 156:
+ case 157:
+ case 158:
+ case 159:
+ case 160:
+ case 161:
+ case 162:
+ case 163:
+ case 164:
+ case 165:
+ case 166:
+ case 167:
+ case 168:
+ case 169:
+ case 170:
+ case 171:
+ case 172:
+ case 173:
+ case 174:
+ case 175:
+ case 176:
+ case 177:
+ case 178:
+ case 179:
+ case 180:
+ case 181:
+ case 182:
+ case 183:
+ case 184:
+ case 185:
+ case 186:
+ case 187:
+ case 188:
+ case 189:
+ case 190:
+ case 191:
+ case 192:
+ case 193:
+ case 194:
+ case 195:
+ case 196:
+ case 197:
+ case 198:
+ case 199:
+ case 200:
+ case 201:
+ case 202:
+ case 203:
+ case 204:
+ case 205:
+ case 206:
+ case 207:
+ case 208:
+ case 209:
+ case 210:
+ case 211:
+ case 212:
+ case 213:
+ case 214:
+ case 215:
+ case 216:
+ case 217:
+ case 218:
+ case 219:
+ case 220:
+ case 221:
+ case 222:
+ case 223:
+ case 224:
+ case 225:
+ case 226:
+ case 227:
+ case 228:
+ case 229:
+ case 230:
+ case 231:
+ case 232:
+ case 233:
+ case 234:
+ case 235:
+ case 236:
+ case 237:
+ case 238:
+ case 239:
+ case 240:
+ case 241:
+ case 242:
+ case 243:
+ case 244:
+ case 245:
+ case 246:
+ case 247:
+ case 248:
+ case 249:
+ case 250:
+ case 251:
+ case 252:
+ case 253:
+ case 254:
+ case 255:
+
+ /* Length of nulterm socks4a_addr_hostname */
+ result += strlen(obj->socks4a_addr_hostname) + 1;
+ break;
+
+ default:
+ break;
+ }
+ return result;
+}
+int
+socks4_client_request_clear_errors(socks4_client_request_t *obj)
+{
+ int r = obj->trunnel_error_code_;
+ obj->trunnel_error_code_ = 0;
+ return r;
+}
+ssize_t
+socks4_client_request_encode(uint8_t *output, const size_t avail, const socks4_client_request_t *obj)
+{
+ ssize_t result = 0;
+ size_t written = 0;
+ uint8_t *ptr = output;
+ const char *msg;
+#ifdef TRUNNEL_CHECK_ENCODED_LEN
+ const ssize_t encoded_len = socks4_client_request_encoded_len(obj);
+#endif
+
+ if (NULL != (msg = socks4_client_request_check(obj)))
+ goto check_failed;
+
+#ifdef TRUNNEL_CHECK_ENCODED_LEN
+ trunnel_assert(encoded_len >= 0);
+#endif
+
+ /* Encode u8 version IN [4] */
+ trunnel_assert(written <= avail);
+ if (avail - written < 1)
+ goto truncated;
+ trunnel_set_uint8(ptr, (obj->version));
+ written += 1; ptr += 1;
+
+ /* Encode u8 command IN [CMD_BIND, CMD_CONNECT, CMD_RESOLVE, CMD_RESOLVE_PTR] */
+ trunnel_assert(written <= avail);
+ if (avail - written < 1)
+ goto truncated;
+ trunnel_set_uint8(ptr, (obj->command));
+ written += 1; ptr += 1;
+
+ /* Encode u16 port */
+ trunnel_assert(written <= avail);
+ if (avail - written < 2)
+ goto truncated;
+ trunnel_set_uint16(ptr, trunnel_htons(obj->port));
+ written += 2; ptr += 2;
+
+ /* Encode u32 addr */
+ trunnel_assert(written <= avail);
+ if (avail - written < 4)
+ goto truncated;
+ trunnel_set_uint32(ptr, trunnel_htonl(obj->addr));
+ written += 4; ptr += 4;
+
+ /* Encode nulterm username */
+ {
+ size_t len = strlen(obj->username);
+ trunnel_assert(written <= avail);
+ if (avail - written < len + 1)
+ goto truncated;
+ memcpy(ptr, obj->username, len + 1);
+ ptr += len + 1; written += len + 1;
+ }
+
+ /* Encode union socks4a_addr[addr] */
+ trunnel_assert(written <= avail);
+ switch (obj->addr) {
+
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ case 5:
+ case 6:
+ case 7:
+ case 8:
+ case 9:
+ case 10:
+ case 11:
+ case 12:
+ case 13:
+ case 14:
+ case 15:
+ case 16:
+ case 17:
+ case 18:
+ case 19:
+ case 20:
+ case 21:
+ case 22:
+ case 23:
+ case 24:
+ case 25:
+ case 26:
+ case 27:
+ case 28:
+ case 29:
+ case 30:
+ case 31:
+ case 32:
+ case 33:
+ case 34:
+ case 35:
+ case 36:
+ case 37:
+ case 38:
+ case 39:
+ case 40:
+ case 41:
+ case 42:
+ case 43:
+ case 44:
+ case 45:
+ case 46:
+ case 47:
+ case 48:
+ case 49:
+ case 50:
+ case 51:
+ case 52:
+ case 53:
+ case 54:
+ case 55:
+ case 56:
+ case 57:
+ case 58:
+ case 59:
+ case 60:
+ case 61:
+ case 62:
+ case 63:
+ case 64:
+ case 65:
+ case 66:
+ case 67:
+ case 68:
+ case 69:
+ case 70:
+ case 71:
+ case 72:
+ case 73:
+ case 74:
+ case 75:
+ case 76:
+ case 77:
+ case 78:
+ case 79:
+ case 80:
+ case 81:
+ case 82:
+ case 83:
+ case 84:
+ case 85:
+ case 86:
+ case 87:
+ case 88:
+ case 89:
+ case 90:
+ case 91:
+ case 92:
+ case 93:
+ case 94:
+ case 95:
+ case 96:
+ case 97:
+ case 98:
+ case 99:
+ case 100:
+ case 101:
+ case 102:
+ case 103:
+ case 104:
+ case 105:
+ case 106:
+ case 107:
+ case 108:
+ case 109:
+ case 110:
+ case 111:
+ case 112:
+ case 113:
+ case 114:
+ case 115:
+ case 116:
+ case 117:
+ case 118:
+ case 119:
+ case 120:
+ case 121:
+ case 122:
+ case 123:
+ case 124:
+ case 125:
+ case 126:
+ case 127:
+ case 128:
+ case 129:
+ case 130:
+ case 131:
+ case 132:
+ case 133:
+ case 134:
+ case 135:
+ case 136:
+ case 137:
+ case 138:
+ case 139:
+ case 140:
+ case 141:
+ case 142:
+ case 143:
+ case 144:
+ case 145:
+ case 146:
+ case 147:
+ case 148:
+ case 149:
+ case 150:
+ case 151:
+ case 152:
+ case 153:
+ case 154:
+ case 155:
+ case 156:
+ case 157:
+ case 158:
+ case 159:
+ case 160:
+ case 161:
+ case 162:
+ case 163:
+ case 164:
+ case 165:
+ case 166:
+ case 167:
+ case 168:
+ case 169:
+ case 170:
+ case 171:
+ case 172:
+ case 173:
+ case 174:
+ case 175:
+ case 176:
+ case 177:
+ case 178:
+ case 179:
+ case 180:
+ case 181:
+ case 182:
+ case 183:
+ case 184:
+ case 185:
+ case 186:
+ case 187:
+ case 188:
+ case 189:
+ case 190:
+ case 191:
+ case 192:
+ case 193:
+ case 194:
+ case 195:
+ case 196:
+ case 197:
+ case 198:
+ case 199:
+ case 200:
+ case 201:
+ case 202:
+ case 203:
+ case 204:
+ case 205:
+ case 206:
+ case 207:
+ case 208:
+ case 209:
+ case 210:
+ case 211:
+ case 212:
+ case 213:
+ case 214:
+ case 215:
+ case 216:
+ case 217:
+ case 218:
+ case 219:
+ case 220:
+ case 221:
+ case 222:
+ case 223:
+ case 224:
+ case 225:
+ case 226:
+ case 227:
+ case 228:
+ case 229:
+ case 230:
+ case 231:
+ case 232:
+ case 233:
+ case 234:
+ case 235:
+ case 236:
+ case 237:
+ case 238:
+ case 239:
+ case 240:
+ case 241:
+ case 242:
+ case 243:
+ case 244:
+ case 245:
+ case 246:
+ case 247:
+ case 248:
+ case 249:
+ case 250:
+ case 251:
+ case 252:
+ case 253:
+ case 254:
+ case 255:
+
+ /* Encode nulterm socks4a_addr_hostname */
+ {
+ size_t len = strlen(obj->socks4a_addr_hostname);
+ trunnel_assert(written <= avail);
+ if (avail - written < len + 1)
+ goto truncated;
+ memcpy(ptr, obj->socks4a_addr_hostname, len + 1);
+ ptr += len + 1; written += len + 1;
+ }
+ break;
+
+ default:
+ break;
+ }
+
+
+ trunnel_assert(ptr == output + written);
+#ifdef TRUNNEL_CHECK_ENCODED_LEN
+ {
+ trunnel_assert(encoded_len >= 0);
+ trunnel_assert((size_t)encoded_len == written);
+ }
+
+#endif
+
+ return written;
+
+ truncated:
+ result = -2;
+ goto fail;
+ check_failed:
+ (void)msg;
+ result = -1;
+ goto fail;
+ fail:
+ trunnel_assert(result < 0);
+ return result;
+}
+
+/** As socks4_client_request_parse(), but do not allocate the output
+ * object.
+ */
+static ssize_t
+socks4_client_request_parse_into(socks4_client_request_t *obj, const uint8_t *input, const size_t len_in)
+{
+ const uint8_t *ptr = input;
+ size_t remaining = len_in;
+ ssize_t result = 0;
+ (void)result;
+
+ /* Parse u8 version IN [4] */
+ CHECK_REMAINING(1, truncated);
+ obj->version = (trunnel_get_uint8(ptr));
+ remaining -= 1; ptr += 1;
+ if (! (obj->version == 4))
+ goto fail;
+
+ /* Parse u8 command IN [CMD_BIND, CMD_CONNECT, CMD_RESOLVE, CMD_RESOLVE_PTR] */
+ CHECK_REMAINING(1, truncated);
+ obj->command = (trunnel_get_uint8(ptr));
+ remaining -= 1; ptr += 1;
+ if (! (obj->command == CMD_BIND || obj->command == CMD_CONNECT || obj->command == CMD_RESOLVE || obj->command == CMD_RESOLVE_PTR))
+ goto fail;
+
+ /* Parse u16 port */
+ CHECK_REMAINING(2, truncated);
+ obj->port = trunnel_ntohs(trunnel_get_uint16(ptr));
+ remaining -= 2; ptr += 2;
+
+ /* Parse u32 addr */
+ CHECK_REMAINING(4, truncated);
+ obj->addr = trunnel_ntohl(trunnel_get_uint32(ptr));
+ remaining -= 4; ptr += 4;
+
+ /* Parse nulterm username */
+ {
+ uint8_t *eos = (uint8_t*)memchr(ptr, 0, remaining);
+ size_t memlen;
+ if (eos == NULL)
+ goto truncated;
+ trunnel_assert(eos >= ptr);
+ trunnel_assert((size_t)(eos - ptr) < SIZE_MAX - 1);
+ memlen = ((size_t)(eos - ptr)) + 1;
+ if (!(obj->username = trunnel_malloc(memlen)))
+ goto fail;
+ memcpy(obj->username, ptr, memlen);
+ remaining -= memlen; ptr += memlen;
+ }
+
+ /* Parse union socks4a_addr[addr] */
+ switch (obj->addr) {
+
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ case 5:
+ case 6:
+ case 7:
+ case 8:
+ case 9:
+ case 10:
+ case 11:
+ case 12:
+ case 13:
+ case 14:
+ case 15:
+ case 16:
+ case 17:
+ case 18:
+ case 19:
+ case 20:
+ case 21:
+ case 22:
+ case 23:
+ case 24:
+ case 25:
+ case 26:
+ case 27:
+ case 28:
+ case 29:
+ case 30:
+ case 31:
+ case 32:
+ case 33:
+ case 34:
+ case 35:
+ case 36:
+ case 37:
+ case 38:
+ case 39:
+ case 40:
+ case 41:
+ case 42:
+ case 43:
+ case 44:
+ case 45:
+ case 46:
+ case 47:
+ case 48:
+ case 49:
+ case 50:
+ case 51:
+ case 52:
+ case 53:
+ case 54:
+ case 55:
+ case 56:
+ case 57:
+ case 58:
+ case 59:
+ case 60:
+ case 61:
+ case 62:
+ case 63:
+ case 64:
+ case 65:
+ case 66:
+ case 67:
+ case 68:
+ case 69:
+ case 70:
+ case 71:
+ case 72:
+ case 73:
+ case 74:
+ case 75:
+ case 76:
+ case 77:
+ case 78:
+ case 79:
+ case 80:
+ case 81:
+ case 82:
+ case 83:
+ case 84:
+ case 85:
+ case 86:
+ case 87:
+ case 88:
+ case 89:
+ case 90:
+ case 91:
+ case 92:
+ case 93:
+ case 94:
+ case 95:
+ case 96:
+ case 97:
+ case 98:
+ case 99:
+ case 100:
+ case 101:
+ case 102:
+ case 103:
+ case 104:
+ case 105:
+ case 106:
+ case 107:
+ case 108:
+ case 109:
+ case 110:
+ case 111:
+ case 112:
+ case 113:
+ case 114:
+ case 115:
+ case 116:
+ case 117:
+ case 118:
+ case 119:
+ case 120:
+ case 121:
+ case 122:
+ case 123:
+ case 124:
+ case 125:
+ case 126:
+ case 127:
+ case 128:
+ case 129:
+ case 130:
+ case 131:
+ case 132:
+ case 133:
+ case 134:
+ case 135:
+ case 136:
+ case 137:
+ case 138:
+ case 139:
+ case 140:
+ case 141:
+ case 142:
+ case 143:
+ case 144:
+ case 145:
+ case 146:
+ case 147:
+ case 148:
+ case 149:
+ case 150:
+ case 151:
+ case 152:
+ case 153:
+ case 154:
+ case 155:
+ case 156:
+ case 157:
+ case 158:
+ case 159:
+ case 160:
+ case 161:
+ case 162:
+ case 163:
+ case 164:
+ case 165:
+ case 166:
+ case 167:
+ case 168:
+ case 169:
+ case 170:
+ case 171:
+ case 172:
+ case 173:
+ case 174:
+ case 175:
+ case 176:
+ case 177:
+ case 178:
+ case 179:
+ case 180:
+ case 181:
+ case 182:
+ case 183:
+ case 184:
+ case 185:
+ case 186:
+ case 187:
+ case 188:
+ case 189:
+ case 190:
+ case 191:
+ case 192:
+ case 193:
+ case 194:
+ case 195:
+ case 196:
+ case 197:
+ case 198:
+ case 199:
+ case 200:
+ case 201:
+ case 202:
+ case 203:
+ case 204:
+ case 205:
+ case 206:
+ case 207:
+ case 208:
+ case 209:
+ case 210:
+ case 211:
+ case 212:
+ case 213:
+ case 214:
+ case 215:
+ case 216:
+ case 217:
+ case 218:
+ case 219:
+ case 220:
+ case 221:
+ case 222:
+ case 223:
+ case 224:
+ case 225:
+ case 226:
+ case 227:
+ case 228:
+ case 229:
+ case 230:
+ case 231:
+ case 232:
+ case 233:
+ case 234:
+ case 235:
+ case 236:
+ case 237:
+ case 238:
+ case 239:
+ case 240:
+ case 241:
+ case 242:
+ case 243:
+ case 244:
+ case 245:
+ case 246:
+ case 247:
+ case 248:
+ case 249:
+ case 250:
+ case 251:
+ case 252:
+ case 253:
+ case 254:
+ case 255:
+
+ /* Parse nulterm socks4a_addr_hostname */
+ {
+ uint8_t *eos = (uint8_t*)memchr(ptr, 0, remaining);
+ size_t memlen;
+ if (eos == NULL)
+ goto truncated;
+ trunnel_assert(eos >= ptr);
+ trunnel_assert((size_t)(eos - ptr) < SIZE_MAX - 1);
+ memlen = ((size_t)(eos - ptr)) + 1;
+ if (!(obj->socks4a_addr_hostname = trunnel_malloc(memlen)))
+ goto fail;
+ memcpy(obj->socks4a_addr_hostname, ptr, memlen);
+ remaining -= memlen; ptr += memlen;
+ }
+ break;
+
+ default:
+ break;
+ }
+ trunnel_assert(ptr + remaining == input + len_in);
+ return len_in - remaining;
+
+ truncated:
+ return -2;
+ fail:
+ result = -1;
+ return result;
+}
+
+ssize_t
+socks4_client_request_parse(socks4_client_request_t **output, const uint8_t *input, const size_t len_in)
+{
+ ssize_t result;
+ *output = socks4_client_request_new();
+ if (NULL == *output)
+ return -1;
+ result = socks4_client_request_parse_into(*output, input, len_in);
+ if (result < 0) {
+ socks4_client_request_free(*output);
+ *output = NULL;
+ }
+ return result;
+}
+socks4_server_reply_t *
+socks4_server_reply_new(void)
+{
+ socks4_server_reply_t *val = trunnel_calloc(1, sizeof(socks4_server_reply_t));
+ if (NULL == val)
+ return NULL;
+ val->version = 4;
+ return val;
+}
+
+/** Release all storage held inside 'obj', but do not free 'obj'.
+ */
+static void
+socks4_server_reply_clear(socks4_server_reply_t *obj)
+{
+ (void) obj;
+}
+
+void
+socks4_server_reply_free(socks4_server_reply_t *obj)
+{
+ if (obj == NULL)
+ return;
+ socks4_server_reply_clear(obj);
+ trunnel_memwipe(obj, sizeof(socks4_server_reply_t));
+ trunnel_free_(obj);
+}
+
+uint8_t
+socks4_server_reply_get_version(const socks4_server_reply_t *inp)
+{
+ return inp->version;
+}
+int
+socks4_server_reply_set_version(socks4_server_reply_t *inp, uint8_t val)
+{
+ if (! ((val == 4))) {
+ TRUNNEL_SET_ERROR_CODE(inp);
+ return -1;
+ }
+ inp->version = val;
+ return 0;
+}
+uint8_t
+socks4_server_reply_get_status(const socks4_server_reply_t *inp)
+{
+ return inp->status;
+}
+int
+socks4_server_reply_set_status(socks4_server_reply_t *inp, uint8_t val)
+{
+ inp->status = val;
+ return 0;
+}
+uint16_t
+socks4_server_reply_get_port(const socks4_server_reply_t *inp)
+{
+ return inp->port;
+}
+int
+socks4_server_reply_set_port(socks4_server_reply_t *inp, uint16_t val)
+{
+ inp->port = val;
+ return 0;
+}
+uint32_t
+socks4_server_reply_get_addr(const socks4_server_reply_t *inp)
+{
+ return inp->addr;
+}
+int
+socks4_server_reply_set_addr(socks4_server_reply_t *inp, uint32_t val)
+{
+ inp->addr = val;
+ return 0;
+}
+const char *
+socks4_server_reply_check(const socks4_server_reply_t *obj)
+{
+ if (obj == NULL)
+ return "Object was NULL";
+ if (obj->trunnel_error_code_)
+ return "A set function failed on this object";
+ if (! (obj->version == 4))
+ return "Integer out of bounds";
+ return NULL;
+}
+
+ssize_t
+socks4_server_reply_encoded_len(const socks4_server_reply_t *obj)
+{
+ ssize_t result = 0;
+
+ if (NULL != socks4_server_reply_check(obj))
+ return -1;
+
+
+ /* Length of u8 version IN [4] */
+ result += 1;
+
+ /* Length of u8 status */
+ result += 1;
+
+ /* Length of u16 port */
+ result += 2;
+
+ /* Length of u32 addr */
+ result += 4;
+ return result;
+}
+int
+socks4_server_reply_clear_errors(socks4_server_reply_t *obj)
+{
+ int r = obj->trunnel_error_code_;
+ obj->trunnel_error_code_ = 0;
+ return r;
+}
+ssize_t
+socks4_server_reply_encode(uint8_t *output, const size_t avail, const socks4_server_reply_t *obj)
+{
+ ssize_t result = 0;
+ size_t written = 0;
+ uint8_t *ptr = output;
+ const char *msg;
+#ifdef TRUNNEL_CHECK_ENCODED_LEN
+ const ssize_t encoded_len = socks4_server_reply_encoded_len(obj);
+#endif
+
+ if (NULL != (msg = socks4_server_reply_check(obj)))
+ goto check_failed;
+
+#ifdef TRUNNEL_CHECK_ENCODED_LEN
+ trunnel_assert(encoded_len >= 0);
+#endif
+
+ /* Encode u8 version IN [4] */
+ trunnel_assert(written <= avail);
+ if (avail - written < 1)
+ goto truncated;
+ trunnel_set_uint8(ptr, (obj->version));
+ written += 1; ptr += 1;
+
+ /* Encode u8 status */
+ trunnel_assert(written <= avail);
+ if (avail - written < 1)
+ goto truncated;
+ trunnel_set_uint8(ptr, (obj->status));
+ written += 1; ptr += 1;
+
+ /* Encode u16 port */
+ trunnel_assert(written <= avail);
+ if (avail - written < 2)
+ goto truncated;
+ trunnel_set_uint16(ptr, trunnel_htons(obj->port));
+ written += 2; ptr += 2;
+
+ /* Encode u32 addr */
+ trunnel_assert(written <= avail);
+ if (avail - written < 4)
+ goto truncated;
+ trunnel_set_uint32(ptr, trunnel_htonl(obj->addr));
+ written += 4; ptr += 4;
+
+
+ trunnel_assert(ptr == output + written);
+#ifdef TRUNNEL_CHECK_ENCODED_LEN
+ {
+ trunnel_assert(encoded_len >= 0);
+ trunnel_assert((size_t)encoded_len == written);
+ }
+
+#endif
+
+ return written;
+
+ truncated:
+ result = -2;
+ goto fail;
+ check_failed:
+ (void)msg;
+ result = -1;
+ goto fail;
+ fail:
+ trunnel_assert(result < 0);
+ return result;
+}
+
+/** As socks4_server_reply_parse(), but do not allocate the output
+ * object.
+ */
+static ssize_t
+socks4_server_reply_parse_into(socks4_server_reply_t *obj, const uint8_t *input, const size_t len_in)
+{
+ const uint8_t *ptr = input;
+ size_t remaining = len_in;
+ ssize_t result = 0;
+ (void)result;
+
+ /* Parse u8 version IN [4] */
+ CHECK_REMAINING(1, truncated);
+ obj->version = (trunnel_get_uint8(ptr));
+ remaining -= 1; ptr += 1;
+ if (! (obj->version == 4))
+ goto fail;
+
+ /* Parse u8 status */
+ CHECK_REMAINING(1, truncated);
+ obj->status = (trunnel_get_uint8(ptr));
+ remaining -= 1; ptr += 1;
+
+ /* Parse u16 port */
+ CHECK_REMAINING(2, truncated);
+ obj->port = trunnel_ntohs(trunnel_get_uint16(ptr));
+ remaining -= 2; ptr += 2;
+
+ /* Parse u32 addr */
+ CHECK_REMAINING(4, truncated);
+ obj->addr = trunnel_ntohl(trunnel_get_uint32(ptr));
+ remaining -= 4; ptr += 4;
+ trunnel_assert(ptr + remaining == input + len_in);
+ return len_in - remaining;
+
+ truncated:
+ return -2;
+ fail:
+ result = -1;
+ return result;
+}
+
+ssize_t
+socks4_server_reply_parse(socks4_server_reply_t **output, const uint8_t *input, const size_t len_in)
+{
+ ssize_t result;
+ *output = socks4_server_reply_new();
+ if (NULL == *output)
+ return -1;
+ result = socks4_server_reply_parse_into(*output, input, len_in);
+ if (result < 0) {
+ socks4_server_reply_free(*output);
+ *output = NULL;
+ }
+ return result;
+}
+socks5_client_userpass_auth_t *
+socks5_client_userpass_auth_new(void)
+{
+ socks5_client_userpass_auth_t *val = trunnel_calloc(1, sizeof(socks5_client_userpass_auth_t));
+ if (NULL == val)
+ return NULL;
+ val->version = 1;
+ return val;
+}
+
+/** Release all storage held inside 'obj', but do not free 'obj'.
+ */
+static void
+socks5_client_userpass_auth_clear(socks5_client_userpass_auth_t *obj)
+{
+ (void) obj;
+ TRUNNEL_DYNARRAY_WIPE(&obj->username);
+ TRUNNEL_DYNARRAY_CLEAR(&obj->username);
+ TRUNNEL_DYNARRAY_WIPE(&obj->passwd);
+ TRUNNEL_DYNARRAY_CLEAR(&obj->passwd);
+}
+
+void
+socks5_client_userpass_auth_free(socks5_client_userpass_auth_t *obj)
+{
+ if (obj == NULL)
+ return;
+ socks5_client_userpass_auth_clear(obj);
+ trunnel_memwipe(obj, sizeof(socks5_client_userpass_auth_t));
+ trunnel_free_(obj);
+}
+
+uint8_t
+socks5_client_userpass_auth_get_version(const socks5_client_userpass_auth_t *inp)
+{
+ return inp->version;
+}
+int
+socks5_client_userpass_auth_set_version(socks5_client_userpass_auth_t *inp, uint8_t val)
+{
+ if (! ((val == 1))) {
+ TRUNNEL_SET_ERROR_CODE(inp);
+ return -1;
+ }
+ inp->version = val;
+ return 0;
+}
+uint8_t
+socks5_client_userpass_auth_get_username_len(const socks5_client_userpass_auth_t *inp)
+{
+ return inp->username_len;
+}
+int
+socks5_client_userpass_auth_set_username_len(socks5_client_userpass_auth_t *inp, uint8_t val)
+{
+ inp->username_len = val;
+ return 0;
+}
+size_t
+socks5_client_userpass_auth_getlen_username(const socks5_client_userpass_auth_t *inp)
+{
+ return TRUNNEL_DYNARRAY_LEN(&inp->username);
+}
+
+char
+socks5_client_userpass_auth_get_username(socks5_client_userpass_auth_t *inp, size_t idx)
+{
+ return TRUNNEL_DYNARRAY_GET(&inp->username, idx);
+}
+
+char
+socks5_client_userpass_auth_getconst_username(const socks5_client_userpass_auth_t *inp, size_t idx)
+{
+ return socks5_client_userpass_auth_get_username((socks5_client_userpass_auth_t*)inp, idx);
+}
+int
+socks5_client_userpass_auth_set_username(socks5_client_userpass_auth_t *inp, size_t idx, char elt)
+{
+ TRUNNEL_DYNARRAY_SET(&inp->username, idx, elt);
+ return 0;
+}
+int
+socks5_client_userpass_auth_add_username(socks5_client_userpass_auth_t *inp, char elt)
+{
+#if SIZE_MAX >= UINT8_MAX
+ if (inp->username.n_ == UINT8_MAX)
+ goto trunnel_alloc_failed;
+#endif
+ TRUNNEL_DYNARRAY_ADD(char, &inp->username, elt, {});
+ return 0;
+ trunnel_alloc_failed:
+ TRUNNEL_SET_ERROR_CODE(inp);
+ return -1;
+}
+
+char *
+socks5_client_userpass_auth_getarray_username(socks5_client_userpass_auth_t *inp)
+{
+ return inp->username.elts_;
+}
+const char *
+socks5_client_userpass_auth_getconstarray_username(const socks5_client_userpass_auth_t *inp)
+{
+ return (const char *)socks5_client_userpass_auth_getarray_username((socks5_client_userpass_auth_t*)inp);
+}
+int
+socks5_client_userpass_auth_setlen_username(socks5_client_userpass_auth_t *inp, size_t newlen)
+{
+#if UINT8_MAX < SIZE_MAX
+ if (newlen > UINT8_MAX)
+ goto trunnel_alloc_failed;
+#endif
+ return trunnel_string_setlen(&inp->username, newlen,
+ &inp->trunnel_error_code_);
+ trunnel_alloc_failed:
+ TRUNNEL_SET_ERROR_CODE(inp);
+ return -1;
+}
+const char *
+socks5_client_userpass_auth_getstr_username(socks5_client_userpass_auth_t *inp)
+{
+ return trunnel_string_getstr(&inp->username);
+}
+int
+socks5_client_userpass_auth_setstr0_username(socks5_client_userpass_auth_t *inp, const char *val, size_t len)
+{
+#if UINT8_MAX < SIZE_MAX
+ if (len > UINT8_MAX) {
+ TRUNNEL_SET_ERROR_CODE(inp);
+ return -1;
+ }
+#endif
+ return trunnel_string_setstr0(&inp->username, val, len, &inp->trunnel_error_code_);
+}
+int
+socks5_client_userpass_auth_setstr_username(socks5_client_userpass_auth_t *inp, const char *val)
+{
+ return socks5_client_userpass_auth_setstr0_username(inp, val, strlen(val));
+}
+uint8_t
+socks5_client_userpass_auth_get_passwd_len(const socks5_client_userpass_auth_t *inp)
+{
+ return inp->passwd_len;
+}
+int
+socks5_client_userpass_auth_set_passwd_len(socks5_client_userpass_auth_t *inp, uint8_t val)
+{
+ inp->passwd_len = val;
+ return 0;
+}
+size_t
+socks5_client_userpass_auth_getlen_passwd(const socks5_client_userpass_auth_t *inp)
+{
+ return TRUNNEL_DYNARRAY_LEN(&inp->passwd);
+}
+
+char
+socks5_client_userpass_auth_get_passwd(socks5_client_userpass_auth_t *inp, size_t idx)
+{
+ return TRUNNEL_DYNARRAY_GET(&inp->passwd, idx);
+}
+
+char
+socks5_client_userpass_auth_getconst_passwd(const socks5_client_userpass_auth_t *inp, size_t idx)
+{
+ return socks5_client_userpass_auth_get_passwd((socks5_client_userpass_auth_t*)inp, idx);
+}
+int
+socks5_client_userpass_auth_set_passwd(socks5_client_userpass_auth_t *inp, size_t idx, char elt)
+{
+ TRUNNEL_DYNARRAY_SET(&inp->passwd, idx, elt);
+ return 0;
+}
+int
+socks5_client_userpass_auth_add_passwd(socks5_client_userpass_auth_t *inp, char elt)
+{
+#if SIZE_MAX >= UINT8_MAX
+ if (inp->passwd.n_ == UINT8_MAX)
+ goto trunnel_alloc_failed;
+#endif
+ TRUNNEL_DYNARRAY_ADD(char, &inp->passwd, elt, {});
+ return 0;
+ trunnel_alloc_failed:
+ TRUNNEL_SET_ERROR_CODE(inp);
+ return -1;
+}
+
+char *
+socks5_client_userpass_auth_getarray_passwd(socks5_client_userpass_auth_t *inp)
+{
+ return inp->passwd.elts_;
+}
+const char *
+socks5_client_userpass_auth_getconstarray_passwd(const socks5_client_userpass_auth_t *inp)
+{
+ return (const char *)socks5_client_userpass_auth_getarray_passwd((socks5_client_userpass_auth_t*)inp);
+}
+int
+socks5_client_userpass_auth_setlen_passwd(socks5_client_userpass_auth_t *inp, size_t newlen)
+{
+#if UINT8_MAX < SIZE_MAX
+ if (newlen > UINT8_MAX)
+ goto trunnel_alloc_failed;
+#endif
+ return trunnel_string_setlen(&inp->passwd, newlen,
+ &inp->trunnel_error_code_);
+ trunnel_alloc_failed:
+ TRUNNEL_SET_ERROR_CODE(inp);
+ return -1;
+}
+const char *
+socks5_client_userpass_auth_getstr_passwd(socks5_client_userpass_auth_t *inp)
+{
+ return trunnel_string_getstr(&inp->passwd);
+}
+int
+socks5_client_userpass_auth_setstr0_passwd(socks5_client_userpass_auth_t *inp, const char *val, size_t len)
+{
+#if UINT8_MAX < SIZE_MAX
+ if (len > UINT8_MAX) {
+ TRUNNEL_SET_ERROR_CODE(inp);
+ return -1;
+ }
+#endif
+ return trunnel_string_setstr0(&inp->passwd, val, len, &inp->trunnel_error_code_);
+}
+int
+socks5_client_userpass_auth_setstr_passwd(socks5_client_userpass_auth_t *inp, const char *val)
+{
+ return socks5_client_userpass_auth_setstr0_passwd(inp, val, strlen(val));
+}
+const char *
+socks5_client_userpass_auth_check(const socks5_client_userpass_auth_t *obj)
+{
+ if (obj == NULL)
+ return "Object was NULL";
+ if (obj->trunnel_error_code_)
+ return "A set function failed on this object";
+ if (! (obj->version == 1))
+ return "Integer out of bounds";
+ if (TRUNNEL_DYNARRAY_LEN(&obj->username) != obj->username_len)
+ return "Length mismatch for username";
+ if (TRUNNEL_DYNARRAY_LEN(&obj->passwd) != obj->passwd_len)
+ return "Length mismatch for passwd";
+ return NULL;
+}
+
+ssize_t
+socks5_client_userpass_auth_encoded_len(const socks5_client_userpass_auth_t *obj)
+{
+ ssize_t result = 0;
+
+ if (NULL != socks5_client_userpass_auth_check(obj))
+ return -1;
+
+
+ /* Length of u8 version IN [1] */
+ result += 1;
+
+ /* Length of u8 username_len */
+ result += 1;
+
+ /* Length of char username[username_len] */
+ result += TRUNNEL_DYNARRAY_LEN(&obj->username);
+
+ /* Length of u8 passwd_len */
+ result += 1;
+
+ /* Length of char passwd[passwd_len] */
+ result += TRUNNEL_DYNARRAY_LEN(&obj->passwd);
+ return result;
+}
+int
+socks5_client_userpass_auth_clear_errors(socks5_client_userpass_auth_t *obj)
+{
+ int r = obj->trunnel_error_code_;
+ obj->trunnel_error_code_ = 0;
+ return r;
+}
+ssize_t
+socks5_client_userpass_auth_encode(uint8_t *output, const size_t avail, const socks5_client_userpass_auth_t *obj)
+{
+ ssize_t result = 0;
+ size_t written = 0;
+ uint8_t *ptr = output;
+ const char *msg;
+#ifdef TRUNNEL_CHECK_ENCODED_LEN
+ const ssize_t encoded_len = socks5_client_userpass_auth_encoded_len(obj);
+#endif
+
+ if (NULL != (msg = socks5_client_userpass_auth_check(obj)))
+ goto check_failed;
+
+#ifdef TRUNNEL_CHECK_ENCODED_LEN
+ trunnel_assert(encoded_len >= 0);
+#endif
+
+ /* Encode u8 version IN [1] */
+ trunnel_assert(written <= avail);
+ if (avail - written < 1)
+ goto truncated;
+ trunnel_set_uint8(ptr, (obj->version));
+ written += 1; ptr += 1;
+
+ /* Encode u8 username_len */
+ trunnel_assert(written <= avail);
+ if (avail - written < 1)
+ goto truncated;
+ trunnel_set_uint8(ptr, (obj->username_len));
+ written += 1; ptr += 1;
+
+ /* Encode char username[username_len] */
+ {
+ size_t elt_len = TRUNNEL_DYNARRAY_LEN(&obj->username);
+ trunnel_assert(obj->username_len == elt_len);
+ trunnel_assert(written <= avail);
+ if (avail - written < elt_len)
+ goto truncated;
+ if (elt_len)
+ memcpy(ptr, obj->username.elts_, elt_len);
+ written += elt_len; ptr += elt_len;
+ }
+
+ /* Encode u8 passwd_len */
+ trunnel_assert(written <= avail);
+ if (avail - written < 1)
+ goto truncated;
+ trunnel_set_uint8(ptr, (obj->passwd_len));
+ written += 1; ptr += 1;
+
+ /* Encode char passwd[passwd_len] */
+ {
+ size_t elt_len = TRUNNEL_DYNARRAY_LEN(&obj->passwd);
+ trunnel_assert(obj->passwd_len == elt_len);
+ trunnel_assert(written <= avail);
+ if (avail - written < elt_len)
+ goto truncated;
+ if (elt_len)
+ memcpy(ptr, obj->passwd.elts_, elt_len);
+ written += elt_len; ptr += elt_len;
+ }
+
+
+ trunnel_assert(ptr == output + written);
+#ifdef TRUNNEL_CHECK_ENCODED_LEN
+ {
+ trunnel_assert(encoded_len >= 0);
+ trunnel_assert((size_t)encoded_len == written);
+ }
+
+#endif
+
+ return written;
+
+ truncated:
+ result = -2;
+ goto fail;
+ check_failed:
+ (void)msg;
+ result = -1;
+ goto fail;
+ fail:
+ trunnel_assert(result < 0);
+ return result;
+}
+
+/** As socks5_client_userpass_auth_parse(), but do not allocate the
+ * output object.
+ */
+static ssize_t
+socks5_client_userpass_auth_parse_into(socks5_client_userpass_auth_t *obj, const uint8_t *input, const size_t len_in)
+{
+ const uint8_t *ptr = input;
+ size_t remaining = len_in;
+ ssize_t result = 0;
+ (void)result;
+
+ /* Parse u8 version IN [1] */
+ CHECK_REMAINING(1, truncated);
+ obj->version = (trunnel_get_uint8(ptr));
+ remaining -= 1; ptr += 1;
+ if (! (obj->version == 1))
+ goto fail;
+
+ /* Parse u8 username_len */
+ CHECK_REMAINING(1, truncated);
+ obj->username_len = (trunnel_get_uint8(ptr));
+ remaining -= 1; ptr += 1;
+
+ /* Parse char username[username_len] */
+ CHECK_REMAINING(obj->username_len, truncated);
+ if (socks5_client_userpass_auth_setstr0_username(obj, (const char*)ptr, obj->username_len))
+ goto fail;
+ ptr += obj->username_len; remaining -= obj->username_len;
+
+ /* Parse u8 passwd_len */
+ CHECK_REMAINING(1, truncated);
+ obj->passwd_len = (trunnel_get_uint8(ptr));
+ remaining -= 1; ptr += 1;
+
+ /* Parse char passwd[passwd_len] */
+ CHECK_REMAINING(obj->passwd_len, truncated);
+ if (socks5_client_userpass_auth_setstr0_passwd(obj, (const char*)ptr, obj->passwd_len))
+ goto fail;
+ ptr += obj->passwd_len; remaining -= obj->passwd_len;
+ trunnel_assert(ptr + remaining == input + len_in);
+ return len_in - remaining;
+
+ truncated:
+ return -2;
+ fail:
+ result = -1;
+ return result;
+}
+
+ssize_t
+socks5_client_userpass_auth_parse(socks5_client_userpass_auth_t **output, const uint8_t *input, const size_t len_in)
+{
+ ssize_t result;
+ *output = socks5_client_userpass_auth_new();
+ if (NULL == *output)
+ return -1;
+ result = socks5_client_userpass_auth_parse_into(*output, input, len_in);
+ if (result < 0) {
+ socks5_client_userpass_auth_free(*output);
+ *output = NULL;
+ }
+ return result;
+}
+socks5_client_version_t *
+socks5_client_version_new(void)
+{
+ socks5_client_version_t *val = trunnel_calloc(1, sizeof(socks5_client_version_t));
+ if (NULL == val)
+ return NULL;
+ val->version = 5;
+ return val;
+}
+
+/** Release all storage held inside 'obj', but do not free 'obj'.
+ */
+static void
+socks5_client_version_clear(socks5_client_version_t *obj)
+{
+ (void) obj;
+ TRUNNEL_DYNARRAY_WIPE(&obj->methods);
+ TRUNNEL_DYNARRAY_CLEAR(&obj->methods);
+}
+
+void
+socks5_client_version_free(socks5_client_version_t *obj)
+{
+ if (obj == NULL)
+ return;
+ socks5_client_version_clear(obj);
+ trunnel_memwipe(obj, sizeof(socks5_client_version_t));
+ trunnel_free_(obj);
+}
+
+uint8_t
+socks5_client_version_get_version(const socks5_client_version_t *inp)
+{
+ return inp->version;
+}
+int
+socks5_client_version_set_version(socks5_client_version_t *inp, uint8_t val)
+{
+ if (! ((val == 5))) {
+ TRUNNEL_SET_ERROR_CODE(inp);
+ return -1;
+ }
+ inp->version = val;
+ return 0;
+}
+uint8_t
+socks5_client_version_get_n_methods(const socks5_client_version_t *inp)
+{
+ return inp->n_methods;
+}
+int
+socks5_client_version_set_n_methods(socks5_client_version_t *inp, uint8_t val)
+{
+ inp->n_methods = val;
+ return 0;
+}
+size_t
+socks5_client_version_getlen_methods(const socks5_client_version_t *inp)
+{
+ return TRUNNEL_DYNARRAY_LEN(&inp->methods);
+}
+
+uint8_t
+socks5_client_version_get_methods(socks5_client_version_t *inp, size_t idx)
+{
+ return TRUNNEL_DYNARRAY_GET(&inp->methods, idx);
+}
+
+uint8_t
+socks5_client_version_getconst_methods(const socks5_client_version_t *inp, size_t idx)
+{
+ return socks5_client_version_get_methods((socks5_client_version_t*)inp, idx);
+}
+int
+socks5_client_version_set_methods(socks5_client_version_t *inp, size_t idx, uint8_t elt)
+{
+ TRUNNEL_DYNARRAY_SET(&inp->methods, idx, elt);
+ return 0;
+}
+int
+socks5_client_version_add_methods(socks5_client_version_t *inp, uint8_t elt)
+{
+#if SIZE_MAX >= UINT8_MAX
+ if (inp->methods.n_ == UINT8_MAX)
+ goto trunnel_alloc_failed;
+#endif
+ TRUNNEL_DYNARRAY_ADD(uint8_t, &inp->methods, elt, {});
+ return 0;
+ trunnel_alloc_failed:
+ TRUNNEL_SET_ERROR_CODE(inp);
+ return -1;
+}
+
+uint8_t *
+socks5_client_version_getarray_methods(socks5_client_version_t *inp)
+{
+ return inp->methods.elts_;
+}
+const uint8_t *
+socks5_client_version_getconstarray_methods(const socks5_client_version_t *inp)
+{
+ return (const uint8_t *)socks5_client_version_getarray_methods((socks5_client_version_t*)inp);
+}
+int
+socks5_client_version_setlen_methods(socks5_client_version_t *inp, size_t newlen)
+{
+ uint8_t *newptr;
+#if UINT8_MAX < SIZE_MAX
+ if (newlen > UINT8_MAX)
+ goto trunnel_alloc_failed;
+#endif
+ newptr = trunnel_dynarray_setlen(&inp->methods.allocated_,
+ &inp->methods.n_, inp->methods.elts_, newlen,
+ sizeof(inp->methods.elts_[0]), (trunnel_free_fn_t) NULL,
+ &inp->trunnel_error_code_);
+ if (newlen != 0 && newptr == NULL)
+ goto trunnel_alloc_failed;
+ inp->methods.elts_ = newptr;
+ return 0;
+ trunnel_alloc_failed:
+ TRUNNEL_SET_ERROR_CODE(inp);
+ return -1;
+}
+const char *
+socks5_client_version_check(const socks5_client_version_t *obj)
+{
+ if (obj == NULL)
+ return "Object was NULL";
+ if (obj->trunnel_error_code_)
+ return "A set function failed on this object";
+ if (! (obj->version == 5))
+ return "Integer out of bounds";
+ if (TRUNNEL_DYNARRAY_LEN(&obj->methods) != obj->n_methods)
+ return "Length mismatch for methods";
+ return NULL;
+}
+
+ssize_t
+socks5_client_version_encoded_len(const socks5_client_version_t *obj)
+{
+ ssize_t result = 0;
+
+ if (NULL != socks5_client_version_check(obj))
+ return -1;
+
+
+ /* Length of u8 version IN [5] */
+ result += 1;
+
+ /* Length of u8 n_methods */
+ result += 1;
+
+ /* Length of u8 methods[n_methods] */
+ result += TRUNNEL_DYNARRAY_LEN(&obj->methods);
+ return result;
+}
+int
+socks5_client_version_clear_errors(socks5_client_version_t *obj)
+{
+ int r = obj->trunnel_error_code_;
+ obj->trunnel_error_code_ = 0;
+ return r;
+}
+ssize_t
+socks5_client_version_encode(uint8_t *output, const size_t avail, const socks5_client_version_t *obj)
+{
+ ssize_t result = 0;
+ size_t written = 0;
+ uint8_t *ptr = output;
+ const char *msg;
+#ifdef TRUNNEL_CHECK_ENCODED_LEN
+ const ssize_t encoded_len = socks5_client_version_encoded_len(obj);
+#endif
+
+ if (NULL != (msg = socks5_client_version_check(obj)))
+ goto check_failed;
+
+#ifdef TRUNNEL_CHECK_ENCODED_LEN
+ trunnel_assert(encoded_len >= 0);
+#endif
+
+ /* Encode u8 version IN [5] */
+ trunnel_assert(written <= avail);
+ if (avail - written < 1)
+ goto truncated;
+ trunnel_set_uint8(ptr, (obj->version));
+ written += 1; ptr += 1;
+
+ /* Encode u8 n_methods */
+ trunnel_assert(written <= avail);
+ if (avail - written < 1)
+ goto truncated;
+ trunnel_set_uint8(ptr, (obj->n_methods));
+ written += 1; ptr += 1;
+
+ /* Encode u8 methods[n_methods] */
+ {
+ size_t elt_len = TRUNNEL_DYNARRAY_LEN(&obj->methods);
+ trunnel_assert(obj->n_methods == elt_len);
+ trunnel_assert(written <= avail);
+ if (avail - written < elt_len)
+ goto truncated;
+ if (elt_len)
+ memcpy(ptr, obj->methods.elts_, elt_len);
+ written += elt_len; ptr += elt_len;
+ }
+
+
+ trunnel_assert(ptr == output + written);
+#ifdef TRUNNEL_CHECK_ENCODED_LEN
+ {
+ trunnel_assert(encoded_len >= 0);
+ trunnel_assert((size_t)encoded_len == written);
+ }
+
+#endif
+
+ return written;
+
+ truncated:
+ result = -2;
+ goto fail;
+ check_failed:
+ (void)msg;
+ result = -1;
+ goto fail;
+ fail:
+ trunnel_assert(result < 0);
+ return result;
+}
+
+/** As socks5_client_version_parse(), but do not allocate the output
+ * object.
+ */
+static ssize_t
+socks5_client_version_parse_into(socks5_client_version_t *obj, const uint8_t *input, const size_t len_in)
+{
+ const uint8_t *ptr = input;
+ size_t remaining = len_in;
+ ssize_t result = 0;
+ (void)result;
+
+ /* Parse u8 version IN [5] */
+ CHECK_REMAINING(1, truncated);
+ obj->version = (trunnel_get_uint8(ptr));
+ remaining -= 1; ptr += 1;
+ if (! (obj->version == 5))
+ goto fail;
+
+ /* Parse u8 n_methods */
+ CHECK_REMAINING(1, truncated);
+ obj->n_methods = (trunnel_get_uint8(ptr));
+ remaining -= 1; ptr += 1;
+
+ /* Parse u8 methods[n_methods] */
+ CHECK_REMAINING(obj->n_methods, truncated);
+ TRUNNEL_DYNARRAY_EXPAND(uint8_t, &obj->methods, obj->n_methods, {});
+ obj->methods.n_ = obj->n_methods;
+ if (obj->n_methods)
+ memcpy(obj->methods.elts_, ptr, obj->n_methods);
+ ptr += obj->n_methods; remaining -= obj->n_methods;
+ trunnel_assert(ptr + remaining == input + len_in);
+ return len_in - remaining;
+
+ truncated:
+ return -2;
+ trunnel_alloc_failed:
+ return -1;
+ fail:
+ result = -1;
+ return result;
+}
+
+ssize_t
+socks5_client_version_parse(socks5_client_version_t **output, const uint8_t *input, const size_t len_in)
+{
+ ssize_t result;
+ *output = socks5_client_version_new();
+ if (NULL == *output)
+ return -1;
+ result = socks5_client_version_parse_into(*output, input, len_in);
+ if (result < 0) {
+ socks5_client_version_free(*output);
+ *output = NULL;
+ }
+ return result;
+}
+socks5_server_method_t *
+socks5_server_method_new(void)
+{
+ socks5_server_method_t *val = trunnel_calloc(1, sizeof(socks5_server_method_t));
+ if (NULL == val)
+ return NULL;
+ val->version = 5;
+ return val;
+}
+
+/** Release all storage held inside 'obj', but do not free 'obj'.
+ */
+static void
+socks5_server_method_clear(socks5_server_method_t *obj)
+{
+ (void) obj;
+}
+
+void
+socks5_server_method_free(socks5_server_method_t *obj)
+{
+ if (obj == NULL)
+ return;
+ socks5_server_method_clear(obj);
+ trunnel_memwipe(obj, sizeof(socks5_server_method_t));
+ trunnel_free_(obj);
+}
+
+uint8_t
+socks5_server_method_get_version(const socks5_server_method_t *inp)
+{
+ return inp->version;
+}
+int
+socks5_server_method_set_version(socks5_server_method_t *inp, uint8_t val)
+{
+ if (! ((val == 5))) {
+ TRUNNEL_SET_ERROR_CODE(inp);
+ return -1;
+ }
+ inp->version = val;
+ return 0;
+}
+uint8_t
+socks5_server_method_get_method(const socks5_server_method_t *inp)
+{
+ return inp->method;
+}
+int
+socks5_server_method_set_method(socks5_server_method_t *inp, uint8_t val)
+{
+ inp->method = val;
+ return 0;
+}
+const char *
+socks5_server_method_check(const socks5_server_method_t *obj)
+{
+ if (obj == NULL)
+ return "Object was NULL";
+ if (obj->trunnel_error_code_)
+ return "A set function failed on this object";
+ if (! (obj->version == 5))
+ return "Integer out of bounds";
+ return NULL;
+}
+
+ssize_t
+socks5_server_method_encoded_len(const socks5_server_method_t *obj)
+{
+ ssize_t result = 0;
+
+ if (NULL != socks5_server_method_check(obj))
+ return -1;
+
+
+ /* Length of u8 version IN [5] */
+ result += 1;
+
+ /* Length of u8 method */
+ result += 1;
+ return result;
+}
+int
+socks5_server_method_clear_errors(socks5_server_method_t *obj)
+{
+ int r = obj->trunnel_error_code_;
+ obj->trunnel_error_code_ = 0;
+ return r;
+}
+ssize_t
+socks5_server_method_encode(uint8_t *output, const size_t avail, const socks5_server_method_t *obj)
+{
+ ssize_t result = 0;
+ size_t written = 0;
+ uint8_t *ptr = output;
+ const char *msg;
+#ifdef TRUNNEL_CHECK_ENCODED_LEN
+ const ssize_t encoded_len = socks5_server_method_encoded_len(obj);
+#endif
+
+ if (NULL != (msg = socks5_server_method_check(obj)))
+ goto check_failed;
+
+#ifdef TRUNNEL_CHECK_ENCODED_LEN
+ trunnel_assert(encoded_len >= 0);
+#endif
+
+ /* Encode u8 version IN [5] */
+ trunnel_assert(written <= avail);
+ if (avail - written < 1)
+ goto truncated;
+ trunnel_set_uint8(ptr, (obj->version));
+ written += 1; ptr += 1;
+
+ /* Encode u8 method */
+ trunnel_assert(written <= avail);
+ if (avail - written < 1)
+ goto truncated;
+ trunnel_set_uint8(ptr, (obj->method));
+ written += 1; ptr += 1;
+
+
+ trunnel_assert(ptr == output + written);
+#ifdef TRUNNEL_CHECK_ENCODED_LEN
+ {
+ trunnel_assert(encoded_len >= 0);
+ trunnel_assert((size_t)encoded_len == written);
+ }
+
+#endif
+
+ return written;
+
+ truncated:
+ result = -2;
+ goto fail;
+ check_failed:
+ (void)msg;
+ result = -1;
+ goto fail;
+ fail:
+ trunnel_assert(result < 0);
+ return result;
+}
+
+/** As socks5_server_method_parse(), but do not allocate the output
+ * object.
+ */
+static ssize_t
+socks5_server_method_parse_into(socks5_server_method_t *obj, const uint8_t *input, const size_t len_in)
+{
+ const uint8_t *ptr = input;
+ size_t remaining = len_in;
+ ssize_t result = 0;
+ (void)result;
+
+ /* Parse u8 version IN [5] */
+ CHECK_REMAINING(1, truncated);
+ obj->version = (trunnel_get_uint8(ptr));
+ remaining -= 1; ptr += 1;
+ if (! (obj->version == 5))
+ goto fail;
+
+ /* Parse u8 method */
+ CHECK_REMAINING(1, truncated);
+ obj->method = (trunnel_get_uint8(ptr));
+ remaining -= 1; ptr += 1;
+ trunnel_assert(ptr + remaining == input + len_in);
+ return len_in - remaining;
+
+ truncated:
+ return -2;
+ fail:
+ result = -1;
+ return result;
+}
+
+ssize_t
+socks5_server_method_parse(socks5_server_method_t **output, const uint8_t *input, const size_t len_in)
+{
+ ssize_t result;
+ *output = socks5_server_method_new();
+ if (NULL == *output)
+ return -1;
+ result = socks5_server_method_parse_into(*output, input, len_in);
+ if (result < 0) {
+ socks5_server_method_free(*output);
+ *output = NULL;
+ }
+ return result;
+}
+socks5_server_userpass_auth_t *
+socks5_server_userpass_auth_new(void)
+{
+ socks5_server_userpass_auth_t *val = trunnel_calloc(1, sizeof(socks5_server_userpass_auth_t));
+ if (NULL == val)
+ return NULL;
+ val->version = 1;
+ return val;
+}
+
+/** Release all storage held inside 'obj', but do not free 'obj'.
+ */
+static void
+socks5_server_userpass_auth_clear(socks5_server_userpass_auth_t *obj)
+{
+ (void) obj;
+}
+
+void
+socks5_server_userpass_auth_free(socks5_server_userpass_auth_t *obj)
+{
+ if (obj == NULL)
+ return;
+ socks5_server_userpass_auth_clear(obj);
+ trunnel_memwipe(obj, sizeof(socks5_server_userpass_auth_t));
+ trunnel_free_(obj);
+}
+
+uint8_t
+socks5_server_userpass_auth_get_version(const socks5_server_userpass_auth_t *inp)
+{
+ return inp->version;
+}
+int
+socks5_server_userpass_auth_set_version(socks5_server_userpass_auth_t *inp, uint8_t val)
+{
+ if (! ((val == 1))) {
+ TRUNNEL_SET_ERROR_CODE(inp);
+ return -1;
+ }
+ inp->version = val;
+ return 0;
+}
+uint8_t
+socks5_server_userpass_auth_get_status(const socks5_server_userpass_auth_t *inp)
+{
+ return inp->status;
+}
+int
+socks5_server_userpass_auth_set_status(socks5_server_userpass_auth_t *inp, uint8_t val)
+{
+ inp->status = val;
+ return 0;
+}
+const char *
+socks5_server_userpass_auth_check(const socks5_server_userpass_auth_t *obj)
+{
+ if (obj == NULL)
+ return "Object was NULL";
+ if (obj->trunnel_error_code_)
+ return "A set function failed on this object";
+ if (! (obj->version == 1))
+ return "Integer out of bounds";
+ return NULL;
+}
+
+ssize_t
+socks5_server_userpass_auth_encoded_len(const socks5_server_userpass_auth_t *obj)
+{
+ ssize_t result = 0;
+
+ if (NULL != socks5_server_userpass_auth_check(obj))
+ return -1;
+
+
+ /* Length of u8 version IN [1] */
+ result += 1;
+
+ /* Length of u8 status */
+ result += 1;
+ return result;
+}
+int
+socks5_server_userpass_auth_clear_errors(socks5_server_userpass_auth_t *obj)
+{
+ int r = obj->trunnel_error_code_;
+ obj->trunnel_error_code_ = 0;
+ return r;
+}
+ssize_t
+socks5_server_userpass_auth_encode(uint8_t *output, const size_t avail, const socks5_server_userpass_auth_t *obj)
+{
+ ssize_t result = 0;
+ size_t written = 0;
+ uint8_t *ptr = output;
+ const char *msg;
+#ifdef TRUNNEL_CHECK_ENCODED_LEN
+ const ssize_t encoded_len = socks5_server_userpass_auth_encoded_len(obj);
+#endif
+
+ if (NULL != (msg = socks5_server_userpass_auth_check(obj)))
+ goto check_failed;
+
+#ifdef TRUNNEL_CHECK_ENCODED_LEN
+ trunnel_assert(encoded_len >= 0);
+#endif
+
+ /* Encode u8 version IN [1] */
+ trunnel_assert(written <= avail);
+ if (avail - written < 1)
+ goto truncated;
+ trunnel_set_uint8(ptr, (obj->version));
+ written += 1; ptr += 1;
+
+ /* Encode u8 status */
+ trunnel_assert(written <= avail);
+ if (avail - written < 1)
+ goto truncated;
+ trunnel_set_uint8(ptr, (obj->status));
+ written += 1; ptr += 1;
+
+
+ trunnel_assert(ptr == output + written);
+#ifdef TRUNNEL_CHECK_ENCODED_LEN
+ {
+ trunnel_assert(encoded_len >= 0);
+ trunnel_assert((size_t)encoded_len == written);
+ }
+
+#endif
+
+ return written;
+
+ truncated:
+ result = -2;
+ goto fail;
+ check_failed:
+ (void)msg;
+ result = -1;
+ goto fail;
+ fail:
+ trunnel_assert(result < 0);
+ return result;
+}
+
+/** As socks5_server_userpass_auth_parse(), but do not allocate the
+ * output object.
+ */
+static ssize_t
+socks5_server_userpass_auth_parse_into(socks5_server_userpass_auth_t *obj, const uint8_t *input, const size_t len_in)
+{
+ const uint8_t *ptr = input;
+ size_t remaining = len_in;
+ ssize_t result = 0;
+ (void)result;
+
+ /* Parse u8 version IN [1] */
+ CHECK_REMAINING(1, truncated);
+ obj->version = (trunnel_get_uint8(ptr));
+ remaining -= 1; ptr += 1;
+ if (! (obj->version == 1))
+ goto fail;
+
+ /* Parse u8 status */
+ CHECK_REMAINING(1, truncated);
+ obj->status = (trunnel_get_uint8(ptr));
+ remaining -= 1; ptr += 1;
+ trunnel_assert(ptr + remaining == input + len_in);
+ return len_in - remaining;
+
+ truncated:
+ return -2;
+ fail:
+ result = -1;
+ return result;
+}
+
+ssize_t
+socks5_server_userpass_auth_parse(socks5_server_userpass_auth_t **output, const uint8_t *input, const size_t len_in)
+{
+ ssize_t result;
+ *output = socks5_server_userpass_auth_new();
+ if (NULL == *output)
+ return -1;
+ result = socks5_server_userpass_auth_parse_into(*output, input, len_in);
+ if (result < 0) {
+ socks5_server_userpass_auth_free(*output);
+ *output = NULL;
+ }
+ return result;
+}
+socks5_client_request_t *
+socks5_client_request_new(void)
+{
+ socks5_client_request_t *val = trunnel_calloc(1, sizeof(socks5_client_request_t));
+ if (NULL == val)
+ return NULL;
+ val->version = 5;
+ val->command = CMD_BIND;
+ return val;
+}
+
+/** Release all storage held inside 'obj', but do not free 'obj'.
+ */
+static void
+socks5_client_request_clear(socks5_client_request_t *obj)
+{
+ (void) obj;
+ domainname_free(obj->dest_addr_domainname);
+ obj->dest_addr_domainname = NULL;
+}
+
+void
+socks5_client_request_free(socks5_client_request_t *obj)
+{
+ if (obj == NULL)
+ return;
+ socks5_client_request_clear(obj);
+ trunnel_memwipe(obj, sizeof(socks5_client_request_t));
+ trunnel_free_(obj);
+}
+
+uint8_t
+socks5_client_request_get_version(const socks5_client_request_t *inp)
+{
+ return inp->version;
+}
+int
+socks5_client_request_set_version(socks5_client_request_t *inp, uint8_t val)
+{
+ if (! ((val == 5))) {
+ TRUNNEL_SET_ERROR_CODE(inp);
+ return -1;
+ }
+ inp->version = val;
+ return 0;
+}
+uint8_t
+socks5_client_request_get_command(const socks5_client_request_t *inp)
+{
+ return inp->command;
+}
+int
+socks5_client_request_set_command(socks5_client_request_t *inp, uint8_t val)
+{
+ if (! ((val == CMD_BIND || val == CMD_CONNECT || val == CMD_RESOLVE || val == CMD_RESOLVE_PTR || val == CMD_UDP_ASSOCIATE))) {
+ TRUNNEL_SET_ERROR_CODE(inp);
+ return -1;
+ }
+ inp->command = val;
+ return 0;
+}
+uint8_t
+socks5_client_request_get_reserved(const socks5_client_request_t *inp)
+{
+ return inp->reserved;
+}
+int
+socks5_client_request_set_reserved(socks5_client_request_t *inp, uint8_t val)
+{
+ if (! ((val == 0))) {
+ TRUNNEL_SET_ERROR_CODE(inp);
+ return -1;
+ }
+ inp->reserved = val;
+ return 0;
+}
+uint8_t
+socks5_client_request_get_atype(const socks5_client_request_t *inp)
+{
+ return inp->atype;
+}
+int
+socks5_client_request_set_atype(socks5_client_request_t *inp, uint8_t val)
+{
+ inp->atype = val;
+ return 0;
+}
+uint32_t
+socks5_client_request_get_dest_addr_ipv4(const socks5_client_request_t *inp)
+{
+ return inp->dest_addr_ipv4;
+}
+int
+socks5_client_request_set_dest_addr_ipv4(socks5_client_request_t *inp, uint32_t val)
+{
+ inp->dest_addr_ipv4 = val;
+ return 0;
+}
+size_t
+socks5_client_request_getlen_dest_addr_ipv6(const socks5_client_request_t *inp)
+{
+ (void)inp; return 16;
+}
+
+uint8_t
+socks5_client_request_get_dest_addr_ipv6(socks5_client_request_t *inp, size_t idx)
+{
+ trunnel_assert(idx < 16);
+ return inp->dest_addr_ipv6[idx];
+}
+
+uint8_t
+socks5_client_request_getconst_dest_addr_ipv6(const socks5_client_request_t *inp, size_t idx)
+{
+ return socks5_client_request_get_dest_addr_ipv6((socks5_client_request_t*)inp, idx);
+}
+int
+socks5_client_request_set_dest_addr_ipv6(socks5_client_request_t *inp, size_t idx, uint8_t elt)
+{
+ trunnel_assert(idx < 16);
+ inp->dest_addr_ipv6[idx] = elt;
+ return 0;
+}
+
+uint8_t *
+socks5_client_request_getarray_dest_addr_ipv6(socks5_client_request_t *inp)
+{
+ return inp->dest_addr_ipv6;
+}
+const uint8_t *
+socks5_client_request_getconstarray_dest_addr_ipv6(const socks5_client_request_t *inp)
+{
+ return (const uint8_t *)socks5_client_request_getarray_dest_addr_ipv6((socks5_client_request_t*)inp);
+}
+struct domainname_st *
+socks5_client_request_get_dest_addr_domainname(socks5_client_request_t *inp)
+{
+ return inp->dest_addr_domainname;
+}
+const struct domainname_st *
+socks5_client_request_getconst_dest_addr_domainname(const socks5_client_request_t *inp)
+{
+ return socks5_client_request_get_dest_addr_domainname((socks5_client_request_t*) inp);
+}
+int
+socks5_client_request_set_dest_addr_domainname(socks5_client_request_t *inp, struct domainname_st *val)
+{
+ if (inp->dest_addr_domainname && inp->dest_addr_domainname != val)
+ domainname_free(inp->dest_addr_domainname);
+ return socks5_client_request_set0_dest_addr_domainname(inp, val);
+}
+int
+socks5_client_request_set0_dest_addr_domainname(socks5_client_request_t *inp, struct domainname_st *val)
+{
+ inp->dest_addr_domainname = val;
+ return 0;
+}
+uint16_t
+socks5_client_request_get_dest_port(const socks5_client_request_t *inp)
+{
+ return inp->dest_port;
+}
+int
+socks5_client_request_set_dest_port(socks5_client_request_t *inp, uint16_t val)
+{
+ inp->dest_port = val;
+ return 0;
+}
+const char *
+socks5_client_request_check(const socks5_client_request_t *obj)
+{
+ if (obj == NULL)
+ return "Object was NULL";
+ if (obj->trunnel_error_code_)
+ return "A set function failed on this object";
+ if (! (obj->version == 5))
+ return "Integer out of bounds";
+ if (! (obj->command == CMD_BIND || obj->command == CMD_CONNECT || obj->command == CMD_RESOLVE || obj->command == CMD_RESOLVE_PTR || obj->command == CMD_UDP_ASSOCIATE))
+ return "Integer out of bounds";
+ if (! (obj->reserved == 0))
+ return "Integer out of bounds";
+ switch (obj->atype) {
+
+ case ATYPE_IPV4:
+ break;
+
+ case ATYPE_IPV6:
+ break;
+
+ case ATYPE_DOMAINNAME:
+ {
+ const char *msg;
+ if (NULL != (msg = domainname_check(obj->dest_addr_domainname)))
+ return msg;
+ }
+ break;
+
+ default:
+ return "Bad tag for union";
+ break;
+ }
+ return NULL;
+}
+
+ssize_t
+socks5_client_request_encoded_len(const socks5_client_request_t *obj)
+{
+ ssize_t result = 0;
+
+ if (NULL != socks5_client_request_check(obj))
+ return -1;
+
+
+ /* Length of u8 version IN [5] */
+ result += 1;
+
+ /* Length of u8 command IN [CMD_BIND, CMD_CONNECT, CMD_RESOLVE, CMD_RESOLVE_PTR, CMD_UDP_ASSOCIATE] */
+ result += 1;
+
+ /* Length of u8 reserved IN [0] */
+ result += 1;
+
+ /* Length of u8 atype */
+ result += 1;
+ switch (obj->atype) {
+
+ case ATYPE_IPV4:
+
+ /* Length of u32 dest_addr_ipv4 */
+ result += 4;
+ break;
+
+ case ATYPE_IPV6:
+
+ /* Length of u8 dest_addr_ipv6[16] */
+ result += 16;
+ break;
+
+ case ATYPE_DOMAINNAME:
+
+ /* Length of struct domainname dest_addr_domainname */
+ result += domainname_encoded_len(obj->dest_addr_domainname);
+ break;
+
+ default:
+ trunnel_assert(0);
+ break;
+ }
+
+ /* Length of u16 dest_port */
+ result += 2;
+ return result;
+}
+int
+socks5_client_request_clear_errors(socks5_client_request_t *obj)
+{
+ int r = obj->trunnel_error_code_;
+ obj->trunnel_error_code_ = 0;
+ return r;
+}
+ssize_t
+socks5_client_request_encode(uint8_t *output, const size_t avail, const socks5_client_request_t *obj)
+{
+ ssize_t result = 0;
+ size_t written = 0;
+ uint8_t *ptr = output;
+ const char *msg;
+#ifdef TRUNNEL_CHECK_ENCODED_LEN
+ const ssize_t encoded_len = socks5_client_request_encoded_len(obj);
+#endif
+
+ if (NULL != (msg = socks5_client_request_check(obj)))
+ goto check_failed;
+
+#ifdef TRUNNEL_CHECK_ENCODED_LEN
+ trunnel_assert(encoded_len >= 0);
+#endif
+
+ /* Encode u8 version IN [5] */
+ trunnel_assert(written <= avail);
+ if (avail - written < 1)
+ goto truncated;
+ trunnel_set_uint8(ptr, (obj->version));
+ written += 1; ptr += 1;
+
+ /* Encode u8 command IN [CMD_BIND, CMD_CONNECT, CMD_RESOLVE, CMD_RESOLVE_PTR, CMD_UDP_ASSOCIATE] */
+ trunnel_assert(written <= avail);
+ if (avail - written < 1)
+ goto truncated;
+ trunnel_set_uint8(ptr, (obj->command));
+ written += 1; ptr += 1;
+
+ /* Encode u8 reserved IN [0] */
+ trunnel_assert(written <= avail);
+ if (avail - written < 1)
+ goto truncated;
+ trunnel_set_uint8(ptr, (obj->reserved));
+ written += 1; ptr += 1;
+
+ /* Encode u8 atype */
+ trunnel_assert(written <= avail);
+ if (avail - written < 1)
+ goto truncated;
+ trunnel_set_uint8(ptr, (obj->atype));
+ written += 1; ptr += 1;
+
+ /* Encode union dest_addr[atype] */
+ trunnel_assert(written <= avail);
+ switch (obj->atype) {
+
+ case ATYPE_IPV4:
+
+ /* Encode u32 dest_addr_ipv4 */
+ trunnel_assert(written <= avail);
+ if (avail - written < 4)
+ goto truncated;
+ trunnel_set_uint32(ptr, trunnel_htonl(obj->dest_addr_ipv4));
+ written += 4; ptr += 4;
+ break;
+
+ case ATYPE_IPV6:
+
+ /* Encode u8 dest_addr_ipv6[16] */
+ trunnel_assert(written <= avail);
+ if (avail - written < 16)
+ goto truncated;
+ memcpy(ptr, obj->dest_addr_ipv6, 16);
+ written += 16; ptr += 16;
+ break;
+
+ case ATYPE_DOMAINNAME:
+
+ /* Encode struct domainname dest_addr_domainname */
+ trunnel_assert(written <= avail);
+ result = domainname_encode(ptr, avail - written, obj->dest_addr_domainname);
+ if (result < 0)
+ goto fail; /* XXXXXXX !*/
+ written += result; ptr += result;
+ break;
+
+ default:
+ trunnel_assert(0);
+ break;
+ }
+
+ /* Encode u16 dest_port */
+ trunnel_assert(written <= avail);
+ if (avail - written < 2)
+ goto truncated;
+ trunnel_set_uint16(ptr, trunnel_htons(obj->dest_port));
+ written += 2; ptr += 2;
+
+
+ trunnel_assert(ptr == output + written);
+#ifdef TRUNNEL_CHECK_ENCODED_LEN
+ {
+ trunnel_assert(encoded_len >= 0);
+ trunnel_assert((size_t)encoded_len == written);
+ }
+
+#endif
+
+ return written;
+
+ truncated:
+ result = -2;
+ goto fail;
+ check_failed:
+ (void)msg;
+ result = -1;
+ goto fail;
+ fail:
+ trunnel_assert(result < 0);
+ return result;
+}
+
+/** As socks5_client_request_parse(), but do not allocate the output
+ * object.
+ */
+static ssize_t
+socks5_client_request_parse_into(socks5_client_request_t *obj, const uint8_t *input, const size_t len_in)
+{
+ const uint8_t *ptr = input;
+ size_t remaining = len_in;
+ ssize_t result = 0;
+ (void)result;
+
+ /* Parse u8 version IN [5] */
+ CHECK_REMAINING(1, truncated);
+ obj->version = (trunnel_get_uint8(ptr));
+ remaining -= 1; ptr += 1;
+ if (! (obj->version == 5))
+ goto fail;
+
+ /* Parse u8 command IN [CMD_BIND, CMD_CONNECT, CMD_RESOLVE, CMD_RESOLVE_PTR, CMD_UDP_ASSOCIATE] */
+ CHECK_REMAINING(1, truncated);
+ obj->command = (trunnel_get_uint8(ptr));
+ remaining -= 1; ptr += 1;
+ if (! (obj->command == CMD_BIND || obj->command == CMD_CONNECT || obj->command == CMD_RESOLVE || obj->command == CMD_RESOLVE_PTR || obj->command == CMD_UDP_ASSOCIATE))
+ goto fail;
+
+ /* Parse u8 reserved IN [0] */
+ CHECK_REMAINING(1, truncated);
+ obj->reserved = (trunnel_get_uint8(ptr));
+ remaining -= 1; ptr += 1;
+ if (! (obj->reserved == 0))
+ goto fail;
+
+ /* Parse u8 atype */
+ CHECK_REMAINING(1, truncated);
+ obj->atype = (trunnel_get_uint8(ptr));
+ remaining -= 1; ptr += 1;
+
+ /* Parse union dest_addr[atype] */
+ switch (obj->atype) {
+
+ case ATYPE_IPV4:
+
+ /* Parse u32 dest_addr_ipv4 */
+ CHECK_REMAINING(4, truncated);
+ obj->dest_addr_ipv4 = trunnel_ntohl(trunnel_get_uint32(ptr));
+ remaining -= 4; ptr += 4;
+ break;
+
+ case ATYPE_IPV6:
+
+ /* Parse u8 dest_addr_ipv6[16] */
+ CHECK_REMAINING(16, truncated);
+ memcpy(obj->dest_addr_ipv6, ptr, 16);
+ remaining -= 16; ptr += 16;
+ break;
+
+ case ATYPE_DOMAINNAME:
+
+ /* Parse struct domainname dest_addr_domainname */
+ result = domainname_parse(&obj->dest_addr_domainname, ptr, remaining);
+ if (result < 0)
+ goto relay_fail;
+ trunnel_assert((size_t)result <= remaining);
+ remaining -= result; ptr += result;
+ break;
+
+ default:
+ goto fail;
+ break;
+ }
+
+ /* Parse u16 dest_port */
+ CHECK_REMAINING(2, truncated);
+ obj->dest_port = trunnel_ntohs(trunnel_get_uint16(ptr));
+ remaining -= 2; ptr += 2;
+ trunnel_assert(ptr + remaining == input + len_in);
+ return len_in - remaining;
+
+ truncated:
+ return -2;
+ relay_fail:
+ trunnel_assert(result < 0);
+ return result;
+ fail:
+ result = -1;
+ return result;
+}
+
+ssize_t
+socks5_client_request_parse(socks5_client_request_t **output, const uint8_t *input, const size_t len_in)
+{
+ ssize_t result;
+ *output = socks5_client_request_new();
+ if (NULL == *output)
+ return -1;
+ result = socks5_client_request_parse_into(*output, input, len_in);
+ if (result < 0) {
+ socks5_client_request_free(*output);
+ *output = NULL;
+ }
+ return result;
+}
+socks5_server_reply_t *
+socks5_server_reply_new(void)
+{
+ socks5_server_reply_t *val = trunnel_calloc(1, sizeof(socks5_server_reply_t));
+ if (NULL == val)
+ return NULL;
+ val->version = 5;
+ return val;
+}
+
+/** Release all storage held inside 'obj', but do not free 'obj'.
+ */
+static void
+socks5_server_reply_clear(socks5_server_reply_t *obj)
+{
+ (void) obj;
+ domainname_free(obj->bind_addr_domainname);
+ obj->bind_addr_domainname = NULL;
+}
+
+void
+socks5_server_reply_free(socks5_server_reply_t *obj)
+{
+ if (obj == NULL)
+ return;
+ socks5_server_reply_clear(obj);
+ trunnel_memwipe(obj, sizeof(socks5_server_reply_t));
+ trunnel_free_(obj);
+}
+
+uint8_t
+socks5_server_reply_get_version(const socks5_server_reply_t *inp)
+{
+ return inp->version;
+}
+int
+socks5_server_reply_set_version(socks5_server_reply_t *inp, uint8_t val)
+{
+ if (! ((val == 5))) {
+ TRUNNEL_SET_ERROR_CODE(inp);
+ return -1;
+ }
+ inp->version = val;
+ return 0;
+}
+uint8_t
+socks5_server_reply_get_reply(const socks5_server_reply_t *inp)
+{
+ return inp->reply;
+}
+int
+socks5_server_reply_set_reply(socks5_server_reply_t *inp, uint8_t val)
+{
+ inp->reply = val;
+ return 0;
+}
+uint8_t
+socks5_server_reply_get_reserved(const socks5_server_reply_t *inp)
+{
+ return inp->reserved;
+}
+int
+socks5_server_reply_set_reserved(socks5_server_reply_t *inp, uint8_t val)
+{
+ if (! ((val == 0))) {
+ TRUNNEL_SET_ERROR_CODE(inp);
+ return -1;
+ }
+ inp->reserved = val;
+ return 0;
+}
+uint8_t
+socks5_server_reply_get_atype(const socks5_server_reply_t *inp)
+{
+ return inp->atype;
+}
+int
+socks5_server_reply_set_atype(socks5_server_reply_t *inp, uint8_t val)
+{
+ inp->atype = val;
+ return 0;
+}
+uint32_t
+socks5_server_reply_get_bind_addr_ipv4(const socks5_server_reply_t *inp)
+{
+ return inp->bind_addr_ipv4;
+}
+int
+socks5_server_reply_set_bind_addr_ipv4(socks5_server_reply_t *inp, uint32_t val)
+{
+ inp->bind_addr_ipv4 = val;
+ return 0;
+}
+size_t
+socks5_server_reply_getlen_bind_addr_ipv6(const socks5_server_reply_t *inp)
+{
+ (void)inp; return 16;
+}
+
+uint8_t
+socks5_server_reply_get_bind_addr_ipv6(socks5_server_reply_t *inp, size_t idx)
+{
+ trunnel_assert(idx < 16);
+ return inp->bind_addr_ipv6[idx];
+}
+
+uint8_t
+socks5_server_reply_getconst_bind_addr_ipv6(const socks5_server_reply_t *inp, size_t idx)
+{
+ return socks5_server_reply_get_bind_addr_ipv6((socks5_server_reply_t*)inp, idx);
+}
+int
+socks5_server_reply_set_bind_addr_ipv6(socks5_server_reply_t *inp, size_t idx, uint8_t elt)
+{
+ trunnel_assert(idx < 16);
+ inp->bind_addr_ipv6[idx] = elt;
+ return 0;
+}
+
+uint8_t *
+socks5_server_reply_getarray_bind_addr_ipv6(socks5_server_reply_t *inp)
+{
+ return inp->bind_addr_ipv6;
+}
+const uint8_t *
+socks5_server_reply_getconstarray_bind_addr_ipv6(const socks5_server_reply_t *inp)
+{
+ return (const uint8_t *)socks5_server_reply_getarray_bind_addr_ipv6((socks5_server_reply_t*)inp);
+}
+struct domainname_st *
+socks5_server_reply_get_bind_addr_domainname(socks5_server_reply_t *inp)
+{
+ return inp->bind_addr_domainname;
+}
+const struct domainname_st *
+socks5_server_reply_getconst_bind_addr_domainname(const socks5_server_reply_t *inp)
+{
+ return socks5_server_reply_get_bind_addr_domainname((socks5_server_reply_t*) inp);
+}
+int
+socks5_server_reply_set_bind_addr_domainname(socks5_server_reply_t *inp, struct domainname_st *val)
+{
+ if (inp->bind_addr_domainname && inp->bind_addr_domainname != val)
+ domainname_free(inp->bind_addr_domainname);
+ return socks5_server_reply_set0_bind_addr_domainname(inp, val);
+}
+int
+socks5_server_reply_set0_bind_addr_domainname(socks5_server_reply_t *inp, struct domainname_st *val)
+{
+ inp->bind_addr_domainname = val;
+ return 0;
+}
+uint16_t
+socks5_server_reply_get_bind_port(const socks5_server_reply_t *inp)
+{
+ return inp->bind_port;
+}
+int
+socks5_server_reply_set_bind_port(socks5_server_reply_t *inp, uint16_t val)
+{
+ inp->bind_port = val;
+ return 0;
+}
+const char *
+socks5_server_reply_check(const socks5_server_reply_t *obj)
+{
+ if (obj == NULL)
+ return "Object was NULL";
+ if (obj->trunnel_error_code_)
+ return "A set function failed on this object";
+ if (! (obj->version == 5))
+ return "Integer out of bounds";
+ if (! (obj->reserved == 0))
+ return "Integer out of bounds";
+ switch (obj->atype) {
+
+ case ATYPE_IPV4:
+ break;
+
+ case ATYPE_IPV6:
+ break;
+
+ case ATYPE_DOMAINNAME:
+ {
+ const char *msg;
+ if (NULL != (msg = domainname_check(obj->bind_addr_domainname)))
+ return msg;
+ }
+ break;
+
+ default:
+ return "Bad tag for union";
+ break;
+ }
+ return NULL;
+}
+
+ssize_t
+socks5_server_reply_encoded_len(const socks5_server_reply_t *obj)
+{
+ ssize_t result = 0;
+
+ if (NULL != socks5_server_reply_check(obj))
+ return -1;
+
+
+ /* Length of u8 version IN [5] */
+ result += 1;
+
+ /* Length of u8 reply */
+ result += 1;
+
+ /* Length of u8 reserved IN [0] */
+ result += 1;
+
+ /* Length of u8 atype */
+ result += 1;
+ switch (obj->atype) {
+
+ case ATYPE_IPV4:
+
+ /* Length of u32 bind_addr_ipv4 */
+ result += 4;
+ break;
+
+ case ATYPE_IPV6:
+
+ /* Length of u8 bind_addr_ipv6[16] */
+ result += 16;
+ break;
+
+ case ATYPE_DOMAINNAME:
+
+ /* Length of struct domainname bind_addr_domainname */
+ result += domainname_encoded_len(obj->bind_addr_domainname);
+ break;
+
+ default:
+ trunnel_assert(0);
+ break;
+ }
+
+ /* Length of u16 bind_port */
+ result += 2;
+ return result;
+}
+int
+socks5_server_reply_clear_errors(socks5_server_reply_t *obj)
+{
+ int r = obj->trunnel_error_code_;
+ obj->trunnel_error_code_ = 0;
+ return r;
+}
+ssize_t
+socks5_server_reply_encode(uint8_t *output, const size_t avail, const socks5_server_reply_t *obj)
+{
+ ssize_t result = 0;
+ size_t written = 0;
+ uint8_t *ptr = output;
+ const char *msg;
+#ifdef TRUNNEL_CHECK_ENCODED_LEN
+ const ssize_t encoded_len = socks5_server_reply_encoded_len(obj);
+#endif
+
+ if (NULL != (msg = socks5_server_reply_check(obj)))
+ goto check_failed;
+
+#ifdef TRUNNEL_CHECK_ENCODED_LEN
+ trunnel_assert(encoded_len >= 0);
+#endif
+
+ /* Encode u8 version IN [5] */
+ trunnel_assert(written <= avail);
+ if (avail - written < 1)
+ goto truncated;
+ trunnel_set_uint8(ptr, (obj->version));
+ written += 1; ptr += 1;
+
+ /* Encode u8 reply */
+ trunnel_assert(written <= avail);
+ if (avail - written < 1)
+ goto truncated;
+ trunnel_set_uint8(ptr, (obj->reply));
+ written += 1; ptr += 1;
+
+ /* Encode u8 reserved IN [0] */
+ trunnel_assert(written <= avail);
+ if (avail - written < 1)
+ goto truncated;
+ trunnel_set_uint8(ptr, (obj->reserved));
+ written += 1; ptr += 1;
+
+ /* Encode u8 atype */
+ trunnel_assert(written <= avail);
+ if (avail - written < 1)
+ goto truncated;
+ trunnel_set_uint8(ptr, (obj->atype));
+ written += 1; ptr += 1;
+
+ /* Encode union bind_addr[atype] */
+ trunnel_assert(written <= avail);
+ switch (obj->atype) {
+
+ case ATYPE_IPV4:
+
+ /* Encode u32 bind_addr_ipv4 */
+ trunnel_assert(written <= avail);
+ if (avail - written < 4)
+ goto truncated;
+ trunnel_set_uint32(ptr, trunnel_htonl(obj->bind_addr_ipv4));
+ written += 4; ptr += 4;
+ break;
+
+ case ATYPE_IPV6:
+
+ /* Encode u8 bind_addr_ipv6[16] */
+ trunnel_assert(written <= avail);
+ if (avail - written < 16)
+ goto truncated;
+ memcpy(ptr, obj->bind_addr_ipv6, 16);
+ written += 16; ptr += 16;
+ break;
+
+ case ATYPE_DOMAINNAME:
+
+ /* Encode struct domainname bind_addr_domainname */
+ trunnel_assert(written <= avail);
+ result = domainname_encode(ptr, avail - written, obj->bind_addr_domainname);
+ if (result < 0)
+ goto fail; /* XXXXXXX !*/
+ written += result; ptr += result;
+ break;
+
+ default:
+ trunnel_assert(0);
+ break;
+ }
+
+ /* Encode u16 bind_port */
+ trunnel_assert(written <= avail);
+ if (avail - written < 2)
+ goto truncated;
+ trunnel_set_uint16(ptr, trunnel_htons(obj->bind_port));
+ written += 2; ptr += 2;
+
+
+ trunnel_assert(ptr == output + written);
+#ifdef TRUNNEL_CHECK_ENCODED_LEN
+ {
+ trunnel_assert(encoded_len >= 0);
+ trunnel_assert((size_t)encoded_len == written);
+ }
+
+#endif
+
+ return written;
+
+ truncated:
+ result = -2;
+ goto fail;
+ check_failed:
+ (void)msg;
+ result = -1;
+ goto fail;
+ fail:
+ trunnel_assert(result < 0);
+ return result;
+}
+
+/** As socks5_server_reply_parse(), but do not allocate the output
+ * object.
+ */
+static ssize_t
+socks5_server_reply_parse_into(socks5_server_reply_t *obj, const uint8_t *input, const size_t len_in)
+{
+ const uint8_t *ptr = input;
+ size_t remaining = len_in;
+ ssize_t result = 0;
+ (void)result;
+
+ /* Parse u8 version IN [5] */
+ CHECK_REMAINING(1, truncated);
+ obj->version = (trunnel_get_uint8(ptr));
+ remaining -= 1; ptr += 1;
+ if (! (obj->version == 5))
+ goto fail;
+
+ /* Parse u8 reply */
+ CHECK_REMAINING(1, truncated);
+ obj->reply = (trunnel_get_uint8(ptr));
+ remaining -= 1; ptr += 1;
+
+ /* Parse u8 reserved IN [0] */
+ CHECK_REMAINING(1, truncated);
+ obj->reserved = (trunnel_get_uint8(ptr));
+ remaining -= 1; ptr += 1;
+ if (! (obj->reserved == 0))
+ goto fail;
+
+ /* Parse u8 atype */
+ CHECK_REMAINING(1, truncated);
+ obj->atype = (trunnel_get_uint8(ptr));
+ remaining -= 1; ptr += 1;
+
+ /* Parse union bind_addr[atype] */
+ switch (obj->atype) {
+
+ case ATYPE_IPV4:
+
+ /* Parse u32 bind_addr_ipv4 */
+ CHECK_REMAINING(4, truncated);
+ obj->bind_addr_ipv4 = trunnel_ntohl(trunnel_get_uint32(ptr));
+ remaining -= 4; ptr += 4;
+ break;
+
+ case ATYPE_IPV6:
+
+ /* Parse u8 bind_addr_ipv6[16] */
+ CHECK_REMAINING(16, truncated);
+ memcpy(obj->bind_addr_ipv6, ptr, 16);
+ remaining -= 16; ptr += 16;
+ break;
+
+ case ATYPE_DOMAINNAME:
+
+ /* Parse struct domainname bind_addr_domainname */
+ result = domainname_parse(&obj->bind_addr_domainname, ptr, remaining);
+ if (result < 0)
+ goto relay_fail;
+ trunnel_assert((size_t)result <= remaining);
+ remaining -= result; ptr += result;
+ break;
+
+ default:
+ goto fail;
+ break;
+ }
+
+ /* Parse u16 bind_port */
+ CHECK_REMAINING(2, truncated);
+ obj->bind_port = trunnel_ntohs(trunnel_get_uint16(ptr));
+ remaining -= 2; ptr += 2;
+ trunnel_assert(ptr + remaining == input + len_in);
+ return len_in - remaining;
+
+ truncated:
+ return -2;
+ relay_fail:
+ trunnel_assert(result < 0);
+ return result;
+ fail:
+ result = -1;
+ return result;
+}
+
+ssize_t
+socks5_server_reply_parse(socks5_server_reply_t **output, const uint8_t *input, const size_t len_in)
+{
+ ssize_t result;
+ *output = socks5_server_reply_new();
+ if (NULL == *output)
+ return -1;
+ result = socks5_server_reply_parse_into(*output, input, len_in);
+ if (result < 0) {
+ socks5_server_reply_free(*output);
+ *output = NULL;
+ }
+ return result;
+}
diff --git a/src/trunnel/socks5.h b/src/trunnel/socks5.h
new file mode 100644
index 0000000000..d3bea152e7
--- /dev/null
+++ b/src/trunnel/socks5.h
@@ -0,0 +1,995 @@
+/* socks5.h -- generated by Trunnel v1.5.2.
+ * https://gitweb.torproject.org/trunnel.git
+ * You probably shouldn't edit this file.
+ */
+#ifndef TRUNNEL_SOCKS5_H
+#define TRUNNEL_SOCKS5_H
+
+#include <stdint.h>
+#include "trunnel.h"
+
+#define CMD_CONNECT 1
+#define CMD_BIND 2
+#define CMD_UDP_ASSOCIATE 3
+#define CMD_RESOLVE 240
+#define CMD_RESOLVE_PTR 241
+#define ATYPE_IPV4 1
+#define ATYPE_IPV6 4
+#define ATYPE_DOMAINNAME 3
+#if !defined(TRUNNEL_OPAQUE) && !defined(TRUNNEL_OPAQUE_DOMAINNAME)
+struct domainname_st {
+ uint8_t len;
+ trunnel_string_t name;
+ uint8_t trunnel_error_code_;
+};
+#endif
+typedef struct domainname_st domainname_t;
+#if !defined(TRUNNEL_OPAQUE) && !defined(TRUNNEL_OPAQUE_SOCKS4_CLIENT_REQUEST)
+struct socks4_client_request_st {
+ uint8_t version;
+ uint8_t command;
+ uint16_t port;
+ uint32_t addr;
+ char *username;
+ char *socks4a_addr_hostname;
+ uint8_t trunnel_error_code_;
+};
+#endif
+typedef struct socks4_client_request_st socks4_client_request_t;
+#if !defined(TRUNNEL_OPAQUE) && !defined(TRUNNEL_OPAQUE_SOCKS4_SERVER_REPLY)
+struct socks4_server_reply_st {
+ uint8_t version;
+ uint8_t status;
+ uint16_t port;
+ uint32_t addr;
+ uint8_t trunnel_error_code_;
+};
+#endif
+typedef struct socks4_server_reply_st socks4_server_reply_t;
+#if !defined(TRUNNEL_OPAQUE) && !defined(TRUNNEL_OPAQUE_SOCKS5_CLIENT_USERPASS_AUTH)
+struct socks5_client_userpass_auth_st {
+ uint8_t version;
+ uint8_t username_len;
+ trunnel_string_t username;
+ uint8_t passwd_len;
+ trunnel_string_t passwd;
+ uint8_t trunnel_error_code_;
+};
+#endif
+typedef struct socks5_client_userpass_auth_st socks5_client_userpass_auth_t;
+#if !defined(TRUNNEL_OPAQUE) && !defined(TRUNNEL_OPAQUE_SOCKS5_CLIENT_VERSION)
+struct socks5_client_version_st {
+ uint8_t version;
+ uint8_t n_methods;
+ TRUNNEL_DYNARRAY_HEAD(, uint8_t) methods;
+ uint8_t trunnel_error_code_;
+};
+#endif
+typedef struct socks5_client_version_st socks5_client_version_t;
+#if !defined(TRUNNEL_OPAQUE) && !defined(TRUNNEL_OPAQUE_SOCKS5_SERVER_METHOD)
+struct socks5_server_method_st {
+ uint8_t version;
+ uint8_t method;
+ uint8_t trunnel_error_code_;
+};
+#endif
+typedef struct socks5_server_method_st socks5_server_method_t;
+#if !defined(TRUNNEL_OPAQUE) && !defined(TRUNNEL_OPAQUE_SOCKS5_SERVER_USERPASS_AUTH)
+struct socks5_server_userpass_auth_st {
+ uint8_t version;
+ uint8_t status;
+ uint8_t trunnel_error_code_;
+};
+#endif
+typedef struct socks5_server_userpass_auth_st socks5_server_userpass_auth_t;
+#if !defined(TRUNNEL_OPAQUE) && !defined(TRUNNEL_OPAQUE_SOCKS5_CLIENT_REQUEST)
+struct socks5_client_request_st {
+ uint8_t version;
+ uint8_t command;
+ uint8_t reserved;
+ uint8_t atype;
+ uint32_t dest_addr_ipv4;
+ uint8_t dest_addr_ipv6[16];
+ struct domainname_st *dest_addr_domainname;
+ uint16_t dest_port;
+ uint8_t trunnel_error_code_;
+};
+#endif
+typedef struct socks5_client_request_st socks5_client_request_t;
+#if !defined(TRUNNEL_OPAQUE) && !defined(TRUNNEL_OPAQUE_SOCKS5_SERVER_REPLY)
+struct socks5_server_reply_st {
+ uint8_t version;
+ uint8_t reply;
+ uint8_t reserved;
+ uint8_t atype;
+ uint32_t bind_addr_ipv4;
+ uint8_t bind_addr_ipv6[16];
+ struct domainname_st *bind_addr_domainname;
+ uint16_t bind_port;
+ uint8_t trunnel_error_code_;
+};
+#endif
+typedef struct socks5_server_reply_st socks5_server_reply_t;
+/** Return a newly allocated domainname with all elements set to zero.
+ */
+domainname_t *domainname_new(void);
+/** Release all storage held by the domainname in 'victim'. (Do
+ * nothing if 'victim' is NULL.)
+ */
+void domainname_free(domainname_t *victim);
+/** Try to parse a domainname from the buffer in 'input', using up to
+ * 'len_in' bytes from the input buffer. On success, return the number
+ * of bytes consumed and set *output to the newly allocated
+ * domainname_t. On failure, return -2 if the input appears truncated,
+ * and -1 if the input is otherwise invalid.
+ */
+ssize_t domainname_parse(domainname_t **output, const uint8_t *input, const size_t len_in);
+/** Return the number of bytes we expect to need to encode the
+ * domainname in 'obj'. On failure, return a negative value. Note that
+ * this value may be an overestimate, and can even be an underestimate
+ * for certain unencodeable objects.
+ */
+ssize_t domainname_encoded_len(const domainname_t *obj);
+/** Try to encode the domainname from 'input' into the buffer at
+ * 'output', using up to 'avail' bytes of the output buffer. On
+ * success, return the number of bytes used. On failure, return -2 if
+ * the buffer was not long enough, and -1 if the input was invalid.
+ */
+ssize_t domainname_encode(uint8_t *output, size_t avail, const domainname_t *input);
+/** Check whether the internal state of the domainname in 'obj' is
+ * consistent. Return NULL if it is, and a short message if it is not.
+ */
+const char *domainname_check(const domainname_t *obj);
+/** Clear any errors that were set on the object 'obj' by its setter
+ * functions. Return true iff errors were cleared.
+ */
+int domainname_clear_errors(domainname_t *obj);
+/** Return the value of the len field of the domainname_t in 'inp'
+ */
+uint8_t domainname_get_len(const domainname_t *inp);
+/** Set the value of the len field of the domainname_t in 'inp' to
+ * 'val'. Return 0 on success; return -1 and set the error code on
+ * 'inp' on failure.
+ */
+int domainname_set_len(domainname_t *inp, uint8_t val);
+/** Return the length of the dynamic array holding the name field of
+ * the domainname_t in 'inp'.
+ */
+size_t domainname_getlen_name(const domainname_t *inp);
+/** Return the element at position 'idx' of the dynamic array field
+ * name of the domainname_t in 'inp'.
+ */
+char domainname_get_name(domainname_t *inp, size_t idx);
+/** As domainname_get_name, but take and return a const pointer
+ */
+char domainname_getconst_name(const domainname_t *inp, size_t idx);
+/** Change the element at position 'idx' of the dynamic array field
+ * name of the domainname_t in 'inp', so that it will hold the value
+ * 'elt'.
+ */
+int domainname_set_name(domainname_t *inp, size_t idx, char elt);
+/** Append a new element 'elt' to the dynamic array field name of the
+ * domainname_t in 'inp'.
+ */
+int domainname_add_name(domainname_t *inp, char elt);
+/** Return a pointer to the variable-length array field name of 'inp'.
+ */
+char * domainname_getarray_name(domainname_t *inp);
+/** As domainname_get_name, but take and return a const pointer
+ */
+const char * domainname_getconstarray_name(const domainname_t *inp);
+/** Change the length of the variable-length array field name of 'inp'
+ * to 'newlen'.Fill extra elements with 0. Return 0 on success; return
+ * -1 and set the error code on 'inp' on failure.
+ */
+int domainname_setlen_name(domainname_t *inp, size_t newlen);
+/** Return the value of the name field of a domainname_t as a NUL-
+ * terminated string.
+ */
+const char * domainname_getstr_name(domainname_t *inp);
+/** Set the value of the name field of a domainname_t to a given
+ * string of length 'len'. Return 0 on success; return -1 and set the
+ * error code on 'inp' on failure.
+ */
+int domainname_setstr0_name(domainname_t *inp, const char *val, size_t len);
+/** Set the value of the name field of a domainname_t to a given NUL-
+ * terminated string. Return 0 on success; return -1 and set the error
+ * code on 'inp' on failure.
+ */
+int domainname_setstr_name(domainname_t *inp, const char *val);
+/** Return a newly allocated socks4_client_request with all elements
+ * set to zero.
+ */
+socks4_client_request_t *socks4_client_request_new(void);
+/** Release all storage held by the socks4_client_request in 'victim'.
+ * (Do nothing if 'victim' is NULL.)
+ */
+void socks4_client_request_free(socks4_client_request_t *victim);
+/** Try to parse a socks4_client_request from the buffer in 'input',
+ * using up to 'len_in' bytes from the input buffer. On success,
+ * return the number of bytes consumed and set *output to the newly
+ * allocated socks4_client_request_t. On failure, return -2 if the
+ * input appears truncated, and -1 if the input is otherwise invalid.
+ */
+ssize_t socks4_client_request_parse(socks4_client_request_t **output, const uint8_t *input, const size_t len_in);
+/** Return the number of bytes we expect to need to encode the
+ * socks4_client_request in 'obj'. On failure, return a negative
+ * value. Note that this value may be an overestimate, and can even be
+ * an underestimate for certain unencodeable objects.
+ */
+ssize_t socks4_client_request_encoded_len(const socks4_client_request_t *obj);
+/** Try to encode the socks4_client_request from 'input' into the
+ * buffer at 'output', using up to 'avail' bytes of the output buffer.
+ * On success, return the number of bytes used. On failure, return -2
+ * if the buffer was not long enough, and -1 if the input was invalid.
+ */
+ssize_t socks4_client_request_encode(uint8_t *output, size_t avail, const socks4_client_request_t *input);
+/** Check whether the internal state of the socks4_client_request in
+ * 'obj' is consistent. Return NULL if it is, and a short message if
+ * it is not.
+ */
+const char *socks4_client_request_check(const socks4_client_request_t *obj);
+/** Clear any errors that were set on the object 'obj' by its setter
+ * functions. Return true iff errors were cleared.
+ */
+int socks4_client_request_clear_errors(socks4_client_request_t *obj);
+/** Return the value of the version field of the
+ * socks4_client_request_t in 'inp'
+ */
+uint8_t socks4_client_request_get_version(const socks4_client_request_t *inp);
+/** Set the value of the version field of the socks4_client_request_t
+ * in 'inp' to 'val'. Return 0 on success; return -1 and set the error
+ * code on 'inp' on failure.
+ */
+int socks4_client_request_set_version(socks4_client_request_t *inp, uint8_t val);
+/** Return the value of the command field of the
+ * socks4_client_request_t in 'inp'
+ */
+uint8_t socks4_client_request_get_command(const socks4_client_request_t *inp);
+/** Set the value of the command field of the socks4_client_request_t
+ * in 'inp' to 'val'. Return 0 on success; return -1 and set the error
+ * code on 'inp' on failure.
+ */
+int socks4_client_request_set_command(socks4_client_request_t *inp, uint8_t val);
+/** Return the value of the port field of the socks4_client_request_t
+ * in 'inp'
+ */
+uint16_t socks4_client_request_get_port(const socks4_client_request_t *inp);
+/** Set the value of the port field of the socks4_client_request_t in
+ * 'inp' to 'val'. Return 0 on success; return -1 and set the error
+ * code on 'inp' on failure.
+ */
+int socks4_client_request_set_port(socks4_client_request_t *inp, uint16_t val);
+/** Return the value of the addr field of the socks4_client_request_t
+ * in 'inp'
+ */
+uint32_t socks4_client_request_get_addr(const socks4_client_request_t *inp);
+/** Set the value of the addr field of the socks4_client_request_t in
+ * 'inp' to 'val'. Return 0 on success; return -1 and set the error
+ * code on 'inp' on failure.
+ */
+int socks4_client_request_set_addr(socks4_client_request_t *inp, uint32_t val);
+/** Return the value of the username field of the
+ * socks4_client_request_t in 'inp'
+ */
+const char * socks4_client_request_get_username(const socks4_client_request_t *inp);
+/** Set the value of the username field of the socks4_client_request_t
+ * in 'inp' to 'val'. Free the old value if any. Does not steal the
+ * reference to 'val'.Return 0 on success; return -1 and set the error
+ * code on 'inp' on failure.
+ */
+int socks4_client_request_set_username(socks4_client_request_t *inp, const char *val);
+/** Return the value of the socks4a_addr_hostname field of the
+ * socks4_client_request_t in 'inp'
+ */
+const char * socks4_client_request_get_socks4a_addr_hostname(const socks4_client_request_t *inp);
+/** Set the value of the socks4a_addr_hostname field of the
+ * socks4_client_request_t in 'inp' to 'val'. Free the old value if
+ * any. Does not steal the reference to 'val'.Return 0 on success;
+ * return -1 and set the error code on 'inp' on failure.
+ */
+int socks4_client_request_set_socks4a_addr_hostname(socks4_client_request_t *inp, const char *val);
+/** Return a newly allocated socks4_server_reply with all elements set
+ * to zero.
+ */
+socks4_server_reply_t *socks4_server_reply_new(void);
+/** Release all storage held by the socks4_server_reply in 'victim'.
+ * (Do nothing if 'victim' is NULL.)
+ */
+void socks4_server_reply_free(socks4_server_reply_t *victim);
+/** Try to parse a socks4_server_reply from the buffer in 'input',
+ * using up to 'len_in' bytes from the input buffer. On success,
+ * return the number of bytes consumed and set *output to the newly
+ * allocated socks4_server_reply_t. On failure, return -2 if the input
+ * appears truncated, and -1 if the input is otherwise invalid.
+ */
+ssize_t socks4_server_reply_parse(socks4_server_reply_t **output, const uint8_t *input, const size_t len_in);
+/** Return the number of bytes we expect to need to encode the
+ * socks4_server_reply in 'obj'. On failure, return a negative value.
+ * Note that this value may be an overestimate, and can even be an
+ * underestimate for certain unencodeable objects.
+ */
+ssize_t socks4_server_reply_encoded_len(const socks4_server_reply_t *obj);
+/** Try to encode the socks4_server_reply from 'input' into the buffer
+ * at 'output', using up to 'avail' bytes of the output buffer. On
+ * success, return the number of bytes used. On failure, return -2 if
+ * the buffer was not long enough, and -1 if the input was invalid.
+ */
+ssize_t socks4_server_reply_encode(uint8_t *output, size_t avail, const socks4_server_reply_t *input);
+/** Check whether the internal state of the socks4_server_reply in
+ * 'obj' is consistent. Return NULL if it is, and a short message if
+ * it is not.
+ */
+const char *socks4_server_reply_check(const socks4_server_reply_t *obj);
+/** Clear any errors that were set on the object 'obj' by its setter
+ * functions. Return true iff errors were cleared.
+ */
+int socks4_server_reply_clear_errors(socks4_server_reply_t *obj);
+/** Return the value of the version field of the socks4_server_reply_t
+ * in 'inp'
+ */
+uint8_t socks4_server_reply_get_version(const socks4_server_reply_t *inp);
+/** Set the value of the version field of the socks4_server_reply_t in
+ * 'inp' to 'val'. Return 0 on success; return -1 and set the error
+ * code on 'inp' on failure.
+ */
+int socks4_server_reply_set_version(socks4_server_reply_t *inp, uint8_t val);
+/** Return the value of the status field of the socks4_server_reply_t
+ * in 'inp'
+ */
+uint8_t socks4_server_reply_get_status(const socks4_server_reply_t *inp);
+/** Set the value of the status field of the socks4_server_reply_t in
+ * 'inp' to 'val'. Return 0 on success; return -1 and set the error
+ * code on 'inp' on failure.
+ */
+int socks4_server_reply_set_status(socks4_server_reply_t *inp, uint8_t val);
+/** Return the value of the port field of the socks4_server_reply_t in
+ * 'inp'
+ */
+uint16_t socks4_server_reply_get_port(const socks4_server_reply_t *inp);
+/** Set the value of the port field of the socks4_server_reply_t in
+ * 'inp' to 'val'. Return 0 on success; return -1 and set the error
+ * code on 'inp' on failure.
+ */
+int socks4_server_reply_set_port(socks4_server_reply_t *inp, uint16_t val);
+/** Return the value of the addr field of the socks4_server_reply_t in
+ * 'inp'
+ */
+uint32_t socks4_server_reply_get_addr(const socks4_server_reply_t *inp);
+/** Set the value of the addr field of the socks4_server_reply_t in
+ * 'inp' to 'val'. Return 0 on success; return -1 and set the error
+ * code on 'inp' on failure.
+ */
+int socks4_server_reply_set_addr(socks4_server_reply_t *inp, uint32_t val);
+/** Return a newly allocated socks5_client_userpass_auth with all
+ * elements set to zero.
+ */
+socks5_client_userpass_auth_t *socks5_client_userpass_auth_new(void);
+/** Release all storage held by the socks5_client_userpass_auth in
+ * 'victim'. (Do nothing if 'victim' is NULL.)
+ */
+void socks5_client_userpass_auth_free(socks5_client_userpass_auth_t *victim);
+/** Try to parse a socks5_client_userpass_auth from the buffer in
+ * 'input', using up to 'len_in' bytes from the input buffer. On
+ * success, return the number of bytes consumed and set *output to the
+ * newly allocated socks5_client_userpass_auth_t. On failure, return
+ * -2 if the input appears truncated, and -1 if the input is otherwise
+ * invalid.
+ */
+ssize_t socks5_client_userpass_auth_parse(socks5_client_userpass_auth_t **output, const uint8_t *input, const size_t len_in);
+/** Return the number of bytes we expect to need to encode the
+ * socks5_client_userpass_auth in 'obj'. On failure, return a negative
+ * value. Note that this value may be an overestimate, and can even be
+ * an underestimate for certain unencodeable objects.
+ */
+ssize_t socks5_client_userpass_auth_encoded_len(const socks5_client_userpass_auth_t *obj);
+/** Try to encode the socks5_client_userpass_auth from 'input' into
+ * the buffer at 'output', using up to 'avail' bytes of the output
+ * buffer. On success, return the number of bytes used. On failure,
+ * return -2 if the buffer was not long enough, and -1 if the input
+ * was invalid.
+ */
+ssize_t socks5_client_userpass_auth_encode(uint8_t *output, size_t avail, const socks5_client_userpass_auth_t *input);
+/** Check whether the internal state of the
+ * socks5_client_userpass_auth in 'obj' is consistent. Return NULL if
+ * it is, and a short message if it is not.
+ */
+const char *socks5_client_userpass_auth_check(const socks5_client_userpass_auth_t *obj);
+/** Clear any errors that were set on the object 'obj' by its setter
+ * functions. Return true iff errors were cleared.
+ */
+int socks5_client_userpass_auth_clear_errors(socks5_client_userpass_auth_t *obj);
+/** Return the value of the version field of the
+ * socks5_client_userpass_auth_t in 'inp'
+ */
+uint8_t socks5_client_userpass_auth_get_version(const socks5_client_userpass_auth_t *inp);
+/** Set the value of the version field of the
+ * socks5_client_userpass_auth_t in 'inp' to 'val'. Return 0 on
+ * success; return -1 and set the error code on 'inp' on failure.
+ */
+int socks5_client_userpass_auth_set_version(socks5_client_userpass_auth_t *inp, uint8_t val);
+/** Return the value of the username_len field of the
+ * socks5_client_userpass_auth_t in 'inp'
+ */
+uint8_t socks5_client_userpass_auth_get_username_len(const socks5_client_userpass_auth_t *inp);
+/** Set the value of the username_len field of the
+ * socks5_client_userpass_auth_t in 'inp' to 'val'. Return 0 on
+ * success; return -1 and set the error code on 'inp' on failure.
+ */
+int socks5_client_userpass_auth_set_username_len(socks5_client_userpass_auth_t *inp, uint8_t val);
+/** Return the length of the dynamic array holding the username field
+ * of the socks5_client_userpass_auth_t in 'inp'.
+ */
+size_t socks5_client_userpass_auth_getlen_username(const socks5_client_userpass_auth_t *inp);
+/** Return the element at position 'idx' of the dynamic array field
+ * username of the socks5_client_userpass_auth_t in 'inp'.
+ */
+char socks5_client_userpass_auth_get_username(socks5_client_userpass_auth_t *inp, size_t idx);
+/** As socks5_client_userpass_auth_get_username, but take and return a
+ * const pointer
+ */
+char socks5_client_userpass_auth_getconst_username(const socks5_client_userpass_auth_t *inp, size_t idx);
+/** Change the element at position 'idx' of the dynamic array field
+ * username of the socks5_client_userpass_auth_t in 'inp', so that it
+ * will hold the value 'elt'.
+ */
+int socks5_client_userpass_auth_set_username(socks5_client_userpass_auth_t *inp, size_t idx, char elt);
+/** Append a new element 'elt' to the dynamic array field username of
+ * the socks5_client_userpass_auth_t in 'inp'.
+ */
+int socks5_client_userpass_auth_add_username(socks5_client_userpass_auth_t *inp, char elt);
+/** Return a pointer to the variable-length array field username of
+ * 'inp'.
+ */
+char * socks5_client_userpass_auth_getarray_username(socks5_client_userpass_auth_t *inp);
+/** As socks5_client_userpass_auth_get_username, but take and return a
+ * const pointer
+ */
+const char * socks5_client_userpass_auth_getconstarray_username(const socks5_client_userpass_auth_t *inp);
+/** Change the length of the variable-length array field username of
+ * 'inp' to 'newlen'.Fill extra elements with 0. Return 0 on success;
+ * return -1 and set the error code on 'inp' on failure.
+ */
+int socks5_client_userpass_auth_setlen_username(socks5_client_userpass_auth_t *inp, size_t newlen);
+/** Return the value of the username field of a
+ * socks5_client_userpass_auth_t as a NUL-terminated string.
+ */
+const char * socks5_client_userpass_auth_getstr_username(socks5_client_userpass_auth_t *inp);
+/** Set the value of the username field of a
+ * socks5_client_userpass_auth_t to a given string of length 'len'.
+ * Return 0 on success; return -1 and set the error code on 'inp' on
+ * failure.
+ */
+int socks5_client_userpass_auth_setstr0_username(socks5_client_userpass_auth_t *inp, const char *val, size_t len);
+/** Set the value of the username field of a
+ * socks5_client_userpass_auth_t to a given NUL-terminated string.
+ * Return 0 on success; return -1 and set the error code on 'inp' on
+ * failure.
+ */
+int socks5_client_userpass_auth_setstr_username(socks5_client_userpass_auth_t *inp, const char *val);
+/** Return the value of the passwd_len field of the
+ * socks5_client_userpass_auth_t in 'inp'
+ */
+uint8_t socks5_client_userpass_auth_get_passwd_len(const socks5_client_userpass_auth_t *inp);
+/** Set the value of the passwd_len field of the
+ * socks5_client_userpass_auth_t in 'inp' to 'val'. Return 0 on
+ * success; return -1 and set the error code on 'inp' on failure.
+ */
+int socks5_client_userpass_auth_set_passwd_len(socks5_client_userpass_auth_t *inp, uint8_t val);
+/** Return the length of the dynamic array holding the passwd field of
+ * the socks5_client_userpass_auth_t in 'inp'.
+ */
+size_t socks5_client_userpass_auth_getlen_passwd(const socks5_client_userpass_auth_t *inp);
+/** Return the element at position 'idx' of the dynamic array field
+ * passwd of the socks5_client_userpass_auth_t in 'inp'.
+ */
+char socks5_client_userpass_auth_get_passwd(socks5_client_userpass_auth_t *inp, size_t idx);
+/** As socks5_client_userpass_auth_get_passwd, but take and return a
+ * const pointer
+ */
+char socks5_client_userpass_auth_getconst_passwd(const socks5_client_userpass_auth_t *inp, size_t idx);
+/** Change the element at position 'idx' of the dynamic array field
+ * passwd of the socks5_client_userpass_auth_t in 'inp', so that it
+ * will hold the value 'elt'.
+ */
+int socks5_client_userpass_auth_set_passwd(socks5_client_userpass_auth_t *inp, size_t idx, char elt);
+/** Append a new element 'elt' to the dynamic array field passwd of
+ * the socks5_client_userpass_auth_t in 'inp'.
+ */
+int socks5_client_userpass_auth_add_passwd(socks5_client_userpass_auth_t *inp, char elt);
+/** Return a pointer to the variable-length array field passwd of
+ * 'inp'.
+ */
+char * socks5_client_userpass_auth_getarray_passwd(socks5_client_userpass_auth_t *inp);
+/** As socks5_client_userpass_auth_get_passwd, but take and return a
+ * const pointer
+ */
+const char * socks5_client_userpass_auth_getconstarray_passwd(const socks5_client_userpass_auth_t *inp);
+/** Change the length of the variable-length array field passwd of
+ * 'inp' to 'newlen'.Fill extra elements with 0. Return 0 on success;
+ * return -1 and set the error code on 'inp' on failure.
+ */
+int socks5_client_userpass_auth_setlen_passwd(socks5_client_userpass_auth_t *inp, size_t newlen);
+/** Return the value of the passwd field of a
+ * socks5_client_userpass_auth_t as a NUL-terminated string.
+ */
+const char * socks5_client_userpass_auth_getstr_passwd(socks5_client_userpass_auth_t *inp);
+/** Set the value of the passwd field of a
+ * socks5_client_userpass_auth_t to a given string of length 'len'.
+ * Return 0 on success; return -1 and set the error code on 'inp' on
+ * failure.
+ */
+int socks5_client_userpass_auth_setstr0_passwd(socks5_client_userpass_auth_t *inp, const char *val, size_t len);
+/** Set the value of the passwd field of a
+ * socks5_client_userpass_auth_t to a given NUL-terminated string.
+ * Return 0 on success; return -1 and set the error code on 'inp' on
+ * failure.
+ */
+int socks5_client_userpass_auth_setstr_passwd(socks5_client_userpass_auth_t *inp, const char *val);
+/** Return a newly allocated socks5_client_version with all elements
+ * set to zero.
+ */
+socks5_client_version_t *socks5_client_version_new(void);
+/** Release all storage held by the socks5_client_version in 'victim'.
+ * (Do nothing if 'victim' is NULL.)
+ */
+void socks5_client_version_free(socks5_client_version_t *victim);
+/** Try to parse a socks5_client_version from the buffer in 'input',
+ * using up to 'len_in' bytes from the input buffer. On success,
+ * return the number of bytes consumed and set *output to the newly
+ * allocated socks5_client_version_t. On failure, return -2 if the
+ * input appears truncated, and -1 if the input is otherwise invalid.
+ */
+ssize_t socks5_client_version_parse(socks5_client_version_t **output, const uint8_t *input, const size_t len_in);
+/** Return the number of bytes we expect to need to encode the
+ * socks5_client_version in 'obj'. On failure, return a negative
+ * value. Note that this value may be an overestimate, and can even be
+ * an underestimate for certain unencodeable objects.
+ */
+ssize_t socks5_client_version_encoded_len(const socks5_client_version_t *obj);
+/** Try to encode the socks5_client_version from 'input' into the
+ * buffer at 'output', using up to 'avail' bytes of the output buffer.
+ * On success, return the number of bytes used. On failure, return -2
+ * if the buffer was not long enough, and -1 if the input was invalid.
+ */
+ssize_t socks5_client_version_encode(uint8_t *output, size_t avail, const socks5_client_version_t *input);
+/** Check whether the internal state of the socks5_client_version in
+ * 'obj' is consistent. Return NULL if it is, and a short message if
+ * it is not.
+ */
+const char *socks5_client_version_check(const socks5_client_version_t *obj);
+/** Clear any errors that were set on the object 'obj' by its setter
+ * functions. Return true iff errors were cleared.
+ */
+int socks5_client_version_clear_errors(socks5_client_version_t *obj);
+/** Return the value of the version field of the
+ * socks5_client_version_t in 'inp'
+ */
+uint8_t socks5_client_version_get_version(const socks5_client_version_t *inp);
+/** Set the value of the version field of the socks5_client_version_t
+ * in 'inp' to 'val'. Return 0 on success; return -1 and set the error
+ * code on 'inp' on failure.
+ */
+int socks5_client_version_set_version(socks5_client_version_t *inp, uint8_t val);
+/** Return the value of the n_methods field of the
+ * socks5_client_version_t in 'inp'
+ */
+uint8_t socks5_client_version_get_n_methods(const socks5_client_version_t *inp);
+/** Set the value of the n_methods field of the
+ * socks5_client_version_t in 'inp' to 'val'. Return 0 on success;
+ * return -1 and set the error code on 'inp' on failure.
+ */
+int socks5_client_version_set_n_methods(socks5_client_version_t *inp, uint8_t val);
+/** Return the length of the dynamic array holding the methods field
+ * of the socks5_client_version_t in 'inp'.
+ */
+size_t socks5_client_version_getlen_methods(const socks5_client_version_t *inp);
+/** Return the element at position 'idx' of the dynamic array field
+ * methods of the socks5_client_version_t in 'inp'.
+ */
+uint8_t socks5_client_version_get_methods(socks5_client_version_t *inp, size_t idx);
+/** As socks5_client_version_get_methods, but take and return a const
+ * pointer
+ */
+uint8_t socks5_client_version_getconst_methods(const socks5_client_version_t *inp, size_t idx);
+/** Change the element at position 'idx' of the dynamic array field
+ * methods of the socks5_client_version_t in 'inp', so that it will
+ * hold the value 'elt'.
+ */
+int socks5_client_version_set_methods(socks5_client_version_t *inp, size_t idx, uint8_t elt);
+/** Append a new element 'elt' to the dynamic array field methods of
+ * the socks5_client_version_t in 'inp'.
+ */
+int socks5_client_version_add_methods(socks5_client_version_t *inp, uint8_t elt);
+/** Return a pointer to the variable-length array field methods of
+ * 'inp'.
+ */
+uint8_t * socks5_client_version_getarray_methods(socks5_client_version_t *inp);
+/** As socks5_client_version_get_methods, but take and return a const
+ * pointer
+ */
+const uint8_t * socks5_client_version_getconstarray_methods(const socks5_client_version_t *inp);
+/** Change the length of the variable-length array field methods of
+ * 'inp' to 'newlen'.Fill extra elements with 0. Return 0 on success;
+ * return -1 and set the error code on 'inp' on failure.
+ */
+int socks5_client_version_setlen_methods(socks5_client_version_t *inp, size_t newlen);
+/** Return a newly allocated socks5_server_method with all elements
+ * set to zero.
+ */
+socks5_server_method_t *socks5_server_method_new(void);
+/** Release all storage held by the socks5_server_method in 'victim'.
+ * (Do nothing if 'victim' is NULL.)
+ */
+void socks5_server_method_free(socks5_server_method_t *victim);
+/** Try to parse a socks5_server_method from the buffer in 'input',
+ * using up to 'len_in' bytes from the input buffer. On success,
+ * return the number of bytes consumed and set *output to the newly
+ * allocated socks5_server_method_t. On failure, return -2 if the
+ * input appears truncated, and -1 if the input is otherwise invalid.
+ */
+ssize_t socks5_server_method_parse(socks5_server_method_t **output, const uint8_t *input, const size_t len_in);
+/** Return the number of bytes we expect to need to encode the
+ * socks5_server_method in 'obj'. On failure, return a negative value.
+ * Note that this value may be an overestimate, and can even be an
+ * underestimate for certain unencodeable objects.
+ */
+ssize_t socks5_server_method_encoded_len(const socks5_server_method_t *obj);
+/** Try to encode the socks5_server_method from 'input' into the
+ * buffer at 'output', using up to 'avail' bytes of the output buffer.
+ * On success, return the number of bytes used. On failure, return -2
+ * if the buffer was not long enough, and -1 if the input was invalid.
+ */
+ssize_t socks5_server_method_encode(uint8_t *output, size_t avail, const socks5_server_method_t *input);
+/** Check whether the internal state of the socks5_server_method in
+ * 'obj' is consistent. Return NULL if it is, and a short message if
+ * it is not.
+ */
+const char *socks5_server_method_check(const socks5_server_method_t *obj);
+/** Clear any errors that were set on the object 'obj' by its setter
+ * functions. Return true iff errors were cleared.
+ */
+int socks5_server_method_clear_errors(socks5_server_method_t *obj);
+/** Return the value of the version field of the
+ * socks5_server_method_t in 'inp'
+ */
+uint8_t socks5_server_method_get_version(const socks5_server_method_t *inp);
+/** Set the value of the version field of the socks5_server_method_t
+ * in 'inp' to 'val'. Return 0 on success; return -1 and set the error
+ * code on 'inp' on failure.
+ */
+int socks5_server_method_set_version(socks5_server_method_t *inp, uint8_t val);
+/** Return the value of the method field of the socks5_server_method_t
+ * in 'inp'
+ */
+uint8_t socks5_server_method_get_method(const socks5_server_method_t *inp);
+/** Set the value of the method field of the socks5_server_method_t in
+ * 'inp' to 'val'. Return 0 on success; return -1 and set the error
+ * code on 'inp' on failure.
+ */
+int socks5_server_method_set_method(socks5_server_method_t *inp, uint8_t val);
+/** Return a newly allocated socks5_server_userpass_auth with all
+ * elements set to zero.
+ */
+socks5_server_userpass_auth_t *socks5_server_userpass_auth_new(void);
+/** Release all storage held by the socks5_server_userpass_auth in
+ * 'victim'. (Do nothing if 'victim' is NULL.)
+ */
+void socks5_server_userpass_auth_free(socks5_server_userpass_auth_t *victim);
+/** Try to parse a socks5_server_userpass_auth from the buffer in
+ * 'input', using up to 'len_in' bytes from the input buffer. On
+ * success, return the number of bytes consumed and set *output to the
+ * newly allocated socks5_server_userpass_auth_t. On failure, return
+ * -2 if the input appears truncated, and -1 if the input is otherwise
+ * invalid.
+ */
+ssize_t socks5_server_userpass_auth_parse(socks5_server_userpass_auth_t **output, const uint8_t *input, const size_t len_in);
+/** Return the number of bytes we expect to need to encode the
+ * socks5_server_userpass_auth in 'obj'. On failure, return a negative
+ * value. Note that this value may be an overestimate, and can even be
+ * an underestimate for certain unencodeable objects.
+ */
+ssize_t socks5_server_userpass_auth_encoded_len(const socks5_server_userpass_auth_t *obj);
+/** Try to encode the socks5_server_userpass_auth from 'input' into
+ * the buffer at 'output', using up to 'avail' bytes of the output
+ * buffer. On success, return the number of bytes used. On failure,
+ * return -2 if the buffer was not long enough, and -1 if the input
+ * was invalid.
+ */
+ssize_t socks5_server_userpass_auth_encode(uint8_t *output, size_t avail, const socks5_server_userpass_auth_t *input);
+/** Check whether the internal state of the
+ * socks5_server_userpass_auth in 'obj' is consistent. Return NULL if
+ * it is, and a short message if it is not.
+ */
+const char *socks5_server_userpass_auth_check(const socks5_server_userpass_auth_t *obj);
+/** Clear any errors that were set on the object 'obj' by its setter
+ * functions. Return true iff errors were cleared.
+ */
+int socks5_server_userpass_auth_clear_errors(socks5_server_userpass_auth_t *obj);
+/** Return the value of the version field of the
+ * socks5_server_userpass_auth_t in 'inp'
+ */
+uint8_t socks5_server_userpass_auth_get_version(const socks5_server_userpass_auth_t *inp);
+/** Set the value of the version field of the
+ * socks5_server_userpass_auth_t in 'inp' to 'val'. Return 0 on
+ * success; return -1 and set the error code on 'inp' on failure.
+ */
+int socks5_server_userpass_auth_set_version(socks5_server_userpass_auth_t *inp, uint8_t val);
+/** Return the value of the status field of the
+ * socks5_server_userpass_auth_t in 'inp'
+ */
+uint8_t socks5_server_userpass_auth_get_status(const socks5_server_userpass_auth_t *inp);
+/** Set the value of the status field of the
+ * socks5_server_userpass_auth_t in 'inp' to 'val'. Return 0 on
+ * success; return -1 and set the error code on 'inp' on failure.
+ */
+int socks5_server_userpass_auth_set_status(socks5_server_userpass_auth_t *inp, uint8_t val);
+/** Return a newly allocated socks5_client_request with all elements
+ * set to zero.
+ */
+socks5_client_request_t *socks5_client_request_new(void);
+/** Release all storage held by the socks5_client_request in 'victim'.
+ * (Do nothing if 'victim' is NULL.)
+ */
+void socks5_client_request_free(socks5_client_request_t *victim);
+/** Try to parse a socks5_client_request from the buffer in 'input',
+ * using up to 'len_in' bytes from the input buffer. On success,
+ * return the number of bytes consumed and set *output to the newly
+ * allocated socks5_client_request_t. On failure, return -2 if the
+ * input appears truncated, and -1 if the input is otherwise invalid.
+ */
+ssize_t socks5_client_request_parse(socks5_client_request_t **output, const uint8_t *input, const size_t len_in);
+/** Return the number of bytes we expect to need to encode the
+ * socks5_client_request in 'obj'. On failure, return a negative
+ * value. Note that this value may be an overestimate, and can even be
+ * an underestimate for certain unencodeable objects.
+ */
+ssize_t socks5_client_request_encoded_len(const socks5_client_request_t *obj);
+/** Try to encode the socks5_client_request from 'input' into the
+ * buffer at 'output', using up to 'avail' bytes of the output buffer.
+ * On success, return the number of bytes used. On failure, return -2
+ * if the buffer was not long enough, and -1 if the input was invalid.
+ */
+ssize_t socks5_client_request_encode(uint8_t *output, size_t avail, const socks5_client_request_t *input);
+/** Check whether the internal state of the socks5_client_request in
+ * 'obj' is consistent. Return NULL if it is, and a short message if
+ * it is not.
+ */
+const char *socks5_client_request_check(const socks5_client_request_t *obj);
+/** Clear any errors that were set on the object 'obj' by its setter
+ * functions. Return true iff errors were cleared.
+ */
+int socks5_client_request_clear_errors(socks5_client_request_t *obj);
+/** Return the value of the version field of the
+ * socks5_client_request_t in 'inp'
+ */
+uint8_t socks5_client_request_get_version(const socks5_client_request_t *inp);
+/** Set the value of the version field of the socks5_client_request_t
+ * in 'inp' to 'val'. Return 0 on success; return -1 and set the error
+ * code on 'inp' on failure.
+ */
+int socks5_client_request_set_version(socks5_client_request_t *inp, uint8_t val);
+/** Return the value of the command field of the
+ * socks5_client_request_t in 'inp'
+ */
+uint8_t socks5_client_request_get_command(const socks5_client_request_t *inp);
+/** Set the value of the command field of the socks5_client_request_t
+ * in 'inp' to 'val'. Return 0 on success; return -1 and set the error
+ * code on 'inp' on failure.
+ */
+int socks5_client_request_set_command(socks5_client_request_t *inp, uint8_t val);
+/** Return the value of the reserved field of the
+ * socks5_client_request_t in 'inp'
+ */
+uint8_t socks5_client_request_get_reserved(const socks5_client_request_t *inp);
+/** Set the value of the reserved field of the socks5_client_request_t
+ * in 'inp' to 'val'. Return 0 on success; return -1 and set the error
+ * code on 'inp' on failure.
+ */
+int socks5_client_request_set_reserved(socks5_client_request_t *inp, uint8_t val);
+/** Return the value of the atype field of the socks5_client_request_t
+ * in 'inp'
+ */
+uint8_t socks5_client_request_get_atype(const socks5_client_request_t *inp);
+/** Set the value of the atype field of the socks5_client_request_t in
+ * 'inp' to 'val'. Return 0 on success; return -1 and set the error
+ * code on 'inp' on failure.
+ */
+int socks5_client_request_set_atype(socks5_client_request_t *inp, uint8_t val);
+/** Return the value of the dest_addr_ipv4 field of the
+ * socks5_client_request_t in 'inp'
+ */
+uint32_t socks5_client_request_get_dest_addr_ipv4(const socks5_client_request_t *inp);
+/** Set the value of the dest_addr_ipv4 field of the
+ * socks5_client_request_t in 'inp' to 'val'. Return 0 on success;
+ * return -1 and set the error code on 'inp' on failure.
+ */
+int socks5_client_request_set_dest_addr_ipv4(socks5_client_request_t *inp, uint32_t val);
+/** Return the (constant) length of the array holding the
+ * dest_addr_ipv6 field of the socks5_client_request_t in 'inp'.
+ */
+size_t socks5_client_request_getlen_dest_addr_ipv6(const socks5_client_request_t *inp);
+/** Return the element at position 'idx' of the fixed array field
+ * dest_addr_ipv6 of the socks5_client_request_t in 'inp'.
+ */
+uint8_t socks5_client_request_get_dest_addr_ipv6(socks5_client_request_t *inp, size_t idx);
+/** As socks5_client_request_get_dest_addr_ipv6, but take and return a
+ * const pointer
+ */
+uint8_t socks5_client_request_getconst_dest_addr_ipv6(const socks5_client_request_t *inp, size_t idx);
+/** Change the element at position 'idx' of the fixed array field
+ * dest_addr_ipv6 of the socks5_client_request_t in 'inp', so that it
+ * will hold the value 'elt'.
+ */
+int socks5_client_request_set_dest_addr_ipv6(socks5_client_request_t *inp, size_t idx, uint8_t elt);
+/** Return a pointer to the 16-element array field dest_addr_ipv6 of
+ * 'inp'.
+ */
+uint8_t * socks5_client_request_getarray_dest_addr_ipv6(socks5_client_request_t *inp);
+/** As socks5_client_request_get_dest_addr_ipv6, but take and return a
+ * const pointer
+ */
+const uint8_t * socks5_client_request_getconstarray_dest_addr_ipv6(const socks5_client_request_t *inp);
+/** Return the value of the dest_addr_domainname field of the
+ * socks5_client_request_t in 'inp'
+ */
+struct domainname_st * socks5_client_request_get_dest_addr_domainname(socks5_client_request_t *inp);
+/** As socks5_client_request_get_dest_addr_domainname, but take and
+ * return a const pointer
+ */
+const struct domainname_st * socks5_client_request_getconst_dest_addr_domainname(const socks5_client_request_t *inp);
+/** Set the value of the dest_addr_domainname field of the
+ * socks5_client_request_t in 'inp' to 'val'. Free the old value if
+ * any. Steals the referenceto 'val'.Return 0 on success; return -1
+ * and set the error code on 'inp' on failure.
+ */
+int socks5_client_request_set_dest_addr_domainname(socks5_client_request_t *inp, struct domainname_st *val);
+/** As socks5_client_request_set_dest_addr_domainname, but does not
+ * free the previous value.
+ */
+int socks5_client_request_set0_dest_addr_domainname(socks5_client_request_t *inp, struct domainname_st *val);
+/** Return the value of the dest_port field of the
+ * socks5_client_request_t in 'inp'
+ */
+uint16_t socks5_client_request_get_dest_port(const socks5_client_request_t *inp);
+/** Set the value of the dest_port field of the
+ * socks5_client_request_t in 'inp' to 'val'. Return 0 on success;
+ * return -1 and set the error code on 'inp' on failure.
+ */
+int socks5_client_request_set_dest_port(socks5_client_request_t *inp, uint16_t val);
+/** Return a newly allocated socks5_server_reply with all elements set
+ * to zero.
+ */
+socks5_server_reply_t *socks5_server_reply_new(void);
+/** Release all storage held by the socks5_server_reply in 'victim'.
+ * (Do nothing if 'victim' is NULL.)
+ */
+void socks5_server_reply_free(socks5_server_reply_t *victim);
+/** Try to parse a socks5_server_reply from the buffer in 'input',
+ * using up to 'len_in' bytes from the input buffer. On success,
+ * return the number of bytes consumed and set *output to the newly
+ * allocated socks5_server_reply_t. On failure, return -2 if the input
+ * appears truncated, and -1 if the input is otherwise invalid.
+ */
+ssize_t socks5_server_reply_parse(socks5_server_reply_t **output, const uint8_t *input, const size_t len_in);
+/** Return the number of bytes we expect to need to encode the
+ * socks5_server_reply in 'obj'. On failure, return a negative value.
+ * Note that this value may be an overestimate, and can even be an
+ * underestimate for certain unencodeable objects.
+ */
+ssize_t socks5_server_reply_encoded_len(const socks5_server_reply_t *obj);
+/** Try to encode the socks5_server_reply from 'input' into the buffer
+ * at 'output', using up to 'avail' bytes of the output buffer. On
+ * success, return the number of bytes used. On failure, return -2 if
+ * the buffer was not long enough, and -1 if the input was invalid.
+ */
+ssize_t socks5_server_reply_encode(uint8_t *output, size_t avail, const socks5_server_reply_t *input);
+/** Check whether the internal state of the socks5_server_reply in
+ * 'obj' is consistent. Return NULL if it is, and a short message if
+ * it is not.
+ */
+const char *socks5_server_reply_check(const socks5_server_reply_t *obj);
+/** Clear any errors that were set on the object 'obj' by its setter
+ * functions. Return true iff errors were cleared.
+ */
+int socks5_server_reply_clear_errors(socks5_server_reply_t *obj);
+/** Return the value of the version field of the socks5_server_reply_t
+ * in 'inp'
+ */
+uint8_t socks5_server_reply_get_version(const socks5_server_reply_t *inp);
+/** Set the value of the version field of the socks5_server_reply_t in
+ * 'inp' to 'val'. Return 0 on success; return -1 and set the error
+ * code on 'inp' on failure.
+ */
+int socks5_server_reply_set_version(socks5_server_reply_t *inp, uint8_t val);
+/** Return the value of the reply field of the socks5_server_reply_t
+ * in 'inp'
+ */
+uint8_t socks5_server_reply_get_reply(const socks5_server_reply_t *inp);
+/** Set the value of the reply field of the socks5_server_reply_t in
+ * 'inp' to 'val'. Return 0 on success; return -1 and set the error
+ * code on 'inp' on failure.
+ */
+int socks5_server_reply_set_reply(socks5_server_reply_t *inp, uint8_t val);
+/** Return the value of the reserved field of the
+ * socks5_server_reply_t in 'inp'
+ */
+uint8_t socks5_server_reply_get_reserved(const socks5_server_reply_t *inp);
+/** Set the value of the reserved field of the socks5_server_reply_t
+ * in 'inp' to 'val'. Return 0 on success; return -1 and set the error
+ * code on 'inp' on failure.
+ */
+int socks5_server_reply_set_reserved(socks5_server_reply_t *inp, uint8_t val);
+/** Return the value of the atype field of the socks5_server_reply_t
+ * in 'inp'
+ */
+uint8_t socks5_server_reply_get_atype(const socks5_server_reply_t *inp);
+/** Set the value of the atype field of the socks5_server_reply_t in
+ * 'inp' to 'val'. Return 0 on success; return -1 and set the error
+ * code on 'inp' on failure.
+ */
+int socks5_server_reply_set_atype(socks5_server_reply_t *inp, uint8_t val);
+/** Return the value of the bind_addr_ipv4 field of the
+ * socks5_server_reply_t in 'inp'
+ */
+uint32_t socks5_server_reply_get_bind_addr_ipv4(const socks5_server_reply_t *inp);
+/** Set the value of the bind_addr_ipv4 field of the
+ * socks5_server_reply_t in 'inp' to 'val'. Return 0 on success;
+ * return -1 and set the error code on 'inp' on failure.
+ */
+int socks5_server_reply_set_bind_addr_ipv4(socks5_server_reply_t *inp, uint32_t val);
+/** Return the (constant) length of the array holding the
+ * bind_addr_ipv6 field of the socks5_server_reply_t in 'inp'.
+ */
+size_t socks5_server_reply_getlen_bind_addr_ipv6(const socks5_server_reply_t *inp);
+/** Return the element at position 'idx' of the fixed array field
+ * bind_addr_ipv6 of the socks5_server_reply_t in 'inp'.
+ */
+uint8_t socks5_server_reply_get_bind_addr_ipv6(socks5_server_reply_t *inp, size_t idx);
+/** As socks5_server_reply_get_bind_addr_ipv6, but take and return a
+ * const pointer
+ */
+uint8_t socks5_server_reply_getconst_bind_addr_ipv6(const socks5_server_reply_t *inp, size_t idx);
+/** Change the element at position 'idx' of the fixed array field
+ * bind_addr_ipv6 of the socks5_server_reply_t in 'inp', so that it
+ * will hold the value 'elt'.
+ */
+int socks5_server_reply_set_bind_addr_ipv6(socks5_server_reply_t *inp, size_t idx, uint8_t elt);
+/** Return a pointer to the 16-element array field bind_addr_ipv6 of
+ * 'inp'.
+ */
+uint8_t * socks5_server_reply_getarray_bind_addr_ipv6(socks5_server_reply_t *inp);
+/** As socks5_server_reply_get_bind_addr_ipv6, but take and return a
+ * const pointer
+ */
+const uint8_t * socks5_server_reply_getconstarray_bind_addr_ipv6(const socks5_server_reply_t *inp);
+/** Return the value of the bind_addr_domainname field of the
+ * socks5_server_reply_t in 'inp'
+ */
+struct domainname_st * socks5_server_reply_get_bind_addr_domainname(socks5_server_reply_t *inp);
+/** As socks5_server_reply_get_bind_addr_domainname, but take and
+ * return a const pointer
+ */
+const struct domainname_st * socks5_server_reply_getconst_bind_addr_domainname(const socks5_server_reply_t *inp);
+/** Set the value of the bind_addr_domainname field of the
+ * socks5_server_reply_t in 'inp' to 'val'. Free the old value if any.
+ * Steals the referenceto 'val'.Return 0 on success; return -1 and set
+ * the error code on 'inp' on failure.
+ */
+int socks5_server_reply_set_bind_addr_domainname(socks5_server_reply_t *inp, struct domainname_st *val);
+/** As socks5_server_reply_set_bind_addr_domainname, but does not free
+ * the previous value.
+ */
+int socks5_server_reply_set0_bind_addr_domainname(socks5_server_reply_t *inp, struct domainname_st *val);
+/** Return the value of the bind_port field of the
+ * socks5_server_reply_t in 'inp'
+ */
+uint16_t socks5_server_reply_get_bind_port(const socks5_server_reply_t *inp);
+/** Set the value of the bind_port field of the socks5_server_reply_t
+ * in 'inp' to 'val'. Return 0 on success; return -1 and set the error
+ * code on 'inp' on failure.
+ */
+int socks5_server_reply_set_bind_port(socks5_server_reply_t *inp, uint16_t val);
+
+
+#endif
diff --git a/src/trunnel/socks5.trunnel b/src/trunnel/socks5.trunnel
new file mode 100644
index 0000000000..b86ec03b9d
--- /dev/null
+++ b/src/trunnel/socks5.trunnel
@@ -0,0 +1,94 @@
+// Example: here's a quickie implementation of the messages in the
+// socks5 protocol.
+
+struct socks5_client_version {
+ u8 version IN [5];
+ u8 n_methods;
+ u8 methods[n_methods];
+}
+
+struct socks5_server_method {
+ u8 version IN [5];
+ u8 method;
+}
+
+const CMD_CONNECT = 1;
+const CMD_BIND = 2;
+const CMD_UDP_ASSOCIATE = 3;
+// This is a tor extension
+const CMD_RESOLVE = 0xF0;
+const CMD_RESOLVE_PTR = 0xF1;
+
+const ATYPE_IPV4 = 1;
+const ATYPE_IPV6 = 4;
+const ATYPE_DOMAINNAME = 3;
+
+struct domainname {
+ u8 len;
+ char name[len];
+}
+
+struct socks5_client_request {
+ u8 version IN [5];
+ u8 command IN [CMD_CONNECT, CMD_BIND, CMD_UDP_ASSOCIATE, CMD_RESOLVE, CMD_RESOLVE_PTR];
+ u8 reserved IN [0];
+ u8 atype;
+ union dest_addr[atype] {
+ ATYPE_IPV4: u32 ipv4;
+ ATYPE_IPV6: u8 ipv6[16];
+ ATYPE_DOMAINNAME: struct domainname domainname;
+ default: fail;
+ };
+ u16 dest_port;
+}
+
+struct socks5_server_reply {
+ u8 version IN [5];
+ u8 reply;
+ u8 reserved IN [0];
+ u8 atype;
+ union bind_addr[atype] {
+ ATYPE_IPV4: u32 ipv4;
+ ATYPE_IPV6: u8 ipv6[16];
+ ATYPE_DOMAINNAME: struct domainname domainname;
+ default: fail;
+ };
+ u16 bind_port;
+}
+
+struct socks5_client_userpass_auth {
+ u8 version IN [1];
+ u8 username_len;
+ char username[username_len];
+ u8 passwd_len;
+ char passwd[passwd_len];
+}
+
+struct socks5_server_userpass_auth {
+ u8 version IN [1];
+ u8 status;
+}
+
+// Oh why not. Here's socks4 and socks4a.
+
+struct socks4_client_request {
+ u8 version IN [4];
+ u8 command IN [CMD_CONNECT,CMD_BIND,CMD_RESOLVE,CMD_RESOLVE_PTR];
+ u16 port;
+ u32 addr;
+ nulterm username;
+ union socks4a_addr[addr] {
+ 1..255:
+ nulterm hostname;
+ default:
+ ;
+ };
+}
+
+struct socks4_server_reply {
+ u8 version IN [4];
+ u8 status;
+ u16 port;
+ u32 addr;
+}
+
diff --git a/src/trunnel/trunnel-local.h b/src/trunnel/trunnel-local.h
index e81396aeea..c4118fce4c 100644
--- a/src/trunnel/trunnel-local.h
+++ b/src/trunnel/trunnel-local.h
@@ -3,7 +3,7 @@
#define TRUNNEL_LOCAL_H_INCLUDED
#include "lib/crypt_ops/crypto_util.h"
-#include "lib/malloc/util_malloc.h"
+#include "lib/malloc/malloc.h"
#include "lib/log/util_bug.h"
#define trunnel_malloc tor_malloc